JP2020009146A - 共有型fifo装置 - Google Patents

共有型fifo装置 Download PDF

Info

Publication number
JP2020009146A
JP2020009146A JP2018129632A JP2018129632A JP2020009146A JP 2020009146 A JP2020009146 A JP 2020009146A JP 2018129632 A JP2018129632 A JP 2018129632A JP 2018129632 A JP2018129632 A JP 2018129632A JP 2020009146 A JP2020009146 A JP 2020009146A
Authority
JP
Japan
Prior art keywords
control circuit
write
data
selection
pointer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2018129632A
Other languages
English (en)
Inventor
済 古市
Wataru Furuichi
済 古市
誠 神田
Makoto Kanda
誠 神田
伊藤 茂
Shigeru Ito
茂 伊藤
西川 浩
Hiroshi Nishikawa
浩 西川
章宏 小林
Akihiro Kobayashi
章宏 小林
清成 多賀
Kiyoshige Taga
清成 多賀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Electronic Devices and Storage Corp
Original Assignee
Toshiba Corp
Toshiba Electronic Devices and Storage Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Electronic Devices and Storage Corp filed Critical Toshiba Corp
Priority to JP2018129632A priority Critical patent/JP2020009146A/ja
Priority to US16/227,054 priority patent/US20200012594A1/en
Publication of JP2020009146A publication Critical patent/JP2020009146A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/08Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Transfer Systems (AREA)

Abstract

【課題】 共有型FIFO装置の回路規模を減少する。【解決手段】 一つの実施形態によれば、共有型FIFO装置は、要求制御回路、ライトポインタ制御回路、リードポインタ制御回路、ライトポインタ選択回路、リードポインタ選択回路、選択回路、メモリアレイを含む。共有型FIFO装置は、n個の転送ルートからのFIFOアクセスを実行する。【選択図】 図1

Description

本発明の実施形態は、共有型FIFO装置に関する。
マイクロコンピュータやマイクロプロセッサ等は、FIFO(First In First OUT)装置を搭載している。FIFO装置は、システム仕様要求に対応する容量を備えたメモリを内蔵する。複数の装置間でのデータの授受を実行する場合、1つのデータ転送ルートに対して1つのFIFO装置が必要となる。
システムが複雑化するとデータ転送ルートが多数必要となり、必要とされるFIFO装置の数が増加し、FIFO装置の回路規模が増大という問題点がある。
特開2008−293484号公報
本発明は、回路規模を減少することができる共有型FIFO装置を提供することにある。
一つの実施形態によれば、共有型FIFO装置は、要求制御回路、ライトポインタ制御回路、リードポインタ制御回路、ライトポインタ選択回路、リードポインタ選択回路、選択回路、メモリアレイを含む。要求制御回路は書き込み要求と読み出し要求を入力する。ライトポインタ制御回路は、要求制御回路から出力されるライトポインタアップデート要求を入力し、ライトポインタアップデート要求に基づいてルート毎に独立して配置されるn個(ただし、nは2つ以上の整数)のライトポインタのいずれか一つを選択し、選択されたライトポインタが保持している情報の更新指示をする。リードポインタ制御回路は、要求制御回路から出力されるリードポインタアップデート要求を入力し、リードポインタアップデート要求に基づいてルート毎に独立して配置されるn個のリードポインタのいずれか一つを選択し、選択されたリードポインタが保持している情報の更新指示をする。ライトポインタ選択回路は、要求制御回路から出力されるルート書き込み選択の指示に基づいて、n個のライトポインタの情報のいずれか一つを選択する。リードポインタ選択回路は、要求制御回路から出力されるルート読み出し選択の指示に基づいて、n個のリードポインタの情報のいずれか一つを選択する。選択回路は、要求制御回路から出力される書き込み選択の指示に基づいてライトポインタ選択回路の選択結果を選択し、要求制御回路から出力される読み出し選択の指示に基づいてリードポインタ選択回路の選択結果を選択する。メモリアレイは、ライトポインタ情報及びリードポインタ情報に基づいてアクセスされる次のエントリ番号記憶領域とデータ記憶領域を含むFIFOバッファメモリをm個(ただし、mは2つ以上の整数)有する。共有型FIFO装置は、n個の転送ルートからのFIFOアクセスを実行する。
第1の実施形態に係る共有型FIFO装置を示す図である。 第1の実施形態に係る共有型FIFO装置の動作を示すフローチャート。 ステップ1での共有型FIFO装置の動作を示す図である。 ステップ2での共有型FIFO装置の動作を示す図である。 ステップ3での共有型FIFO装置の動作を示す図である。 ステップ4での共有型FIFO装置の動作を示す図である。 ステップ5での共有型FIFO装置の動作を示す図である。 ステップ6での共有型FIFO装置の動作を示す図である。 ステップ7での共有型FIFO装置の動作を示す図である。 ステップ8での共有型FIFO装置の動作を示す図である。 ステップ9での共有型FIFO装置の動作を示す図である。 ステップ10での共有型FIFO装置の動作を示す図である。 ステップ11での共有型FIFO装置の動作を示す図である。 ステップ12での共有型FIFO装置の動作を示す図である。 ステップ13での共有型FIFO装置の動作を示す図である。 ステップ14での共有型FIFO装置の動作を示す図である。 第2の実施形態に係る共有型FIFO装置を示す図である。 第2の実施形態に係る共有型FIFO装置の動作を示すフローチャート。 ステップ21での共有型FIFO装置の動作を示す図である。 ステップ22での共有型FIFO装置の動作を示す図である。 ステップ23での共有型FIFO装置の動作を示す図である。 ステップ24での共有型FIFO装置の動作を示す図である。 ステップ25での共有型FIFO装置の動作を示す図である。 ステップ26での共有型FIFO装置の動作を示す図である。 ステップ27での共有型FIFO装置の動作を示す図である。 ステップ28での共有型FIFO装置の動作を示す図である。 ステップ29での共有型FIFO装置の動作を示す図である。 ステップ30での共有型FIFO装置の動作を示す図である。 ステップ31での共有型FIFO装置の動作を示す図である。 ステップ32での共有型FIFO装置の動作を示す図である。 ステップ33での共有型FIFO装置の動作を示す図である。 ステップ34での共有型FIFO装置の動作を示す図である。
以下本発明の実施形態について図面を参照しながら説明する。
(第1の実施形態)
まず、第1の実施形態に係る共有型FIFO装置について、図面を参照して説明する。図1は共有型FIFO装置を示す図である。
第1の実施形態では、共有型FIFO装置は、2つのライトポインタ、2つのリードポインタ、ライトポインタ選択回路、リードポインタ選択回路、書き込み或いは読出しを選択する選択回路を備え、データ転送ルートを2つにして回路規模を減少させている。
図1に示すように、共有型FIFO装置100は、要求制御回路1、ライトポインタ制御回路2、リードポインタ制御回路3、データ選択回路7、バリッド値選択回路8、ワードラインデコーダ9、メモリアレイ10、バリッドビット部11、ライトポインタ21、ライトポインタ22、リードポインタ23、リードポインタ24、ライトポインタ選択回路25、リードポインタ選択回路26、選択回路27を含む。
共有型FIFO装置100は、2つのデータ転送路を備え、共有することができるFIFO装置である。共有型FIFO装置100は、同期化された2つのデータ転送ルートを備えたシステム(例えばマイクロコンピュータやマイクロプロセッサ等を備えたシステム)に適用される。
共有型FIFO装置100は、例えば低消費電力、高機能化が要求されるウエラブル機器、ヘルスケア機器、産業用安全装置、ヒューマノイドロボット等に用いられる。
要求制御回路1は、ルート1書き込み要求、ルート1読み出し要求、ルート2書き込み要求、ルート2読み出し要求を入力する。要求制御回路1は、ルート要求をデータ選択回路7、ライトポインタ選択回路25、及びリードポインタ選択回路26に送信する。要求制御回路1は、書き込み或いは読み出しの選択をバリッド値選択回路8、及び選択回路27に送信する。要求制御回路1は、ライトポインタアップデート要求をライトポインタ制御回路2に送信する。要求制御回路1は、リードポインタアップデート要求をリードポインタ制御回路3に送信する。
データ選択回路7は、ルート1書き込みデータとルート2書き込みデータを入力し、要求制御回路1のルート要求に基づいてルート1書き込みデータ或いはルート2書き込みデータのいずれかを選択してメモリアレイ10のデータ記憶領域DATAに出力する。ルート1書き込みデータとは、例えばSIO(シリアル入出力)モードに用いるデータである。ルート2書き込みデータとは、例えばUART(汎用非同期通信)に用いるデータである。
バリッド値選択回路8は、有効なバリッド値1‘b1と有効ではないバリッド値1’boを入力し、書き込み或いは読み出しの選択に基づいて、バリッド値1‘b1或いはバリッド値1’boのいずれかを選択してバリッドビット部11に出力する。
ライトポインタ制御回路2は、要求制御回路1からライトポインタアップデート要求を入力する。ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ21(第1のライトポインタ)或いはライトポインタ22(第2のライトポインタ)のいずれかに書き込みポイントの更新指示を行う。ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、メモリアレイ10の次のエントリ番号記憶領域NENの指定を行う。
リードポインタ制御回路3は、要求制御回路1からリードポインタアップデート要求を入力する。リードポインタ制御回路3は、要求制御回路1のリードポインタアップデート要求に基づいて、リードポインタ23(第1のリードポインタ)或いはリードポインタ24(第2のリードポインタ)のいずれかに読み出しポイントの更新指示を行う。
ライトポインタ21は、ライトポインタ制御回路2の指示に基づいて、保持している値をアップデートする。ライトポインタ22は、ライトポインタ制御回路2の指示に基づいて、保持している値をアップデートする。 リードポインタ23は、リードポインタ制御回路3の指示に基づいて、保持している値をアップデートする。リードポインタ24は、リードポインタ制御回路3の指示に基づいて、保持している値をアップデートする。
ライトポインタ選択回路25は、ライトポインタ21の保持している情報、ライトポインタ22の保持している情報を入力し、要求制御回路1のルート要求に基づいて、ライトポインタ21の保持している情報或いはライトポインタ22保持している情報のいずれかを選択する。
リードポインタ選択回路26は、リードポインタ23の保持している情報、リードポインタ24の保持している情報を入力し、要求制御回路1のルート要求に基づいて、リードポインタ23の保持している情報或いはリードポインタ24の保持している情報のいずれかを選択する。
選択回路27は、ライトポインタ選択回路25の選択結果、リードポインタ選択回路26の選択結果を入力し、要求制御回路1の書き込み選択或いは読み出し選択に基づいて、ライトポインタ選択回路25の選択結果或いはリードポインタ選択回路26の選択結果のいずれかを選択する。
ここでは、データ選択回路7、バリッド値選択回路8、ライトポインタ選択回路25、リードポインタ選択回路26、及び選択回路27には、マルチプレクサ(multiplexer)を用いているが代わりにセレクタなどを用いてもよい。
ワードラインデコーダ9は、選択回路27の選択結果を入力し、デコード処理を実行し、デコード処理結果をエントリ要求E0S〜E7Sとしてメモリアレイ10に伝える。具体的には、ワードラインデコーダ9は、メモリアレイ10の書き込み及び読み出しをすべきワード線に対して選択信号を出力する。
メモリアレイ10は、次のエントリ番号記憶領域NENとデータ記憶領域DATAから構成されるバッファ20をm個(ただし、mは2以上の整数)含む。バッファ20は、FIFOバッファメモリである。ここでは、メモリアレイ10は8つのバッファ20−0〜20−7を含む。
次のエントリ番号記憶領域NENは、ライトポインタ制御回路2の指示とワードラインデコーダ9のデコード処理結果が入力されると、対応するワード線のエントリ番号を更新する。データ記憶領域DATAは、データ選択回路7の選択結果とワードラインデコーダ9のデコード処理結果が入力されると、対応するワード線のデータ記憶領域DATAのデータを更新する。
メモリアレイ10は、指定されたラインのデータ記憶領域DATAの情報を出力する。メモリアレイ10は、次のエントリ番号が格納された次のエントリ番号記憶領域NENの情報を、リードポインタ制御回路3に出力する。
バリッドビット部11は、m個(ただし、mは2以上の整数)のバリッドビットを含む。ここでは、バリッドビット部11は、8つのバリッドビット11−0〜11−7を含む。バリッドビット部11は、バリッド値選択回路8の選択結果とメモリアレイ10の更新されたデータ記憶領域DATAの情報に基づいて、対応するバリッドビットの情報を更新する。バリッドビット部11は、エントリ要求E0S〜E7Sの有効/無効情報をライトポインタ制御回路2、リードポインタ制御回路3に出力する。
ここで、バッファ20へのリードアクセスは、更新前のポインタ値で実施される。ライトポインタ21、ライトポインタ22では、更新前のポインタ値で次のエントリ番号記憶領域NENへのライトアクセスが行われ、更新後のポインタ値でバッファ20へのライトアクセスが行われる。リードポインタ23、リードポインタ24の更新値は、読み出したエントリの次のエントリ番号記憶領域NENの値がコピーされる。
次に、共有型FIFO装置の動作について、図2〜図16を参照して説明する。図2は、共有型FIFO装置の動作を示すフローチャートである。
図2に示すように、本実施形態の共有型FIFO装置100では、ルート1での書き込み、ルート2での書き込み、ルート1での読み出し、ルート2での読み出しが実行される。各ステップでの共有型FIFO装置の動作の詳細は図3〜図16を用いて説明する。
図3に示すように、初期状態では、ライトポインタ21のデータは、“0”に設定される。ライトポインタ22のデータは、“1”に設定される。リードポインタ23のデータは、“0”に設定される。リードポインタ24のデータは、“1”に設定される。バッファ20−0のデータ記憶領域DATAとバッファ20−1のデータ記憶領域DATAは、予約状態に設定される(ステップS1)。
図4に示すように、ルート1での1回目の書き込みの場合、要求制御回路1は、ルート1書き込み要求を入力する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート1書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート1書き込み選択の指示に基づいて、ライトポインタ21の値である“0”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“0”)を選択する。
その結果、ワードラインの最初のバッファ20−0のデータ記憶領域DATAが選択される。バッファ20−0のデータ記憶領域DATAは、データ選択回路7から出力されるルート1書き込みデータ(DATA 1−1と表示)を書き込む。バリッドビット11−0は、バリッド値選択回路8から出力される1‘b1とバッファ20−0のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS2)。
図5に示すように、ルート2での1回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“1”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“1”)を選択する。
メモリアレイ10は、ワードラインデコーダ9のデコード処理結果とライトポインタ制御回路2の指示を入力する。その結果、次のワードラインのバッファ20−1のデータ記憶領域DATAが選択される。バッファ20−1のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−1で表示)を書き込む。バリッドビット11−1は、バリッド値選択回路8から出力される1‘b1とバッファ20−1のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS3)。
図6に示すように、ルート2での2回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ22が保持しているデータ“1”をデータ“2”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“2”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“2”)を選択する。
メモリアレイ10は、ワードラインデコーダ9のデコード処理結果とライトポインタ制御回路2の指示を入力する。その結果、バッファ20−1の次のエントリ番号記憶領域NENのデータが“2”に設定される。次のワードラインのバッファ20−2のデータ記憶領域DATAが選択される。バッファ20−2のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−2と表示)を書き込む。バリッドビット11−2は、バリッド値選択回路8から出力される1‘b1とバッファ20−2のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS4)。
図7に示すように、ルート2での3回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ22が保持しているデータ“2”をデータ“3”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“3”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“3”)を選択する。
メモリアレイ10は、ワードラインデコーダ9のデコード処理結果とライトポインタ制御回路2の指示を入力する。その結果、バッファ20−2の次のエントリ番号記憶領域NENのデータが“3”に設定される。次のワードラインのバッファ20−3のデータ記憶領域DATAが選択される。バッファ20−3のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−3と表示)を書き込む。バリッドビット11−3は、バリッド値選択回路8から出力される1‘b1とバッファ20−3のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS5)。
図8に示すように、ルート1での2回目の書き込みの場合、要求制御回路1は、ルート1書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ21が保持しているデータ“0”をデータ“4”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート1書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート1書き込み選択の指示に基づいて、ライトポインタ21の“4”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“4”)を選択する。
メモリアレイ10は、ワードラインデコーダ9のデコード処理結果とライトポインタ制御回路2の指示を入力する。その結果、バッファ20−0の次のエントリ番号記憶領域NENのデータが“4”に設定される。次のワードラインのバッファ20−4のデータ記憶領域DATAが選択される。バッファ20−4のデータ記憶領域DATAは、データ選択回路7から出力されるルート1書き込みデータ(DATA 1−2と表示)を書き込む。バリッドビット11−4は、バリッド値選択回路8から出力される1‘b1とバッファ20−4のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS6)。
図9に示すように、ルート2での4回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ22が保持しているデータ“3”をデータ“5”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“5”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“5”)を選択する。
メモリアレイ10は、ワードラインデコーダ9のデコード処理結果とライトポインタ制御回路2の指示を入力する。その結果、バッファ20−3の次のエントリ番号記憶領域NENのデータが“5”に設定される。次のワードラインのバッファ20−5のデータ記憶領域DATAが選択される。バッファ20−5のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−4と表示)を書き込む。バリッドビット11−4は、バリッド値選択回路8から出力される1‘b1とバッファ20−5のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS7)。
図10に示すように、ルート1での3回目の書き込みの場合、要求制御回路1は、ルート1書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ21が保持しているデータ“4”をデータ“6”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート1書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート1書き込み選択の指示に基づいて、ライトポインタ21の“6”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“6”)を選択する。
メモリアレイ10は、ワードラインデコーダ9のデコード結果とライトポインタ制御回路2の指示を入力する。その結果、バッファ20−4の次のエントリ番号記憶領域NENのデータが“6”に設定される。次のワードラインのバッファ20−6のデータ記憶領域DATAが選択される。バッファ20−6のデータ記憶領域DATAは、データ選択回路7から出力されるルート1書き込みデータ(DATA 1−3と表示)を書き込む。バリッドビット11−6は、バリッド値選択回路8から出力される1‘b1とバッファ20−6のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS8)。
図11に示すように、ルート2での5回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ22が保持しているデータ“5”をデータ“7”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“7”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“7”)を選択する。
メモリアレイ10は、ワードラインデコーダ9のデコード処理結果とライトポインタ制御回路2の指示を入力する。その結果、バッファ20−5の次のエントリ番号記憶領域NENのデータが“7”に設定される。次のワードラインのバッファ20−7のデータ記憶領域DATAが選択される。バッファ20−7のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−5と表示)を書き込む。バリッドビット11−7は、バリッド値選択回路8から出力される1‘b1とバッファ20−7のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS9)。
図12に示すように、ルート1での1回目の読み出しの場合、要求制御回路1は、ルート1読み出し要求を入力し、リードポインタ制御回路3にリードポインタアップデート要求を送信する。
リードポインタ制御回路3は、要求制御回路1のリードポインタアップデート要求に基づいて、リードポインタ23が保持しているデータ“0”をデータ“4”に変更し、更新する。リードポインタ選択回路26は、要求制御回路1から出力されるルート1読み出し選択を入力する。リードポインタ選択回路26は、要求制御回路1のルート1読み出し選択の指示に基づいて、リードポインタ23の“0”を選択する。選択回路27は、要求制御回路1から出力される読み出し選択を入力する。選択回路27は、要求制御回路1の読み出し選択の指示に基づいて、リードポインタ選択回路26の選択結果(“0”)を選択する。
リードポインタ23の値に従って、バッファ20−0のデータ記憶領域DATAに記憶されているデータ(DATA 1−1)は、読み出されて外部に出力される。バッファ20−0の次のエントリ番号記憶領域NENのデータは読み出されてリードポインタ制御回路3に送信される。バッファ20−0のデータ記憶領域DATAに記憶されているデータとバッファ20−0の次のエントリ番号記憶領域NENのデータは、更新される。バリッドビット11−0は、有効情報である“1”を有効ではない情報“0”に変更し、データをクリアする。クリアされたバリッドビット11−0の情報は、リードポインタ制御回路3に送信される(ステップS10)。
図13に示すように、ルート1での2回目の読み出しの場合、要求制御回路1は、ルート1読み出し要求を入力し、リードポインタ制御回路3にリードポインタアップデート要求を送信する。
リードポインタ制御回路3は、要求制御回路1のリードポインタアップデート要求に基づいて、リードポインタ23が保持しているデータ“4”をデータ“6”に変更し、更新する。リードポインタ選択回路26は、要求制御回路1から出力されるルート1読み出し選択を入力する。リードポインタ選択回路26は、要求制御回路1のルート1読み出し選択の指示に基づいて、リードポインタ23の“4”を選択する。選択回路27は、要求制御回路1から出力される読み出し選択を入力する。選択回路27は、要求制御回路1の読み出し選択の指示に基づいて、リードポインタ選択回路26の選択結果( “4”)を選択する。
リードポインタ23の値に従って、バッファ20−4のデータ記憶領域DATAに記憶されているデータ(DATA 1−2)は、読み出されて外部に出力される。バッファ20−4の次のエントリ番号記憶領域NENのデータは読み出されてリードポインタ制御回路3に送信される。バッファ20−4のデータ記憶領域DATAに記憶されているデータとバッファ20−4の次のエントリ番号記憶領域NENのデータは、更新される。バリッドビット11−4は、有効情報である“1”を有効ではない情報“0”に変更し、データをクリアする。クリアされたバリッドビット11−4の情報は、リードポインタ制御回路3に送信される(ステップS11)。
図14に示すように、ルート1での3回目の読み出しの場合、要求制御回路1は、ルート1読み出し要求を入力する。
リードポインタ選択回路26は、要求制御回路1から出力されるルート1読み出し選択を入力する。リードポインタ選択回路26は、要求制御回路1のルート1読み出し選択の指示に基づいて、リードポインタ23の“6”を選択する。選択回路27は、要求制御回路1から出力される読み出し選択を入力する。選択回路27は、要求制御回路1の読み出し選択の指示に基づいて、リードポインタ選択回路26の選択結果( “6”)を選択する。
リードポインタ23の値に従って、バッファ20−6のデータ記憶領域DATAに記憶されているデータ(DATA 1−3と表示)は、読み出されて外部に出力される。バッファ20−6の次のエントリ番号記憶領域NENのデータは読み出されてリードポインタ制御回路3に送信される。バッファ20−6のデータ記憶領域DATAは予約状態に設定される。バッファ20−6の次のエントリ番号記憶領域NENは、次のエントリ可能となる。バリッドビット11−6は、有効情報である“1”を有効ではない情報“0”に変更し、データをクリアする。クリアされたバリッドビット11−4の情報は、リードポインタ制御回路3に送信される(ステップS12)。
図15に示すように、ルート2での6回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ22が保持しているデータ“7”をデータ“0”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“0”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“0”)を選択する。
メモリアレイ10は、ワードラインデコーダ9のデコード処理結果とライトポインタ制御回路2の指示を入力する。その結果、バッファ20−7の次のエントリ番号記憶領域NENのデータが“0”に設定される。次のワードラインのバッファ20−0のデータ記憶領域DATAが選択される。バッファ20−0のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−6と表記)を書き込む。バリッドビット11−0は、バリッド値選択回路8から出力される1‘b1とバッファ20−0のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS13)。
図16に示すように、ルート2での1回目の読み出しの場合、要求制御回路1は、ルート2読み出し要求を入力し、リードポインタ制御回路3にリードポインタアップデート要求を送信する。
リードポインタ制御回路3は、要求制御回路1のリードポインタアップデート要求に基づいて、リードポインタ24が保持しているデータ“1”をデータ“2”に変更し、更新する。リードポインタ選択回路26は、要求制御回路1から出力されるルート2読み出し選択を入力する。リードポインタ選択回路26は、要求制御回路1のルート2読み出し選択の指示に基づいて、リードポインタ24の“1”を選択する。選択回路27は、要求制御回路1から出力される読み出し選択を入力する。選択回路27は、要求制御回路1の読み出し選択の指示に基づいて、リードポインタ選択回路26の選択結果( “1”)を選択する。
リードポインタ24の値に従って、バッファ20−1のデータ記憶領域DATAに記憶されているデータ(DATA 2−1)は、読み出されて外部に出力される。バッファ20−1の次のエントリ番号記憶領域NENのデータは読み出されてリードポインタ制御回路3に送信される。バッファ20−1のデータ記憶領域DATAに記憶されているデータとバッファ20−1の次のエントリ番号記憶領域NENのデータは、更新される。バリッドビット11−1は、有効情報である“1”を有効ではない情報“0”に変更し、データをクリアする。クリアされたバリッドビット11−1の情報は、リードポインタ制御回路3に送信される(ステップS14)。
なお、本実施形態の共有型FIFO装置100は、データ転送ルートを2つ備えているが、必ずしもこれに限定されるものではない。n個(ただし、nは2つ以上整数)の転送ルートを設けてもよい。その場合、要求制御回路は、n種類の書き込み要求とn種類の読み出し要求を入力する。ライトポインタとリードポインタをそれぞれn個設けるのが好ましい。また、データ選択回路7に入力される書き込みデータをn種類にするのが好ましい。
上述したように、本実施形態の共有型FIFO装置100は、要求制御回路1、ライトポインタ制御回路2、リードポインタ制御回路3、データ選択回路7、バリッド値選択回路8、ワードラインデコーダ9、メモリアレイ10、バリッドビット部11、ライトポインタ21、ライトポインタ22、リードポインタ23、リードポインタ24、ライトポインタ選択回路25、リードポインタ選択回路26、選択回路27が設けられる。ライトポインタ選択回路25は、要求制御回路1の指示に基づいて、ライトポインタ21の保持データ或いはライトポインタ22の保持データのいずれかを選択する。リードポインタ選択回路26は、要求制御回路1の指示に基づいて、リードポインタ23の保持データ或いはリードポインタ24の保持データのいずれかを選択する。選択回路27は、要求制御回路1の指示に基づいて、ライトポインタ選択回路25の選択結果或いはリードポインタ選択回路26の選択結果のいずれかを選択する。
このため、共有型FIFO装置100では、複数のデータ転送ルートを共有化して同時に使用することができる。したがって、共有型FIFO装置100の回路規模を減少することができる。また、共有型FIFO装置100内の未使用のメモリを有効活用することができる。
(第2の実施形態)
次に、第2の実施形態に係る共有型FIFO装置に係るについて、図面を参照して説明する。図17は共有型FIFO装置を示す図である。
第2の実施形態では、共有型FIFO装置は、予約制御回路、2つのライトポインタ、2つのリードポインタ、ライトポインタ選択回路、リードポインタ選択回路、書き込み或いは読出しを選択する選択回路を備え、データ転送ルートを2つにし、データ書き込みと同時に次のエントリ予約を行い、回路規模を減少させている。
図18に示すように、共有型FIFO装置200は、要求制御回路1、ライトポインタ制御回路2、リードポインタ制御回路3、データ選択回路7、バリッド値選択回路8、ワードラインデコーダ9、メモリアレイ10、バリッドビット部11、予約制御回路12、ライトポインタ21、ライトポインタ22、リードポインタ23、リードポインタ24、ライトポインタ選択回路25、リードポインタ選択回路26、選択回路27を含む。
本実施形態の共有型FIFO装置200は、第1の実施形態の共有型FIFO装置200に予約制御回路12を追加したものである。
以下、第1の実施形態と同一構成部分には、同一符号を付してその部分の説明を省略し、異なる部分のみ説明する。
予約制御回路12は、ライトポインタ21の値、ライトポインタ22の値、バリッドビット部11の値に基づいて、次に書き込むべきエントリ番号を決定し、メモリアレイ10の次のエントリ番号記憶領域NENに対して次のデータが格納されるエントリを示す番号(エントリ接続情報)を出力する。
第1の実施形態では、書き込み動作で異なるエントリのデータ記憶領域DATAと次のエントリ番号記憶領域NENにアクセスを行う必要がある。このため、第1の実施形態では、それぞれ独立でアクセスできるようにするか、或いは2サイクルでアクセスを行う必要がある。
これに対して、本実施形態の共有型FIFO装置200では、データ書き込みと同時に次にデータを書き込むべきエントリ番号を書き込む処理を行っている。
本実施形態では、ライトポインタ21、ライトポインタ22では、バッファ20へのライトアクセス後に値が更新される。リードポインタ23、リードポインタ24では、バッファへのリードアクセス後に値が更新される。バッファ20−0〜20−7へのライトアクセス、リードアクセスは、更新前のポインタ値で実施される。
次に、共有型FIFO装置の動作について、図18〜図32を参照して説明する。図18は、共有型FIFO装置の動作を示すフローチャートである。図19〜図32は、各ステップでの共有型FIFO装置の動作を示す図である。
図19に示すように、初期状態では、予約制御回路12は、書き込みポインタ制御回路2からの指示を入力していない。ライトポインタ21のデータは、“0”に設定される。ライトポインタ22のデータは、“1”に設定される。リードポインタ23のデータは、“0”に設定される。リードポインタ24のデータは、“1”に設定される。バッファ20−0のデータ記憶領域DATAとバッファ20−1のデータ記憶領域DATAは、予約状態に設定される(ステップS21)。
図20に示すように、ルート1での1回目の書き込みの場合、要求制御回路1は、ルート1書き込み要求を入力する。ライトポインタ制御回路2は、要求制御回路1から出力されるライトポインタアップデート要求を入力する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報である“2”を格納する。ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ21の情報を“0”から“2”に変更し、更新する。
ライトポインタ選択回路25は、要求制御回路1から出力されるルート1書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート1書き込み選択の指示に基づいて、ライトポインタ21の値である“0”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果( “0”)を選択する。
メモリセル10は、予約制御回路12から出力される情報“2”とワードラインデコーダ9のデコード処理結果を入力する。
この結果、バッファ20−0の次のエントリ番号記憶領域NENは、予約制御回路12の情報“2”を書き込み、バッファ20−2のデータ記憶領域DATAは予約状態となる。バッファ20−0のデータ記憶領域DATAは、データ選択回路7から出力されるルート1書き込みデータ(DATA 1−1と表示)を書き込む。バリッドビット11−0は、バリッド値選択回路8から出力される1‘b1とバッファ20−0のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS22)。
図21に示すように、ルート2での1回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報である“3”を格納する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“1”を“3”に変更し、更新する。
選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果( “1”)を選択する。
メモリセル10は、予約制御回路12から出力される情報“3”とワードラインデコーダ9のデコード処理結果を入力する。
この結果、バッファ20−1の次のエントリ番号記憶領域NENは、予約制御回路12の情報“3”を書き込み、バッファ20−3のデータ記憶領域DATAは予約状態となる。バッファ20−1のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−1と表示)を書き込む。バリッドビット11−1は、バリッド値選択回路8から出力される1‘b1とバッファ20−1のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS23)。
図22に示すように、ルート2での2回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報である“4”を格納する。ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ22の“3”から“4”に変更し、更新する。
ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“3”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“3”)を選択する。
メモリセル10は、予約制御回路12から出力される情報“4”とワードラインデコーダ9のデコード処理結果を入力する。
この結果、バッファ20−3の次のエントリ番号記憶領域NENは、予約制御回路12の情報“4”を書き込み、バッファ20−4のデータ記憶領域DATAは予約状態となる。バッファ20−3のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−2と表示)を書き込む。バリッドビット11−3は、バリッド値選択回路8から出力される1‘b1とバッファ20−3のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS24)。
図23に示すように、ルート2での3回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報である“5”を格納する。ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ22の“4”から“5”に変更し、更新する。
ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“4”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“4”)を選択する。
メモリセル10は、予約制御回路12から出力される情報“5”とワードラインデコーダ9のデコード処理結果を入力する。
この結果、バッファ20−4の次のエントリ番号記憶領域NENは、予約制御回路12の情報“5”を書き込み、バッファ20−5のデータ記憶領域DATAは予約状態となる。バッファ20−4のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−3と表示)を書き込む。バリッドビット11−4は、バリッド値選択回路8から出力される1‘b1とバッファ20−4のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS25)。
図24に示すように、ルート1での2回目の書き込みの場合、要求制御回路1は、ルート1書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報である“6”を格納する。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ21が保持しているデータ“2”をデータ“6”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート1書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート1書き込み選択の指示に基づいて、ライトポインタ21の“2”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“2”)を選択する。
メモリセル10は、予約制御回路12から出力される情報“6”とワードラインデコーダ9のデコード処理結果を入力する。
この結果、バッファ20−2の次のエントリ番号記憶領域NENは、予約制御回路12の情報“6”を書き込み、バッファ20−6のデータ記憶領域DATAは予約状態となる。バッファ20−2のデータ記憶領域DATAは、データ選択回路7から出力されるルート1書き込みデータ(DATA 1−2と表示)を書き込む。バリッドビット11−2は、バリッド値選択回路8から出力される1‘b1とバッファ20−2のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS26)。
図25に示すように、ルート2での4回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報である“7”を格納する。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ22が保持しているデータ“5”をデータ“7”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“5”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“5”)を選択する。
メモリセル10は、予約制御回路12から出力される情報“7”とワードラインデコーダ9のデコード処理結果を入力する。
この結果、バッファ20−5の次のエントリ番号記憶領域NENは、予約制御回路12の情報“7”を書き込み、バッファ20−7のデータ記憶領域DATAは予約状態となる。バッファ20−5のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−4と表示)を書き込む。バリッドビット11−5は、バリッド値選択回路8から出力される1‘b1とバッファ20−5のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS27)。
図26に示すように、ルート1での3回目の書き込みの場合、要求制御回路1は、ルート1書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報である“7”を維持している。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ21が保持している“6”を“0”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート1書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート1書き込み選択の指示に基づいて、ライトポインタ21の“6”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“6”)を選択する。
メモリセル10は、予約制御回路12から出力される情報“7”とワードラインデコーダ9のデコード処理結果を入力する。
この結果、バッファ20−6の次のエントリ番号記憶領域NENは、予約制御回路12の情報“7”を書き込む。バッファ20−6のデータ記憶領域DATAは、データ選択回路7から出力されるルート1書き込みデータ(DATA 1−3と表示)を書き込む。バリッドビット11−6は、バリッド値選択回路8から出力される1‘b1とバッファ20−6のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS28)。
図27に示すように、ルート2での5回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報である“7”を維持している。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ22が保持しているデータ“7”をデータ“1”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“7”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“7”)を選択する。
メモリセル10は、予約制御回路12から出力される情報“7”とワードラインデコーダ9のデコード処理結果を入力する。
この結果、バッファ20−7の次のエントリ番号記憶領域NENは、 “1”を書き込む。バッファ20−7のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−5と表示)を書き込む。バリッドビット11−7は、バリッド値選択回路8から出力される1‘b1とバッファ20−7のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS29)。
図28に示すように、ルート1での1回目の読み出しの場合、要求制御回路1は、ルート1読み出し要求を入力し、リードポインタ制御回路3にリードポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報である“7”を維持している。
リードポインタ制御回路3は、要求制御回路1のリードポインタアップデート要求に基づいて、リードポインタ23が保持しているデータ“0”をデータ“2”に変更し、更新する。リードポインタ選択回路26は、要求制御回路1から出力されるルート1読み出し選択を入力する。リードポインタ選択回路26は、要求制御回路1のルート1読み出し選択の指示に基づいて、リードポインタ23の“0”を選択する。選択回路27は、要求制御回路1から出力される読み出し選択を入力する。選択回路27は、要求制御回路1の読み出し選択の指示に基づいて、リードポインタ選択回路26の選択結果(“0”)を選択する。
リードポインタ23の値に従って、バッファ20−0のデータ記憶領域DATAに記憶されているデータ(DATA 1−1)は、読み出されて外部に出力される。バッファ20−0の次のエントリ番号記憶領域NENのデータは読み出されてリードポインタ制御回路3に送信される。バッファ20−0のデータ記憶領域DATAに記憶されているデータとバッファ20−0の次のエントリ番号記憶領域NENのデータは、更新される。バリッドビット11−0は、有効情報である“1”を有効ではない情報“0”に変更し、データをクリアする。クリアされたバリッドビット11−0の情報は、リードポインタ制御回路3に送信される(ステップS30)。
図29に示すように、ルート1での2回目の読み出しの場合、要求制御回路1は、ルート1読み出し要求を入力する。要求制御回路1は、ルート1読み出し要求を入力し、リードポインタ制御回路3にリードポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報を保持していない。
リードポインタ選択回路26は、要求制御回路1から出力されるルート1読み出し選択を入力する。リードポインタ選択回路26は、要求制御回路1のルート1読み出し選択の指示に基づいて、リードポインタ23の“2”を“6”に変更し、更新する。選択回路27は、要求制御回路1から出力される読み出し選択を入力する。選択回路27は、要求制御回路1の読み出し選択の指示に基づいて、リードポインタ選択回路26の選択結果(“2”)を選択する。
リードポインタ23の値に従って、バッファ20−2のデータ記憶領域DATAに記憶されているデータ(DATA 1−2)は、読み出されて外部に出力される。バッファ20−2の次のエントリ番号記憶領域NENのデータは読み出されてリードポインタ制御回路3に送信される。バッファ20−2のデータ記憶領域DATAに記憶されているデータとバッファ20−2の次のエントリ番号記憶領域NENのデータは、更新される。バリッドビット11−2は、有効情報である“1”を有効ではない情報“0”に変更し、データをクリアする。クリアされたバリッドビット11−2の情報は、リードポインタ制御回路3に送信される(ステップS31)。
図30に示すように、ルート1での3回目の読み出しの場合、要求制御回路1は、ルート1読み出し要求を入力する。要求制御回路1は、ルート1読み出し要求を入力し、リードポインタ制御回路3にリードポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報を保持していない。
リードポインタ選択回路26は、要求制御回路1から出力されるルート1読み出し選択を入力する。リードポインタ選択回路26は、要求制御回路1のルート1読み出し選択の指示に基づいて、リードポインタ23の“6”を“0”に変更し、更新する。選択回路27は、要求制御回路1から出力される読み出し選択を入力する。選択回路27は、要求制御回路1の読み出し選択の指示に基づいて、リードポインタ選択回路26の選択結果(“6”)を選択する。
リードポインタ23の値に従い、バッファ20−6のデータ記憶領域DATAに記憶されているデータ(DATA 1−3)は、読み出されて外部に出力される。バッファ20−6の次のエントリ番号記憶領域NENのデータは読み出されてリードポインタ制御回路3に送信される。バッファ20−6のデータ記憶領域DATAに記憶されているデータとバッファ20−6の次のエントリ番号記憶領域NENのデータは、更新される。バリッドビット11−6は、有効情報である“1”を有効ではない情報“0”に変更し、データをクリアする。クリアされたバリッドビット11−6の情報は、リードポインタ制御回路3に送信される(ステップS32)。
図31に示すように、ルート2での6回目の書き込みの場合、要求制御回路1は、ルート2書き込み要求を入力し、ライトポインタ制御回路2にライトポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報である“6”を格納する。
ライトポインタ制御回路2は、要求制御回路1のライトポインタアップデート要求に基づいて、ライトポインタ22が保持しているデータ“2”をデータ“6”に変更し、更新する。ライトポインタ選択回路25は、要求制御回路1から出力されるルート2書き込み選択を入力する。ライトポインタ選択回路25は、要求制御回路1のルート2書き込み選択の指示に基づいて、ライトポインタ22の“2”を選択する。選択回路27は、要求制御回路1から出力される書き込み選択を入力する。選択回路27は、要求制御回路1の書き込み選択の指示に基づいて、ライトポインタ選択回路25の選択結果(“2”)を選択する。
メモリセル10は、予約制御回路12から出力される情報“6”とワードラインデコーダ9のデコード処理結果を入力する。
この結果、バッファ20−2の次のエントリ番号記憶領域NENは、 “6”を書き込む。バッファ20−2のデータ記憶領域DATAは、データ選択回路7から出力されるルート2書き込みデータ(DATA 2−6と表示)を書き込む。バリッドビット11−2は、バリッド値選択回路8から出力される1‘b1とバッファ20−2のデータ記憶領域DATAの書き込み結果により、データを有効情報である“1”にセットする。この情報は、ライトポインタ制御回路2に送信される(ステップS33)。
図32に示すように、ルート2での1回目の読み出しの場合、要求制御回路1は、ルート2読み出し要求を入力し、リードポインタ制御回路3にリードポインタアップデート要求を送信する。予約制御回路12は、ライトポインタ制御回路2から送信される予約情報を保持していない。
リードポインタ制御回路3は、要求制御回路1のリードポインタアップデート要求に基づいて、リードポインタ24が保持しているデータ“1”をデータ“3”に変更し、更新する。リードポインタ選択回路26は、要求制御回路1から出力されるルート2読み出し選択を入力する。リードポインタ選択回路26は、要求制御回路1のルート2読み出し選択の指示に基づいて、リードポインタ24の“1”を選択する。選択回路27は、要求制御回路1から出力される読み出し選択を入力する。選択回路27は、要求制御回路1の読み出し選択の指示に基づいて、リードポインタ選択回路26の選択結果(“1”)を選択する。
リードポインタ24の値に従って、バッファ20−1のデータ記憶領域DATAに記憶されているデータ(DATA 2−1)は、読み出されて外部に出力される。バッファ20−1の次のエントリ番号記憶領域NENのデータは読み出されてリードポインタ制御回路3に送信される。バッファ20−1のデータ記憶領域DATAに記憶されているデータとバッファ20−1の次のエントリ番号記憶領域NENのデータは、更新される。バリッドビット11−1は、有効情報である“1”を有効ではない情報“0”に変更し、データをクリアする。クリアされたバリッドビット11−1の情報は、リードポインタ制御回路3に送信される(ステップS34)。
上述したように、本実施形態の共有型FIFO装置200は、要求制御回路1、ライトポインタ制御回路2、リードポインタ制御回路3、データ選択回路7、バリッド値選択回路8、ワードラインデコーダ9、メモリアレイ10、バリッドビット部11、予約制御回路12、ライトポインタ21、ライトポインタ22、リードポインタ23、リードポインタ24、ライトポインタ選択回路25、リードポインタ選択回路26、選択回路27が設けられる。予約制御回路12は、ライトポインタ21の値、ライトポインタ22の値、バリッドビット部11の値に基づいて、次に書き込むべきエントリ番号を決定し、メモリアレイ10の次のエントリ番号記憶領域NENに対して次のデータが格納されるエントリを示す番号を出力する。
このため、共有型FIFO装置200では、第1の実施形態の効果の他に、メモリアレイ10の構造の簡略化とアクセス性能の向上を図ることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 要求制御回路
2 ライトポインタ制御回路
3 リードポインタ制御回路
7 データ選択回路
8 バリッド値選択回路
9 ワードラインデコーダ
10 メモリアレイ
11 バリッドビット部
11−0〜11−7 バリッドビット
12 予約制御回路
20、20−0〜20−7 バッファ
21、22 ライトポインタ
23、24 リードポインタ
25 ライトポインタ選択回路
26 リードポインタ選択回路
27 選択回路
100、200 共有型FIFO装置
DATA データ記憶領域
EOS エントリ要求
NEN 次のエントリ番号記憶領域

Claims (7)

  1. 書き込み要求と読み出し要求を入力する要求制御回路と、
    前記要求制御回路から出力されるライトポインタアップデート要求を入力し、前記ライトポインタアップデート要求に基づいてルート毎に独立して配置されるn個(ただし、nは2つ以上の整数)のライトポインタのいずれか一つを選択し、選択されたライトポインタが保持している情報の更新指示をするライトポインタ制御回路と、
    前記要求制御回路から出力されるリードポインタアップデート要求を入力し、前記リードポインタアップデート要求に基づいてルート毎に独立して配置されるn個のリードポインタのいずれか一つを選択し、選択されたリードポインタが保持している情報の更新指示をするリードポインタ制御回路と、
    前記要求制御回路から出力されるルート書き込み選択の指示に基づいて、前記n個のライトポインタの情報のいずれか一つを選択するライトポインタ選択回路と、
    前記要求制御回路から出力されるルート読み出し選択の指示に基づいて、前記n個のリードポインタの情報のいずれか一つを選択するリードポインタ選択回路と、
    前記要求制御回路から出力される書き込み選択の指示に基づいて前記ライトポインタ選択回路の選択結果を選択し、前記要求制御回路から出力される読み出し選択の指示に基づいて前記リードポインタ選択回路の選択結果を選択する選択回路と、
    ライトポインタ情報及びリードポインタ情報に基づいてアクセスされる次のエントリ番号記憶領域とデータ記憶領域を含むFIFOバッファメモリをm個(ただし、mは2つ以上の整数)有するメモリアレイと、
    を具備し、n個の転送ルートからのFIFOアクセスを実行する
    ことを特徴とする共有型FIFO装置。
  2. 前記メモリアレイの各エントリに対応し、m個のバリッドビットを含み、バリッドビットの値が更新されたときに更新情報を前記ライトポインタ制御回路或いは前記リードポインタ制御回路に送信するバリッドビット部
    を更に具備することを特徴とする請求項1に記載の共有型FIFO装置。
  3. 前記要求制御回路から出力される書き込み選択の指示に基づいて前記バリッドビット部のバリッドビットを有効な値に更新し、前記要求制御回路から出力される読み出し選択の指示に基づいて前記バリッドビット部のバリッドビットを無効な値に更新するバリッド値選択回路
    を更に具備することを特徴とする請求項2項に記載の共有型FIFO装置。
  4. 前記要求制御回路から出力されるルート書き込み選択の指示に基づいて、n個のルート書き込みデータのいずれか一つを選択して前記メモリアレイのデータ記憶領域に書き込むデータ選択回路
    を更に具備することを特徴とする請求項1乃至3のいずれか1項に記載の共有型FIFO装置。
  5. 前記ライトポインタ制御回路の指示により、データ書き込みのときに次に書き込むべきエントリ番号を発生して前記メモリアレイに送信する予約制御回路
    を更に具備することを特徴とする請求項1乃至4のいずれか1項に記載の共有型FIFO装置。
  6. 前記ライトポインタ選択回路、前記リードポインタ選択回路、前記選択回路は、マルチプレクサ或いはセレクタである
    ことを特徴とする請求項1乃至5のいずれか1項に記載の共有型FIFO装置。
  7. 前記共有型FIFO装置は、マイクロコンピュータ又はマイクロプロセッサを備え、同期化されたn個のデータ転送ルートを備えたシステムに適用される
    ことを特徴とする請求項1乃至6のいずれか1項に記載の共有型FIFO装置。
JP2018129632A 2018-07-09 2018-07-09 共有型fifo装置 Pending JP2020009146A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018129632A JP2020009146A (ja) 2018-07-09 2018-07-09 共有型fifo装置
US16/227,054 US20200012594A1 (en) 2018-07-09 2018-12-20 Shared fifo device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018129632A JP2020009146A (ja) 2018-07-09 2018-07-09 共有型fifo装置

Publications (1)

Publication Number Publication Date
JP2020009146A true JP2020009146A (ja) 2020-01-16

Family

ID=69102101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018129632A Pending JP2020009146A (ja) 2018-07-09 2018-07-09 共有型fifo装置

Country Status (2)

Country Link
US (1) US20200012594A1 (ja)
JP (1) JP2020009146A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115481079B (zh) * 2021-06-15 2023-07-07 珠海一微半导体股份有限公司 一种数据调度系统、可重构处理器及数据调度方法

Also Published As

Publication number Publication date
US20200012594A1 (en) 2020-01-09

Similar Documents

Publication Publication Date Title
US10002085B2 (en) Peripheral component interconnect (PCI) device and system including the PCI
JP2006521637A (ja) データ処理システムにおけるメモリ管理
US9852107B2 (en) Techniques for scalable endpoint addressing for parallel applications
US20140289711A1 (en) Information processing apparatus and debugging method
US20160292123A1 (en) Semiconductor device
JP2019087298A (ja) 半導体メモリー装置及びデータ経路設定方法
CN1996276A (zh) 多处理器系统中的数据传输
CN100437484C (zh) 多端口装置、配置该装置的方法及含该装置的计算机系统
US8402199B2 (en) Memory management system and method thereof
JP2020009146A (ja) 共有型fifo装置
JP2008140078A (ja) バスブリッジ装置、情報処理装置、およびデータ転送制御方法
TWI540839B (zh) 低功率及具面積效率之追蹤緩衝器
KR101356541B1 (ko) 멀티 코어 프로세서, 이를 포함하는 멀티 코어 시스템, 전자 장치 및 멀티 코어 프로세서의 캐시 공유 방법
US9921779B2 (en) Memory apparatus, memory system and memory controlling method
JP2002278836A (ja) キャッシュメモリ
JP4918535B2 (ja) キャッシュメモリ、キャッシュメモリ装置及び割当て方法
US11302370B2 (en) Semiconductor apparatus and synchronization method
KR100361657B1 (ko) 아이디이 타입의 하드 디스크 장치 및 그 제어 방법
KR20050035567A (ko) 마스크 비트 전송방법 및 장치
JP6862697B2 (ja) 回路装置及び電子機器
JP6569347B2 (ja) 演算処理装置及び演算処理装置の制御方法
KR20030073992A (ko) 멀티 액세스 fifo 메모리
US9251887B2 (en) Static random access memory system and operation method thereof
JP2010033452A (ja) レジスタ制御回路およびレジスタ制御方法
JP2005327223A (ja) シリアルバスとバススイッチを使用した逐次命令実行型の計算機