JP6757791B2 - インメモリ処理及び狭幅データポートを備えたコンピュータデバイス - Google Patents

インメモリ処理及び狭幅データポートを備えたコンピュータデバイス Download PDF

Info

Publication number
JP6757791B2
JP6757791B2 JP2018516124A JP2018516124A JP6757791B2 JP 6757791 B2 JP6757791 B2 JP 6757791B2 JP 2018516124 A JP2018516124 A JP 2018516124A JP 2018516124 A JP2018516124 A JP 2018516124A JP 6757791 B2 JP6757791 B2 JP 6757791B2
Authority
JP
Japan
Prior art keywords
data
address
storage
bit
cache
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
JP2018516124A
Other languages
English (en)
Other versions
JP2018534666A (ja
Inventor
ドゥヴォー,ファブリス
ロイ,ジャン−フランソワ
Original Assignee
アップメム
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 アップメム filed Critical アップメム
Publication of JP2018534666A publication Critical patent/JP2018534666A/ja
Application granted granted Critical
Publication of JP6757791B2 publication Critical patent/JP6757791B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details of memory controller using bus width
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Description

本開示は、「インメモリ処理」の分野、特に、1つ以上のプロセッサと狭幅データバスとを備える複数の記憶回路を伴うコンピュータデバイス及び方法に関する。
現代のコンピュータは、1つ以上のダイナミックランダムアクセスメモリ(DRAM)回路に連結された、システムオンチップ(SoC)として実行されることが多い処理回路を通常備える。そのようなメモリは、周期的なリフレッシュ動作を通常必要とするが、高密度で比較的アクセス速度が速く、それゆえ大抵のコンピュータにおいてメインRAMデータ記憶装置として用いられる。しかしながら、SoC‐DRAM回路間を伝送されるデータが増加の一途をたどるため、そのようなデータ伝送によりコンピュータの動作が遅くなり、比較的多くのエネルギーが消費される傾向にある。
解決策として、SoCにおける複数のメインホストプロセッサに加えて、1つ以上のプロセッサが統合された複数のDRAM回路を提供することが提案されている。当該解決策では、一定のデータ処理作業がDRAMプロセッサに委ねられることを可能にすることによって、DRAM回路‐ホストプロセッサ間のデータ伝送の程度を低減させ、その結果、DRAM回路‐ホストプロセッサ間のデータ伝送を避けながらこれらの処理作業を行うことができる。
メモリチップ内でデータプロセッサを用いる際には、各メモリチップがホストプロセッサの全バス幅を必ずしも参照しないという問題がある。実際、一般的には、各メモリチップがホストプロセッサデータバスのうちの対応するスライスに連結された一連のメモリチップを設ける。データバスのこのようなスライスの利点の例として、チップパッケージが比較的狭幅データポートを有することができ、ピンの数がより少なく、それゆえエネルギー消費が低減されるということが挙げられる。また、追加のバッファチップを用いる場合には、コスト、電力消費、及び待ち時間が増大し、動作周波数が減少し、それゆえ帯域幅が狭くなるが、狭幅データポートにより、バッファチップを追加することなく大容量のメモリシステムを構築することができる。しかしながら、各メモリチップの狭幅データポートゆえに、当該メモリチップのプロセッサは、ホストプロセッサの全幅にわたって供給されたデータを処理することができなくなる。
このように、狭幅データバスを備えるメモリチップにおいてインメモリ処理を可能にするシステムを提供するのに、従来技術には技術的な問題がある。
本開示の実施形態の目的は、従来技術における1つ以上の問題を少なくとも部分的に解決することである。
一態様によれば、第1の処理装置と、複数の記憶回路と、上記第1の処理装置を上記複数の記憶回路の各々に連結するデータバスとを備えるコンピュータデバイスであって、上記複数の記憶回路の少なくとも第1の記憶回路は、1つ以上の更なる処理装置を備え、上記複数の記憶回路の各々は、mビット幅であるデータポートを有し、上記データバスは、nビットの幅を有し(nはmより大きい)、上記複数の記憶回路の各々の上記データポートは、上記データバスの対応するmビットスライスに連結され、上記第1の処理装置は、上記データバスを介して読み取られる又は書き込まれるnビットデータ値に1つ以上の第1のアドレスを供給するように構成されており、上記第1の処理装置及び/又は更なる回路は、上記第1の記憶回路における複数のmビットメモリ位置に対応する複数の第2のアドレスであって、そのうちの少なくとも2つの第2のアドレスが連続アドレスである複数の第2のアドレスに、上記第1のアドレスを変換することによって、および複数のメモリアクセス動作にわたって上記第1の記憶回路に対して上記nビットデータ値の読み取り動作又は書き込み動作を行うことによって、上記nビットデータ値を、上記第1の記憶回路から読み取る又は上記第1の記憶回路に書き込むように構成される、コンピュータデバイスが提供される。
一実施形態によれば、上記更なる処理装置の各々は、上記第1の処理装置によって供給されたコマンドに基づいて、上記第1の記憶回路によって記憶されたデータ処理動作を行うように構成された1つ以上のプロセッサを備える。
一実施形態によれば、上記データバスの上記幅nは、各記憶回路の上記データポートの上記幅mの倍数pであり、p個の記憶回路が存在する。
一実施形態によれば、上記1つ以上の第1のアドレスの最上位ビットのうちの1つ以上が、上記第1の記憶回路を指定する上記複数の第2のアドレスの1つ以上の最下位ビットになるように、上記アドレス変換がアドレス置換を含む。
一実施形態によれば、上記1つ以上の第1のアドレスは、上記第1の処理装置のアドレス空間におけるアドレスであり、上記複数の第2のアドレスは、上記1つ以上の更なる処理装置の局所アドレス空間におけるアドレスであり、上記局所アドレス空間は、線形、又はセグメントごとに線形である。
一実施形態によれば、上記コンピュータデバイスは、データキャッシュと、上記データキャッシュの1つ以上のラインに対してキャッシュライン置換を行うように構成されたデータ置換回路とをさらに備え、上記データキャッシュは、複数のキャッシュラインを備え、上記複数のキャッシュラインの各々が複数のデータワードを記憶し、各データワードは、複数のバイトのデータを有し、上記キャッシュライン置換は、上記第1の記憶回路に関連する上記キャッシュの記憶位置に、上記複数のデータワードのうちの第1のデータワードを形成する上記バイトを記憶する。
一実施形態によれば、上記データキャッシュは、データバスを介して上記複数の記憶回路に連結され、上記データ置換回路は、上記データバスと上記データキャッシュとの間に連結されたバイト転置回路であって、上記キャッシュに記憶された又は上記キャッシュからロードされた各データ値の上記キャッシュライン置換を行うように構成されている。
一実施形態によれば、上記第1の処理装置及び/又は更なる回路は、上記1つ以上の第1のアドレスが上記更なる処理装置のうちの1つ以上に関連するアドレスセグメント内にあるか否かを判断するように、および上記1つ以上の第1のアドレスが上記アドレスセグメント内にある場合に上記アドレス変換を行うように構成される。
一実施形態によれば、上記第1のアドレスの複数の最下位ビットが、上記複数の第2のアドレスのうちの1つの複数の最下位ビットに等しい。
一実施形態によれば、mビットより大きいコマンドレジスタが、上記第1の記憶回路のアドレス空間にマップされ、上記コマンドレジスタは、少なくとも1つの制御ビットを有し、上記第1の処理装置は、複数のメモリアクセス動作にわたって上記コマンドレジスタへの書き込み動作を行うように構成され、上記コマンドレジスタのバイトが、上記複数のメモリアクセス動作のうちの最後のメモリアクセス動作によって書き込まれる上記制御ビットを有し、上記制御ビットの変更を伴う。
一実施形態によれば、上記第1の記憶回路は、メモリアレイと上記1つ以上の更なる処理装置とを統合する集積回路チップである。
一実施形態によれば、上記第1の記憶回路は、メモリアレイを備える第1の集積回路チップと、上記1つ以上の更なる処理装置を備える更なる集積回路チップとを備える。
一実施形態によれば、上記第1の記憶回路は、複数の更なる処理装置を備え、当該複数の更なる処理装置の各々は、上記メモリアレイの対応するアドレス空間に関連する。
一実施形態によれば、上記第1の処理装置は、1つ以上のECCビットを各mビット値に挿入するように構成された1つ以上の誤り訂正符号(ECC)回路を備える。
一実施形態によれば、上記第1の処理装置は、更なるメモリアクセス動作中に、上記第1の記憶回路に記憶される複数のECCビットを作成するように構成された1つ以上の誤り訂正符号(ECC)回路を備える。
別の態様によれば、上記第1の処理装置を複数の記憶回路の各々に連結するデータバスを介して、上記複数の記憶回路の第1の記憶回路にnビットデータ値を書き込む書き込み動作、又は上記第1の記憶回路から上記nビットデータ値を読み取る読み取り動作を、第1の処理装置によって行う工程を含む方法であって、上記第1の記憶回路は、1つ以上の更なる処理装置を備え、上記複数の記憶回路の各々は、mビット幅であるデータポートを有し、上記データバスは、nビットの幅を有し(nはmより大きい)、上記複数の記憶回路の各々の上記データポートは、上記データバスの対応するmビットスライスに連結され、上記読み取り動作又は上記書き込み動作は、上記第1の処理装置によって、1つ以上の第1のアドレスを、上記データバスを介して読み取られる又は書き込まれるnビットデータ値に供給することと、上記第1のアドレスを、上記第1の記憶回路における複数のmビットメモリ位置に対応する複数の第2のアドレスであって、そのうちの少なくとも2つが連続アドレスである複数の第2のアドレスに変換することと、複数のメモリアクセス動作にわたって、上記nビットデータ値の上記読み取り動作又は上記書き込み動作を上記第1の記憶回路に対して行うこととを含む、方法が提供される。
一実施形態によれば、上記方法は、上記第1の処理装置によって、データキャッシュの1つ以上のラインに対してキャッシュライン置換を行う工程をさらに含み、上記データキャッシュは、複数のキャッシュラインを備え、当該複数のキャッシュラインの各々が複数のデータワードを記憶し、各データワードは、複数のバイトのデータを有し、上記キャッシュライン置換は、上記第1の記憶回路に関連する上記キャッシュの記憶位置に、上記複数のデータワードのうちの第1のデータワードを形成する上記バイトを記憶する。
別の態様によれば、第1の処理装置によって実行された場合、上述の方法の実行に至るプログラム命令を記憶する電子記憶媒体が提供される。
別の態様によれば、ホストプロセッサが1つ又は数個のメモリチップに接続されたコンピュータシステムであって、上記メモリチップは、1つ又は数個のデータプロセッサを統合し、上記メモリチップと上記ホストプロセッサとの接続が、上記メモリチップのデータポートより広幅のデータバスによって行われ、上記メモリチップは、上記データバスの幅を適応させるようにデータ並列式に上記データバスに接続される、コンピュータシステムが提供される。
一実施形態によれば、線形の、又はセグメントごとに線形のアドレス空間が定義され、当該アドレス空間により、直線的に又はセグメントごとに直線的に各メモリチップのメモリにアクセスすることができる。
一実施形態によれば、当該新規のアドレス空間‐上記ホストプロセッサの元のアドレス空間間でのアドレス変換機能により、上記ホストプロセッサは当該新規のアドレス空間にアクセスすることができる。
一実施形態によれば、上記アドレス変換機能は、ハードウェアにおいて直接的に実行される。
一実施形態によれば、アドレス変換ハードウェア機能が構成可能であり、当該機能は構成可能なメモリセグメントに応じて変わる。
一実施形態によれば、上記新規のアドレス空間はそれ自体、複数のサブアドレス空間を有し、上記複数のサブアドレス空間は、上記メモリチップに統合された上記データプロセッサによって使用されることにより、アクセス可能なメモリへの線形の又はセグメントごとに線形のアクセスを上記データプロセッサが行うことを可能にする。
一実施形態によれば、上記複数のサブアドレス空間は、直線的に又はセグメントごとに直線的に上記新規のアドレス空間にマップされる。
一実施形態によれば、上記ホストプロセッサは、データキャッシュ、又はデータキャッシュとして同等に動作する汎用キャッシュを備え、上記ホストプロセッサがロード、記憶、又はメモリアクセス幅がメモリチップの上記データポートより広いメモリにアクセスする命令を用いる場合に、キャッシュライン置換が、上記アドレス変換機能を変更するために、および当該アドレスを後にセグメントごとの線形にするために行われ、それによって上記ホストプロセッサが、上記メモリチップに統合された上記データプロセッサにアクセス可能なメモリに正確にアクセスすることができる。
一実施形態によれば、上記キャッシュライン置換は、全てがソフトウェアによって行われる。
一実施形態によれば、上記キャッシュライン置換は、全てがハードウェアによって行われる。
一実施形態によれば、上記キャッシュライン置換は、部分的にソフトウェアによって行われ、部分的にハードウェアによって行われる。
一実施形態によれば、バーストデータパターンが上記キャッシュライン置換に元来一致し、当該バーストデータパターンは、キャッシュラインがメモリからロードされる又はメモリに記憶される際にキャッシュライン置換を常に行うことと同等である。
一実施形態によれば、数種のキャッシュライン置換が可能であり、構成手段により、アドレスセグメントと、アクセスがこれらのアドレスセグメントのうちの1つのアドレスセグメント内にある場合にどの種類のキャッシュライン置換が行われなければならないかと、を特定することができる。
一実施形態によれば、上記メモリチップは、上記メモリチップの上記データポートより広幅な1つ又は数個のコマンドレジスタを統合し、コマンドカラースキームが用いられ、コマンドカラーの変化が、関連する上記コマンドレジスタにおいて有効な新規のコマンドのために要求される。
一実施形態によれば、上記ホストプロセッサは、いくつかのプロセッサコアを有するシステムオンチップである。
一実施形態によれば、上記ホストプロセッサは、いくつかのメモリバスを備えるシステムオンチップである。
更なる実施形態によれば、マルチソケットサーバを構築するために、上記で定義されたシステムをいくつか備える大型のシステムであって、互いに接続され、且つ同一のキャッシュ干渉領域に属する、大型システムが提供される。
一実施形態によれば、バーストトランザクションおいて所定のメモリチップの各々から又は当該所定のメモリチップの各々へ伝送される非拡張データ全体をカバーするECCコードを当該バーストトランザクション全体において伝送することができるように、当該所定のメモリチップの各々が記憶容量及びデータポート幅の両方において拡張される。
一実施形態によれば、所定のメモリチップの各々が、ECCを記憶することができるように、記憶容量において拡張され、伝送されたECCコードが、バーストトランザクション中に当該所定のメモリチップの各々から又は当該所定のメモリチップの各々に伝送された非ECCデータの全体を保護するように、複数のバーストトランザクションが延長されて、これにより上記バーストトランザクション中に当該ECCコードを伝送することを可能にする。
一実施形態によれば、上記データプロセッサは、上記メモリチップに統合されず、上記ホストプロセッサと上記メモリチップとの間に配置された1つ又は数個の追加回路に統合される。
一実施形態によれば、アドレス変換及び/又は上記キャッシュライン置換は、部分的に又は全てが、上記ホストプロセッサと上記メモリチップとの間に配置された1つ又は数個の追加回路内で行われる。
一態様によれば、第1のプロセッサと、複数の記憶装置と、上記第1のプロセッサを上記複数の記憶装置の各々に連結するデータバスとを備えるコンピュータデバイスであって、上記複数の記憶装置の少なくとも第1の記憶装置は、1つ以上の更なるプロセッサを統合し、上記複数の記憶装置の各々は、mビット幅のデータポートを有し、上記データバスは、nビットの幅を有し(nはmより大きい)、上記第1のプロセッサは、上記データバスを介して読み取られる又は書き込まれるnビットデータ値に第1のアドレスを提供するように構成されており、上記第1のプロセッサ及び/又は更なる回路は、上記第1の記憶装置における複数のmビットメモリ位置に対応する複数のアドレスであって、そのうちの少なくとも2つのアドレスが連続アドレスである複数のアドレスに、上記第1のアドレスを変換することによって、および複数のメモリアクセス動作にわたって上記第1の記憶装置に対して上記nビットデータ値の読み取り動作又は書き込み動作を行うことによって、上記nビットデータ値を、上記第1の記憶装置から読み取る又は上記第1の記憶装置に書き込むように構成される、コンピュータデバイスが提供される。
上述の特徴及び利点と他の特徴及び利点とは、例示的であり限定的ではない以下の添付図面を参照して、実施形態の以下の詳述から明らかになるだろう。
コンピュータデバイスの一例を概略的に示す。 本開示の実施形態例に係るコンピュータデバイスを概略的に示す。 一実施形態例に係る、図2の上記コンピュータデバイスにおける記憶アドレス空間を概略的に示す。 一実施形態例に係る、図3のホストプロセッサ記憶アドレス空間をより詳細に概略的に示す。 一実施形態例に係る、読み取り動作又は書き込み動作を行う方法における各動作を示すフローチャートである。 本開示の一実施例に係る、記憶回路におけるデータバイトの分布を概略的に示す。 本開示の一実施形態例に係る、複数のメモリランクを有するコンピュータデバイスを概略的に示す。 一実施形態例に係る記憶回路をより詳細に概略的に示す。 一実施形態例に係る、複数の仮想ランクを有する複数の記憶回路を概略的に示す。 本開示の一実施形態例に係る、図2のホストプロセッサのデータキャッシュを概略的に示す。 一実施形態例に係る、図4のアドレス空間におけるキャッシュラインデータ記憶の例を概略的に示す。 一実施形態例に係る、動作中のキャッシュライン置換回路を概略的に示す。 一実施形態例に係る、動作中のキャッシュライン置換回路を概略的に示す。 一実施形態例に係る、動作中のキャッシュライン置換回路を概略的に示す。 一実施形態例に係る、動作中のキャッシュライン置換回路を概略的に示す。 本開示の一実施形態例に係るコンピュータデバイスの回路を概略的に示す。 一実施形態例に係る記憶回路における誤り訂正符号の横方向の記憶及び縦方向の記憶を概略的に示す。 更なる一実施形態例に係る記憶回路における誤り訂正符号の横方向の記憶及び縦方向の記憶を概略的に示す。 更なる一実施形態例に係る記憶回路をより詳細に概略的に示す。
本特許出願は、本開示の不可欠な部分として見なされるフランス特許出願FR15/59321及びFR16/50186の優先権を主張する。
〔発明の詳細な説明〕
以下の記載全体において、本明細書で使われる以下の用語は、以下の定義を有すると考えられる。
メモリチップ:ダイナミックランダムアクセスメモリ(DRAM)アレイ又は他の種類のランダムアクセスメモリアレイ等のメモリアレイを備える集積回路
データ処理装置(DPU):メモリチップに統合された又はメモリチップに関連する1つ以上のプロセッサを備える処理装置
記憶回路:メモリチップを備える回路であり、当該メモリチップに統合された又は当該メモリチップに関連する1つ以上のデータ処理装置を備えてもよい回路
ホスト中央処理装置(HCPU):データバスを介して記憶回路に対してデータを読み取り且つ書き込むように構成された1つ以上のプロセッサを備えるコンピュータデバイスのメイン処理装置
図1は、一実施形態例に係るコンピュータデバイス100を概略的に示す。上記コンピュータデバイス100は、例えば、本明細書においてホスト中央処理装置(HCPU)と呼ばれるメインプロセッサ102を備える。上記HCPU102は、例えば、複数の記憶回路104に連結される。図1の例においては、MemC0〜MemC7と示された8つの記憶回路がある。
上記複数の記憶回路104の各々は、例えば、上記HCPUのデータバスの幅より狭いデータポートを有する。各データポートは、上記HCPU102の上記データバスの一部に連結される。一例において、上記データバスは64ビット幅であり、上記複数の記憶回路104の各々は、上記データバスのうち対応する8ビットスライスに連結されたデータポートを有する。上述したように、上記HCPU102の上記データバスの上記幅より狭いデータポートを記憶回路に設ける利点は、データポートが狭いほど使用されるピンの数が少なくなり、チップ領域及び電力消費が節約されるということである。また、追加のバッファチップを用いる場合には、コスト、電力消費、及び待ち時間が増大し、動作周波数が減少し、それゆえ帯域幅が狭くなるが、狭幅データポートにより、バッファチップを追加することなく大容量のメモリシステムを構築することができる。
それゆえ、64ビットのデータワードが上記複数の記憶回路に書き込まれる場合、各記憶回路104は、当該データワードの一部のみを記憶する。つまり、上記複数の記憶回路104のうちの1つ以上が、上記HCPU102に加えてデータ処理を行うデータ処理装置を備えるならば、当該データ処理装置は、メモリに記憶された各データワードの一部のみを参照し、それゆえいかなる重要な動作を行うことができなくなる。
一例として、簡単な計数機能を実行することができるように、処理装置が上記複数の記憶回路104の各々に統合されると仮定する。さらに、上記記憶回路MemC0〜MemC7が、アドレス0x04000000(プリアンブル「0x」は当該値が16進法で表されるということを示す)から始まってマップされると仮定する。上記HCPU102は、上記アドレス0x04000000にて上記複数の記憶回路104によって形成されるメインメモリにcounterと呼ばれる64ビットワードを書き込む。そして、上記HCPUは、上記記憶回路MemC0のDPUが上記64ビットワードcounterをインクリメントすることによって計数機能を実行することを必要とする。しかしながら、当該DPUは、上記64ビットワードの[7:0]部分のみを参照するため、所望の機能を実行することができない。同様に、他の記憶回路のDPUも同じように64ビットワードの一部のみを参照するため、所望の機能を実行することができない。
図1に示されるように、更なる記憶回路(MemC DPU)106が、DPUを備え、上記HCPU102の上記データバスの上記幅と等しい幅のデータポートを有してもよい。上記記憶回路106は、上記HCPUの上記データバスに提供された全ワードを記憶してもよい。それゆえ、当該回路の上記DPUは、上述の計数機能を含む動作を全データワードに対して行ってもよい。しかしながら、広幅なデータポートを考慮すると、上記記憶回路106は、多数のピンを用い、それにより上述した狭幅データポートに関連する利点を有さないことになる。
図2は、本開示の一実施形態例に係るコンピュータデバイス200を概略的に示す。
上記コンピュータデバイス200は、複数の記憶回路204に連結されたHCPU202を備える。図2の例においては、MemC0〜MemC7として示された8つの記憶回路がある。上記複数の記憶回路204の各々は、DPU206を備える。上記記憶回路MemC0〜MemC7のDPUはそれぞれ、図2においてDPU0〜DPU7として示されている。上記複数の記憶回路204の各々は、例えば、上記HCPU202のデータバスの対応するスライスを受け取る。一例において、上記HCPU202の上記データバスは、64ビット幅であり、本明細書においては、以下、データ_バス[63:0]として表される。上記データバスのビットは、例えば、以下のように上記複数の記憶回路204間でスライスされる。
‐MemC0のデータポートが、データ_バス[7:0]に接続される。
‐MemC1のデータポートが、データ_バス[15:8]に接続される。
‐MemC2のデータポートが、データ_バス[23:16]に接続される。
‐MemC3のデータポートが、データ_バス[31:24]に接続される。
‐MemC4のデータポートが、データ_バス[39:32]に接続される。
‐MemC5のデータポートが、データ_バス[47:40]に接続される。
‐MemC6のデータポートが、データ_バス[55:48]に接続される。
‐MemC7のデータポートが、データ_バス[63:56]に接続される。
アドレス変換機能(ADDR CONV)208が、例えば、上記HCPU202におけるハードウェア及び/又はソフトウェアによって、又は別の回路によって実行される。上記変換機能208は、データワードが上記複数の記憶回路の1つによって全て記憶されるように、HCPUアドレス空間からのアドレスを、上記複数の記憶回路204によって用いられる物理全域アドレス空間(PGAS)における特定のアドレスに変換する。当該データワードは、上記の変換なしには上記HCPUの上記データバスの幅にわたって存在し、各記憶回路204によって部分的に存在するものである。変換されたPGASアドレスは、例えば、上記複数の記憶回路204の各々に連結されたアドレス及びコマンドバス210上で、適切な読み取り又は書き込み指令信号と共に上記複数の記憶回路204に供給される。以下、図3〜図6を参照して、上記アドレス変換機能208についてより詳細に記載する。
図3は、一実施形態例に係る上記アドレス変換機能210を概略的に示す。本例によれば、上記HCPU202によって参照され用いられるアドレス空間である、HCPU全域アドレス空間(HGAS)302が定義される。物理全域アドレス空間(PGAS)304が、物理メモリシステムに対してアドレス指定するために用いられる。
本明細書に記載の実施形態によれば、HGAS及びPGASは、HGASアドレス空間における少なくともいくつかの範囲に対して異なって定義される。例えば、上記HGAS302は、DPU全域アドレス空間である、図3に示されたサブアドレス空間306を有する。
HGASアドレスがDGAS領域306外にある場合、対応するPGASアドレスが当該HGASアドレスの値によって直接的に与えられる。言い換えれば、アドレス変換の必要がない。
しかしながら、HGASアドレスがDGAS領域306内にある場合、PGASアドレスを作成するためにアドレス変換が行われる。例えば、当該PGASアドレスは、本明細書においてDGAS2PGASと呼ばれる機能308によって作成される。
いくつかの実施形態において、上記HGAS302全体は、DGAS306に一致してもよい。つまり、上記複数の記憶回路のDPUが上記複数の記憶回路204のアドレス空間全体にアクセスしてもよい。
図4を参照して以下に説明されるように、上記DGAS306は、各DPUに割り当てられ且つirにアクセス可能なアドレス範囲を有する。
図4は、より詳細に上記HCPU全域アドレス空間302を概略的に示す。図4は、特に、上記DGAS306が、上記複数の記憶回路の上記DPUの各々のDPU局所アドレス空間(DLAS)に対応するメモリアドレスのゾーンDLAS0〜DLAS7を有する場合を示す。各DPUの上記DLASは、例えば、線形の、又はセグメントごとに線形のアドレス空間である。つまり、これは、アドレスを1インクリメントすることで、記憶回路のアドレスの少なくとも一部に対する、同一の記憶回路における隣接メモリバイトにアクセスすることを意味する。これは、あるワードが複数の異なる記憶回路にわたって記憶される場合には該当しない。なぜならば、このような場合には、アドレスを1インクリメントすることにより別の記憶回路がアドレス指定されるからである。
図4は、8つの対応するDPUを備えた8つの記憶回路が存在する図2の例に対応しており、それゆえ、8つのDLAS(DLAS0〜DLAS7)が存在する。もちろん、別の実施形態において、上記複数の記憶回路に存在するDPUの数と記憶回路の数とに基づいて異なる数の局所アドレス空間が存在しうる。
例えば、一実施形態において、上記複数の記憶回路の各々のサイズが8メガバイト(MB)であり、それゆえ合計の物理メモリのサイズは64MBであると仮定して、上記局所アドレス空間DLAS0〜DLAS7が、メモリシステムの以下のメモリ部分にマップされる。
DLAS0は、物理アドレス0MB‐1〜8MB‐1にマップされる。なお、XMB‐1はXメガバイトより1バイト小さいことを意味する。
‐DLAS1が、物理アドレス8MB‐1〜16MB‐1にマップされ、
‐DLAS2が、物理アドレス16MB‐1〜24MB‐1にマップされ、
‐DLAS3が、物理アドレス24MB‐1〜32MB‐1にマップされ、
‐DLAS4が、物理アドレス32MB‐1〜40MB‐1にマップされ、
‐DLAS5が、物理アドレス40MB‐1〜48MB‐1にマップされ、
‐DLAS6が、物理アドレス48MB‐1〜56MB‐1にマップされ、
‐DLAS7が、物理アドレス56MB‐1〜64MB‐1にマップされる。
それゆえ、例えば、上記記憶回路MemC0は物理アドレス空間の第1の8MBを含み、上記記憶回路MemC1は上記物理アドレス空間の第2の8MBを含む。このようなマッピングの利点は、各DPUが連続アドレス空間にアクセスすることができるということである。しかしながら、上記DPU局所アドレス空間の上記物理アドレスに対する当該マッピングは、単に一例であり、他種のマッピングが可能である。例えば、上記物理アドレスは、4MBブロックであってもよい。この場合、
‐DLAS0が、物理アドレス0MB‐1〜4MB‐1及び32MB‐1〜36MB‐1にマップされ、
‐DLAS1が、物理アドレス4MB‐1〜8MB‐1及び36MB‐1〜40MB‐1にマップされ、という具合にマッピングが行われ、
‐DLAS7が、物理アドレス28MB‐1〜32MB‐1及び60MB‐1〜64MB‐1にマップされるまでマッピングが行われる。
図5は、本開示の一実施形態例に係る、メモリにアクセスする方法における各動作を示すフローチャートである。上記方法は、例えば、上記HCPU202及び/又は上記アドレス変換機能208を実行する回路によって実行される。特に、上記方法は、上記アドレス変換機能208が上記HCPUの1つ以上のプロセッサによって実行されるソフトウェアで実行される場合に、上記HCPUのみによって実行されてもよい。あるいは、上記方法は、上記アドレス変換機能208が上記HCPU202とは別個のハードウェアによって実行される場合には、専用回路によって実行されてもよい。
動作501で、メモリ読み取り又は書き込みリクエストが作成される。例えば、上記HCPU202が、ロード命令又はストア命令を実行することによって上記メモリ読み取り又は書き込みリクエストを作成する。
動作502で、上記メモリ読み取り又は書き込みリクエストがDGASセグメント内のアドレスを伴うか否かが判断される。言い換えると、物理アドレスを作成するために変換されるべき上記アドレスが図3及び図4で306と示されるメモリのゾーンに対応するかどうか否かが判断される。例えば、上記アドレス変換機能208は、上記DGAS306に対応する上記アドレス範囲の指標を記憶する。
いくつかの実施形態において、上記HCPU202は、低コストパフォーマンスであってもなくてもDGAS2PGAS機能を実行するために、強化される。例えば、上記HCPUは、特殊アドレスセグメントDGASが上記HGAS内で作成されることを可能にする複数の構成レジスタを備える。例えば、上記複数の構成レジスタは、上記DGASセグメントの境界、又は複数の不連続DGASセグメントがある場合に各DGASセグメントの境界を記憶する。さらに、上記複数の構成レジスタは、例えば、アドレス変換のために行われる変形(transformation)を示す。実際、当該変換は、使用される特定の上記複数の記憶回路によって、特に上記複数の記憶回路の上記データポートの幅に依存する。上記HGASアドレスが上記DGASセグメント内にある場合、上記アドレスは実際にDGASアドレスであり、それゆえ、PGASアドレスに変換されるべきである。
上記アドレスがDGASセグメント内にない場合、動作503で、上記物理全域アドレス空間(PGAS)が上記DPU全域アドレス空間(DGAS)に等しいと仮定され、そのため、次の動作504で、メモリアクセスが上記HGASアドレスに基づいて処理される。
あるいは、動作502で、上記読み取り又は書き込みリクエストがDGASセグメント内のアドレスを伴うと判断される場合、次の動作は、上記DGAS2PGAS機能を用いてアドレス変換が行われる動作505である。以下、図6を参照して上記アドレス変換の例をより詳細に記載する。
図6は、8つの記憶回路MemC0〜MemC7の場合を仮定するメモリシステムの物理アドレス空間の例を概略的に示す。記憶回路MemC0〜MemC7の各々の各行は、例えば1バイトであるサブワードを記憶する。64ビットHCPUデータバスに存在する各ワードは、1つのサブワード(SW)が各行に記憶されるように記憶される。例えば、上記メモリシステムにまたがる第1行R0は、上記記憶回路MemC0に記憶された第1の8ビット値、上記記憶回路MemC1に記憶された第2の8ビット値、等を有する。それゆえ、アドレス変換が行われない、DGAS306外のアドレスに対して、HCPUアドレス空間の各ワードが上記メモリシステムの上記複数の記憶回路の各々にわたって記憶される。このような場合、各サブワードSW又はバイトのアドレスは、例えば、[25:0]の形態であり、この場合、23ビット[25:3]が上記メモリシステムの8388608行のうちの1行を示し、最終ビット[2:0]が当該行内のバイトを示す。
しかしながら、上記DGAS306内にあるアドレスに対して、以下の変換機能が、例えば、上記DGAS302の上記アドレスと上記複数の記憶回路のアドレス指定に用いられるPGASアドレスとの間に適用される。
PGAS_アドレス[25:0]={DGAS_アドレス[22:0],DGAS_アドレス[25:23]}
それゆえ、上記DGASアドレスの最上位ビット[25:23]は、どの記憶回路に書き込まれるかを示す。当該最上位ビットは、上記の変換機能の適用がない場合、上記行が第1群、第2群、第3群、第4群、第5群、第6群、第7群及び第8群の各々の1048576行のどれにあるかを示すものである。したがって、例えば、第1の1048576行に通常存在するアドレスは、記憶セルMemC0に書き込まれ、第2の1048576行に通常存在するアドレスは、記憶セルMemC1に書き込まれる。
それゆえ、上記DGAS306において64ビットデータワードを形成するバイトは全て、例えば、上記複数の記憶回路のうちの1つにおいて8つの隣接行に書き込まれるか当該隣接行から読み取られる。したがって、当該64ビットワードの読み取り又は書き込みは、例えば、8連続の読み取り及び書き込み動作にわたって行われる。このような場合、例えば、DGASアドレスビット[2:0]を省略でき、上記複数の記憶回路は、例えば、これらのアドレスビットの供給を必要とすることなく連続するアドレス位置に対して動作を行うことができる。しかしながら、例えば、32ビットワードにアクセスする場合、DGASアドレスビット[2]が供給され、例えば、16ビットアクセスが行われる場合、DGASアドレスビット[1:0]が供給され、例えば、特定のバイトにアクセスする場合、上記DGASアドレスビット[2:0]が供給される。
いくつかの実施形態において、当該アドレス変換は、DGASセグメントに対して自動的に行われるアドレスビット置換によって実行することができる。例えば、上記ビット置換の特質は、対応する構成レジスタの内容によって特定される。いくつかの実施形態において、DGASがいくつかのマッピングセグメントの和としてHGASにマップされることができるので、セグメントによる線形性が存在する。実際、上記DGASは、例えば、上記複数の記憶回路におけるDLASセグメントの和である。
再び図5を参照すると、次の動作506で、kメモリアクセス動作が変換された物理アドレスに基づいて行われる。例えば、いくつかの実施形態において、読み取り又は書き込み動作のアドレスが1バイトのデータに対応してもよく、この場合、当該読み取り又は書き込み動作を1回の読み取り又は書き込み動作で行うことができ、kは1に等しい。あるいは、読み取り又は書き込みリクエストが読み取られる又は書き込まれる1ワードのデータに対応してもよく、このような場合、メモリにおける対応するDLASゾーンに当該データを書き込むために行われる一連の8つのメモリアクセス動作が存在し、kは8に等しくなる。上記読み取り又は書き込み動作の上記アドレスによって指定されたバイト数次第で、kが他の値をとることも可能である。
図7は、図2の上記デバイス200に類似するコンピュータデバイス700を示す。上記コンピュータデバイス700は、単一ランクの複数の記憶回路204を備える代わりに、複数ランクの複数の記憶回路702を備える。例えば、HCPU202は、合計でrランクの記憶回路と通信する。これらのランクはランク0MemC〜ランクr‐1MemCとして示される。各ランクは、例えば、複数の記憶回路を備える。上記HCPUのデータバスは、メモリランクの各々に連結される。アドレス変換機能208が、例えば、各ランクに対して独立して適用される。例えば、ランク0とランク1との2つのランクがある場合、当該ランク0は、例えば、DLASゾーン0〜7を有し、当該ランク1は、例えば、DLASゾーン8〜15を有する。
図2の実施形態において、上記複数の記憶回路204の各々は、単一のDPU206を備えるが、別の実施形態において、各記憶回路204は、複数のDPUを備えてもよく、この場合について図8および図9を参照して以下に記載する。
図8は、図2の上記複数の記憶回路204の各々の代替としての記憶回路800を概略的に示す。例えば、上記記憶回路800は、メモリアレイ(MEM)802と、DPU0及びDPU1として示される2つのDPUとを統合するメモリチップである。上記DPU0及び上記DPU1と上記メモリアレイ802とは各々、例えば、HCPUバスのスライス804に連結される。本実施形態において、上記DPU0及び上記DPU1の各々は、例えば、同一のDPU局所アドレス空間を共有し、また、例えば、上記メモリアレイ802のアドレス空間全体にアクセスすることができる。同様に、他の記憶回路の各々の複数のDPUも、例えば、同じように同一のDLASを共有する。
図9は、各記憶回路のメモリが複数の領域に分けられた別の実施形態を示す。図9の例において、3つの記憶回路MemCx−1、MemCx、及びMemCx+1の各々が、MemC領域0及びMemC領域1として示される2つの領域を有する。DPUが、各メモリ領域に結合され、当該領域のみにアクセスすることができる。例えば、各記憶回路のDPU0が上記MemC領域0のみにアクセスすることができ、各記憶回路のDPU1が上記MemC領域1のみにアクセスすることができる。それゆえ、検討された上記記憶回路の上記領域0は仮想ランクとみなされ、上記領域1は別の仮想ランクとみなされ、上記領域0及び上記領域1はそれぞれ、図9におけるように仮想ランク0及び仮想ランク1とラベルされる。したがって、各記憶回路が複数のDPUを備えているとみなす代わりに、複数のランクが存在すると単純にみなすことができ、図7に関して上述の解決策を採用することができる。
別の実施形態において、各DPUが複数の領域にアクセス可能であってもよいが、上記複数の記憶回路の物理記憶アドレス空間の全てにアクセス可能であるとは限らない。このような場合、例えば、関連DPU又は複数の関連DPUがメモリ領域にアクセス可能なように、DLASが、各アクセス可能メモリ領域に対して定義される。
上述のアドレスビット置換としてアドレス変換機能を実行することによって、性能の点で多かれ少なかれ意識させずにアドレス変換を行うことができる。しかしながら、HCPUがバイトサイズの読み取り及び書き込み動作を通してDGASアドレス空間に依然としてアクセスする。図10A及び図10Bを参照してより詳細に以下に記載されるように、バーストメモリアクセスを用いて、より効率的な変換を行ってもよい。
図10Aは、一実施形態例に係るデータキャッシュ1000(キャッシュ)を概略的に示す。データキャッシュにより、処理装置が局所的にデータを記憶することができ、また当該データに迅速にアクセスすることができる。上記データキャッシュ1000は、例えば、HCPU202に統合され、また、例えば、当該HCPU202のデータバス(DDRデータバス)とアドレス及びコマンドバス(ADDR+CMDバス)とに連結される。上記データキャッシュ1000は、例えば、キャッシュラインL1、L2、L3等を備える。ライン数はキャッシュのサイズによって決まる。各キャッシュラインは、例えば、メモリバーストトランザクションのサイズである。メモリバーストトランザクションは、例えば、メモリアドレスのブロックに対する速い読み取り又は書き込みアクセスを可能にすることによって性能を改善するメモリアクセス動作である。
例えば、バースト書き込みトランザクションが、一連の書き込みアクセス、つまり、上記HCPUによって作成されたアドレスを用いる第1の書き込みアクセスと、上記第1の書き込みアクセスで用いられた上記アドレスから例えば複数の記憶回路によって自動的にインクリメントされた複数のアドレスを用いる次の書き込みアクセスとを伴う。上記インクリメントのサイズは、HCPUバスバイト幅に対応する。
同様に、バースト読み取りトランザクションが、一連の読み取りアクセス、つまり、上記HCPUによって作成されたアドレスを用いる第1の読み取りアクセスと、上記第1の読み取りアクセスで用いられた上記アドレスから自動的にインクリメントされた複数のアドレスを用いる次の読み取りアクセスとを伴う。上記インクリメントのサイズは、HCPUバスバイト幅に対応する。
例えば、DDR3(ダブルデータレートタイプ3)プロトコル及びDDR4(DDRタイプ4)プロトコルによれば、バーストトランザクションが8連続アクセスからなり、各アクセスは8バイトのデータを移動させる。その結果、当該バーストトランザクションによって移動されるデータ量は、64バイトである。さらに、第1のアクセスのアドレスが、例えば、64バイトの境界に合わせられる。
いくつかの実施形態において、メモリバーストアクセスが、アクセス数においてバイト幅がその深さ(depth)に等しい正方バーストに基づく。
一例において、上記データキャッシュ1000は、上記DDR3プロトコル又は上記DDR4プロトコルに基づいて動作する。それゆえ、各キャッシュラインL1、L2等は、例えば、64バイトである。上記DDR3プロトコル及び上記DDR4プロトコルは、正方バーストを使用する。実際、DDR3/DDR4コンテキストにおいて、上記HCPU202は、バーストトランザクションを介して、メモリと通信する。当該バーストトランザクションの各々は、本明細書において「バーストアクセス0」〜「バーストアクセス7」と呼ばれる8つの64ビット(8バイト)バーストアクセスを備える。
読み取り又は書き込みバーストトランザクションは、本明細書においてB00〜B63と示された64バイトを有し、例えば、以下のように編成される。
バーストアクセス0:B00 B01 B02 B03 B04 B05 B06 B07
バーストアクセス1:B08 B09 B10 B11 B12 B13 B14 B15
バーストアクセス2:B16 B17 B18 B19 B20 B21 B22 B23
バーストアクセス3:B24 B25 B26 B27 B28 B29 B30 B31
バーストアクセス4:B32 B33 B34 B35 B36 B37 B38 B39
バーストアクセス5:B40 B41 B42 B43 B44 B45 B46 B47
バーストアクセス6:B48 B49 B50 B51 B52 B53 B54 B55
バーストアクセス7:B56 B57 B58 B59 B60 B61 B62 B63
このように、バーストトランザクションで満たされた場合、上記データキャッシュ1000の上記64バイトのキャッシュラインの1つを、例えば、以下を含む8×8アレイとして表すことができる。
B00 B01 B02 B03 B04 B05 B06 B07
B08 B09 B10 B11 B12 B13 B14 B15
B16 B17 B18 B19 B20 B21 B22 B23
B24 B25 B26 B27 B28 B29 B30 B31
B32 B33 B34 B35 B36 B37 B38 B39
B40 B41 B42 B43 B44 B45 B46 B47
B48 B49 B50 B51 B52 B53 B54 B55
B56 B57 B58 B59 B60 B61 B62 B63
当該キャッシュライン内で、上記HCPU202は、例えば、任意のバイト、2バイト{Bn、Bn+1}から構成された任意の16ビットのワード(nは2で割り切れる)、複数のバイト{Bn、Bn+1、Bn+2、Bn+3}から構成された32ビットのワード(nは4で割り切れる)、及び上記アレイの1行の8バイトから構成された64ビットのワードにもアクセスすることができる。
いくつかの実施形態において、データの上記複数の記憶回路への記憶方法を変更するために、上記データキャッシュ1000のキャッシュラインにおけるバイトに対して置換が行われる。例えば、上記データが上記HCPU202の上記DDRデータバスから到着すると上記データでキャッシュラインを満たす代わりに、以下の置換が行われる。すなわち、上記キャッシュラインを8×8アレイで表し、座標(x、y)における各バイトは、座標(y、x)における各バイトと交換される。置換が行われると、上記キャッシュラインは以下の通りに満たされる。
B00 B08 B16 B24 B32 B40 B48 B56
B01 B09 B17 B25 B33 B41 B49 B57
B02 B10 B18 B26 B34 B42 B50 B58
B03 B11 B19 B27 B35 B43 B51 B59
B04 B12 B20 B28 B36 B44 B52 B60
B05 B13 B21 B29 B37 B45 B53 B61
B06 B14 B22 B30 B38 B46 B54 B62
B07 B15 B23 B31 B39 B47 B55 B63
上記キャッシュは、物理全域アドレス空間アドレスを用いて常にアクセスされ、それゆえ、アドレス変換機能DGAS2PGASがバイト置換に適応するように変えられる。上述したように、初期のアドレス変換機能は、PGAS_アドレス[25:0]={DGAS_アドレス[22:0]、DGAS_アドレス[25:23]}であった。
上記キャッシュライン内でバイトに対して置換を行うことによって、上記8×8アレイでx方向におけるアドレス位置に対応するPGASアドレスビット[2:0]が、上記8×8アレイでy方向に対応するPGASアドレスビット[5:3]と交換される。それゆえ、新規のアドレス変換は、PGAS_アドレス[25:0]={DGAS_アドレス[22:3]、DGAS_アドレス[25:23]、DGAS_アドレス[2:0]}となる。
上記PGASアドレスビット[2:0]が上記DGASアドレスビット[2:0]に等しくなったということがわかる。つまり、好都合なことに、16ビット値、32ビット値、及び64ビット値に対してアドレス指定を行うメモリアクセス動作が可能になる。特に、上記キャッシュラインからの読み取り又は上記キャッシュラインへの書き込みの際には、以下のアクセス動作のうちのいずれかを行うことが可能になる。
‐ 連続するDGASアドレスを用いて2バイトで形成された、16ビットで位置合わせされた、16ビットワード
‐ 連続するDGASアドレスを用いて4バイトで形成された、32ビットで位置合わせされた、32ビットワード
‐ 連続するDASアドレスを用いて8バイトで形成された、64ビットで位置合わせされた、64ビットワード
上記記載は、一度に2つのキャッシュラインを用いて、同一サイズで位置合わせされた特定のサイズの複数のメモリアクセスについて言及したが、位置合わせされていない16ビット、32ビット、及び64ビットDGASアクセスも可能である。特に、これは、例えば、隣接するキャッシュラインをクロスするアクセスを、各アクセスが単一のキャッシュラインを伴う2連続アクセスに分けることによって、又は上記2つのキャッシュラインに同時にアクセスし、そして読み取られたデータを多重化して複数の関連部分を抽出することによって、達成することができる。
上記例は、置換(x、y)‐>(y、x)が正方キャッシュラインバーストに適用されると仮定する。他の置換も可能である。例えば、置換(x、y)‐>(y、~x)を代わりに用いることができる。なお、記号「~」は1の補数、つまり、7‐xを意味する。その結果、メモリチップインデックスが反転される。
上記例は、メモリバーストが正方形であるということを仮定する。これは、上記DDR3プロトコル及び上記DDR4プロトコルの場合であるが、他のプロトコルは矩形バーストを伴う。例えば、DDR2プロトコルは4アクセスにわたって8バイトを移動させる。以下により詳細に記載されるように、上述の類似置換動作を上記矩形バーストに適用することができる。
DDR2コンテキストにおいて、キャッシュラインが32バイトのサイズを有し、当該キャッシュラインがバーストトランザクションで満たされ、且つ8×4アレイで表される場合、当該キャッシュラインは、以下を含む。
B00 B01 B02 B03 B04 B05 B06 B07
B08 B09 B10 B11 B12 B13 B14 B15
B16 B17 B18 B19 B20 B21 B22 B23
B24 B25 B26 B27 B28 B29 B30 B31
(x、y)‐>(y、x)変形を適用し、32バイトキャッシュラインを4×8アレイで表すと、以下が得られる。
B00 B08 B16 B24
B01 B09 B17 B25
B02 B10 B18 B26
B03 B11 B19 B27
B04 B12 B20 B28
B05 B13 B21 B29
B06 B14 B22 B30
B07 B15 B23 B31
再び、上記アドレス変換機能DGAS2PGASが、例えば、当該バイト置換に適応するように変えられる。上述したように、初期のアドレス変換機能は、PGAS_アドレス[25:0]={DGAS_アドレス[22:0]、DGAS_アドレス[25:23]}であった。
当該初期の置換が、並列な記憶回路の数(例えば、DDR2例及びDDR3/DDR4例に対して8)のみに依存するので、当該初期のアドレス置換がDDR3/DDR4例に対するのと同じであるということがわかる。
DDR2例に対する新規の置換は、例えば、PGAS_アドレス[25:0]={DGAS_アドレス[22:2]、DGAS_アドレス[25:23]、DGAS_アドレス[1:0]}である。
上記HCPUは、例えば、以下の読み取り又は書き込みアクセスを行うことができる。
‐DGASにおける、16ビットで位置合わせされた、16ビットアクセス、又は
‐DGASにおける、32ビットで位置合わせされた、32ビットアクセス
DGAS線形性がたった4バイトの大きさであるため、DGASにおける64ビットアクセスは作用しない。つまり、DGASアドレスの2つの最下位ビットのみがPGASアドレスの2つの最下位ビットに等しい。
上記DDR2例において、上記矩形バーストの幅がその深さ(depth)より大きいが、本明細書に記載の変形を、例えば幅が深さ(depth)より小さい他のバースト構成に等しく適用することができる。
キャッシュラインの上述の置換は、例えば、ソフトウェア又はハードウェアにおいて行うことができる。
ソフトウェア置換の場合、当該置換は、例えば、36周期にわたって行うことができる。この周期数は、通常200周期にわたるランダム(閉ページ)DRAMアクセスのコストに匹敵する。このように、ソフトウェア置換のコストは比較的低い。
あるいは、ハードウェアキャッシュライン置換において、上記HCPU202は、例えば、1つ又は数個の置換回路を備える。これらの回路は、例えば、上記HCPU202において実行されるか、又は上記HCPUと上記複数の記憶回路との間に連結された別の回路の一部として実行される。上記置換が始まる前に8×8アレイ全体がチャージされるべきなので、置換動作は、例えば、パイプライン方式で実行されない。
上記置換回路は、以下を用いて実行可能である。
‐直交書き込みバス及び直交読み取りバスを用いた、複数のデュアルポートレジスタ
‐複数の入口がメモリバスに直交する複数のシフトレジスタである、シングルポートメモリ、
‐1次元においてシフト可能であり、その後他方向においてシフト可能である、複数のシフトレジスタの2次元アレイ
キャッシュラインがb0〜b15の16バイトを有する例に基づいて、図10C〜図10Eを参照して、以下に置換回路の実行例について記載する。当該実行が他のサイズ(例えば、上述の32バイト例及び64バイト例)のキャッシュラインにどのように適合可能であるかは、当業者にとっては明らかだろう。
図10C〜図10Fは、データキャッシュからのキャッシュラインの読み取り動作中にキャッシュライン置換を行う置換回路1001を示す。もちろん、キャッシュラインをキャッシュに書き込む際に逆の動作を行うことができる。
上記置換回路1001は、例えば、シフトレジスタである、レジスタ1002、1004、1006及び1008を備える。図10Cに示されるように、上記レジスタ1002は、キャッシュラインのバイトb0、b4、b8及びb12を受信するように連結された入力線を備え、上記レジスタ1004は、キャッシュラインのバイトb1、b5、b9及びb13を受信するように連結された入力線を備え、上記レジスタ1006は、キャッシュラインのバイトb2、b6、b10及びb14を受信するように連結された入力線を備え、上記レジスタ1008は、キャッシュラインのバイトb3、b7、b11及びb15を受信するように連結された入力線を備える。
図10Dは、上記バイトb0〜b15が、例えばシフト動作によって上記レジスタ1002〜1008にロードされた後の上記置換回路1001を示す。
図10Eは、上記レジスタ1002にロードされた上記バイトb0、b4、b8及びb12が平行に出力されて置換キャッシュラインの第1行を形成する、第1の出力動作を示す。同時に、上記レジスタ1004からの上記バイトが上記レジスタ1002にシフトされ、上記レジスタ1006からの上記バイトが上記レジスタ1004にシフトされ、上記レジスタ1008からの上記バイトが上記レジスタ1006にシフトされる。
そして、図10Eに表された出力動作及びシフト動作が、図10Fに示されたように、上記バイトの全てが上記レジスタ1002〜1008から出力されて上記置換キャッシュラインを形成するまで、繰り返される。
上記レジスタ1002〜1008へのデータの初期のロードは、上述のシフトレジスタを用いたシフト動作によって、又は上記レジスタへのメモリ書き込み動作によって行われてもよい。さらに、図10E及び図10Fに関して記載された例において、データ値は、シフト動作を行うことによって上記レジスタ1002、1004、1006及び1008から出力されるが、別の実施形態において、データをメモリ読み取り動作によって出力することもできる。
いくつかの実施形態において、統合されたDPUを備える記憶回路に全てのメモリアクセスが関係あるか否かに関係なく、当該全てのメモリアクセスに対して、キャッシュライン置換を行ってもよい。実際、キャッシュラインがメモリシステムにおいて書き込まれる方向は、通常少しも重要でない。そのため、全てのデータに対して上記置換を行うことが可能である。この場合、キャッシュラインバイト置換は、キャッシュラインがDDR2バス、DDR3バス、又はDDR4バスからロードされる又は上記DDR2バス、上記DDR3バス、又は上記DDR4バスに書き込まれる方法に対する変更によって行うことができる。例えば、アドレス変換は、依然としてDGASアドレスに対して行われる。
実際、図10Bを参照して、DGAS1004からの読み取りの場合、64バイトキャッシュラインは、各64ビットワードが別のDLASに属する8つの64ビットワードを含む。それゆえ、これらの8つのワードはDGASにおいて連続してマップされず、当該8つのワードは、例えば、メモリシステムが8つの記憶回路が備えられた64MBのメモリシステムである場合に、8MBによって分けられる。HGA1006からの読み取りの場合、64バイトキャッシュラインが8つの64ビットワードを含み、当該8つのワードがHGASにおいて連続してマップされる。
以下、図11を参照して、変形の流れについてより詳細に記載する。
図11は、図10Aの上記キャッシュ1000および図2の上記アドレス変換機能208を備える上記コンピュータデバイス200の一部を示す。図11の全ての回路は、例えば、上記HCPU202内に統合されている。
上記アドレス変換機能208は、例えば、ハードウェア又はソフトウェアにおいて実行される。当該機能は、図11において、いくつかの動作からなる流れによって表される。変換は、データキャッシュアクセス動作の対象であるHGASアドレスに基づく。動作1106で、上記HGASアドレスがDGASセグメントに一致するか否かが判断される。上記HGASアドレスがDGASセグメントに一致すると判断されると、次の動作1108において、DGASアドレスからPGASアドレスへの変換が、例えば上述のDGAS2PGAS機能の1つに基づいて、メモリバースト動作の種類に応じて行われる。上記HGASアドレスがDGASセグメントに一致する場合、例えば、マルチプレクサ1110が、変換されたアドレスを選択し、一致しない場合、上記HGASアドレスを選択して、上記キャッシュ1000に対してアドレス指定を行うためのPGASアドレスを形成する。上記アドレスは、アドレスバス(ADDRバス)上で上記データキャッシュ1000のアドレスポート(ADDR)に供給される。
上記データキャッシュ1000は、上記HCPU202のHCPUレジスタファイル1114に連結される。上記HCPUレジスタファイル1114は、例えば、上記HCPU202によって実行される命令にアクセス可能な汎用レジスタファイルである。上記データキャッシュは、バイト転置回路(バイト転置)1116を介してデータで満たされる。当該バイト転置は、例えば、図10C〜図10Fの上記置換回路1001に類似した回路によって実行される。上記バイト転置回路1116は、例えば、DDRデータバス(DDRバス)1118と上記データキャッシュ1000との間に連結される。しかしながら、別の実施形態において、上記バイト転置回路1116は、上記データキャッシュ1000と上記HCPUレジスタファイル1114との間の経路等の他のどこかに配置可能である。
いくつかの実施形態において、上記バイト転置回路1116等のキャッシュライン置換回路を用いてキャッシュライン置換を行う代わりに、上述のように、ソフトウェアで、記憶回路‐データキャッシュ間でバイトを読み取り且つ書き込むことによって行うことができる。それゆえ、16ビット、32ビット及び64ビットの書き込みは、実際、8ビットの書き込みシーケンスに変換され、それによって当該書き込み動作の粒度が破壊される。標準16ビット、23ビット又は64ビットアクセスは、それ自体のサイズと合わせられるが、ある程度の粒度を有する。しかし、いくつかのビットのみが任意の書き込み動作で書き込まれる場合、当該粒度は壊される。実際、各書き込み動作に続いて、当該書き込み動作に関係する全てのバイトは書き込まれなければならない。そうでなければ、上記システムの最小単位を損なってしまうからである。実際、任意の書き込み動作に続いて、データワードが既に書き込まれたいくつかのバイトと書き込み待ちの他のバイトとを含む場合、当該最小単位は破壊される。例えば、記憶回路のデータポートよりも広幅なコマンドレジスタがDGASにマップされるかもしれない。もし当該コマンドレジスタが部分的にのみ書き込まれる場合、コマンドが無意味になる。この問題は、例えば、コマンドが有効である時を示す上記コマンドレジスタ内に少なくとも1つの制御ビットを含むことによって解決される。当該制御ビットは、上記コマンドレジスタの、書き込まれる最後のビットに含まれ、例えば、各書き込み動作中に反転される。このように、上記HCPUは、上記制御ビットが色を変化させると、つまり、前のコマンドに対して反転されると、上記コマンドレジスタから読み取られたコマンドのみを考慮する。
図12及び図13を参照して以下に記載されるように、いくつかの実施形態において、上記複数の記憶回路204に記憶されたデータが、誤り訂正符号(ECC)を含んでもよい。
図12は、一実施形態例に係る上記複数の記憶回路204における誤り訂正符号の横方向及び縦方向の記憶を概略的に示す。
図12のブロック1202は、横方向の記憶を示す。各データバイトは、空の矩形で表され、8列の矩形で表された8つの記憶回路にわたって保存される。例えば、9つ目の記憶回路が各横列のデータに対して関連ECCビットを記憶するのに加えられる。しかしながら、記憶回路の各内部DPUが当該記憶回路によって記憶されたデータを変更するかもしれないので、各記憶回路は、データが変更された場合、ECCデータにアクセス可能であり且つ当該ECCデータを変更可能でなければならない。これは、横方向の記憶構成では不可能である。さらに、各ECC値が横列のバイトに関連するので、各記憶回路は、EEC値を調べ再計算するために、他の記憶回路によって記憶されたデータにアクセスする必要もあるだろう。
図12のブロック1204は、縦方向の記憶を示す。各データバイトに関連する斜線部分で表されるように、ある列の縦列のバイトに関連するECCビットがバイト間で分配される。例えば、1つ以上の追加記憶セルが、ECCの1つ以上の追加ビットを記憶するために、各バイトに設けられる。同様に、記憶回路のデータポートが同数のビットによって拡大される。それゆえ、記憶回路のDPUが、記憶された1つ以上のECCビットを同一列の一定数のサブワードにおける各バイトと組み合わせることによって、ECCを再構築することができる。例えば、各バイトに関連するiビットのECCがあり、当該ECCが、ixjビット、つまり、ある列のjバイトに関連するECCビットを有する。なお、iは例えば1以上であり、jは例えば2以上である。本実施形態において、上記HCPU202は、例えば、一群の8バイトからECCビットを作成する単一のECC回路を備える。そして、これらのビットは、バイト間で分配される。例えば、上記HCPUは、ECC値が並列で求められるように、各記憶回路に関連するECC回路を備える。DPUを統合する各記憶回路は、例えば、ECCビットを確認するECC回路であって、データ値が変更される度に新しいECCビットを作成するECC回路をも備える。
図13は、ECCビットの代替横方向記憶スキームを表すブロック1302を概略的に示す。図13の例において、任意の列のj行のバイトに関連する上記ECCビットは、ECCデータの記憶専用の追加行に記憶される。そのため、上記ECCビットには、追加の読み取り又は書き込み動作を行うことによってアクセス可能である。例えば、バースト長が8アクセスから9アクセスに伸ばされる。本実施形態において、上記HCPU202は、例えば、各アクセスにおいてバイト数と等しい数のECC回路を備える。それゆえ、各アクセスが8バイトを有する図13の例において、上記HCPU202は、例えば、並列に動作する8つのECC回路を備える。DPUを統合する各記憶回路は、例えば、ECCビットを確認するECC回路であって、データ値が変更される度に新しいECCビットを作成するECC回路をも備える。
図14は、一実施形態例に係る、図2の上記複数の記憶回路204のうちの1つの記憶回路204をより詳細に概略的に示す。当該1つの記憶回路204において、DPU206がメモリアレイ(アレイ)を含む集積回路チップに直接的に統合されておらず、データバス1402及びアドレスバス1404によって上記メモリアレイに連結された別の集積回路チップに統合されている。上記DPU206は、例えば、アドレス及びコマンドバス(ADDR+CMDバス)と上記HCPU202のデータバス(データバス)のスライスとに連結された1つ以上のデータプロセッサ(データプロセッサ)を備える。
本明細書に記載された実施形態の利点は、アドレス変換をもたらすが、データワードを、当該データワードより狭幅なデータポートを有する単一の記憶回路に縦に記憶することができることである。これにより、上記記憶回路のデータ処理装置が、上記データワードにアクセスすることができ、上記データワードに対して動作を行うことができる。
このように少なくとも1つの例示的実施形態について記載してきたが、当業者であれば、様々な変更、修正及び改善を容易に思い付くだろう。例えば、64ビット幅であるHCPUデータバスと8ビットのデータポートを有する8つの記憶回路の1つ以上のランクとに基づいて特定の実施形態を記載してきたが、多くの様々な構成が可能であることは当業者にとっては明らかだろう。
さらに、本明細書に記載された実施形態例において、各記憶回路が、1つ以上の統合DPUを備える集積回路に一致するが、別の実施形態において、1つ以上のDPUを、記憶回路とは別の1つ以上の更なる集積回路に形成することができる。

Claims (18)

  1. 第1の処理装置(202)と、
    複数の記憶回路(204)と、
    上記第1の処理装置(202)を上記複数の記憶回路(204)の各々に連結するデータバス(データ)とを備えるコンピュータデバイスであって、
    上記複数の記憶回路(204)の少なくとも第1の記憶回路は、1つ以上の更なる処理装置(206)を備え、
    上記複数の記憶回路(204)の各々は、mビット幅であるデータポートを有し、
    上記データバスは、nビットの幅を有し(nはmより大きい)、
    上記複数の記憶回路(204)の各々の上記データポートは、上記データバスの対応するmビットスライスに連結され、
    上記第1の処理装置(202)は、上記データバスを介して読み取られる又は書き込まれるnビットデータ値に1つ以上の第1のアドレスを供給するように構成されており、
    上記第1の処理装置及び/又は更なる回路(208)は、
    上記第1の記憶回路における複数のmビットメモリ位置に対応する複数の第2のアドレスであって、そのうちの少なくとも2つの第2のアドレスが連続アドレスである複数の第2のアドレスに、上記第1のアドレスを変換することによって、および
    複数のメモリアクセス動作にわたって上記第1の記憶回路に対して上記nビットデータ値の読み取り動作又は書き込み動作を行うことによって、
    上記nビットデータ値を、上記第1の記憶回路(204)から読み取る又は上記第1の記憶回路(204)に書き込むように構成される、コンピュータデバイス。
  2. 上記更なる処理装置(206)の各々は、上記第1の処理装置によって供給されたコマンドに基づいて、上記第1の記憶回路(204)によって記憶されたデータ処理動作を行うように構成された1つ以上のプロセッサを備える、請求項1に記載のコンピュータデバイス。
  3. 上記データバスの上記幅nは、各記憶回路の上記データポートの上記幅mの倍数pであり、
    p個の記憶回路が存在する、請求項1又は2に記載のコンピュータデバイス。
  4. 上記1つ以上の第1のアドレスの最上位ビット(MSB)のうちの1つ以上が、上記第1の記憶回路を指定する上記複数の第2のアドレスの1つ以上の最下位ビット(LSB)になるように、上記アドレス変換がアドレス置換を含む、請求項1〜3のいずれか1項に記載のコンピュータデバイス。
  5. 上記1つ以上の第1のアドレスは、上記第1の処理装置のアドレス空間(HGAS)におけるアドレスであり、
    上記複数の第2のアドレスは、上記1つ以上の更なる処理装置の局所アドレス空間(DLAS)におけるアドレスであり、
    上記局所アドレス空間は、線形、又はセグメントごとに線形である、請求項1〜4のいずれか1項に記載のコンピュータデバイス。
  6. データキャッシュ(1000)と、
    上記データキャッシュ(1000)の1つ以上のライン(L0、L1、L2)に対してキャッシュライン置換を行うように構成されたデータ置換回路(1001、1116)とをさらに備え、
    上記データキャッシュ(1000)は、複数のキャッシュラインを備え、
    上記複数のキャッシュラインの各々が複数のデータワードを記憶し、
    各データワードは、複数のバイトのデータを有し、
    上記キャッシュライン置換は、上記第1の記憶回路に関連する上記キャッシュの記憶位置に、上記複数のデータワードのうちの第1のデータワードを形成する上記バイトを記憶する、請求項1〜5のいずれか1項に記載のコンピュータデバイス。
  7. 上記データキャッシュ(1000)は、データバスを介して上記複数の記憶回路(204)に連結され、
    上記データ置換回路は、上記データバスと上記データキャッシュ(1000)との間に連結されたバイト転置回路(1116)であって、上記キャッシュに記憶された又は上記キャッシュからロードされた各データ値の上記キャッシュライン置換を行うように構成されている、請求項6に記載のコンピュータデバイス。
  8. 上記第1の処理装置及び/又は更なる回路(208)は、上記1つ以上の第1のアドレスが上記更なる処理装置(206)のうちの1つ以上に関連するアドレスセグメント内にあるか否かを判断するように、および上記1つ以上の第1のアドレスが上記アドレスセグメント内にある場合に上記アドレス変換を行うように構成される、請求項1〜7のいずれか1項に記載のコンピュータデバイス。
  9. 上記第1のアドレスの複数の最下位ビットが、上記複数の第2のアドレスのうちの1つの複数の最下位ビットに等しい、請求項1〜8のいずれか1項に記載のコンピュータデバイス。
  10. mビットより大きいコマンドレジスタが、上記第1の記憶回路のアドレス空間にマップされ、
    上記コマンドレジスタは、少なくとも1つの制御ビットを有し、
    上記第1の処理装置(202)は、複数のメモリアクセス動作にわたって上記コマンドレジスタへの書き込み動作を行うように構成され、
    上記コマンドレジスタのバイトが、上記複数のメモリアクセス動作のうちの最後のメモリアクセス動作によって書き込まれる上記制御ビットを有し、上記制御ビットの変更を伴う、請求項1〜9のいずれか1項に記載のコンピュータデバイス。
  11. 上記第1の記憶回路(204、800)は、メモリアレイ(802)と上記1つ以上の更なる処理装置(DPU0、DPU1)とを統合する集積回路チップである、請求項1〜10のいずれか1項に記載のコンピュータデバイス。
  12. 上記第1の記憶回路(204、800)は、メモリアレイを備える第1の集積回路チップと、上記1つ以上の更なる処理装置(DPU0、DPU1)を備える更なる集積回路チップとを備える、請求項1〜10のいずれか1項に記載のコンピュータデバイス。
  13. 上記第1の記憶回路(204、800)は、複数の更なる処理装置(DPU0、DPU1)を備え、当該複数の更なる処理装置(DPU0、DPU1)の各々は、上記メモリアレイの対応するアドレス空間に関連する、請求項11又は12に記載のコンピュータデバイス。
  14. 上記第1の処理装置(202)は、1つ以上のECCビットを各mビット値に挿入するように構成された1つ以上の誤り訂正符号(ECC)回路を備える、請求項1〜13のいずれか1項に記載のコンピュータデバイス。
  15. 上記第1の処理装置(202)は、更なるメモリアクセス動作中に、上記第1の記憶回路(204)に記憶される複数のECCビットを作成するように構成された1つ以上の誤り訂正符号(ECC)回路を備える、請求項1〜14のいずれか1項に記載のコンピュータデバイス。
  16. 第1の処理装置(202)を複数の記憶回路の各々に連結するデータバス(データ)を介して、上記複数の記憶回路の第1の記憶回路(204)にnビットデータ値を書き込む書き込み動作、又は上記第1の記憶回路(204)から上記nビットデータ値を読み取る読み取り動作を、上記第1の処理装置(202)によって行う工程を含む方法であって、
    上記第1の記憶回路は、1つ以上の更なる処理装置(206)を備え、
    上記複数の記憶回路の各々は、mビット幅であるデータポートを有し、
    上記データバスは、nビットの幅を有し(nはmより大きい)、
    上記複数の記憶回路(204)の各々の上記データポートは、上記データバスの対応するmビットスライスに連結され、
    上記読み取り動作又は上記書き込み動作は、
    上記第1の処理装置(202)によって、1つ以上の第1のアドレスを、上記データバスを介して読み取られる又は書き込まれるnビットデータ値に供給することと、
    上記第1のアドレスを、上記第1の記憶回路における複数のmビットメモリ位置に対応する複数の第2のアドレスであって、そのうちの少なくとも2つが連続アドレスである複数の第2のアドレスに変換することと、
    複数のメモリアクセス動作にわたって、上記nビットデータ値の上記読み取り動作又は上記書き込み動作を上記第1の記憶回路に対して行うこととを含む、方法。
  17. 上記第1の処理装置によって、データキャッシュ(1000)の1つ以上のライン(L0、L1,L2)対してキャッシュライン置換を行う工程をさらに含み、
    上記データキャッシュ(1000)は、複数のキャッシュラインを備え、
    当該複数のキャッシュラインの各々が複数のデータワードを記憶し、
    各データワードは、複数のバイトのデータを有し、
    上記キャッシュライン置換は、上記第1の記憶回路に関連する上記キャッシュの記憶位置に、上記複数のデータワードのうちの第1のデータワードを形成する上記バイトを記憶する、請求項16に記載の方法。
  18. 第1の処理装置(202)によって実行された場合、請求項16又は17の方法の実行に至るプログラム命令を記憶する電子記憶媒体。
JP2018516124A 2015-10-01 2016-09-27 インメモリ処理及び狭幅データポートを備えたコンピュータデバイス Active JP6757791B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
FR1559321 2015-10-01
FR1559321A FR3042049A1 (ja) 2015-10-01 2015-10-01
FR1650186A FR3042050B1 (fr) 2015-10-01 2016-01-11 Dispositif informatique muni de traitement en memoire et de ports d'acces etroits
FR1650186 2016-01-11
PCT/FR2016/052450 WO2017055732A1 (fr) 2015-10-01 2016-09-27 Dispositif informatique muni de traitement en memoire et de ports d'acces etroits

Publications (2)

Publication Number Publication Date
JP2018534666A JP2018534666A (ja) 2018-11-22
JP6757791B2 true JP6757791B2 (ja) 2020-09-23

Family

ID=56137415

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018516124A Active JP6757791B2 (ja) 2015-10-01 2016-09-27 インメモリ処理及び狭幅データポートを備えたコンピュータデバイス

Country Status (6)

Country Link
US (1) US10884657B2 (ja)
EP (1) EP3356945B1 (ja)
JP (1) JP6757791B2 (ja)
CN (1) CN108139989B (ja)
FR (2) FR3042049A1 (ja)
WO (1) WO2017055732A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3066842B1 (fr) 2017-05-24 2019-11-08 Upmem Logique de correction de row hammer pour dram avec processeur integre
US10908820B2 (en) * 2017-09-14 2021-02-02 Samsung Electronics Co., Ltd. Host-based and client-based command scheduling in large bandwidth memory systems
FR3115395A1 (fr) 2020-10-16 2022-04-22 Upmem Dispositif semi-conducteur comprenant un empilement de puces et puces d’un tel empilement
CN114048157A (zh) * 2021-11-16 2022-02-15 安徽芯纪元科技有限公司 一种内部总线地址重映射装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745791A (en) * 1992-09-16 1998-04-28 Intel Corporation System for interfacing first and second components having different data path width by generating first and second component address to read data into buffer
JPH08147076A (ja) * 1994-11-22 1996-06-07 Seiko Epson Corp 情報処理装置
US5634013A (en) * 1995-05-03 1997-05-27 Apple Computer, Inc. Bus bridge address translator
US5818844A (en) * 1996-06-06 1998-10-06 Advanced Micro Devices, Inc. Address generation and data path arbitration to and from SRAM to accommodate multiple transmitted packets
US6754741B2 (en) * 2001-05-10 2004-06-22 Pmc-Sierra, Inc. Flexible FIFO system for interfacing between datapaths of variable length
JP2003346500A (ja) * 2002-05-29 2003-12-05 Hitachi Ltd 半導体集積回路及びそのテスト方法
JP5992713B2 (ja) * 2012-03-30 2016-09-14 株式会社ソニー・インタラクティブエンタテインメント メモリシステム、その制御方法及び情報処理装置

Also Published As

Publication number Publication date
EP3356945A1 (fr) 2018-08-08
EP3356945B1 (fr) 2019-09-04
WO2017055732A1 (fr) 2017-04-06
US20180260161A1 (en) 2018-09-13
FR3042049A1 (ja) 2017-04-07
CN108139989B (zh) 2021-05-25
US10884657B2 (en) 2021-01-05
FR3042050B1 (fr) 2019-11-01
CN108139989A (zh) 2018-06-08
FR3042050A1 (ja) 2017-04-07
JP2018534666A (ja) 2018-11-22

Similar Documents

Publication Publication Date Title
US20240028207A1 (en) Near-memory compute module
US11132300B2 (en) Memory hierarchy using page-based compression
TWI687810B (zh) 基於混合記憶體立方體系統互連目錄之快取一致性方法
US10860326B2 (en) Multi-threaded instruction buffer design
JP6757791B2 (ja) インメモリ処理及び狭幅データポートを備えたコンピュータデバイス
US9280464B2 (en) System and method for simultaneously storing and reading data from a memory system
KR102216116B1 (ko) 메모리 모듈 및 그것의 동작 방법
US11635902B2 (en) Storage device processing stream data, system including the same, and operation method
US20150019813A1 (en) Memory hierarchy using row-based compression
US20160246712A1 (en) Indirection data structures implemented as reconfigurable hardware
US10019358B2 (en) Bank address remapping to load balance memory traffic among banks of memory
WO2011113646A1 (en) Masked register write method and apparatus
JP2020187747A (ja) 高帯域幅メモリシステム及びメモリアドレス方法
CN108701102A (zh) 直接存储器访问控制器、数据读取方法和数据写入方法
CN114341816A (zh) 三层层次型存储器系统
CN110018847B (zh) 可配置寄存器及基于可配置寄存器的数据存取方法
CN107526528B (zh) 一种片上低延迟存储器的实现机制
AU616653B2 (en) Method and apparatus for determining available memory size
JP7187698B2 (ja) 2の非累乗のメモリ構成
US10983936B2 (en) Programmable arbitrary sequence direct memory access controller for configuring multiple core independent peripherals
JP4528491B2 (ja) 情報処理装置
CN114258534B (zh) 阶层式存储器系统
CN102541754A (zh) 用于对存储器进行配置的系统和方法
US11526448B2 (en) Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning
CN114341818B (zh) 分级存储器设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190912

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: 20200804

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200831

R150 Certificate of patent or registration of utility model

Ref document number: 6757791

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250