Fifo что это такое
Fifo что это такое
Что такое ФИФО?
ФИФО — это метод учёта активов, который применяют все профучастники. Смысл этого метода в том, что активы, поставленные первыми на учёт, выбывают с учёта тоже первыми.
Название FIFO происходит от выражения «First In, First Out», что переводится как «первым прибыл, первым убыл».
Ранее был ещё один метод — LIFO — «Last In, First Out», что переводится как «последним прибыл, первым убыл». Метод подразумевал обратный учёт, в соответствии с которым активы, которые были поставлены на учёт последними, с учёта выбывали первыми. Однако его отменили на законодательном уровне.
И сейчас для учёта активов остался только метод ФИФО. Благодаря ему и происходит подсчёт вашего финансового результата и налогооблагаемой базы.
Пример 1
Иванов имеет на брокерском счёте 15 акций «Сбербанка», купленных 30.11.2017 по цене 50 руб. за штуку. 20.09.2019 он приобрёл ещё 30 акций «Сбербанка» по цене 80 руб. за штуку. Через месяц Иванов продаёт 20 акций по цене 75 рублей.
Фактически по сравнению с прошлым месяцем акции просели в цене, и Иванов получил убыток от данной спекулятивной операции. Однако с точки зрения учёта были реализованы акции, купленные ранее по цене 50 руб. Таким образом, формируется налогооблагаемая база в размере 350 руб. ((75 руб. — 50 руб.) * 15 шт.) + (75 руб. — 80 руб.) * 5 шт.), с которой брокер удержит НДФЛ в размере 13% для налоговых резидентов РФ 46 руб. (350 руб.* 13%).
Необходимо учитывать ещё несколько важных моментов. Учёт активов по методу ФИФО ведёт каждый налоговый агент самостоятельно.
Пример 2
Петров купил десять акций «Мегафона» 04.04.2018 через брокера «А». Также он приобрёл пять акций «Мегафона» 05.05.2019 через брокера «Б». Петров принял решение закрыть счёт у профучастника «А» и перевести акции брокеру «Б». И хотя у брокера «А» акции были куплены ранее, чем у брокера «Б», на учёт у брокера «Б» данные переведённые акции встанут после тех, которые были куплены 05.05.2019. Таким образом, в дальнейшем при продаже акций «Мегафона» первыми будут выбывать бумаги, купленные 05.05.2019.
При этом срок владения ценными бумагами отсчитывается от даты приобретения, если есть документы, которые данные сроки подтверждают.
Учёт активов физического лица ведётся суммарно по всем его счетам или субсчетам, исключая индивидуальный инвестиционный счёт.
Законодательно предусмотрено, что ИИС — счёт внутреннего учёта, который предназначен для обособленного учёта денежных средств, ценных бумаг клиента — физического лица (п. 1 ст. 10.2-1 Федеральный закон от 22.04.1996 N 39-ФЗ).
Пример 3
Через месяц он принял решение продать акции на основном брокерском счёте в размере 10 шт. Однако первыми уйдут с учёта те, которые были приобретены на субсчёте.
Таким образом, самостоятельно выбрать партию ценных бумаг для их продажи в первую очередь, не получится.
Как работает FIFO
FIFO это один из ключевых элементов цифровой техники. Это память типа «первым вошёл-первым ушёл» (first input – first output). Меня как разработчика ПЛИС FIFO окружают повсюду. Собственно я только и делаю что беру данные из одного FIFO и перекладываю в другое. Но как оно работает? В современных САПР конечно уже есть готовые элементы, у Altera есть замечательные мегафункции. У Xilinx есть Core Generator. Но что делать если что-то не устраивает в стандартных решениях? Ответ один – разобраться и написать самому.
В интернете существует большое количество статей про FIFO, и когда то мне попалась очень хорошая и толковая статья. К сожалению, сейчас я её не нашёл. Далее – мой личный опыт по созданию и применению компонента FIFO. Готовый элемент находится на Github в проекте fpga_components. Свой компонент потребовался по нескольким причинам:
Одно из главных применений FIFO это перевод данных с одной тактовой частоты на другую. Этим определяется такая схема. При одной тактовой частоте на запись и чтение автоматы можно упростить.
Давайте рассмотрим внешние порты компонента FIFO:
Флаги FIFO передаются типом bl_fifo_flag; Определение типа:
Обратите внимание, используется отрицательная логика. Узнали? Да, я ещё из тех динозавров кто работал с TTL на сериях 155, 533, 1533 и отдельными микросхемами FIFO. Так что эти флаги мне привычны, они были сделаны много лет назад и до сих пор используются.
Флаг ef – сигнализирует что FIFO пустое. Если ef=1, то из FIFO можно прочитать одно слово.
Флаг pae – сигнализирует, что FIFO почти пустое. На сколько почти определяет параметр FIFO_PAE. Если pae=1, то из FIFO можно прочитать не более чем FIFO_PAE слов.
Флаг hf – сигнализирует что FIFO заполнено наполовину.
Флаг paf – сигнализирует, что FIFO почти полное. На сколько почти определяет параметр FIFO_PAF. Если paf=1, то в FIFO можно записать не более чем FIFO_PAF слов
Флаг ff – FIFO полное. Если ff=0, то в FIFO записывать нельзя.
Флаг ovr – переполнение. Если ovr=1, то это значит что произошла запись в полное FIFO
Флаг und – underflow. Если und=1, то это значит что произошло чтение из пустого FIFO.
Вполне очевидно, что при записи в FIFO мы должны записать слово в двухпортовую память и увеличить счётчик записи. Или сначала увеличить, а потом записать. А при операции чтения надо зафиксировать данные на выходе и увеличить счётчик чтения. А вот дальше требуется решить следующие вопросы:
Надо ясно понимать, что узел перетактирования (в проекте это компонент ctrl_retack_counter_m12) передаёт данные с задержкой на несколько тактов. Поэтому состояния FIFO также изменяются с задержкой. Например, если FIFO пустое и него записано одно слово, то флаг ef=1 появится с некоторой задержкой. Это же относится к выходам количества слов в FIFO. Например, если в пустое FIFO будет записано 16 слов, то в процессе записи выход cnt_wr будет принимать значения 0,1,2,3, … 16 (это если не производится чтение из FIFO), а вот выход cnt_rd будет принимать значения например такие: 0, 5, 8, 12, 16. Точный порядок будет зависеть от соотношения частот и не может быть предсказан. Это принципиальное свойство FIFO которое работает на разных частотах. Хотя в зависимости от схемы синхронизации могут быть различные нюансы.
Определение пустого и полного FIFO производится на анализе счётчиков адресов. Причём у меня есть два адреса для записи (текущий и следующий) и два адреса для чтения, также текущий и следующий. В компоненте cl_fifo_control_m12 это сигналы w_adr, w_next_adr и r_adr, r_next_adr; Соотношение адресов в различных состояниях представлено на рисунках ниже.
В исходном состоянии w_adr=0, r_adr=0, w_next_adr=1, r_next_adr=1. Если w_adr=r_adr, то FIFO пустое.
При записи слово данных записывается по адресу w_adr и адрес записи увеличивается.
Через несколько таков значение w_adr будет передано в w_adr_to_rd (перейдёт в тактовый домен clk_rd) и по факту не совпадения r_adr и w_adr_to_rd будет установлен флаг ef=1, т.е. из FIFO можно будет считать слово данных. Однако одно слово это мало, для получения высокой скорости передачи надо работать с блоком данных. И здесь требуется использовать флаг PAE. Когда в FIFO будет записано FIFO_PAE слов, будет установлен флаг pae=1 и можно будет прочитать сразу блок данных. Это основной режим работы с DMA каналом.
Если скорость записи больше чем скорость чтения, то адрес записи догонит адрес чтения:
В этом случае w_next_adr будет равен r_adr, а точнее r_adr_to_wr (мы можем сравнивать только значения на своём тактовом домене). Это означает, что FIFO полное и записывать дальше нельзя, что бы не испортить уже записанные данные. Надо отметить, что для подключения АЦП это обычная ситуация. У нас такой режим называется однократный сбор через FIFO. В этом режиме АЦП записывает данные на большой скорости в FIFO, а медленный процессор эти данные считывает. При этом мы знаем, что действительными будет только блок данных который соответствует размеру FIFO. Обычно на этот размер как раз и программируется канал DMA. После чтения данных FIFO сбрасывается и всё повторяется снова. Вот в этом режиме принципиально важно, что бы запись в полное FIFO не портила предыдущие данные.
Если требуется записывать данные блоками, то надо использовать флаг PAF. Если paf=1, то в FIFO можно записать FIFO_PAF слов.
Значения флагов PAE и PAF надо выбирать из требований DMA контроллера к которому подключено FIFO. Например, для PCI Express у нас используется блок данных размером 4 кБ. Это 256 слов по 128 разрядов. Размер флага PAE я устанавливаю в 272. Т.е. чуть больше чем 256. Это я делаю намеренно, что бы не допускать опустошения FIFO. Ну не доверяю я схемам формирования флагов.
А как производится определение количества слов в FIFO? Всё достаточно просто – из адреса записи надо вычесть адрес чтения. Адрес кратен степени 2, поэтому вычитание будет идти по модулю 2^N; Поскольку у нас есть две пары адресов, то у нас получится и два значения количества слов в одном FIFO (может это как то связано с квантовой механикой?).
Значения флагов PAE и HF (по чтению) формируются из r_cnt. Значения PAF и HF(по записи) формируются из w_cnt.
Основной причиной, по которой пришлось разрабатывать свой компонент FIFO, является потребность в реализации циклического режима для работы на ЦАП. В этом режиме производится запись блока данных, он может быть любого размера, разумеется не превышая размера FIFO. А затем начинается чтение, причём после выдачи последнего записанного слова сразу происходит переход на первое слово. Это позволяет подключить медленный процессор к быстрому ЦАП. Компонент FIFO имеет два входа для циклического режима. rt_mode=1 означает, что после выдачи последнего записанного слова надо перейти на нулевой адрес.
А вот вход rt нужен немного для другого. Наличие rt=1 позволяет перевести FIFO на нулевой адрес в произвольный момент времени. Иногда это у нас тоже используется.
В проекте fpga_components представлены два FIFO:
Это конструкция будет синтезирована в двухпортовую память. Идея красивая и в результате доработки cl_fifo_x64_v7 получилось FIFO cl_fifo_m12.
Недостаточно написать FIFO, надо ещё проверить его работу. Для проверки используется подход принятый при разработке PROTEQ, о котором можно прочитать в моей предыдущей статье.
Существует компонент tb_00 который имеет настраиваемые параметры.
Он позволяет проверить прохождение потока данных через FIFO при различных соотношениях тактовых частот и уровнях срабатывания флагов PAE и PAF. Также существуют компоненты тестовых случаев:
Конечно, для каждого теста сохраняется и свой отчёт.
При необходимости тесты будут дополняться. Хочу обратить внимание, что для вывода текста в консоль я использую пакет PCK_FIO. Он резко упрощает вывод текста.
Например, вывод результатов выглядит так:
Это похоже на Си.
В итоге я считаю что получился элегантный компонент, достаточно удобный для практической работы.
Метод ФИФО (FIFO) в торговле и складском учете
Метод FIFO, основная информация
При использовании обычного метода, бухгалтером не производятся допущения, а лишь учитываются объемы 1-ых, 2-ых, 3-их и так далее поступлений, которые израсходовали в процессе производственной деятельности. Итог: сложности в расчете и остатки за прошедший месячный, либо другой период отчета из 1-ой партии с одной стоимостью и из 2-ой с отличающейся ценой.
Преимущества принципа ФИФО
У данного метода имеются свои положительные свойства или плюсы:
Недостатки принципа ФИФО
Кроме положительных свойств, метод обладает также и минусами, к ним можно отнести:
ФИФО обязательно учитывают в процессе финансового планирования и разработки ведения политики предприятия на последующие периоды.
Способы расчета себестоимости по принципу FIFO
FIFO является самым часто встречаемым способом рассчитывания стоимости, за основу берется принцип очередности. Как говорилось выше, в начале списывают материалы, поставленные первыми, отсюда и строится аббревиатура. Исключительными считают случаи, именуемые допущением, при которых важнее сроки годности, а не более раннее время проставления товаров. Таким образом, стоимость ресурсов, проданных в первую очередь высчитывается по показателям цен оставшихся продуктов из наиболее ранней поставки. При количественном исчерпывании происходит списывание ТМЦ по другой стоимости – следующая поставка и далее также.
Подробнее механизм расчета себестоимости по FIFO можно рассмотреть на следующем примере:
Магазин музыкальных инструментов ведет продажу гитар. Имеется 20 гитар по 10 000 рублей и последующие поставки в две партии по 30 гитар – первая за 9500 рублей, вторая за 9000 рублей. Продано 70 гитар по 15000 рублей. Расчет прибыли.
В начале списываются 20 гитар по 10000 рублей = 200000 рублей. Затем – 30 гитар по 9500 рублей = 285000 рублей. Осталось 20 гитар по 9000 рублей = 180000 рублей.
60 Х 15000 – (200000+285000+180000) = 235000 (рублей).
Этот показатель обычно меньше показателя средней стоимости, поэтому и сумма налога на прибыль значительно ниже.
Метод списания по принципу FIFO
Согласно законодательству, можно производить списывание денежных средств на затраты в процессе их выбывания несколькими способами. Давайте рассмотрим все для лучшего понимания. По «Учету материально-производственных запасов» (ПБУ 5/01) бухучет может использовать несколько методик:
Методику ФИФО часто именуют конвейерным способом, то есть выбывает тот товар, что поступил первоначально.
Списание по ФИФО производится по прежней схеме, а именно, выбывание однородных запасов производится последовательно, в очередности их поступления на склады. Поэтому, товары из следующих поступлений не выводят, пока в полной мере не израсходуют ранее поступившие.
Метод ФИФО предполагает списывание на хознужды или для производства по стоимости МПЗ по факту, которые поступили 1-ми по очередности. Следовательно, себестоимость товаров из запаса, которые поступили позднее и не израсходовались, включают в цену остаточных товаров при конечном периоде.
Автоматизация складской логистики в 1С
Метод ФИФО в 1С УТ
При этом размеры и цены на остаток продуктов выстраивают в очередность: от крайней партии, потому что, следуя логике ФИФО, первоначально поступившие товары уже списали.
Далее определяют объемы выбывших товаров со склада в течение месяца. Определяют цену поступивших товаров, учитывая цену начальных товаров из остатка, потом из этого показателя вычитают цену остаточных товаров в конце месяца, которую вычислили по принципу FIFO. Этот показатель является стоимостью списания месячной продукции.
Также используются следующие формулы:
Метод ФИФО в WMS системе
Система-WMS помогает решать задачи по управлению складских помещений и производит автоматизацию операций по складам.
Основные функции WMS:
Одним из методов, которым пользуется рассматриваемая система, является ФИФО.
Согласно этому методу, сначала отгружается товар из первой партии, затем последующие, таким образом, открытие доступа к первым категориям из списка происходит после анализа всех последующих товаров. Этот принцип работает и касательно клиентов, то есть обслуживают клиента, подошедшего ранее других.
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
FIFO для самых маленьких (вместе с вопросами на интервью)
Если человек не в теме или не понял вопроса, он может начать «запускаем GUI от Xilinx, вносим параметры и инстанциируем сгенерированный код». Это вызывает реакцию, как если бы школьная учительница геометрии спросила «найдите гипотенузу» и школьник бы ткнул пальцем в гипотенузу и с улыбкой ответил «вот она!»
Если у человека в резюме есть десять лет опыта, он спросит «какое именно FIFO» ему показать из списка выше. Но если человек только что пришел с вводного курса, то он должен как минимум знать то что написано ниже. То есть уметь написать самое простое FIFO на D-триггерах и с одним тактовым сигналом, уметь его использовать с окружающей логикой и разпознать случаи, в которых его нужно применять.
Без этого умения вы не знаете Verilog и не умеете проектировать на уровне регистровых передач. К сожалению, FIFO нет в книге Харрис & Харрис («Цифровая схемотехника и архитектура компьютера: RISC-V»), и это ее недостаток. В реальной жизни любой компании которая проектирует CPU, GPU, сетевые чипы и нейроускорители, во многих блоках есть десятки FIFO.
[Тут может быть возражение, что в любой крупной компании, в которой вы будете работаеть, уже будет внутрення библиотека всех видов FIFO и вам в 90% случаев не нужно будет его писать. Но я не буду на это возражение отвечать.]
Небольшое отступление
Эту заметку я написал прежде всего для участников Сколковской Школы Синтеза Цифровых Схем, в качестве приквела к занятию «Стандартные блоки и приемы проектирования для ASIC и FPGA: очереди FIFO и кредитные счетчики». Это занятие проведет в субботу 22 января 2022 инженер-разработчик ПЛИС Дмитрий Смехов.
Дмитрий уже писал про FIFO на Хабре. Его заметка наглядно описывает, как работает пара из указателей для чтения и записи. Поэтому я очень рекомендую ее прочитать перед началом занятий, особенно часть начиная со слов «Определение пустого и полного FIFO» и до слов «Это означает, что FIFO полное и записывать дальше нельзя, что бы не испортить уже записанные данные».
При этом заметка Дмитрия посвящена FIFO с двумя тактовыми сигналами и памятью, причем глубиной степени двойки. Про FIFO с двумя тактовыми сигналами на школе будет отдельное занятие, по мотивам статей Клифа Каммингса (1, 2). Также при проектировании ASIC помимо FIFO c хранением данных в памяти часто используются FIFO на основе регистрового файла из D-триггеров, код для которых я написал в примере ниже.
Кроме этого статья Дмитрия недостаточно артикулирует зачем FIFO нужно вообще. Я попробую дать на пальцах некое первоначальное понимание для тех, кто видит FIFO впервые. А также дам три задачки, которые было бы хорошо решить участникам перед занятием, так как Дмитрий будет на нем говорить больше о кредитных счетчиках, чем о FIFO.
Что такое FIFO?
Альтернативные имена для сигналов:
Сигналы Push/Pop иногда называют put/get и иногда write/read. Но тут нужно быть внимательным. Есть FIFO, которые Xilinx называет «стандартными», в которых данные приходят после запроса read. Но при проектировании ASIC чаще используются FIFO, в которых следующие данные уже присутствуют на шине, когда Empty=0, и установка сигнала Pop/Read в единицу вызовет удаление текущего значения с головы FIFO. После чего там окажется следующее значение и FIFO станет пустым.
Сигналы Empty/Full иногда называют Can_read/can_write.
А чем FIFO отличается от сдвигового регистра (shift register), спросите вы? Два отличия:
В сдвиговом регистре глубины D данное/трансфер проходит от начала до конца ровно за D сдвигов, то есть минимум за D тактов. В FIFO же этот путь зависит от количества элементов в FIFO. То есть если FIFO пустое, то записанный трансфер будет доступен для чтения уже в следущем такте (для FIFO на D-триггерах или SRAM-based с байпасом). Но если FIFO глубиной D почти полное (наполненность равна D-1), то путь займет минимуму D тактов.
Зачем нужно FIFO?
FIFO позволяет расцепить отправлятеля и получателя данных по времени. Например представим, что у нас есть два процессора, которые работают совершенно параллельно и даже могут иметь разные адресные пространства. Представим, что им нужно передать данные так, чтобы данные не размножились и не потерялись, а также чтобы один процессор не ждал другого а просто занимался своей активностью и читал или писал когда ему удобно.
Для этого можно сделать, чтобы при записи в ячейку с определенным адресом одним процессором происходила запись в FIFO, а при чтении с определеного адреса другим процессором происходило чтение из FIFO:
А что будет, спросите вы, если CPU2 будет пробовать читать из пустого FIFO, или CPU1 будет пробовать писать в заполненное FIFO? Вот тогда процессор CPU1 будет останавливаться на инструкции store и ждать, а процессор CPU2 будет останавливаться на инструкции LOAD и ждать. Такая опция называется gated storage, она реализована в некоторых встроенных процессорах, например MIPS interAptiv.
Другое применение: выравнивание результатов параллельных блоков по времени. Допустим вы хотите получить от двух блоков два потока чисел и сложить их попарно. При этом блоки посылают числа в разное время, а блок, получающий результаты, может не готов принять сумму. Нет проблем, строим вот такую конструкцию, которая складывает числа попарно, даже если они шлются в разное время. Код для этой конструкции тоже на гитхабе и тоже намеренно незаконченный:
Еще применение. Если вы носите некие данные вместе (например координаты точек и их цвета) и хотите отправить поток этих данных на обработку, но обрабатывать собираетесь только часть данных (например пересчитывать координаты, но не трогать цвета), то вы можете отправить необрабатываемые данные в находящееся сбоку FIFO, где они будут лежать и ждать соотвествующие им обрабатываемые данные:
Пример 1
Перейдем к примерам. p020_generic_flip_flop_fifo.v содержит намеренно незаконченную реализацию простого FIFO на D-триггерах, с регистровым файлом data, парой из указателей wr_ptr/rd_ptr и использованием счетчика для генерации флагов empty и full.
Тонкий момент: так как в RTL-реализации имеется комбинационная логика после D-триггеров на выходе (это вполне допустимо), то при моделировании в тестовом окружении приходится идти на специальные ухищрения:
Вопрос на понимание 1: Каковы преимущества и каковы недостатки оставлять такой хвост из комбинационной логики после D-триггеров в данном примере
Вопрос на понимание 2: Перепишите пример, чтобы все выходы стали registered, то бишь шли от D-триггеров.
Для запуска примера можно использовать Icarus Verilog и GTKWaves. Как их установить, я описал в посте «Ни дня без строчки верилога — учим язык решением большого количества простых задач». Если вы поправите пример правильно, то вы увидите вот такие временные диаграммы:
и вот такой лог:
Вопрос на понимание 3: Позволяет ли данная реализация писать в полное FIFO?
Пример 2
Пример 3
В ней не хватает следующего кода, который нужно дописать для понимания:
Если вы сделаете все правильно, то пример выдаст следующий лог:
На временных диаграммах вы тоже можете увидеть, что в тестовой последовательности, cначала пары идут вместе и подряд (back-to-back). Потом получатель перестает принимать результаты (это называется backpressure). Еще до этого иссякает источник чисел B:
Через некоторое время прием восстанавливается и потом заталкивание и получение происходит случайно:
Вопрос на понимание 4: Будет ли схема работать, если удалить выходное FIFO? А одно из входных?
Вопрос на понимание 5: Зачем может понадобиться на выходе FIFO глубины 2 (подсказка: skid buffer).
Принцип FIFO в логистике
Сходства и отличия от LIFO
Похожий принцип, который часто упоминается одновременно с FIFO – схема, при которой отправляется товар, поступивший на хранение последним (LIFO). Данная модель работы с грузами будет уместна в ситуациях, когда объемы поставок и грузооборота весьма значительные, со стэковыми зонами хранения. Исходя из того, что некоторые товарные партии могут задержаться на территории складского комплекса на достаточно продолжительное время, LIFO в логистике не подходит для работы со скоропортящейся продукцией.
Общий принцип каждого из вариантов выглядит следующим образом:
Особенности FIFO:
Движение грузов идет в противоположных направлениях. Преимущества FIFO можно оценить при работе с грузами, имеющими сравнительно небольшую допустимую продолжительность хранения – пищевые продукты, «цикличные» товары (модные предметы одежды, актуальные электронные устройства). Здесь долговременное размещение недопустимо, ведь продукция может устареть, и продать ее будет очень сложно. Соответственно, возникнут дополнительные издержки, а FIFO поможет этого избежать.
Особенности LIFO:
Более сложная стратегия, преимущества которой определяются в основном нюансами бухгалтерского учета. Также система актуальная для компаний, которые сами занимаются производством. Метод позволяет с легкостью оценить величину текущих доходов и расходов, и на основании полученных результатов скорректировать себестоимость. Применение предыдущего принципа в такой ситуации приведет только к переоценке доходов (используется устаревшая информация).
LIFO дает преимущества в части налоговой отчетности, ведь доходы не переоценены, и платежи будут меньше, сократится списание убытков. Данная методика считается единственно верной при работе с однородными грузами – например, со строительными материалами. Когда сроки годности отсутствуют или являются очень продолжительными, а свободные складские площади сильно ограничены, другие принципы логистики не будут такими же эффективными, как LIFO.
Какой метод логистики выбрать?
Однозначного решения для данного вопроса быть не может, так как все определяется конкретными обстоятельствами. Главный критерий – это особенности движущегося по логистической цепочке товара. Принцип логистики FIFO целесообразен для устаревающей продукции, имеющей ограниченный промежуток времени на реализацию.
Нередко предлагается подход, при котором FIFO используется на складах сырья, тогда как второй метод – на складах с уже готовыми к реализации товарами. Главное в каждом из случаев – наличие достаточных складских площадей и оборудования для эффективной логистики, а также внимательный анализ с точки зрения финансовой эффективности и отчетности.
Логистика FIFO в бухгалтерском учете
Данный метод учета материальных и производственных запасов достаточно прост, так как поступление и списание рассматриваются в соответствии с их хронологией. Объектом учета могут быть различные материалы, сырье, полуфабрикаты, готовые изделия. С учетом того, что именно на складские запасы приходится значительная часть оборотных активов, оптимизация здесь очень важна. Практика показывает, что логистическая методика FIFO оптимальна для компаний с последовательным производственным процессом (производство продукции с ограниченным сроком годности).
Очереди сообщений в бэкенд-архитектуре: как построить надежную систему
Очереди сообщений — устоявшаяся технология, которую разработчики применяют уже много лет. Разберемся, как она работает.
Почему понадобились очереди сообщений
Серверные сообщения обычно устроены просто и однотипно: сервер получает запрос, обрабатывает его и сразу же возвращает клиенту. Схема хорошо работает до тех пор, пока обработка запроса занимает немного времени, например доли секунды.
Но бывает, что вернуть ответ клиентскому приложению сразу невозможно. Например, когда сервер обрабатывает видео — это может занять минуты и даже часы. На время обработки большого объема данных вычислительные ресурсы сервера загружены и его способность обрабатывать входящие запросы падает.
Что такое обмен серверными сообщениями и как он устроен
Допустим, серверное приложение получило тяжелый запрос. Оно передает его другим приложениям дальше по цепочке, а само продолжает общение с клиентом.
Для передачи сообщения другим приложениям используют специальный инструмент — очереди сообщений. Эта технология решает любые инфраструктурные вопросы:
Когда в вашем бэкенд-приложении задействованы очереди, обработка видео выглядит так:
Схема асинхронного обмена сообщениями между приложениями. Источник
FIFO и LIFO (ФИФО и ЛИФО) — что это такое
Сервисы обмена сообщениями между серверами делятся на два типа:
Сервисы для организации очередей сообщений
Популярные сервисы для организации очередей сообщений — RabbitMQ, Apache Kafka и Redis. Давайте посмотрим, чем они различаются.
RabbitMQ
Сервер организации очередей сообщений, написанный на языке программирования Erlang. Это распределенный и горизонтально масштабируемый брокер сообщений. Он позволяет разным программам взаимодействовать с помощью протокола AMQP, а через дополнительные модули — и с помощью некоторых других протоколов: MQTT, HTTP и так далее.
RabbitMQ — это инструмент, который силен в маршрутизации сообщений. Система поддерживает несколько видов распределения сообщений в сети, их комбинация позволяет создавать очень хитрые правила доставки сообщений.
Apache Kafka
Apache Kafka — продукт, который реализует систему распределенного журнала событий. Kafka славится своей скоростью работы и масштабируемостью. Из-за способности передавать терабайты данных эту систему очередей сообщений любят разработчики, работающие с Big Data. Например, ее используют в Airbnb, Adidas, Cisco и PayPal.
Redis
Redis создавалась как система хранения данных в оперативной памяти. Изначальное предназначение — ускорение доступа к востребованной информации и построение систем кеширования.
Но разработчики добавили в код возможность построения простых очередей и стеков. В итоге Redis применяют в качестве сервера очередей сообщений в проектах, где нужно быстро и дешево проверить инженерные гипотезы по работе с очередями.
Система обновления товарных запасов: FIFO и FEFO в логистике
Современный склад под управлением системы WMS функционирует в строгом соответствии с принципами FIFO и FEFO. Они описывают правила ротации товара, с учетом таких факторов как время поступления на хранение и истечение срока годности.
Что собой представляет принцип FEFO
При поступлении заказа от потребителей к отгрузке начинают подготавливать те товары, срок годности которых скоро закончится. Данный принцип применяет каждый логистический оператор, работающий с быстро оборачиваемыми категориями. В качестве примера можно привести сырую древесину, цемент (этот строительный материал очень требовательный), продукты питания, косметические средства, фармацевтические препараты и пр.
Товары с минимальными сроками годности размещаются вблизи погрузочных рамп, а та продукция, которая имеет длительный срок, отправляется в дальние ячейки.
Как работает компания, использующая принцип FIFO
Система обновления товарных запасов ФИФО подразумевает отправку заказчикам грузов (бытовая электроника, модная одежда и т.д.), которые дольше всего лежат на полках складского комплекса. То есть, какой товар первым прибыл, тот и отгружается. В процессе формируется очередь клиентов.
Недостатком описанного подхода является возможность порчи и списания продукции, оказавшейся в конце списка.
Отличия FIFO и FEFO друг от друга существенные. Это просматривается даже в выборе стеллажных систем. Складской метод FIFO подразумевает использование стандартных набивных систем, гравитационных стеллажей и систем Push Back. На складах FEFO применяют похожие конструкции, предназначенные именно для хранения продуктов питания.
Несмотря на разницу в обработке грузов, это не влияет на бухгалтерский учет. А благодаря современной системе WMS, компания “Мирада” предлагает услуги логистики, основанной сразу на двух принципах FIFO и FEFO.
Принцип FEFO и FIFO на складе означает, что помещение разделено на зоны, используемые для складирования и отгрузки товаров по разным правилам. Сотрудники проводят оценку каждого груза. За счет чего не происходит ошибок и задержек.
Принципы обработки товаров на складе
Cклад Сток-трейдинг работает с использованием системы управления EME.WMS, которая регулирует распределение груза на всех этапах взаимодействия с ним, от приема до отгрузки.
WMS позволяет использовать три основных принципа обработки товара — FIFO, FEFO и LIFO. Каждый из этих обозначает порядок взаимодействий с грузом.
Чаще всего используется комплектация FIFO — отгружаем наиболее давно прибывший товар, или FEFO — для продуктов с определенным сроком годности.
Условия хранения на складе
Наш склад относится к сухому типу, температура поддерживается в пределах 16-25 С°.
Мы работаем с:
При этом используем такую настройку WMS, которая позволяет оптимально использовать объемы хранения. Например, товар одного вида хранится в двух ячейках — 5 единиц в одной и 2 единицы в другой. При поступлении заказа на 3 единицы WMS подберет комплектацию так, что 2 единицы буду взяты из второй ячейки, чтобы освободить ее, и 1 единица из первой ячейки.
Благодаря особенностям нашей WMS, все работы на нашем складе осуществляются с помощью Wi-Fi терминалов. Все сотрудники работают в едином информационном пространстве — сотрудники транспортного отдела Сток-трейдинг, сотрудники департамента логистики нашего клиента, транспортные компании, получатели товара (розничные магазины клиента). Для обеспечения бесперебойной работы склада мы имеем резервное электропитание и запасной канал связи.
Оборудование для обработки и манипулирования грузами
Для размещения грузов и формирования заказов на отгрузку имеется вся необходимая техника:
FIFO и FEFO
Принципы FIFO и FEFO являются важной частью складской логистики. Появление неликвида относится к категории непредвиденных расходов. Продукция без срока годности также теряет свой товарный вид по истечению длительного времени. Для того, чтобы избежать подобных затрат, необходимо осуществлять разделение наименований на основании проведения сортировки.
Логистика склада. Принципы FIFO и FEFO
Ответственное хранение является неотъемлемой задачей склада. В зависимости от величины партий продукции определяется необходимая площадь склада для хранения. Следующим шагом явлется разделение по типу размещаемой продукции и осуществление соответствующей ротации мужду изделиями.
Например, продукты питания должны размещаться таким образом, чтобы избежать порчи, так как порча окажет негативное влияние как на репутацию марки, так и на сохранность располагающихся вблизи продуктов. Для этого при приёме груза создается учёт портящихся продуктов, где указывается время поставки и дата истечения безопасного периода. Для других наименований важна дата производства и доставки на склад. Ведь даже одежда может потерять цвет и общий внешний вид после длительного размещения.
Как и в любой другой сфере, для правильного хранения существуют различные методики. Только на основании подобных методов работы возможно избежать потери денег, сил и времени. Наибольшую популярность на складах обрели принципы FIFO и FEFO.
Описание принципов FIFO и FEFO
Метод FIFO — первый пришёл, первый ушёл. Это означает, что вне зависимости от временных ограничений, к отправке готовится та продукция, которая лежит дольше. Это подходит для одежды, бытовой техники и т.п.
Аббревиатура FEFO в дословном переводе означает — первым истёк, первым уходит. Очевидно, что ключевым моментом в этом принципе является период срока годности, на основании которого подготавливается отправляемая партия. Простыми словами, в первую очередь уходит товар, который находится наиболее близко к стадии испорченности. Применяется это к продукции с небольшим сроком хранения, например, продукты питания, косметика, лекарственные препараты, строительный материал (древесина, цемент) и т.д.
Выбор методов FIFO и FEFO на складе
От выбора методики зависит также выбор системы стеллажей. Принцип FIFO на складе требует установления следующих типов стеллажей:
Отличительной чертой этих систем является противоположность движения груза. При работе с FEFO используют практически те же конструкции, но предназначены они конкретно для размещения продуктов питания.
Принцип работы FIFO и FEFO на складе
Принцип работы подобных методов подразумевает разделение складского помещения на зоны, где используются свои правила отгрузки. Например, использование скоропортящихся продуктов с помощью системы FIFO на складе приведёт к неминуемой порче. При работе с большим ассортиментом различного вида существует необходимость одновременного использования сразу двух вариантов. В таком случае вести единый учет самостоятельно достаточно сложно. Большинство успешных предпринимателей обращаются за помощью к подрядным организациям, предоставляющим подобные услуги.
Наша компания РЛК предоставляет качественное оказание услуг ответственного хранения на основании принципов FIFO и FEFO. Современное оборудование поможет правильно и безошибочно отсортировать изделия на основании их характеристик. Автоматизация процесса исключает возникновение ошибок, связанных с человеческим фактором. Также мы оказываем услуги по доставке в конечную точку, как при возникновении проблемных ситуаций, так и на постоянной основе.
Для получения консультации позвоните нам по номеру телефона 8-800-600-12-14, наши специалисты ответят на все возикшие вопросы.
Пример расчета по методам ФИФО и ЛИФО в бухгалтерском учете
ФИФО в бухгалтерском учете — это…
С 01.01.2021 правила учета МПЗ регулируются новым ФСБУ 5/2019 «Запасы» (утв. приказом Минфина от 15.11.2019 № 180н), ПБУ 5/01 утратило силу.
Некоторые учетные правила изменены существенно. Узнать об изменениях в учете МПЗ вам поможет аналитический Обзор от КонсультантПлюс. Получите пробный доступ к К+ бесплатно и переходите в материал.
Но и в новом стандарте ФИФО — это один из допустимых в бухучете способов списания стоимости материалов в производство или при их ином выбытии (п. 36 ФСБУ 5/2019 (до 01.01.2021 — п. 16 ПБУ 5/01)).
С остальными методами списания МПЗ вас познакомит этот материал.
Данный способ применим в бухучете разных по отраслевой специфике компаний:
Для розничной торговли метод ФИФО непригоден, поскольку не позволяет в бухучете формировать себестоимость по отдельным видам товаров в точной оценке.
В основе данного метода лежит допущение о порядке списания МПЗ: материалы при списании в производство или ином выбытии оцениваются в той последовательности, в которой были приобретены. При этом должна соблюдаться строгая хронология их поступления и списания.
Если вы не знаете какой способ выбрать при списании МПЗ, воспользуйтесь рекомендациями экспертов КонсультантПлюс. Получите пробный доступ и бесплатно переходите к Готовому решению.
Благодаря этому допущению метод ФИФО часто называют «моделью конвейера» или «методом естественной очереди». Исходя из базового принципа метода ФИФО («первый пришел — первый ушел») поступившие первыми на склад материалы используются первыми.
Модели применения ФИФО
Существует 2 разновидности метода ФИФО:
В производстве продукции ООО «Технология» используется специальная присадка. На начало месяца в учете компании числится остаток присадки в количестве 60 кг (цена 1 кг — 245 руб., стоимость остатка — 14 700 руб.).
В течение месяца на склад поступила присадка на общую сумму 274 200 руб.:
В производство списано 720 кг присадки.
Расчет по стандартной модели ФИФО:
1. Рассчитаем стоимость списанной присадки:
Итого: 14 700 + 152 400 + 16 200 = 183 300 руб.
2. Определим стоимость и количество остатка материала на конец месяца:
14 700 + 274 200 − 183 300 = 105 600 руб.
60 + (600 + 300 + 150) − 720 = 390 кг.
Расчет по модифицированной модели ФИФО:
1. При остатке 390 кг (240 кг из 2-го поступления и 150 — из последнего) стоимость оставшейся на складе присадки на конец месяца составит:
240 × 270 + 150 × 272 = 105 600 руб.
2. Расчет стоимости списанной в производство присадки:
14 700 + 274 200 − 105 600 = 183 300 руб.
Выводы из рассмотренного примера:
Таким образом, стандартная расчетная модель ФИФО обладает повышенной трудоемкостью, если в течение месяца закупки материалов производятся достаточно часто.
Как учитывать товары в оптовой и розничной торговле, подробно рассказали эксперты КонсультантПлюс. Если у вас нет доступа, получите пробный онлайн-доступ к системе бесплатно.
Проводки при списании материалов см. здесь.
Какой способ списания материалов отменен?
До 2008 года методы ФИФО и ЛИФО считались допустимыми для списания материалов. Базовый принцип ЛИФО: материалы, поступившие на склад последними, с учёта выбывают первыми.
С 01.01.2008 приказом Минфина от 26.03.2007 № 26н ЛИФО исключили из возможных методов списания для целей бухучета, поэтому в настоящее время рассмотрение примеров расчета по методу ЛИФО стало неактуальным.
Помимо ЛИФО и ФИФО российские налогоплательщики применяют метод списания по средней себестоимости. Суть данного метода описана в материале «Порядок списания материалов по средней себестоимости».
Итоги
Метод ФИФО предусматривает списание материалов в производство (или ином выбытии) в той последовательности, в которой они были приобретены. Метод списания МПЗ по стоимости последних по времени поступления (ЛИФО) в бухучете не применяется с 2008 года.
Fifo что это такое
FIFO – правило ротации товара, в соответствии с которым первым в продажу должен поступать товар с меньшим сроком годности: «первым пришел, первым ушел» (First In, First Out).
Правило действует на всем протяжении жизни товара с момента его производства до момента потребления:
Таким образом обеспечивается оперативное без задержек движение товара потребителю, что особенно важно для скоропортящейся продукции. Например, для хлебобулочной или молочной продукции срок движения товара с момента производства до поступления на прилавок, как правило, не превышает суток. Тем самым потребитель имеет максимально свежий товар, а все участники процесса движения товара (производство, склад, торговое подразделение, торговые точки) не имеют убытков, связанных с необходимостью списания просроченного товара.
Но даже для продукции с более длительными сроками годности правило может быть полезным, в частности, оно позволяет решать следующие задачи:
Если товар не является скоропортящимся и стоит задача создать страховочный запас, то может использоваться правило LIFO — «последним пришел, первым ушел» (Last In, First Out). По этому же правилу будет обеспечиваться ротация товара, участвующего в конкурсах, розыгрышах, лотереях и других маркетинговых акциях. Обычный товар будет приторможен на складах, а вместо него в продажу пойдет товар акционный, чтобы потребитель имел возможность купить его в сроки проведения акции.
Оба эти правила, FIFO и LIFO, пришедшие в продажи из логистики, учат торгового представителя управлению запасами в торговой точке. Тем самым они фиксируют его внимание не только на on-take (продаже товара в торговую точку), но и на off-take (продажах из торговой точки конечным потребителям).
Как принцип FIFO работает в инвестициях
Конец года и начало следующего – время, когда все подводят итоги. Не отступают от этой традиции и инвесторы. Во-первых, вскоре нужно будет уплатить налоги. Во-вторых, это хороший повод оценить доходность портфеля. Сегодня предмет моего обзора – так называемый принцип FIFO и его применение на фондовом рынке. Это правило лежит в основе расчетов налоговой базы, поэтому его нужно знать каждому инвестору.
Что такое принцип FIFO
Я регулярно получаю много вопросов и специально для читателей я разработал Курс ленивого инвестора, в котором пошагово показал, как наладить порядок в личных финансах и эффективно инвестировать в различные активы. Рекомендую пройти, как минимум, бесплатную неделю обучения.
Если вам интересна практика и какие инвестрешения в моменте принимаю лично я, то вступайте в Клуб Ленивого инвестора.
FIFO — это аббревиатура от английского выражения First In First Out, в переводе означающего «первый вошел, первый вышел». Первоначально он нашёл применение в складской логистике. В инвестировании это принцип, по которому определяется, какие из ценных бумаг будут списаны со счета, если он захочет не полностью закрыть позицию, а лишь уменьшить ее.
Это не зависит от желания брокера или клиента. Принцип FIFO установлен законодательно и является единственно возможным способом расчета налогооблагаемой базы инвестора.
Рассмотрим самый простой пример работы принципа FIFO. Возьмем следующие условия:
В этом случае депозитарий спишет с его счета 100 акций, купленных первоначально, и только 50 из тех, что были приобретены позднее. В результате брокер рассчитает налоговую базу по первой формуле, приведенной на рисунке. Если бы работал обратный принцип, то он воспользовался бы второй.
Из приведенных расчетов хорошо видно, что от того, какие ценные бумаги будут списаны со счета, зависит размер налогооблагаемой базы. В приведенном примере за счет принципа FIFO возникают обязательства по уплате налога. Если бы действовал принцип LIFO (Last In First Out — последним пришёл, первым ушёл), который был отменен, инвестор не имел бы обязательств перед ФНС.
Зачем нужны компании SPAC
Компании SPAC или как попасть на биржу через чёрный ход
Особенности применения принципа FIFO
Принцип FIFO кажется простым и логичным, но на самом деле у него есть ряд тонкостей. Первая из них в том, что у брокера все субсчета инвестора учитываются совместно. Поэтому, если вы хотите вести несколько портфелей с разными стратегиями или использовать их для накопления на разные цели, лучше обращаться в разные компании.
Например, инвестор купил 10 акций эмитента А на своем основном счете, а спустя неделю еще столько же на субсчете. Через месяц решил сменить стратегию на субсчете и продал недавно купленные бумаги. В результате в торговом терминале он будет видеть портфель, где учтены акции компании А на основном счету, а на субсчете их нет. Но при этом брокер рассчитает налоговую базу, исходя из стоимости акций в момент первой покупки, сделанной на основном счете.
Исключением в вышеописанной ситуации будет ИИС. Согласно нормам законодательства, это выделенный счет. Находящиеся на нем активы должны учитываться отдельно от остальных бумаг инвестора. Еще один пример:
Формула для расчета налоговой базы будет иметь вид, приведенный ниже:
Акции, учтенные на ИИС, не будут списаны, хотя это произошло бы, если б они учитывались на спецсчете. Еще одна особенность применения принципа FIFO в том, что учет ценных бумаг ведется не с момента их покупки, а с той даты, когда они были приняты на баланс. Это надо учитывать, если у вас есть счета у разных брокеров, и вы захотите объединить их, перенеся свои активы в одну компанию. При этом вы должны будете предоставить брокеру данные о дате покупки ценных бумаг и уплаченной за них сумме. Но эти сведения будут учитываться только при расчете налоговой базы, а при продаже акций первыми уйдут те, что были зарегистрированы брокером раньше, даже если фактически они были куплены позже.
Что значит Buy The Dip для долгосрочного инвестора
Распаковка стратегии Buy The Dip: работает или нет?
Зачем инвестору помнить про принцип FIFO
Если вы инвестируете через российскую компанию, то все налоги считает брокер. Вам не нужно самому вычислять налоговую базу. Но я пишу об этом, потому что считаю, что важно понимать, как она формируется. Это даст вам возможность эффективно управлять своими налогами. Приведу пример:
В США популярны услуги финансовых консультантов, которые ищут подобные способы сэкономить на налогах и одновременно оптимизировать портфель.
Кроме того, принцип FIFO нужно учитывать не только при расчетах с ФНС. Он напрямую влияет на вашу среднюю цену покупки актива. А значит, и на вашу личную дивидендную доходность, если речь идет об акциях. Этот метод хорошо использовать, если вы активно докупали на просадке. Если цена вернулась к значениям, на которых вы только открывали позицию и нет оснований ожидать, что рост продолжится, может быть целесообразно продать акции, купленные по высокой цене. Это увеличит рентабельность вложений и поможет освободить деньги для более перспективных идей.
Текущая ликвидность и мгновенная ликвидность: применение в стоимостном анализе
Подводим итоги
Разумеется, нет необходимости досконально проверять за брокером правильность расчета налогов. Но инвестор, который полностью понимает все тонкости этого процесса, может не только проверять брокера, но и оптимизировать свой портфель с точки зрения налогообложения.
Расскажите в комментариях, доводилось ли вам использовать принцип FIFO для снижения средней цены позиции, уменьшения налоговой базы или еще с какой-либо целью.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
FIFO (First In First Out)
FIFO (англ. First In First Out ) является аббревиатурой для «первый пришел, первый ушел», способа организации и управления буфером данных, где сначала обрабатывается самая старая (первая) запись, или ‘голова’ очереди. Она аналогична обработке очереди (первым пришел, первым обслужен (ПППО)): где люди покидают очередь в том порядке, в котором они прибывают.
Противоположностью FIFO является LIFO (Last In First Out), «последним пришел, первым ушел», где самая молодая запись или «вершина стека» обрабатывается в первую очередь. [1]
Очередь с приоритетами не является ни FIFO, ни LIFO, но может принять подобное поведение временно или по умолчанию.
Теория массового обслуживания охватывает эти методы для обработки структур данных, а также взаимодействия между строгими FIFO очередями.
Содержание
Информатика
Структура данных
В зависимости от прикладной программы, буфер FIFO может быть реализован в виде аппаратного регистра сдвига, или с использованием различных структур памяти, обычно циклическим буфером или одним из видов списков.
Реализация
Следующий код показывает реализацию связанного списка FIFO на языке C++. На практике, существует целый ряд реализаций списка, в том числе популярных макросов Unix-систем C sys/queue.h или шаблона стандартной библиотеки C++ std :: list, устраняя необходимость в реализации структуры данных с нуля.
Первоочередность головы или хвоста очереди
Концы очереди FIFO часто называют головой и хвостом. К сожалению, существует спор относительно этих терминов:
Программирование работы диска
Дисковые контроллеры могут использовать очередь FIFO в качестве алгоритма планирования работы диска для определения порядка обслуживания запросов ввода/вывода.
Коммуникации и сети
Сетевые мосты, коммутаторы и маршрутизаторы, используемые в компьютерных сетях используют FIFO для хранения пакетов данных на пути к их следующему месту назначения. Как правило, по меньшей мере, одна структура FIFO используется за сетевое соединение. Некоторые устройства имеют несколько FIFO для одновременного и независимого массового обслуживания различных типов информации.
Электроника
FIFO широко используются в электронных схемах для буферизации и управления потоком между аппаратным и программным обеспечением. В своей аппаратной форме, в первую очередь FIFO состоит из набора операций чтения и записи указателей, систем хранения данных и логики управления. Хранение может быть статическим оперативным запоминающим устройством (ОЗУ), триггерами или любой другой подходящей формой хранения. Для FIFO нетривиального размера обычно используется двухпортовый SRAM, где один порт предназначен для записи, а другой для чтения.
Синхронный FIFO это такой FIFO, где один и тот же тактовый сигнал используется как для чтения, так и для записи. Асинхронный FIFO использует различные тактовые сигналы для чтения и записи. Асинхронные FIFO вводят проблемы метастабильности. Общая реализация асинхронного FIFO использует код Грея (или любой блок кода расстояния) для чтения и записи указателей для обеспечения надежной генерации флага. Еще одно примечание, касающееся генерации флага, в том, что надо обязательно использовать арифметические операции над указателями, чтобы создать флаги для реализации асинхронного FIFO. С другой стороны, можно использовать либо подход, который называется «дырявое ведро», или арифметические операции над указателями для создания флагов в реализациях синхронных FIFO.
Примеры флагов состояния FIFO включают в себя: полный, пустой, почти полный, почти пустой, и т.д.
Очередь FIFO полна/пуста
Аппаратный FIFO используется для целей синхронизации. Он часто реализуется в виде круговой очереди, и, таким образом, имеет два указателя:
Операции чтения и записи адреса изначально находятся на первой позиции памяти и очередь FIFO пуста.
Очередь FIFO пуста
Когда регистр адреса чтения достигает регистра адреса записи, FIFO вызывает сигнал «Пуст».
Очередь FIFO полна
Когда регистр адреса записи достигает регистра адреса чтения, то FIFO запускает сигнал «Полон».
Как принцип FIFO работает в инвестициях и что о нем надо знать инвестору
Привет, друзья. Сегодня мы с вами продолжим пополнять копилку терминов инвестора и разберем правило, которое лежит в основе расчетов налоговой базы.
Скоро завершается календарный год, и эта тема станет особенно актуальной. Итак, принцип FIFO: что необходимо знать инвестору об этом.
О понятии
FIFO – это аббревиатура выражения «First In, First Out», что переводится как «первым прибыл, первым убыл».
Первоначально данный метод использовался в логистике и означал, что груз, который пришел на склад первым, в последствии первым и отгружается.
В инвестировании ФИФО – это принцип, согласно которому ценные бумаги, поставленные на учет первыми, списываются со счета тоже первыми.
Это не зависит от желания инвестора или брокера, поскольку данный процесс является законодательно утвержденным способом расчета налогооблагаемой базы инвестора.
Для справки. Ранее существовал еще один метод LIFO, или «Last In, First Out», что переводится как «последним прибыл, первым убыл». Он подразумевал обратный учет, согласно которому ценные бумаги, зарегистрированные последними, выбывали с учета первыми. Позже его отменили и в данный момент используется только метод ФИФО, благодаря которому подсчитываются финансовые результаты инвестора и налогооблагаемая база.
Для наглядности рассмотрим простой пример работы метода FIFO:
В данном случае при продаже активов депозитарий спишет со счета инвестора сто акций, которые были приобретены в начале, а 50 из тех, что были куплены во время второй сделки.
В итоге налоговая база будет рассчитана по первой формуле ниже. А если бы работал обратный принцип LIFO, то работала бы вторая формула.
Из расчетов видно, по какой причине принцип LIFO ушел из норм законодательства. В первом случае у инвестора возникают обязательства перед налоговой, а во втором случае – нет.
Особенности использования на практике
На первый взгляд метод ФИФО кажется логичным и простым. По факту в этом вопросе есть много нюансов.
К примеру, брокер учитывает все субсчета инвестора вместе. Иными словами, если инвестор желает вести несколько портфелей и использовать разные стратегии либо копить на разные цели, то лучше завести счета в разных брокерских компаниях.
Приведу пример.
Инвестор приобрел 10 ценных бумаг на основном счете, а чуть позже докупил еще 10 бумаг на субсчете. Через какое-то время он решил сменить стратегию инвестирования на субсчете и продал акции, купленные во время последней сделки.
Таким образом в торговом терминале будет виден портфель, где учтены акции на основном счете, а на субсчете их не будет. В то же время брокер рассчитывает налоговую базу, исходя из стоимости ценных бумаг в момент первой покупки, совершенной на основном счете.
Единственным исключением в таком случае будет ИИС. По закону это выделенный счет. И все активы, находящиеся на нем, учитываются отдельно от остальных активов инвестора.
Формула расчета налоговой базы будет выглядеть так:
10 * (95 – 100) + 5 * (95 – 90)
Ценные бумаги, которые учтены на ИИС, списаны не будут. Если бы они учитывались на спецсчете, то их бы списали.
Еще один нюанс использования принципа ФИФО в том, что учет акций ведется не с даты их приобретения, а с момента их принятия на баланс. Это стоит учитывать, если у инвестора есть счета у разных брокеров, и он желает объединить их, чтобы все активы находились у одного посредника.
При этом нужно будет предоставить брокеру данные о дате приобретения активов и суммах, уплаченных за них. Эти сведения будут учитываться при определении налоговой базы.
При продаже первыми уйдут те акции, которые были зарегистрированы раньше, даже в том случае, если фактически они были приобретены позже.
Зачем инвестору знать про FIFO
Если на бирже иметь дело с акциями только российских компаний, то определять налоги инвестору не нужно. В качестве налогового агента в таком случае выступает брокер.
Но тем не менее совсем не лишним будет понимать, как формируется налоговая база, что позволит более эффективно управлять своими налогами.
В США очень популярны услуги консультантов, которые помогают инвесторам найти подобные лазейки, чтобы снизить налоги и оптимизировать портфель.
Метод ФИФО стоит учитывать не только в вопросе налогообложения. Он также оказывает влияние на среднюю цену покупки ценной бумаги. А, следовательно, и на дивидендную доходность.
Его хорошо применять, когда, к примеру, инвестор докупал много активов в моменты просадок.
Когда цена возвращается к той, за которую он покупал активы при открытии позиции, и нет особых причин ожидать продолжение роста котировок, то более выгодным будет продать дорогие акции.
Это поможет увеличить рентабельность инвестиций и освободить средства для более перспективных вложений.
На сегодня это все по данной теме. Если у вас остались вопросы, вы можете задать их в комментариях.
Не забудьте подписаться на обновления блога, ведь впереди еще много полезных и актуальных публикаций о финансах и инвестировании.
Более 8 лет изучаю инструменты интернет заработка, создал несколько источников дохода.
Активно инвестирую в различные направления.
На страницах блога помогаю людям становиться финансово грамотными и улучшать качество своей жизни.
Метод ФИФО в акциях
Метод ФИФО (FIFO – «first in, first out») – это способ налогового учета ценных бумаг. Перевод с английского «первым пришел – первым ушел», хорошо отражает смысл этого принципа: первые купленные бумаги в первую очередь уйдут из портфеля при продаже. Поскольку именно он используется при расчете налоговой базы, стоит понимать его логику, чтобы использовать в своих интересах.
Пример действия ФИФО на практике
Допустим, в июне 2020 года инвестор купил 10 акций «Полюс» по 11 000 руб. А в августе приобрел еще 10 акций по 17 000 руб. Если затем при цене в 14 000 руб. за акцию инвестор решил продать 15 бумаг, то ни у него, ни у его брокера нет возможности выбрать, какие именно бумаги продавать: первыми будут проданы те, что были куплены первыми.
Дата | Действие | Позиция | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Июнь 2020 | +10 акций по 11000₽ | 10 акций | |||||||||
Август 2020 | +10 акций по 17000 ₽ | 20 акций | |||||||||
Декабрь 2020 | -15 акций по 14000₽ | 5 акций | |||||||||
Месяц | Себестоимость | Продажа |
---|---|---|
Июнь | 1000 | 4000 |
Июль | 2000 | 4000 |
Август | 3000 | 4000 |
Что мы имеем? При реализации товара по принципу FIFO в первую очередь продается та продукция, которая и была доставлена первой. А это значит, что если бы мы не продали весь товар за три месяца и произвели расчет прибыли, то в случае с ФИФО значение будет выше за счет низкой себестоимости продукции в начале. В то время, как с приципом ЛИФО получилась бы обратная картина из-за последних завышенных цен в августе на товары.
Способ реализации не влияет на количество проданных товаров или на реальную полученную прибыль: он позволяет распоряжаться товаром более практично и верно. В то время, как бухгалтерские отчеты будут различаться в случае реализации посредством ФИФО и ЛИФО.
Принцип ФИФО подходит для сезонных бизнесов, которые продают одежду или предметы домашнего обихода и другую похожую продукцию. Однако не подойдет для компаний, занимающихся продажей электронных товаров. Все зависит от вашей специфики бизнеса: выбирайте тот тип реализации, который позволит продать больше товара и получить больше покупателей.
Условия поставки FILO, LILO, LIFO и FIFO
Условия морских контейнерных перевозок содержат в себе информацию об включенных в стоимость фрахта или не включенных расходах в порту отправки или прибытия. Если вы когда-нибудь возили грузы морем, то встречали эти термины: Cy-Cy, FiLo, LiLo, FiFo, LiFo. В этой статье мы расскажем о каждом из этих условий подробнее.
Условие поставки FILO
(от англ. Free In Liner Out) — в стоимость не включена погрузка на судно, но включена выгрузка в порту назначения.
Условие поставки LILO
(от англ. Liner In Liner Out) — полная стоимость, включающая и морской фрахт со всеми надбавками, и погрузку, и выгрузку (DTHC, OTHC).
Условие поставки LIFO
(от англ. Liner In Free Out) — обратное от FILO, т.е. погрузка включена, а выгрузка — нет.
Условие поставки FIFO
(от англ. Free In Free Out) — стоимость только морского фрахта, без погрузки контейнера на судно в порту отправления и без его выгрузки с судна в порту назначения
Как проще запомнить эти термины FiLo, LiLo и другие?
Рекомендуем опираться на английское слово Free и первой его буквы.
Пример:
Fi (от Free) или Fo (от Free) — погрузка или разгрузка не включена, соответственно.
Где нет Fi или Fo (буквы F) — там DTHC/OTHC включюены
Условие Cy-Cy
Cy — то аббревиатура с английского языка, означающая container yard (контейнерный терминал), место, где стоят контейнеры перед отправкой или после прибытия.
FIFO (информатика)
FIFO — акроним First In, First Out («первым пришёл — первым ушёл», англ. ), абстрактное понятие в способах организации и манипулирования данными относительно времени и приоритетов. Это выражение описывает принцип технической обработки очереди или обслуживания конфликтных требований путём упорядочения процесса по принципу: «первым пришёл — первым обслужен» (ПППО). Тот, кто приходит первым, тот и обслуживается первым, пришедший следующим ждёт, пока обслуживание первого не будет закончено, и т.д.
Этот принцип аналогичен поведению лиц, стоящих в очереди, когда люди получают обслуживание в том порядке, в котором они занимали очередь. То же самое происходит, например, на нерегулируемом перекрёстке, когда водители ожидают своей очереди на продолжение движения (в американских ПДД нет правила «помеха справа», приоритет определяется по принципу FIFO). ПППО также используется как сокращённое название для алгоритма FIFO планирования работы операционной системы, по которому процессорное время выделяется каждому процессу в порядке их поступления на обслуживание. В более широком смысле, абстракция LIFO или Last-In-First-Out («последним пришёл — первым ушёл») является противоположностью абстракции FIFO. Разница, возможно, станет яснее, если принять во внимание реже используемый синоним FILO, означающий First-In-Last-Out («первым пришёл — последним ушёл»). В сущности, обе абстракции являются конкретными случаями более общего понятия работы со списком. Разница не в списке (данных), а в правиле доступа к содержимому. В первом случае добавление делается к одному концу списка, а снятие с другого, во втором случае добавление и снятие делается на одном конце. [1]
Вариантом очереди является очередь с приоритетом, для которой нельзя использовать название FIFO, потому что в этом случае обработка структуры данных происходит по другому принципу. Теория массового обслуживания охватывает более общее понятие очереди, а также взаимодействие между очередями, обслуживание в которых осуществляется по принципу «строго-FIFO».
Содержание
Информатика
Структуры данных
В информатике этот термин относится к способу запоминания данных, обрабатываемых в очереди. Каждый элемент очереди хранится в структуре данных очереди (без исключений). Первые данные, добавленные в очередь, будут первыми из неё удалены, т. е. обработка производится последовательно в том же порядке, что и поступление. Это типичное поведение для очереди, хотя и не единственно возможное (см. также алгоритмы LIFO (информатика) и стек).
Типичная структура данных выглядит следующим образом (На примере языка C/C++):
(Для информации об абстрактных структурах данных см. очереди. Подробнее о реализации см. кольцевой буфер.)
Популярные Unix-системы включают в языки программирования C/C++ файл заголовка sys/queue.h, который содержит макросы, используемые в приложениях по созданию FIFO очередей.
Споры о голове и хвосте очереди
Споры по поводу терминов «голова» и «хвост» существует в связи с очередями FIFO. Для большинства людей добавление нового элемента в очередь делается в её хвост, потом этот элемент остаётся в очереди до достижения её головы и, соответственно, оттуда покидает очередь. Эта точка зрения оправдана по аналогии с очередями людей, которые ждут каких-то услуг, при этом в приведенном выше примере можно найти параллели с использованием терминов «фронт» и «тыл». Однако, некоторые люди считают, что новые объекты входят в голову очереди и покидает её через хвост, подобно пище, проходящей через змея. Очереди, описанные таким образом, появляются в тех случаях, когда они могут рассматриваться как официальные, например, в описании операционной системы GNU/Linux.
Конвейеры
В вычислительных средах, которые поддерживают модели конвейеров и фильтров для межпроцессного взаимодействия, FIFO является альтернативным названием для именованного канала.
Планирование работы диска
Контроллеры дисков могут использовать метод FIFO в качестве алгоритма планирования работы диска по обслуживанию запросов ввода-вывода данных.
Коммуникация и сети
Коммуникационные мосты, коммутаторы и маршрутизаторы, используемые в компьютерных сетях, используют буферы FIFO для хранения пакетов данных при их передаче к следующему месту назначения. Обычно используется по крайней мере одна структура FIFO при каждом соединении сети. Некоторые устройства обладают несколькими буферами FIFO для одновременных и независимых очередей различных типов информации.
Электроника
Принцип FIFO обычно используется в электронных схемах для буферизации и управления потоком, передаваемом от аппаратного обеспечения к программному. В аппаратной форме FIFO в основном состоит из множества указателей чтения и записи, памяти и логики управления. Устройство памяти может быть SRAM, триггер, защёлка или любого другого подходящего типа. Для FIFO больших размеров используется, как правило, двойной порт SRAM, в котором один порт используется для записи, а другой для чтения.
Синхронным является такой FIFO, в котором одни и те же часы используются как для чтения, так и для записи. Асинхронные FIFO используют для чтения и записи различные часы. При использовании асинхронных FIFO возникает проблема метастабильности. Чаще всего при реализации асинхронных указателей FIFO используется код Грея (или любой другой код, в котором два соседних значения шкалы сигнала отличаются только в одном разряде) для обеспечения надежной генерации флага. Заметим ещё, что для генерации флагов в асинхронных реализациях FIFO нужно обязательно использовать арифметические указатели. И наоборот, для генерации флагов в синхронных реализациях FIFO можно использовать либо алгоритм «дырявое ведро», либо тот же арифметический указатель.
Примерами флага статуса FIFO являются: полон, пуст, почти полон, почти пуст, и т.д.
Первая известная реализация FIFO в электронике была сделана Питером Алфке в 1969 году в компании Fairchild Semiconductors. Сейчас Питер Алфке является директором Xilinx.
Очередь FIFO полна/пуста
В аппаратуратных устройствах принцип FIFO используется для синхронизации. Он часто реализуется в виде кольцевой очереди и имеет два указателя:
Первоначально адреса чтения и записи оба равны первой позиции памяти, при этом очередь FIFO пуста.
Очередь FIFO пуста Когда регистр адреса чтения догоняет регистр адреса записи, триггер FIFO выдаёт сигнал «Пуст». Очередь FIFO полна Когда регистр адреса записи догоняет регистр адреса чтения, триггер FIFO выдаёт сигнал «Полон».
Метод FIFO в инвестировании: примеры расчета
Принцип FIFO используется при учете сделок на фондовом рынке и в расчете налогооблагаемой базы. Разбираем, в чем суть методики и чем она полезна для инвесторов.
Что такое метод FIFO?
В широком значении слова FIFO и LIFO — это две системы учета активов или товарно-материальных ценностей.
Система LIFO была отменена российским законодательством и не используется в бухучете с 2008 года. Для учета активов в России разрешено применять только методику FIFO, и именно она используется для расчёта финансового результата и налоговой базы на российских биржах.
Почему этот метод важен для инвесторов? Немногие сразу инвестируют крупную сумму на длинный срок без пополнений портфеля: чаще периодически (с зарплаты) покупают паи одних и тех же фондов. Результат включает в себя несколько покупок по разным ценам в разные моменты времени, хотя в терминале вы увидите лишь общее число паев и среднюю цену покупки.
Допустим, если было куплено 15 акций по 90 рублей и 25 акций по 105 рублей, то средняя цена всех 40 акций рассчитывается как [(15 × 90) + (25 × 105)] / 40 ≈ 99.4 рубля.
Понимать метод ФИФО важно и тем, кто планирует выход на американские рынки. В США, как и в России, метод установлен на законодательном уровне.
Особенности применения системы FIFO
Согласно правилу FIFO, ценные бумаги, приобретенные в первую очередь, при продаже первыми уходят из портфеля. Основные положения, на которые стоит обратить внимание, следующие:
Рассмотрим эти пункты на конкретных примерах.
Пример 1
Инвестор приобрел 25 акций компании Газпром 04.06.2021 через брокера №1. Еще 10 акций Газпрома он купил 05.07.2021 через брокера №2. Затем клиент решил закрыть счет в брокерской компании №1 и перевести ценные бумаги к участнику рынка №2.
В процессе совершения перевода 25 акций Газпрома встанут на учет после десяти бумаг, купленных 05.07.2021. В дальнейшем при заключении сделок о продаже акций GAZP в первую очередь будут сниматься с учета бумаги, приобретенные 5 июля.
Фактически брокеры ведут учет активов с даты их постановки на баланс. При этом срок владения ценными бумагами отсчитывается с даты покупки при наличии подтверждающей документации. Если клиент предоставит отчет, брокер учтет данные о сроке владения и стоимости активов при расчете налога.
Пример 2
Инвестор имеет на брокерском счете 15 акций Трубной Металлургической Компании (ТRМК), купленных по цене 100 руб. за штуку. Через неделю он приобрел еще 15 ценных бумаг ТRМК по цене 110 руб. В течение месяца курсовая стоимость акций росла. Держатель решил продать 20 бумаг по цене 125 руб. за штуку.
Расчет прибыли и налога будет выглядеть следующим образом:
При продаже брокер списал со счета сначала 15 акций, приобретенных по первой сделке, а затем снял с учета 5 акций, купленных позднее.
Пример 3
Иногда ценные бумаги продаются по невыгодной цене: например в кризисные периоды, после резкого падения курсовой стоимости. В таком случае инвестор, незнакомый с методом ФИФО, скорее всего будет ожидать убытки, помня о последних сделках. Но согласно правилу FIFO, он даже может получить доход, несмотря на падение цен.
К примеру, в октябре 2019 года инвестор приобрел 20 акций АЛРОСА (ALRS) по цене 71 руб. В январе 2020 года он выкупил еще 30 акций этой же компании по 85 руб. При этом в торговом терминале он увидел общую позицию на 50 акций со средней ценой покупки 79.4 рубля. В феврале-марте курс падал и инвестор продал 25 акций ALRS по 76 руб.
Поскольку эта цена ниже средней, то кажется, что сделка должна принести убыток. На самом же деле:
Пример 4
Правило ФИФО применяется обобщенно в отношении основного счета и субсчетов. Субсчета — это дополнительные счета, привязанные к основному брокерскому счету, на которых можно реализовывать отличную от основного счета стратегию. По основным и дополнительным счетам у одного брокера ведется суммарный учет. Исключением является ИИС, так как он выделяется для обособленного учета налогов.
К примеру, у одного брокера клиент открыл три счета: основной для долгосрочных инвестиций, субсчет – для краткосрочных вложений, ИИС – для получения налоговых льгот. Рассмотрим, как ведется учет по разным счетам на примере трех сделок:
Через полгода инвестор решает продать 15 акций Татнефти на основном счете. После заключения сделки первыми снимаются с учета 5 акций на субсчете, а затем списываются 10 бумаг с основного счета. Акции, лежащие на инвестиционном счету, не будут реализованы, так как владелец не совершал сделку через ИИС. Финансовый результат и налог по ИИС рассчитывается отдельно от остальных счетов.
Чтобы избежать списания акций по основным и дополнительным счетам, целесообразно пользоваться услугами разных брокерских компаний. Так часто поступают инвесторы, ведущие несколько портфелей с разными стратегиями.
Закрытие сделок по FIFO на рынке форекс
Чаще всего правило FIFO задействуется при работе с отложенными ордерами и долгосрочными сделками. Мы видели, как брокеры отслеживают, чтобы позиции закрывались в той же очередности, в которой они были открыты. Например, трейдер на фондовом рынке открывает три краткосрочные сделки, подает ордер на закрытие последней, а брокер отказывает, предлагая завершить две предыдущие позиции.
Форекс-брокеры, предоставляющие возможность операций с валютой, работают с разными системами учета сделок. Платформа МТ4 позволяет трейдерам открывать любое количество валютных сделок и закрывать их в любой очередности. При этом каждая сделка видна отдельно. На платформе МТ5 используются две схемы исполнения ордеров.
Неттинговая система основана на принципе ФИФО (функционирует с 2010 года). Если трейдер открывает несколько сделок по одному активу, то они объединяются в общий ордер, т.е. возможна лишь одна позиция на покупку или продажу валюты.
Заключение
Финансовый результат сделок зависит от порядка учета активов. Клиенту российских брокеров обычно не нужно вычислять налогооблагаемую базу, поскольку брокер сам рассчитает сумму прибыли и налог – но знание методики FIFO позволяет понять, что можно ожидать при частичном закрытии позиций. Это может быть важно и тогда, когда инвестор хочет намеренно зафиксировать убыток с целью уменьшения налога путем операции сальдирования.
Метод FIFO
Метод ФИФО «Первым вошел – первым вышел» (First in – First out, FIFO)
Термин FIFO (аббревиатура от английского first input first output, переводится, как «первым пришел – первым ушел») широко используется в бухгалтерском учете, в складской логистике, в бережливом производстве. Данный принцип означает поддержание точной последовательности производства и доставки. Деталь, первой поступившей в процесс или на хранение, первой и выходит из процесса или со склада. Данный подход позволяет предотвратить устаревание хранящихся запасов сырья и деталей.
Принцип работы очереди ФИФО проще всего представить на примере наклонного желоба, который вмещает строго определенное количество деталей. Процесс – поставщик заполняет желоб изделиями вверху, процесс – потребитель изымает детали внизу.
Если желоб полностью заполнен, процесс – поставщик должен приостановить работу до тех пор, пока процесс – потребитель не изымет некоторую часть запасов. Очереди ФИФО должны быть снабжены системой предупреждения персонала предыдущего процесса о полной загрузке. В такой ситуации сотрудники предыдущего процесса помогают коллегам разгрузить очередь, т.к. нет никакого смысла продолжать работу, если на следующем этапе не готовы принять ее результаты.
Таким образом, очередь ФИФО позволяет предотвратить перепроизводство и является одним из способов регулирования вытягивания между двумя несвязанными процессами в тех случаях, когда поддержание запаса всех возможных видов деталей нецелесообразно (из-за высокой стоимости, редкого использования и т.д.). Метод ФИФО является обязательным условием реализации вытягивающей системы.
Реализация очереди FIFO на крупных предприятиях с большим потоком материалов, несмотря на простоту метода, достаточно сложна. Для этого необходимо наличие развитой системы учета сырья, полуфабрикатов, готовых изделий. В условиях небольших предприятий организация контроля движения материалов легче, а следовательно, легче и внедрение метода ФИФО.
Примечание
1. Иллюстрированный глоссарий по бережливому производству/ Под ред. Ч. Марчвински и Д. Шука; пер с англ.- М.: Альпина Бизнес Букс: CBSD, Центр развития деловых навыков, 2005.-123 с ISBN 5-9614-0189-8
Fifo что это такое
FIFO (акроним First In, First Out — «первым пришёл — первым ушёл») — способ организации и манипулирования данными относительно времени и приоритетов. Это выражение описывает принцип технической обработки очереди или обслуживания конфликтных требований путём упорядочения процесса по принципу: «первым пришёл — первым обслужен» (ПППО). Тот, кто приходит первым, тот и обслуживается первым, пришедший следующим ждёт, пока обслуживание первого не будет закончено, и так далее.
Этот принцип аналогичен поведению лиц, стоящих в очереди, когда люди получают обслуживание в том порядке, в котором они занимали очередь. То же самое происходит, например, на нерегулируемом перекрёстке, когда водители ожидают своей очереди на продолжение движения (в американских ПДД нет правила «помеха справа», приоритет определяется по принципу FIFO). ПППО также используется как сокращённое название для алгоритма FIFO планирования работы операционной системы, по которому процессорное время выделяется каждому процессу в порядке их поступления на обслуживание. В более широком смысле, абстракция LIFO или Last-In-First-Out («последним пришёл — первым ушёл») является противоположностью абстракции FIFO. Разница, возможно, станет яснее, если принять во внимание реже используемый синоним FILO, означающий First-In-Last-Out («первым пришёл — последним ушёл»). В сущности, обе абстракции являются конкретными случаями более общего понятия работы со списком. Разница не в списке (данных), а в правиле доступа к содержимому. В первом случае добавление делается к одному концу списка, а снятие с другого, во втором случае добавление и снятие делается на одном конце. [1]
Вариантом очереди является очередь с приоритетом, для которой нельзя использовать название FIFO, потому что в этом случае обработка структуры данных происходит по другому принципу. Теория массового обслуживания охватывает более общее понятие очереди, а также взаимодействие между очередями, обслуживание в которых осуществляется по принципу «строго-FIFO». Для обозначения этого принципа также используется аббревиатура FCFS ( first come, first served — «первым пришёл, первым обслужен»).
Содержание
Информатика
Структуры данных
В информатике этот термин относится к способу запоминания данных, обрабатываемых в очереди. Каждый элемент очереди хранится в структуре данных очереди (без исключений). Первые данные, добавленные в очередь, будут первыми из неё удалены, то есть обработка производится последовательно в том же порядке, что и поступление. Это типичное поведение для очереди, хотя и не единственно возможное (см. также алгоритмы LIFO и стек).
Типичная структура данных выглядит следующим образом (пример на языке C++):
(Для информации об абстрактных структурах данных см. очереди. Подробнее о реализации см. кольцевой буфер.)
Популярные Unix-системы включают в языки программирования C/C++ файл заголовка sys/queue.h, который содержит макросы, используемые в приложениях по созданию FIFO очередей.
Споры о голове и хвосте очереди
Споры по поводу терминов «голова» и «хвост» существует в связи с очередями FIFO. Для большинства людей добавление нового элемента в очередь делается в её хвост, потом этот элемент остаётся в очереди до достижения её головы и, соответственно, оттуда покидает очередь. Эта точка зрения оправдана по аналогии с очередями людей, которые ждут каких-то услуг, при этом в приведенном выше примере можно найти параллели с использованием терминов «фронт» и «тыл». Однако, некоторые люди считают, что новые объекты входят в голову очереди и покидает её через хвост, подобно пище, проходящей через змея. Очереди, описанные таким образом, появляются в тех случаях, когда они могут рассматриваться как официальные, например, в описании операционной системы GNU/Linux.
Конвейеры
В вычислительных средах, которые поддерживают модели конвейеров и фильтров для межпроцессного взаимодействия, FIFO является альтернативным названием для именованного канала.
Планирование работы диска
Контроллеры дисков могут использовать метод FIFO в качестве алгоритма планирования работы диска по обслуживанию запросов ввода-вывода данных.
Коммуникация и сети
Коммуникационные мосты, коммутаторы и маршрутизаторы, используемые в компьютерных сетях, используют буферы FIFO для хранения пакетов данных при их передаче к следующему месту назначения. Обычно используется по крайней мере одна структура FIFO при каждом соединении сети. Некоторые устройства обладают несколькими буферами FIFO для одновременных и независимых очередей различных типов информации.
Электроника
Принцип FIFO обычно используется в электронных схемах для буферизации и управления потоком, передаваемом от аппаратного обеспечения к программному. В аппаратной форме FIFO в основном состоит из множества указателей чтения и записи, памяти и логики управления. Устройство памяти может быть SRAM, триггер, защёлка или любого другого подходящего типа. Для FIFO больших размеров используется, как правило, двойной порт SRAM, в котором один порт используется для записи, а другой для чтения.
Синхронным является такой FIFO, в котором одни и те же часы используются как для чтения, так и для записи. Асинхронные FIFO используют для чтения и записи различные часы. При использовании асинхронных FIFO возникает проблема метастабильности. Чаще всего при реализации асинхронных указателей FIFO используется код Грея (или любой другой код, в котором два соседних значения шкалы сигнала отличаются только в одном разряде) для обеспечения надежной генерации флага. Заметим ещё, что для генерации флагов в асинхронных реализациях FIFO нужно обязательно использовать арифметические указатели. И наоборот, для генерации флагов в синхронных реализациях FIFO можно использовать либо алгоритм «дырявое ведро», либо тот же арифметический указатель.
Примерами флага статуса FIFO являются: полон, пуст, почти полон, почти пуст, и т. д.
Первая известная реализация FIFO в электронике была сделана Питером Алфке в 1969 году в компании Fairchild Semiconductors. Сейчас Питер Алфке является директором Xilinx.
Очередь FIFO полна/пуста
В аппаратуратных устройствах принцип FIFO используется для синхронизации. Он часто реализуется в виде кольцевой очереди и имеет два указателя:
Первоначально адреса чтения и записи оба равны первой позиции памяти, при этом очередь FIFO пуста.
Очередь FIFO пуста Когда регистр адреса чтения догоняет регистр адреса записи, триггер FIFO выдаёт сигнал «Пуст». Очередь FIFO полна Когда регистр адреса записи догоняет регистр адреса чтения, триггер FIFO выдаёт сигнал «Полон».
- Fhd что это
- Figma как пользоваться