JP6366103B2 - 半導体装置及びデータ出力方法 - Google Patents

半導体装置及びデータ出力方法 Download PDF

Info

Publication number
JP6366103B2
JP6366103B2 JP2015011809A JP2015011809A JP6366103B2 JP 6366103 B2 JP6366103 B2 JP 6366103B2 JP 2015011809 A JP2015011809 A JP 2015011809A JP 2015011809 A JP2015011809 A JP 2015011809A JP 6366103 B2 JP6366103 B2 JP 6366103B2
Authority
JP
Japan
Prior art keywords
data
read
storage unit
write
unit
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.)
Active
Application number
JP2015011809A
Other languages
English (en)
Other versions
JP2016136366A (ja
Inventor
良輔 南
良輔 南
次男 高橋
次男 高橋
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.)
NEC Platforms Ltd
NEC Corp
Original Assignee
NEC Platforms Ltd
NEC 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 NEC Platforms Ltd, NEC Corp filed Critical NEC Platforms Ltd
Priority to JP2015011809A priority Critical patent/JP6366103B2/ja
Publication of JP2016136366A publication Critical patent/JP2016136366A/ja
Application granted granted Critical
Publication of JP6366103B2 publication Critical patent/JP6366103B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、半導体装置及びデータ出力方法に関する。特に、データを記憶する半導体装置及びそのデータ出力方法に関する。
近年、プログラミング可能なFPGA(Field-Programmable Gate Array)が様々な用途(アプリケーション)にて用いられている。大容量のRAM(Random Access Memory)ブロックが搭載された大規模なFPGAが市場に安定的に供給されており、このような最新のFPGAを内部に組み込んだ製品が数多く開発されている。
また、通信技術の発展に伴い、ネットワークの通信容量の大容量化が著しい。このような環境の下、処理容量(処理能力)が100Gbpsに達する通信装置は既に実用化の段階にあり、より高速な装置(例えば、400bpsの処理容量)の開発が始まっている。さらに、より一層の通信品質向上を目的として、100Gbpsの処理能力を確保しつつ、より複雑な処理を行うことで、ユーザの独自要望に添ったきめ細かいサービスを提供する装置の開発が始動しつつある。
このようなユーザ独自の機能を実現するため、通信装置等に要求される機能をFPGAにて実現することが多い。例えば、通信容量を100Gbpsと仮定する。この場合、100Gbpsの処理容量を実現する通信装置内部の信号バス帯域は、「信号バスビット数×システムクロック周波数≧100Gbps」という条件を満たす必要がある。例えば、信号バスビット数とシステムクロック周波数の関係は、以下のような組み合わせが用いられる場合が多い。
640ビット×156.25MHz(=100.000Gbps)
512ビット×312.5MHz(=160.000Gbps)
320ビット×312.5MHz(=100.000Gbps)
特に、イーサネット(登録商標;以下同じ)等の可変長パケットを扱う通信装置は、その内部のチップ間通信プロトコルとして、信号帯域に余裕があるインターラーケン(Interlaken)インターフェース(512ビット×312.5MHz=160.000Gbps)を標準的に用いることが多い。
特許文献1には、リードモディファイライト動作を高速に行なうことが可能な演算システムを提供する、と記載されている。リードモディファイライト動作とは、指定されたアドレスのデータを読み出し、当該読み出したデータの指定ビットを加工し、加工されたデータを元のアドレスに書き戻す動作である。特許文献1が開示する技術では、ALU(Arithmetic Logic Unit)が、データを複数部分に分けて演算を行い、複数部分のデータに対応するバンク0、バンク1のメモリを用意する。その上で、バンク0がALUの演算結果を書き込んでいる際に、バンク1のデータ読み出しが行われる。
特開2006−293538号公報
なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
通信装置内部のチップ間通信プロトコルに、インターラーケンインターフェース(512ビットパラレル)が採用され、通信装置内部の各モジュール(例えば、FPGAを用いて実装された演算モジュール)が、1つのパケットを処理するのに許容される時間を考察する。イーサネット上の最小フレームサイズは、64バイト(64×8=512ビット)と規定されている。従って、インターラーケンインターフェースを採用し、パケットの授受を行うFPGA等は、64バイトのパケット(1パケット)を1クロックにて処理する必要がある。上記の例では、1パケット(64バイト)を処理するのに2クロック要したのでは、処理容量は80Gbpsとなり必要な処理容量を確保できないためである。
このように、通信装置等に実装されたFPGAは、大容量のデータを高速に処理することが望まれ、1つのパケットを処理するのに許容されるクロック数は1である。以下、1つのパケットを処理するのに許容されるクロック数が1という前提条件の下、FPGAに生じる問題を具体的に説明する。その際、図22に示すパケットモニタ回路を例に取り、問題点を説明する。パケットモニタ回路とは、通信装置が受信したパケット数を積算カウントする回路である。
パケットに複数のグループに振り分けられ、グループ単位にてパケットを積算カウントするための回路が図22に示されるパケットモニタ回路である。また、各グループのパケットはランダムに入力され、同一のグループに属するパケットが連続して入力される場合も存在する。図22において、パケットは、グループごとに用意された積算カウント回路80−1〜80−n(nは正の整数、以下同じ)と、グループ選択回路81と、に入力される。
積算カウント回路80−1〜80−nのそれぞれは、演算部82と、フリップフロップ(FF;Flip-Flop)83と、を備える。各演算部82は、対応するグループのパケットが入力されると、フリップフロップ83から読み出した値(積算パケット数)に1を加算し、その結果をフリップフロップ83に出力する。グループ選択回路81は、パケットのヘッダに格納されたアドレスに応じて、いずれのグループに対応する積算カウント回路80−1〜80−nを有効にするか決定し、対応するイネーブル信号GRP_ENを活性化する(アクティブとする)。自回路に対応し、且つ、活性化したイネーブル信号GRP_ENを受け取った積算カウント回路80のフリップフロップ83は、演算部82が出力するデータを、選択回路84に出力する。また、グループ選択回路81は、パケットに含まれるアドレスに応じて、選択回路84にグループ選択信号GRP_SELを出力する。選択回路84は、グループ選択信号GRP_SELに応じて、外部に出力するデータを選択する。
例えば、積算カウント回路80−1はグループ1(GRP1)に割り当てられているとする。パケットモニタ回路にグループ1に割り当てられたアドレスを含むパケットが入力されると、積算カウント回路80−1の演算部82は、フリップフロップ83が出力する積算カウント値(OLD_DATA)に1を加算する。演算部82は、加算結果をフリップフロップ83に出力する。次に、パケットモニタ回路に入力されるシステムクロック(図示せず)が1クロック進むと、グループ選択回路81は、積算カウント回路80−1に対応するイネーブル信号GRP_ENとグループ選択信号GRP_SELをアクティブにする。イネーブル信号GRP_ENがアクティブとなることで、積算カウント回路80−1のフリップフロップ83は、1クロック前に演算部82が出力するデータをデータ出力端子から出力する。グループ選択信号GRP_SELにより選択回路84のポート1に供給されたデータ(積算カウント回路80−1の出力)が選択され、パケットモニタ回路の出力となる。
以上のように、図22に示す構成により受信パケットの積算カウントが可能となる。しかし、図22に示す回路構成には、受信パケットを振り分ける際のグループの数が多くなると、回路規模が増大するという問題がある。グループの数と同じだけ積算カウント回路を用意する必要があるためである。
そのため、ハードウェアとしてRAMが実装されているFPGAにおいて、多数のグループに対応したパケット積算機能を実現する際には、演算回路(加算回路)を1回路実装し、演算結果はRAMに格納することで回路規模を抑制する対応が取られることが多い。そこで、以下の手順によりパケットの積算カウント回路を実現することが検討された。
(1)受信パケットのグループに相当するアドレスを指定して、積算結果を保持するRAMから、前パケットまでの積算値が読み出される(リード処理)。
(2)加算器にて、読み出した積算値に1が加算される(演算処理)。
(3)グループに相当するアドレスが指定され、演算結果(積算値)がRAMにストアされる(ライト処理)。
上記(1)〜(3)の動作を1クロックにて実行可能であれば、FPGAに実装されたRAMを用いてパケットの積算カウントが可能となる。即ち、FPGAにはRAMがハードウェアとしてチップに組み込み済であるので、リソースの有効利用が行える。
高速動作を目的とした通常のクロック同期型RAMは、書き込み側(ライト側)において、各信号をフリップフロップによりリタイミングした後にRAMコアに入力する構成を有する。また、上記のクロック同期型RAMは、書き込みアドレスと読み出しアドレスに同じ値を指定してアクセスすることを禁じていることが多い。そのため、クロック同期型RAMは、書き込んだデータを1クロック後に読み出すことができない。即ち、FPGAに組み込まれたクロック同期型RAMにおいては、RAMコアに書き込まれたデータを、1クロック後に読み出すことはできない。
従って、近年の通信装置に要求されるような高速動作において、FPGAに予め組み込まれたRAMを有効活用することができず、結果的に図22に示すような回路構成(演算回路とフリップフロップをグループの数だけ用意する構成)が用いられる。
以上のように、例えば、312.5MHzといったシステムクロックを用いる高速回路において、データの書き込み後の読み出しに1クロック処理が要求される場合、FPGAに組み込まれたRAMを有効活用できないという問題がある。
上記の問題点は、特許文献1に開示された演算システムにおいても生じ得る。特許文献1が開示する演算システムでは、ライトアドレスとリードアドレスが一致する場合には、フリップフロップ(例えば、特許文献1の図5や図6に示される符号24)が保持するライトデータが出力される。換言するならば、ライトデータを一時的に保持するフリップフロップが1つであるため、ライトアドレスやライトデータのリタイミング手段を挿入することができない。そのため、上記のような312.5MHzといった高速なシステムクロックを使用すると、システム全体の動作マージンが低下する等の問題が生じる可能性がある。
本発明は、ライトアドレスとリードアドレスが競合するような場合であっても、書き込まれたライトデータをリードデータとして出力すると共に、安定した高速動作を実現することに寄与する半導体装置を提供することを目的とする。
本発明の第1の視点によれば、ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定する決定部と、前記決定部により外部に出力すると決定されたデータを選択的に出力する選択部と、を備える半導体装置が提供される。
本発明の第2の視点によれば、ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、を含む記憶装置からのデータ出力方法であって、少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定するステップと、前記外部に出力すると決定されたデータを選択的に出力するステップと、を含む、データ出力方法が提供される。
本発明の各視点によれば、ライトアドレスとリードアドレスが競合するような場合であっても、書き込まれたライトデータをリードデータとして出力すると共に、安定した高速動作を実現することに寄与する半導体装置及びデータ出力方法が、提供される。
一実施形態の概要を説明するための図である。 第1の実施形態に係る通信装置の内部構成の一例を示す図である。 第1の実施形態に係る演算モジュールの内部構成の一例を示す図である。 第1の実施形態に係る記憶部の内部構成の一例を示す図である。 第1の実施形態に係る読み出し先決定回路の回路構成の一例を示す図である。 第1の実施形態に係る選択信号出力回路の動作を示す真理値表の一例を示す図である。 第1の実施形態に係るRAMコア単体に関する信号の入出力を示すタイムチャートの一例である。 第1の実施形態に係る記憶部全体に関する信号の入出力を示すタイムチャートの一例である。 第1の実施形態に係るデータ出力方法の一例を示すフローチャートである。 第1の変形例に係る記憶部の内部構成の一例を示す図である。 第1の変形例に係るRAMコア単体に関する信号の入出力を示すタイムチャートの一例である。 第1の変形例に係る記憶部全体に関する信号の入出力を示すタイムチャートの一例である。 第2の変形例に係る記憶部の内部構成の一例を示す図である。 第2の変形例に係るRAMコア単体に関する信号の入出力を示すタイムチャートの一例である。 第2の変形例に係る記憶部全体に関する信号の入出力を示すタイムチャートの一例である。 第3の変形例に係る記憶部の内部構成の一例を示す図である。 第3の変形例に係るRAMコア単体に関する信号の入出力を示すタイムチャートの一例である。 第3の変形例に係る記憶部全体に関する信号の入出力を示すタイムチャートの一例である。 第4の変形例に係る記憶部の内部構成の一例を示す図である。 第5の変形例に係る記憶部の内部構成の一例を示す図である。 第5の変形例に係る読み出し先決定回路の内部構成の一例を示す図である。 パケットモニタ回路の内部構成の一例を示す図である。
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
上述のように、ライトアドレスとリードアドレスが競合するような場合であっても、書き込まれたライトデータをリードデータとして出力すると共に、安定した高速動作を実現する半導体装置が望まれる。
そこで、一例として図1に示す半導体装置100を提供する。半導体装置100は、第1の記憶部101と、第2の記憶部102と、決定部103と、選択部104と、を備える。第1の記憶部101は、ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能である。第2の記憶部102は、直列接続された複数の記憶素子からなる記憶部であって、ライトデータを受け付けると共に、第1の記憶部101と並列接続される。決定部103は、少なくともライトアドレス及びリードアドレスに応じて、第1の記憶部101から読み出されたリードデータ及び第2の記憶部102をなす複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定する。選択部104は、決定部103により外部に出力すると決定されたデータを選択的に出力する。
半導体装置100は、例えば、FPGAに標準的に搭載されているデュアルポートメモリを第1の記憶部101として用いる。また、半導体装置100は、システムクロックに同期してデータを保持するフリップフロップを複数連結することで、第2の記憶部102とする。半導体装置100は、ライトアドレスとリードアドレスが競合し、第1の記憶部101からデータを読み出すことができない場合には、第2の記憶部102が記憶するデータを、半導体装置100の出力データとして外部に出力する。即ち、半導体装置100は、第1の記憶部101と第2の記憶部102を併用することで、ライトアドレスとリードアドレスの競合による問題点を解決する。
また、半導体装置100に使用されるシステムクロックが高速であるため、ライトデータやライトアドレスを伝達するバスにリタイミング手段を挿入することが望まれる場合がある。このような場合であっても、第2の記憶部102は、直列接続された複数の記憶素子から構成されるため、リタイミング手段を挿入することにより生じる必要なデータの消失を回避できる。例えば、図1において、ライトデータ及びライトアドレスに係るバスに1段のリタイミング手段が挿入されたとする。この場合、ライトデータ及びライトアドレスはリタイミング手段により、1クロック遅延して第1の記憶部101に供給される。そのため、第1の記憶部101において、ライトアドレスとリードアドレスが一致したとしても、実際に半導体装置100に供給されているライトアドレスは1クロック前のものである。従って、第2の記憶部102に含まれる記憶素子が1つの場合には、1クロック前のライトデータを保持することができず、第1の記憶部101にてライトアドレスとリードアドレスが一致した場合に、必要なデータ(ライトデータ)が消滅することになる。対して、上記の例で言えば、第2の記憶部102に2個以上の記憶素子が含まれ1クロック前のライトデータは保持されるので、必要なデータが消失することはない。このように、第2の記憶部102に複数の記憶素子を含ませることで、高速なシステムクロックが使用されたとしても、必要に応じてリタイミング手段を挿入できる余地があるので、半導体装置100の安定動作を実現できる。
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
図2は、第1の実施形態に係る通信装置1の内部構成の一例を示す図である。図2を参照すると、通信装置1は、通信モジュール10と、演算モジュール11と、を含んで構成される。
通信モジュール10は、ネットワークを介して他の装置とパケットの送受信を行うインターフェースである。
演算モジュール11は、通信モジュール10からパケットを受信し、当該受信パケットに応じた演算処理を行う手段である。少なくとも演算モジュール11は、FPGAを用いて実現される。
通信モジュール10と演算モジュール11は、例えば、インターラーケン等のチップ間通信プロトコルを用いてパケットの送受信を行う。
図3は、演算モジュール11の内部構成の一例を示す図である。演算モジュール11は、演算部21と、記憶部22と、を含んで構成される。
演算部21は、通信モジュール10からパケットを入力する。演算部21は、入力したパケットに対して予め定めた演算処理を行い、演算結果を記憶部22に格納する。例えば、演算部21は、入力パケットのヘッダに格納されたアドレスに応じて、各パケットをグループに振り分け、グループごとに受信したパケットの数を積算カウントする。
記憶部22は、2つの入出力ポートを備え、各入出力ポートは独立してアクセス可能に構成される。
演算部21は、ライトデータW_DATA、ライトアドレスW_ADD、ライトイネーブルW_ENのそれぞれを記憶部22に出力する。また、演算部21は、リードアドレスR_ADD、リードイネーブルR_ENのそれぞれを記憶部22に出力し、記憶部22からリードデータR_DATAを取得する。なお、ライトイネーブルW_EN及びリードイネーブルR_ENのアクティブはHレベルである。
図4は、記憶部22の内部構成の一例を示す図である。図4を参照すると、記憶部22は、記憶回路23と、メモリアレイ24と、選択回路25と、読み出し先決定回路26と、を含んで構成される。
記憶回路23は、演算部21から供給されるライトデータW_DATAを記憶する回路である。記憶回路23は、2つの独立した入出力ポートを有するRAMコア31を含む。
RAMコア31は、書き込みと読み出しが並列して行える所謂デュアルポートメモリである。なお、RAMコア31は、ライトアドレスとリードアドレスに同じ値を設定することは禁止されている記憶装置である。RAMコア31は、上述の第1の記憶部101に相当する。
ライトデータW_DATAは、ECC(Error Check and Correction)エンコーダ32、フリップフロップ33を介して、RAMコア31のライトデータ入力端子D_IN_RAMに入力される。ライトアドレスW_ADDは、フリップフロップ34を介して、RAMコア31のライトアドレス入力端子W_ADD_RAMに入力される。ライトイネーブルW_ENは、フリップフロップ35を介して、RAMコア31のライトイネーブル入力端子W_EN_RAMに入力される。
リードアドレスR_ADDは、フリップフロップ36を介して、RAMコア31のリードアドレス入力端子R_ADD_RAMに入力される。リードイネーブルR_ENは、フリップフロップ37を介して、RAMコア31のリードイネーブル入力端子R_EN_RAMに入力される。RAMコア31は、ECCデコーダ38を介して、リードデータ出力端子D_OUT_RAMから、リードデータRAM_OUTを選択回路25のポート0に出力する。
なお、ECCエンコーダ32は、RAMコア31に書き込むデータに対応する誤り訂正符号を生成する手段(誤り訂正符号化回路)であり、ECCデコーダ38は誤り訂正符号のデコードと誤りデータの訂正を行う手段(誤り訂正回路)である。即ち、記憶回路23は、RAMコア31に保持されるデータにソフトエラー(ハードウェアには故障は生じていないが誤ったデータが記憶されるエラー;ビットエラー)が発生した場合に、当該ソフトエラーを訂正する機能を有する。
また、記憶回路23は、RAMコア31の各種入力端子にフリップフロップを接続する構成を有し、各種データのリタイミングを実施することで、システムクロックが312.5MHzとなるような高速動作を実現する。具体的には、RAMコア31に供給されるライトデータ、ライトアドレス、ライトイネーブル、リードアドレス、リードイネーブルのそれぞれを、システムクロックに同期して保持するフリップフロップ33〜37がリタイミング手段として機能する。
メモリアレイ24は、複数のフリップフロップ(記憶素子)が直列接続された回路である。メモリアレイ24は、内部のフリップフロップによりデータを記憶する回路である。記憶回路23とメモリアレイ24は、並列に接続されている。メモリアレイ24は、上述の第2の記憶部102に相当する。
メモリアレイ24は、演算部21から供給されるライトデータW_DATAを、システムクロックに同期して記憶する手段である。図4に示す構成では、メモリアレイ24は、4つのフリップフロップ41−1〜41−4を有するので、3クロック前までのライトデータW_DATAの記憶が可能である。
フリップフロップ41−1〜41−4それぞれのデータ出力端子は、選択回路25の入力端子と接続されている。具体的には、フリップフロップ41−1のデータ出力端子は、選択回路25のポート1に係る入力端子と接続されている。同様に、フリップフロップ41−2のデータ出力端子は選択回路25のポート2、フリップフロップ41−3のデータ出力端子は選択回路25のポート3、フリップフロップ41−4のデータ出力端子は選択回路25のポート4にそれぞれ接続されている。
読み出し先決定回路26は、演算部21から供給されるアドレス情報(ライトアドレスW_ADD、リードアドレスR_ADD)と、動作許可情報(ライトイネーブルW_EN、リードイネーブルR_EN)と、に応じて、記憶部22全体の出力データを決定する手段である。より具体的には、読み出し先決定回路26は、アドレス情報と動作許可情報に基づいて、記憶回路23の出力データ及びメモリアレイ24からの出力データのいずれを記憶部22から外部に出力するデータ(リードデータR_DATA)とするかを決定する回路である。即ち、読み出し先決定回路26は、ライトアドレスW_ADDとリードアドレスR_ADDを監視し、これらのアドレス情報と予め定めた所定の規則(ルール)に基づいて、選択回路25によるデータの読み出し先を決定する回路である。読み出し先決定回路26は、上述の決定部103に相当する。
読み出し先決定回路26が選択回路25に向けて出力する選択信号SELは、フリップフロップ27により1クロック遅延されて、選択信号SEL_1Tとして選択回路25に供給される。なお、図4を含む図面において、各フリップフロップは、それぞれが記憶するデータのビット数に応じた数のフリップフロップが並列接続されて構成される。例えば、ライトデータW_DATAが16ビットのデータであれば、フリップフロップ33やフリップフロップ41−1〜41−4のそれぞれは16個のフリップフロップからなる。
図5は、読み出し先決定回路26の回路構成の一例を示す図である。図5を参照すると、読み出し先決定回路26は、アドレス比較回路51−1〜51−4と、論理積回路52−1〜52−4と、フリップフロップ53−1〜53−6と、選択信号出力回路54と、を含んで構成される。
フリップフロップ53−1〜53−3はそれぞれ、ライトアドレスW_ADDを遅延させる。フリップフロップ53−4〜53−6はそれぞれ、ライトイネーブルW_ENを遅延させる。なお、以降の説明において、フリップフロップ53−1〜53−3のそれぞれが出力するデータを、WA_1T、WA_2T、WA_3Tと表記する。また、フリップフロップ53−4〜53−6のそれぞれが出力するデータを、WE_1T、WE_2T、WE_3Tと表記する。
アドレス比較回路51−1は、現クロック(システムクロックの遅延数=0)におけるライトアドレスW_ADDとリードアドレスR_ADDを比較し、両者が一致する場合にはHレベルを出力する。アドレス比較回路51−1は、ライトアドレスW_ADDとリードアドレスR_ADDが不一致の場合には、Lレベルを出力する。
アドレス比較回路51−2は、1クロック前のライトアドレスW_ADD(遅延数=1クロック)と、現クロックのリードアドレスR_ADDと、が一致するか否かを判定する回路である。同様に、アドレス比較回路51−3は2クロック前、アドレス比較回路51−4は3クロック前のライトアドレスW_ADDと現クロックのリードアドレスR_ADDの一致・不一致を判定する回路である。
論理積回路52−1は、現クロックにおけるライトイネーブルW_ENとアドレス比較回路51−1の出力信号の論理積演算を行い、演算結果を選択信号出力回路54に出力する。論理積回路52−2は、1クロック前のライトイネーブルW_ENとアドレス比較回路51−2の出力信号の論理積演算を行い、その結果を選択信号出力回路54に出力する。同様に、論理積回路52−3は2クロック前、論理積回路52−4は3クロック前のライトイネーブルW_ENとアドレス比較回路51−3、51−4の出力信号の論理積演算を行い、その結果を選択信号出力回路54に出力する。
選択信号出力回路54は、論理積回路52−1〜52−4のそれぞれが出力する演算結果を、入力端子IN_1〜IN_4により取得する。選択信号出力回路54は、入力端子IN_1〜IN_4に印加される論理レベル(Hレベル又はLレベル)に応じて、選択信号SELを決定する回路である。選択信号出力回路54は、ライトイネーブルW_ENがHレベルであるライトアドレスW_ADDに関し、ライトアドレスW_ADDとリードアドレスR_ADDとの間の関係に基づいて、選択信号SELを決定する。具体的には、選択信号出力回路54は、以下の動作を行う。
(a)選択信号出力回路54は、ライトアドレスW_ADDとリードアドレスR_ADDが一致する場合(IN_1=Hレベル)、選択回路25がポート1を選択するように選択信号SELを出力する。つまり、ライトアドレスW_ADDとリードアドレスR_ADDが一致する場合、フリップフロップ41−1の出力データが選択回路25から出力される。
(b)選択信号出力回路54は、1クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合(IN_2=Hレベル)、選択回路25がポート2を選択するように選択信号SELを出力する。つまり、1クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合、フリップフロップ41−2の出力データが選択回路25から出力される。
(c)選択信号出力回路54は、2クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合(IN_3=Hレベル)、選択回路25がポート3を選択するように選択信号SELを出力する。つまり、2クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合、フリップフロップ41−3の出力データが選択回路25から出力される。
(d)選択信号出力回路54は、3クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合(IN_4=Hレベル)、選択回路25がポート4を選択するように選択信号SELを出力する。つまり、3クロック前のライトアドレスW_ADDとリードアドレスR_ADDが一致する場合、フリップフロップ41−4の出力データが選択回路25から出力される。
(e)選択信号出力回路54は、ライトアドレスW_ADDとリードアドレスR_ADDの関係が上記(a)〜(d)以外の場合には、選択回路25がポート0のデータ(リードデータRAM_OUT)を選択するように選択信号SELを出力する。
上記(a)〜(e)に係る選択信号出力回路54の動作を真理値表としてまとめた図が、図6である。なお、図6における「×」はドントケアを示す。
以上のように、読み出し先決定回路26は、リードアドレスR_ADDとライトアドレスW_ADDが一致する際のシステムクロックの遅延数に応じて、外部に出力するデータを決定する。より具体的には、読み出し先決定回路26は、ライトアドレスW_ADDとリードアドレスR_ADDが一致する場合には、メモリアレイ24をなす複数のフリップフロップのうち、初段のフリップフロップ41−1が記憶するデータを外部に出力するデータに決定する。また、読み出し先決定回路26は、システムクロックの遅延数が、メモリアレイ24を構成するフリップフロップの数(第1の実施形態では4)以上の場合には、RAMコア31から読み出されるデータを外部に出力するデータに決定する。
選択回路25は、選択信号SELが1クロック遅延された選択信号SEL_1Tにより、記憶部22の外部に出力するデータを選択的に出力する回路である。選択回路25は、上述の選択部104に相当する。
次に、図7及び図8に示すタイムチャートを用いて記憶部22の動作を説明する。
図7は、RAMコア31単体に関する信号の入出力を示すタイムチャートの一例である。図8は、記憶部22全体に関する信号の入出力を示すタイムチャートの一例である。図7及び図8では、記憶部22からデータを読み出し、当該呼び出したデータに対して演算処理(例えば、パケットの積算カウント処理)を施し、次のクロックにて演算結果を書き込むといった演算部21の動作を想定している。つまり、記憶部22は、リード動作の1クロック後にライト動作することを想定している。
また、パケットに含まれるアドレスに応じて、各パケットはグループ分けされるが、図7及び図8では、同一のグループに関する処理が連続する場合を想定している。具体的には、時刻T15〜T19にて、RAMコア31のアドレス値1に書き込まれるパケットが5回連続して入力されている。
図7を参照すると、時刻T01〜T06の期間は、ライトイネーブルW_ENがHレベルであるためRAMコア31には、ライトデータ値0a〜5aのそれぞれがRAMコア31のアドレス値0〜5に書き込まれる。なお、時刻T01〜T06の期間では、リードイネーブルR_ENはLレベルであるため、RAMコア31からデータが読み出されることはない。
次に、時刻T09にて、演算部21によるライトデータW_DATA及びライトアドレスW_ADDの供給に先立ち、RAMコア31からデータの読み出しが行われる。具体的には、ライトアドレスW_ADDにアドレス値0が設定される1クロック前に、リードイネーブルR_ENがHレベル、リードアドレスR_ADDにアドレス値0がそれぞれ設定される。当該リードイネーブルR_EN及びリードアドレスR_ADDは1クロック遅延されてRAMコア31に供給され、時刻T10にて、RAMコア31のアドレス値0からリードデータ値0aがリードデータRAM_OUTとして読み出される。
また、時刻T10にて、ライトイネーブルW_ENがHレベルに設定され、アドレス値0、ライトデータ値0bに係る書き込み情報が、記憶部22に供給される。当該書き込み情報(アドレス値0、ライトデータ値0b)は、フリップフロップ34、35により1クロック遅延されてRAMコア31に供給され、時刻T11のタイミングにてRAMコア31に書き込まれる。RAMコア31は、このようなデータの読み出し動作と書き込みに係る動作を、時刻T14まで繰り返す。
時刻T15において、ライトアドレスW_ADDとリードアドレスR_ADDに同じアドレス値1が、記憶部22に供給される。従って、時刻T15から1クロック遅れた時刻T16にて、RAMコア31に、同じアドレス値1を持つライトアドレスW_ADDとリードアドレスR_ADDが供給される。この場合、RAMコア31に同時アクセスが発生することとなり、RAMコア31から出力される値(リードデータRAM_OUT)は不定となる。即ち、RAMコア31の動作は、期待動作と異なる。
なお、図7以降の図面において、RAMコア31によるリードデータRAM_OUTが不定の場合の値を「×」を用いて表記する。また、ライトイネーブルW_ENやリードイネーブルR_ENが無効(Lレベル)の場合のデータ値及びアドレス値は無意味であるので、このような場合のデータ値等は「−」を用いて表記する。
図8を参照すると、時刻T12にて、1クロック前の時刻T11におけるライトアドレスW_ADD(ライトアドレス値=1)と、リードアドレスR_ADD(リードアドレス値=1)と、が一致する。そのため、読み出し先決定回路26の論理積回路52−2は、Hレベルを出力する。その結果、選択信号出力回路54の入力端子IN_2はHレベルとなる。図6を参照すると、入力端子IN_2がHレベルであるので、選択信号出力回路54は、選択回路25がポート2を選択するように選択信号SELを出力する。図8の時刻T13にて、選択信号SELが1クロック遅延された選択信号SEL_1Tが、選択回路25に供給される。選択回路25は、ポート2に供給されているデータ(メモリアレイ24のフリップフロップ41−2の出力データ)である「1b」を、記憶部22からのリードデータR_DATAとして出力する。
記憶部22は、このような動作を時刻T14まで行う。
次に、時刻T15において、ライトアドレスW_ADDとリードアドレスR_ADDとして同じアドレス値1が、記憶部22に供給される。この場合、ライトアドレス値とリードアドレス値が一致するため、読み出し先決定回路26の論理積回路52−1は、Hレベルを出力する。その結果、選択信号出力回路54の入力端子IN_1にHレベルが供給される。図6を参照すると、入力端子IN_1がHレベルであるので、選択信号出力回路54は、選択回路25がポート1を選択するように選択信号SELを出力する。時刻T16にて、選択信号SELが1クロック遅延された選択信号SEL_1Tが、選択回路25に供給される。選択回路25は、ポート1に供給されているデータ(メモリアレイ24のフリップフロップ41−1の出力データ)である「1d」を、記憶部22からのリードデータR_DATAとして出力する。
このように、同時アクセスが発生するような場合には、読み出し先決定回路26は、フリップフロップ41−1が記憶するライトデータW_DATAを、記憶部22全体の出力データ(リードデータR_DATA)として外部に出力する。その結果、記憶部22は、期待通りのデータ出力を行える。
第1の実施形態に係るデータ出力方法をまとめると図9に示すフローチャートのとおりである。
ステップS01において、少なくともライトアドレスW_ADD及びリードアドレスR_ADDに応じて、RAMコア31から読み出されたリードデータRAM_OUT及びメモリアレイ24をなす複数のフリップフロップ41のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定する。ステップS02において、外部に出力すると決定されたデータを選択的に出力する。
以上のように、第1の実施形態に係る記憶部22は、ライトアドレスW_ADDとリードアドレスR_ADDとの間の関係に基づいて、RAMコア31が出力するデータ及びメモリアレイ24が出力するデータのいずれかを、リードデータR_DATAとして出力するか選択する。その結果、記憶部22は、ライトアドレスW_ADDとリードアドレスR_ADDが一致するような場合も含め、これらのアドレス値がどのような値であっても、リード動作の1クロック後にライト動作が可能となる。即ち、第1の実施形態に係る記憶部22は、ライトアドレスW_ADDとリードアドレスR_ADDが一致する場合であっても、ライトされたデータを確実にリードすることが可能である。また、フリップフロップ33〜37は各種データをリタイミングする手段として機能する。そのため、例えば、パケットを100Gbpsといった速度にて処理する必要がある通信装置1の演算モジュール11に記憶部22を組み込むことで、パケットを1クロックで処理することが可能となる。
また、演算モジュール11をFPGAにて実現する場合に、フリップフロップに係るリソースを記憶装置として使用する必要がなくなり、汎用的なFPGAのリソースを有効活用できる。即ち、安価な通信装置1を短期間で開発することが可能となる。
ここで、一部のFPGAには、同時アクセスが発生した場合に、ライトデータを直接リードできる機能を有するものがある。このようなFPGAを使用すれば、同時アクセスに伴う問題は生じない。しかし、このような機能は、ごく一部のFPGAメーカから供給されるFPGAに限り実装されているものあり一般的ではない。つまり、大半のFPGAにはこのような機能は実装されておらず、上記のような例外的且つ特殊な機能を有するFPGAを採用することはできない。
また、100Gbpsといった処理容量が要求される通信装置1では、例えば、312.5MHzにて1クロック処理が必要となるため、ライトデータW_DATAに対するECCが適用できないという問題がある。FPGAにおいて、高速なECC回路を実現するためには、予めFPGAにハードマクロとして組み込まれたECC回路を用いるのが通常である。しかし、ハードマクロに係るECC回路を組み込みつつ、同時アクセス時の出力を保証する記憶装置は存在しないのが現状である。つまり、上記の特殊機能(同時アクセスが発生した場合には、ライトデータを直接リードできる機能)が実装されたFPGAであっても、ECC機能を有効にすることができないという問題がある。即ち、1クロック処理が要求されるような記憶装置では、ECC回路の適用ができずソフトエラーによるRAMのビット反転エラーを回避できない。その結果、信頼性の高い通信装置の実現が困難とある。
一方、第1の実施形態に係る記憶部22は、同時アクセス時にはメモリアレイ24のフリップフロップ41−1に格納されたライトデータW_DATAをリードデータR_DATAとして出力するためソフトエラーによるビット反転エラーは生じない。また、RAMコア31に格納されるライトデータW_DATAには、ECC回路(ECCエンコーダ32とECCデコーダ38)による誤り訂正が適用されるため、ソフトエラーによるビット反転エラーは必要に応じて訂正される。その結果、記憶部22を用いる通信装置1の信頼性(品質)を向上させることができる。
なお、第1の実施形態にて説明した記憶部22の構成及び動作は例示であって、種々の変形が可能である。以下、第1の実施形態の変形例について説明する。
[変形例1]
図10は、第1の変形例に係る記憶部22aの内部構成の一例を示す図である。図4に示す記憶部22と図10に示す記憶部22aの相違点は、記憶回路23の内部にフリップフロップ61〜63が追加されている点である。即ち、図10に示す記憶部22aでは、RAMコア31における書き込み側のリタイミング段数が2段となっている。
RAMコア31の書き込み側のリタイミング段数が2段になっているため、ライトアドレスW_ADDやライトデータW_DATAは2クロック遅延してRAMコア31に供給される(例えば、図11のT01〜T03参照)。また、例えば、図12の時刻T15、T16を参照すると、同時アクセスが発生した場合であっても、期待通りのデータが記憶部22aから出力されているのが理解される。
[変形例2]
図13は、第2の変形例に係る記憶部22bの内部構成の一例を示す図である。図10に示す記憶部22aと図13に示す記憶部22bの相違点は、RAMコア31のリードデータ出力端子D_OUT_RAMとECCデコーダ38の間に挿入されるフリップフロップ64と、リードアドレスR_ADDを1クロック遅延させるフリップフロップ65と、が追加されている点である。
記憶部22bは、フリップフロップ64が追加されることで、読み出し側のデータ出力をリタイミングする。また、RAMコア31から出力されるリードデータRAM_OUTと、記憶部22bの外部(演算部21)から供給されるリードアドレスR_ADDと、の間の整合を図るためフリップフロップ65が追加される。なお、図13以降の図面において、フリップフロップ65により1クロック遅延されるリードアドレスR_ADDをリードアドレスR_ADD_1Tと表記する。
図14を参照すると、例えば、時刻T09にてRAMコア31から読み出されたデータは、フリップフロップ64により1クロック遅延され、時刻T10にてリードデータRAM_OUTとして出力される。
また、図15を参照すると、例えば、時刻T08にて演算部21から供給されたリードアドレスR_ADDは、フリップフロップ65により1クロック遅延され、時刻T09にてリードアドレスR_ADD_1Tとして読み出し先決定回路26に供給される。
さらに、例えば、図15の時刻T15にて、ライトアドレスW_ADDとリードアドレスR_ADDが一致しているため、同時アクセスが発生している。この場合、時刻T15のリードアドレスR_ADD_1Tのアドレス値と、ライトアドレスW_ADDのアドレス値が一致するので、読み出し先決定回路26の論理積回路52−1は、Hレベルを出力する。その結果、選択信号出力回路54の入力端子IN_1にHレベルが供給される。入力端子IN_1がHレベルであるので、選択信号出力回路54は、選択回路25がポート1を選択するように選択信号SELを出力する。時刻T16にて、選択信号SELが1クロック遅延された選択信号SEL_1Tが、選択回路25に供給され、ポート1に供給されているデータ「1d」が出力される。
このように、第2の変形例に係る記憶部22bであっても、同時アクセスが発生した場合には、期待通りのデータが出力される。
[変形例3]
図16は、第3の変形例に係る記憶部22cの内部構成の一例を示す図である。図13に示す記憶部22bと図16に示す記憶部22cの相違点は、RAMコア31の読み出し側におけるデータ出力に対するリタイミングを2段実施するためのフリップフロップ66、67が追加されている点である。なお、図16以降の図面において、フリップフロップ65及び66により2クロック遅延されるリードアドレスR_ADDをリードアドレスR_ADD_2Tと表記する。
図17の時刻T08〜T10を参照すると、RAMコア31から読み出されたデータは、フリップフロップ64及び67により2クロック遅延され、リードデータRAM_OUTとして出力される。また、図18の時刻T07〜T09を参照すると、リードアドレスR_ADDは、フリップフロップ65及び66により2クロック遅延され、リードアドレスR_ADD_2Tとして読み出し先決定回路26に供給される。また、例えば、図18の時刻T15、T16を参照すると、記憶部22cに同時アクセスが発生した場合であっても、期待通りのデータが記憶部22cから出力されているのが理解される。
以上、第1〜第3の変形例にて説明したように、メモリアレイ24に含まれるフリップフロップの段数を4段とする場合には、RAMコア31の書き込み側のリタイミングの段数を2段、読み出し側のリタイミングの段数を2段とすることができる。さらに、リタイミングの段数を増やす場合には、メモリアレイ24に含まれるフリップフロップの段数を増やし、読み出し先決定回路26の構成を増加したフリップフロップの段数に適応させればよい。
[変形例4]
図19は、第4の変形例に係る記憶部22dの内部構成の一例を示す図である。図16に示す記憶部22cと図19に示す記憶部22dの相違点は、記憶回路23の入力端子にフリップフロップ68が接続されている点である。
RAMコア31は、FPGAのハードマクロとして実装されているので、FPGAチップ上での物理的位置が予め定まっている。また、演算部21にて使用される加算器もハードマクロとして実装されているので、演算部21と記憶部22の間の距離が短くなるとは限らない。つまり、演算部21(加算器)と記憶部22(RAMコア31)の間の距離が長くなる可能性があり、データの送受信に問題が生じることがある。
そこで、第4の変形例に係る記憶部22dのように、記憶回路23の前段にフリップフロップ68を追加することで、ライトデータW_DATAの波形を整形する。その結果、例えば、システムクロックが312.5MHzのように高速、且つ、演算部21と記憶部22の間が離れている場合であっても、確実なデータの授受が実現できる。
また、フリップフロップ68の追加は、メモリアレイ24には直列接続された5個のフリップフロップが含まれることと等価である。従って、選択回路25のポート数及び読み出し先決定回路26が出力する選択信号SELを適宜変更し、記憶部22dに同時アクセスが生じた場合には、フリップフロップ68が記憶するデータが、リードデータR_DATAとして出力されるように構成する。
[変形例5]
第1の実施形態及び第1〜第4の変形例に係る記憶装置では、メモリアレイ24に含まれるフリップフロップの個数を4として説明した。しかし、フリップフロップの個数は4に限定されない。例えば、図20に示すように、メモリアレイ24に含まれるフリップフロップの数は1でもよい。
この場合には、読み出し先決定回路26は、図21(a)に示すように構成できる。図21(a)を参照すると、読み出し先決定回路26は、同時アクセスが発生した場合(ライトアドレスW_ADDとリードアドレスR_ADDが一致する場合)に、選択回路25のポート1を選択するように選択信号SELを出力する。選択信号出力回路54の動作を真理値表として記載すると、図21(b)のとおりとなる。
第5の変形例に係る記憶部22eは、高速なシステムクロックによる動作が不要ではあるが、同時アクセスに対応したい場合に好適である。記憶部22eでは、メモリアレイ24に1個のフリップフロップ41−1が含まれるだけなので、記憶回路23の内部にリタイミング用のフリップフロップを追加することができない。しかし、演算モジュール11を実現するFPGAを高速に動作させる必要が無い場合には、図20に示す記憶部22eの構成で足り、メモリアレイ24と読み出し先決定回路26の構成が簡略化できるという利点がある。
上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
[付記1]
ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、
直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、
少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定する決定部と、
前記決定部により外部に出力すると決定されたデータを選択的に出力する選択部と、
を備える半導体装置。
[付記2]
前記第1の記憶部は、ライトイネーブルとリードイネーブルを受け付け、
前記選択部は、前記ライトアドレス、前記リードアドレス、前記ライトイネーブル及び前記リードイネーブルに応じて、外部に出力するデータを選択する、付記1の半導体装置。
[付記3]
前記第1の記憶部に供給される前記ライトデータを保持する第1の保持部と、
前記第1の記憶部に供給される前記ライトアドレスを保持する第2の保持部と、
前記第1の記憶部に供給される前記ライトイネーブルを保持する第3の保持部と、
前記第1の記憶部に供給される前記リードアドレスを保持する第4の保持部と、
前記第1の記憶部に供給される前記リードイネーブルを保持する第5の保持部と、
をさらに備える付記2の半導体装置。
[付記4]
前記決定部は、前記外部に出力するデータを示す選択信号を、前記選択部に向けて出力し、
前記選択信号を保持する第6の保持部をさらに備える、付記3の半導体装置。
[付記5]
前記ライトデータから誤り訂正符号を生成する誤り訂正符号化回路と、
前記誤り訂正符号に応じて、前記第1の記憶部から読み出されたリードデータを訂正する誤り訂正回路と、
をさらに備える、付記1乃至4のいずれか一に記載の半導体装置。
[付記6]
前記決定部は、前記リードアドレスと前記ライトアドレスが一致する際のシステムクロックの遅延数に応じて、前記外部に出力するデータを決定する付記1乃至5のいずれか一に記載の半導体装置。
[付記7]
前記決定部は、
前記ライトアドレスと前記リードアドレスが一致する場合には、前記第2の記憶部をなす複数の記憶素子のうち、初段の記憶素子が記憶するデータを前記外部に出力するデータとして決定し、
前記システムクロックの遅延数が、前記第2の記憶部をなす複数の記憶素子の数以上の場合には、前記第1の記憶部から読み出されたリードデータを前記外部に出力するデータとして決定する、付記6の半導体装置。
[付記8]
前記第1の保持部の前段に配置され、前記ライトデータを保持する第7の保持部と、
前記第2の保持部の前段に配置され、前記ライトアドレスを保持する第8の保持部と、
前記第3の保持部の前段に配置され、前記ライトイネーブルを保持する第9の保持部と、
をさらに備える、付記4の半導体装置。
[付記9]
前記第1の記憶部から読み出されたリードデータを保持する第10の保持部と、
前記決定部に供給される前記リードアドレスを保持する第11の保持部と、
をさらに備える、付記8の半導体装置。
[付記10]
前記第10の保持部の後段に配置され、前記第1の記憶部から読み出されたリードデータを保持する第12の保持部と、
前記第11の保持部の前段に配置され、前記リードアドレスを保持する第13の保持部と、
をさらに備える、付記9の半導体装置。
[付記11]
前記第7の保持部の前段に配置され、前記ライトデータを保持する第14の保持部をさらに備える、付記10の半導体装置。
[付記12]
ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、を含む記憶装置からのデータ出力方法であって、
少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定するステップと、
前記外部に出力すると決定されたデータを選択的に出力するステップと、
を含む、データ出力方法。
なお、付記12の形態は、付記1の形態と同様に、付記2の形態〜付記11の形態に展開することが可能である。
なお、引用した上記の特許文献の開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
1 通信装置
10 通信モジュール
11 演算モジュール
21、82 演算部
22、22a〜22e 記憶部
23 記憶回路
24 メモリアレイ
25、84 選択回路
26 読み出し先決定回路
27、33〜37、41−1〜41−4、53−1〜53−6、61〜68、83 フリップフロップ(FF;Flip-Flop)
31 RAM(Random Access Memory)コア
32 ECCエンコーダ(ECC Encoder)
38 ECCデコーダ(ECC Decoder)
51−1〜51−4 アドレス比較回路
52−1〜52−4 論理積回路
54 選択信号出力回路
80−1〜80−n 積算カウント回路
81 グループ選択回路
100 半導体装置
101 第1の記憶部
102 第2の記憶部
103 決定部
104 選択部

Claims (10)

  1. ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、
    直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、
    少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定する決定部と、
    前記決定部により外部に出力すると決定されたデータを選択的に出力する選択部と、
    を備える半導体装置。
  2. 前記第1の記憶部は、ライトイネーブルとリードイネーブルを受け付け、
    前記選択部は、前記ライトアドレス、前記リードアドレス、前記ライトイネーブル及び前記リードイネーブルに応じて、外部に出力するデータを選択する、請求項1の半導体装置。
  3. 前記第1の記憶部に供給される前記ライトデータを保持する第1の保持部と、
    前記第1の記憶部に供給される前記ライトアドレスを保持する第2の保持部と、
    前記第1の記憶部に供給される前記ライトイネーブルを保持する第3の保持部と、
    前記第1の記憶部に供給される前記リードアドレスを保持する第4の保持部と、
    前記第1の記憶部に供給される前記リードイネーブルを保持する第5の保持部と、
    をさらに備える請求項2の半導体装置。
  4. 前記決定部は、前記外部に出力するデータを示す選択信号を、前記選択部に向けて出力し、
    前記選択信号を保持する第6の保持部をさらに備える、請求項3の半導体装置。
  5. 前記ライトデータから誤り訂正符号を生成する誤り訂正符号化回路と、
    前記誤り訂正符号に応じて、前記第1の記憶部から読み出されたリードデータを訂正する誤り訂正回路と、
    をさらに備える、請求項1乃至4のいずれか一項に記載の半導体装置。
  6. 前記決定部は、前記リードアドレスと前記ライトアドレスが一致する際のシステムクロックの遅延数に応じて、前記外部に出力するデータを決定する請求項1乃至5のいずれか一項に記載の半導体装置。
  7. 前記決定部は、
    前記ライトアドレスと前記リードアドレスが一致する場合には、前記第2の記憶部をなす複数の記憶素子のうち、初段の記憶素子が記憶するデータを前記外部に出力するデータとして決定し、
    前記システムクロックの遅延数が、前記第2の記憶部をなす複数の記憶素子の数以上の場合には、前記第1の記憶部から読み出されたリードデータを前記外部に出力するデータとして決定する、請求項6の半導体装置。
  8. 前記第1の保持部の前段に配置され、前記ライトデータを保持する第7の保持部と、
    前記第2の保持部の前段に配置され、前記ライトアドレスを保持する第8の保持部と、
    前記第3の保持部の前段に配置され、前記ライトイネーブルを保持する第9の保持部と、
    をさらに備える、請求項4の半導体装置。
  9. 前記第1の記憶部から読み出されたリードデータを保持する第10の保持部と、
    前記決定部に供給される前記リードアドレスを保持する第11の保持部と、
    をさらに備える、請求項8の半導体装置。
  10. ライトアドレス、ライトデータ及びリードアドレスを受け付け、データの書き込みとデータの読み出しの並列動作が可能な第1の記憶部と、直列接続された複数の記憶素子からなる記憶部であって、前記ライトデータを受け付けると共に、前記第1の記憶部と並列接続された第2の記憶部と、を含む記憶装置からのデータ出力方法であって、
    少なくとも前記ライトアドレス及び前記リードアドレスに応じて、前記第1の記憶部から読み出されたリードデータ及び前記第2の記憶部をなす前記複数の記憶素子のいずれかに記憶されたデータのいずれかを外部に出力するデータとして決定するステップと、
    前記外部に出力すると決定されたデータを選択的に出力するステップと、
    を含む、データ出力方法。
JP2015011809A 2015-01-23 2015-01-23 半導体装置及びデータ出力方法 Active JP6366103B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015011809A JP6366103B2 (ja) 2015-01-23 2015-01-23 半導体装置及びデータ出力方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015011809A JP6366103B2 (ja) 2015-01-23 2015-01-23 半導体装置及びデータ出力方法

Publications (2)

Publication Number Publication Date
JP2016136366A JP2016136366A (ja) 2016-07-28
JP6366103B2 true JP6366103B2 (ja) 2018-08-01

Family

ID=56512585

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015011809A Active JP6366103B2 (ja) 2015-01-23 2015-01-23 半導体装置及びデータ出力方法

Country Status (1)

Country Link
JP (1) JP6366103B2 (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3954159B2 (ja) * 1997-06-11 2007-08-08 富士電機ホールディングス株式会社 同期式ramのアクセス制御回路、データ処理プロセッサ及びその制御方法

Also Published As

Publication number Publication date
JP2016136366A (ja) 2016-07-28

Similar Documents

Publication Publication Date Title
US10270447B2 (en) Apparatus for configurable interface and associated methods
US9384145B2 (en) Systems and methods for implementing dynamically configurable perfect hash tables
US7439763B1 (en) Scalable shared network memory switch for an FPGA
JP2008509583A (ja) 通信モジュールのメッセージメモリのデータへアクセスする方法および装置
JP2007166031A (ja) Crc値の算出装置
Krainyk et al. Hardware-oriented turbo-product codes decoder architecture
JP2008509463A (ja) メッセージをメッセージメモリに記憶する方法およびメッセージメモリ
US9122411B2 (en) Signal order-preserving method and apparatus
JP7495933B2 (ja) ソート方法、装置、電子デバイス及びコンピュータプログラム
US9478272B1 (en) Configurable storage blocks with embedded first-in first-out and last-in first-out circuitry
US7568074B1 (en) Time based data storage for shared network memory switch
CN116569157A (zh) 通过同步接口的经延迟通信
JP6366103B2 (ja) 半導体装置及びデータ出力方法
CN105187162B (zh) 一种多粒度并行解速率匹配方法和装置
CN103312577B (zh) 一种处理mac数据的方法及装置
WO2012149775A1 (zh) 数据处理的方法和装置
CN111221823A (zh) 一种基于链路管理表的数据处理方法及装置
US7730276B1 (en) Striping of data into memory of a network data switch to prevent read and write collisions
US9576620B2 (en) Semiconductor apparatus and operating method thereof
US9443568B2 (en) Electronic device and data transmission method thereof
CN103490855B (zh) 传输信息的方法和装置
US8193953B1 (en) Data width scaler circuitry
US20150150009A1 (en) Multple datastreams processing by fragment-based timeslicing
US11726944B2 (en) Transaction layer circuit of PCIe and operation method thereof
JP2016042218A (ja) エラー検出装置及びエラー検出方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170630

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171204

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180605

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180628

R150 Certificate of patent or registration of utility model

Ref document number: 6366103

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150