Renesas Synergy™

FAQ 1008870 : FIFO(First-in First-out)

一般に「ファイフォ」と読みます。
レジスタなどの格納データを、格納した順に取り出す方式のことで、この方式をユニット化したものもFIFOと呼びます。逆に、最後に格納したデータを先に取り出す方式をLIFO(Last-in First-out)と呼びます(スタック参照)。



キューと呼ばれるデータ構造や、通信データの送受信部分では、データ授受の時間差吸収に、一時格納領域としてFIFOが利用されます。FIFOの段数が多いほど、吸収できる時間差が大きくなり、「欲しいときに取り出す」という自由度が高くなります。FIFOの格納データが満杯になると、プロセッサや送信側に信号で通知して、次のデータ格納を待たせます。逆にFIFOが空の状態も信号で通知します。
一般にFIFOは、入力データを最終段から格納してゆく概念で表現します。また、データを出力すると、残りのデータが最終段以降にシフトするイメージです。



実際には、リング・バッファになっていて、内部でデータがシフトするのではなく、ポインタが格納位置を更新管理します。



ここで、次データ・ポインタのアドレスが、「第1データ・ポインタのアドレス-1」のときに、1アドレスしか空きがないことをアラーム信号で、プロセッサや送信側に知らせます。
この状態で次のデータを格納すると、第1データ・ポインタと次データ・ポインタのアドレスが一致して、満杯の状態になります。また、格納データを順次取り出して、第1データ・ポインタと次データ・ポインタのアドレスが一致すると、空の状態になります。

他にご質問がございましたら、リクエストを送信してください