JP2023540232A - 効率的なプロセッシングインメモリのためのハードウェア‐ソフトウェア協働アドレスマッピング方式 - Google Patents
効率的なプロセッシングインメモリのためのハードウェア‐ソフトウェア協働アドレスマッピング方式 Download PDFInfo
- Publication number
- JP2023540232A JP2023540232A JP2023513427A JP2023513427A JP2023540232A JP 2023540232 A JP2023540232 A JP 2023540232A JP 2023513427 A JP2023513427 A JP 2023513427A JP 2023513427 A JP2023513427 A JP 2023513427A JP 2023540232 A JP2023540232 A JP 2023540232A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- channel
- row
- data elements
- bank
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
Abstract
行競合を低減することによってより高い性能を達成するために、1つのバンクの同じ行において、又は、異なるバンクの同じ行にわたって一緒にアクセスされるデータ要素をマッピングすることを可能にする、ハードウェア‐ソフトウェア協働アドレスマッピング方式を実装するためのアプローチが提供される。イントラバンクフレームストライピングポリシー(IBFS)を使用して、データ要素の対応するサブセットが、バンクの単一の行にインターリーブされる。イントラチャネルフレームストライピングポリシー(ICFS)を使用して、データ要素の対応するサブセットが、チャネルの単一のチャネル行にインターリーブされる。メモリコントローラは、ICFS及び/又はIBFSを利用して、プロセッシングインメモリ(PIM)対応メモリ等のメモリ内のデータ要素を効率的に格納し、アクセスする。【選択図】図1
Description
このセクションに記載されているアプローチは、遂行され得るアプローチであるが、必ずしも以前に着想又は遂行されたアプローチではない。したがって、別段の指示がない限り、このセクションに記載されたアプローチの何れも、単にこのセクションに含まれることによって、従来技術として適格であると仮定すべきではない。更に、このセクションに記載されたアプローチの何れも、単にこのセクションに含まれることによって、よく理解されている、日常的である、又は、従来的であると仮定すべきではない。
ダイナミックランダムアクセスメモリ(DRAM)バンクレベルでのデータアクセスレイテンシは、DRAMセル及びサポートする周辺回路の物理的性質のために重要である。各DRAMバンクは、それぞれのバンクに格納された2Dメモリアレイからの単一の行を一度に読み出すことができる行バッファを含む。バンク内に格納されたデータ要素にアクセスするために、データ要素を含む2Dメモリアレイの行がアクティブ化され、次いで、行バッファに読み出される必要がある。次いで、行バッファからデータ要素にアクセスすることができる。別の行に入る任意の次のデータ要素にアクセスするために、次の行がアクティブ化され得る前にプリチャージ動作が実行されなければならない。この状況は、行競合(row-conflict)として一般に知られている。そのような行アクティブ化‐プリチャージ‐アクティブ化サイクルは、格納されたデータの完全性及び電力管理を保証するために従わなければならない数十ナノ秒の厳格なタイミング要件を課す。
行競合を回避する1つの方法は、同じ行から可能な限り多くのデータ要素にアクセスすることである。しかしながら、同じオペレーティングシステムページ又は連続した物理アドレス空間、すなわちフレームに入る隣接データ要素が常に一緒にアクセスされるという保証はない。物理メモリモジュール内のデータ要素、すなわちDRAMチャネル、バンク、行及び列の配置は、DRAMへのアクセスを制御するメモリコントローラによって使用される物理アドレスから物理メモリへのマッピング方式に依存する。一般に、メモリレベル並列性(MLP)を達成するために、同じページからのデータ要素は、利用可能な数のチャネルにわたってインターリーブされる。しかしながら、単純なインターリーブは、異なるページからのオペランドを含む演算を実行する場合に、過剰な行競合をもたらす可能性がある。したがって、コンピュータメモリにおける行競合に対処するためのより良いアプローチが必要とされている。
実施形態は、添付の図面において、限定としてではなく例として示されており、同様の符号は同様の要素を指す。
以下の説明では、説明の目的のために、実施形態の十分な理解を提供するために、多くの具体的な詳細が記載される。しかしながら、これらの特定の詳細なしに実施形態を実施できることは当業者には明らかであろう。他の例では、実施形態を不必要に不明瞭にすることを避けるために、周知の構造及びデバイスがブロック図で示されている。
I.概要
II.アーキテクチャ
III.アドレスマッピング方式
A.アドレスインターリーブメモリマッピング方式
B.イントラバンクフレームストライピングポリシー
C.イントラチャネルフレームストライピングポリシー
D.実装の詳細
E.例示的手順
F.アプリケーション
II.アーキテクチャ
III.アドレスマッピング方式
A.アドレスインターリーブメモリマッピング方式
B.イントラバンクフレームストライピングポリシー
C.イントラチャネルフレームストライピングポリシー
D.実装の詳細
E.例示的手順
F.アプリケーション
I.概要
行競合を低減することによってより高い処理性能を達成するために、1つのバンクの同じ行において、又は、異なるバンクの同じ行にわたって、一緒にアクセスされるメモリ命令によって使用されるデータ要素をマッピングすることを可能にする、ハードウェア‐ソフトウェア協働アドレスマッピング方式を実装するためのアプローチが提供される。一実施形態では、イントラバンクフレームストライピングポリシー(IBFS)を使用して、データ要素の対応するサブセットがバンクの単一の行にインターリーブされる。別の実施形態では、イントラチャネルフレームストライピングポリシー(ICFS)を使用して、データ要素の対応するサブセットが、チャネルの単一のチャネル行にインターリーブされる。メモリコントローラは、IBFS又はICFSを利用して、それぞれ、メモリバンク又はチャネル内のPIM実行ユニットの配置に応じて、メモリ内処理(PIM)対応メモリ等のメモリ内のデータ要素を効率的に格納し、アクセスする。
行競合を低減することによってより高い処理性能を達成するために、1つのバンクの同じ行において、又は、異なるバンクの同じ行にわたって、一緒にアクセスされるメモリ命令によって使用されるデータ要素をマッピングすることを可能にする、ハードウェア‐ソフトウェア協働アドレスマッピング方式を実装するためのアプローチが提供される。一実施形態では、イントラバンクフレームストライピングポリシー(IBFS)を使用して、データ要素の対応するサブセットがバンクの単一の行にインターリーブされる。別の実施形態では、イントラチャネルフレームストライピングポリシー(ICFS)を使用して、データ要素の対応するサブセットが、チャネルの単一のチャネル行にインターリーブされる。メモリコントローラは、IBFS又はICFSを利用して、それぞれ、メモリバンク又はチャネル内のPIM実行ユニットの配置に応じて、メモリ内処理(PIM)対応メモリ等のメモリ内のデータ要素を効率的に格納し、アクセスする。
本明細書では、PIM対応メモリシステムのコンテキストで実施形態を説明するが、そのような実施形態は、PIM対応メモリシステム自体に限定されず、他のメモリシステムに適用することができる。
本明細書で説明するアプローチは、大規模データ構造に対応するデータ要素に同時にアクセスしながら、既存の技法と比較して、それぞれIBFSポリシー及びICFSポリシーを用いた行アクティブ化の数の低減を達成する。そのような低減は、優れたPIM性能及びエネルギー効率をもたらす。
II .アーキテクチャ
図1は、本明細書で説明するような協働アドレスマッピング方式を実装するためのプロセッシングインメモリ(PIM)対応メモリ104に結合されたメモリコントローラ102を示すブロック図である。
図1は、本明細書で説明するような協働アドレスマッピング方式を実装するためのプロセッシングインメモリ(PIM)対応メモリ104に結合されたメモリコントローラ102を示すブロック図である。
図1は、メモリコントローラ102及びPIM対応メモリ104を含む。PIM対応メモリ104は、PIM実行ユニット106及びメモリ構造108を含む。一実施形態では、メモリ構造108はバンクを備える。別の実施形態では、メモリ構造108は、複数のバンクを含むチャネルを備える。そのような実施形態では、PIM実行ユニットは、複数のバンクを有するチャネルを備えるメモリ構造108に結合される。
メモリコントローラ102は、メモリ構造108内のデータ要素の格納及びアクセスを管理するように構成されたマッピングロジック110を含む。マッピングロジック110を使用して、メモリコントローラ102は、メモリ構造108内のデータ要素を格納及びアクセスするための特定の行インデックス値及び列インデックス値を識別する。例えば、マッピングロジック110は、データ要素を特定の構成でバンクに格納するロジックを提供するイントラバンクフレームストライピング(IBFS)ポリシーを実装してもよい。また、そのようなロジックは、バンクからそのようなデータ要素が格納されると、それらにアクセスするために使用されてもよい。別の例では、マッピングロジック110は、特定の構成でチャネルにデータ要素を格納するロジックを提供するイントラチャネルフレームストライピングポリシー(ICFS)を実装してもよい。また、そのようなロジックは、チャネルからそのようなデータ要素が格納されると、それらにアクセスするために使用されてもよい。マッピングロジック110は、コンピュータハードウェア、コンピュータソフトウェア、又は、コンピュータハードウェアとコンピュータソフトウェアとの任意の組み合わせによって実装される。いくつかの実施形態では、マッピングロジックは、メモリコントローラ102の外部に格納され、本明細書で説明される動作を実行するためにメモリコントローラ102によって使用される。
PIM対応メモリ104は、行デコーダ112及び列デコーダ114を有するメモリ構造108を含む。メモリ構造108は、PIM実行ユニット106に結合されている。行デコーダ112は、メモリコントローラ102から行インデックス値を受信し、受信した行インデックス値を復号して、受信した行インデックス値に対応するメモリ構造108の行を識別するように構成されている。列デコーダ114は、メモリコントローラ102から列インデックス値を受信し、受信した列インデックス値を復号して、受信した列インデックス値に対応するメモリ構造108の列を識別するように構成されている。復号された行インデックス値及び復号された列インデックス値の組み合わせは、メモリ構造108の対応するセルから値を取り出すために使用される。セルから取り出された値は、動作に応じて、PIM実行ユニット106に送られるか、又は、メモリコントローラ102に戻される。PIM実行ユニットは、値に基づいて結果を生成し、その結果をメモリ構造108及び/又はメモリコントローラ102に送信するロジックを含む。
いくつかの実施形態において、メモリ構造108は、複数のバンクを含むチャネルを備える。そのような実施形態では、別個の行デコーダ112及び列デコーダ114が、チャネルの複数のバンクの各々に関連付けられている。メモリコントローラ102は、複数のバンクからバンクを選択するためにバンクインデックス値を送信し、次いで、行を開き、データ要素にアクセスするために行インデックス値及び列インデックス値を送信するためのロジックを含む。取り出されたデータ要素は、動作に応じて、PIM実行ユニット106に送られるか、又は、メモリコントローラ102に戻される。PIM実行ユニットは、データ要素に基づいて結果を生成し、その結果をメモリ構造108及び/又はメモリコントローラ102に送信するロジックを含む。
III.アドレスマッピング方式
A.アドレスインターリーブメモリマッピング方式
図2は、2つのチャネル(チャネル0及びチャネル1)を有するメモリシステムを示す図である。各チャネルは、4つのバンク(バンク0、1、2、3)を有する。チャネルごとに1つのランクが存在する、すなわち、各チャネルの4つのバンク全てが1つのランクを構成すると仮定する。各バンクは、4×8メモリアレイを備える。いくつかの実施形態において、各バンクは、個別のPIM実行ユニットに結合されている。いくつかの実施形態では、チャネルの各バンクは、同じPIM実行ユニットに結合されている。各メモリ構造の各セルは、1つのデータ要素を保持すると仮定する。したがって、2つのチャネルを有するPIM対応メモリは、256(2×4×4×8)個のデータ要素を格納することができ、8つの物理アドレスビットによって表すことができる。物理アドレス空間が4つのフレーム(フレーム0~3)を有し、4つのページA、B、C、Dがフレーム0~3にそれぞれ配置されていると仮定する。各ページは64個のデータ要素を有する。アドレスインターリーブメモリマッピング方式では、ページA、B、C、Dからのデータ要素は、チャネルにわたってインターリーブされ、次いで、バンクにわたって各チャネル内にインターリーブされ、次いで、列にわたって各バンク内にインターリーブされ、次いで、行にわたってインターリーブされ、すなわち、インターリーブ順序は、チャネル、バンク、列及び行である。
A.アドレスインターリーブメモリマッピング方式
図2は、2つのチャネル(チャネル0及びチャネル1)を有するメモリシステムを示す図である。各チャネルは、4つのバンク(バンク0、1、2、3)を有する。チャネルごとに1つのランクが存在する、すなわち、各チャネルの4つのバンク全てが1つのランクを構成すると仮定する。各バンクは、4×8メモリアレイを備える。いくつかの実施形態において、各バンクは、個別のPIM実行ユニットに結合されている。いくつかの実施形態では、チャネルの各バンクは、同じPIM実行ユニットに結合されている。各メモリ構造の各セルは、1つのデータ要素を保持すると仮定する。したがって、2つのチャネルを有するPIM対応メモリは、256(2×4×4×8)個のデータ要素を格納することができ、8つの物理アドレスビットによって表すことができる。物理アドレス空間が4つのフレーム(フレーム0~3)を有し、4つのページA、B、C、Dがフレーム0~3にそれぞれ配置されていると仮定する。各ページは64個のデータ要素を有する。アドレスインターリーブメモリマッピング方式では、ページA、B、C、Dからのデータ要素は、チャネルにわたってインターリーブされ、次いで、バンクにわたって各チャネル内にインターリーブされ、次いで、列にわたって各バンク内にインターリーブされ、次いで、行にわたってインターリーブされ、すなわち、インターリーブ順序は、チャネル、バンク、列及び行である。
図2は、各ページからの64個のデータ要素が、アドレスインターリーブメモリマッピング方式を用いてメモリシステムにわたってどのように分散されるかを示している。例えば、64個のデータ要素A0~A63を含むページAについて、図2は、チャネル0のバンク0の行0、列0においてインデックス付けされたデータ要素A0を示す。データ要素A1は、チャネル1のバンク0の行0、列0に配置されている。データ要素A2は、チャネル0のバンク1の行0、列0に配置されている。データ要素A3は、チャネル1のバンク1の行0、列0に配置されており、以下同様である。
図3は、アドレスインターリーブメモリマッピングを使用して、PIM対応メモリ内でインデックス付けするために物理アドレスビットがどのようにマッピングされるかを示す図である。例えば、ビット0はチャネル番号を表す。ビット1及び2は、バンク番号を表す。ビット3~5は列番号を表し、ビット6~7は行番号を表す。
図2に示されるメモリシステムを使用してPIM演算を実行する一例として、2つの行列を要素ごとに加算し、その結果を第3の行列に格納するPIM計算が実行されると仮定する。行列はa、b、cとして定義され、個別のアレイに格納され、それぞれページA、B、Cに割り当てられる。ページA、B、C内の全てのデータ要素iについて、計算A[i]=B[i]+C[i]を実行するために、行R1が開かれて、Bのi番目のデータ要素が読み出される。この要素は、一時バッファに格納される。行R2は、Cのi番目のデータ要素を読み出すために開かれる。次いで、データ要素の加算が実行される。加算の結果は同じ一時バッファに格納される。Aのi番目のデータ要素に結果を格納するために、行R0が開かれ、結果が格納される。全てのデータ要素が処理されるまで、同じ処理が各バンク内で繰り返される。
したがって、単一の加算演算を実行して1つの結果要素を生成するために、3つの行競合に遭遇する。行競合は、タイミング及びエネルギーの両方の観点から、PIM効率を妨げる。この例では、PIM算術/論理演算は、単一のメモリクロックサイクルを必要とする可能性があるが、各行競合は、10秒のメモリクロックサイクルを要する可能性があり、データ要素配置を、高スループットを達成する際のボトルネックにする。
B.イントラバンクフレームストライピングポリシー
イントラバンクフレームストライピング(IBFS)ポリシーは、連続フレームからのデータ要素を、各バンク内の同じ行の同じ場所に配置するようにマッピングする。データ要素を、実装に応じて異なる方法で同じ場所に配置することができる。例えば、連続フレームからのデータ要素の対応するサブセットは、バンクの単一の行又は複数の行にインターリーブされ得る。IBFSは、図2に示される例示的なメモリシステムを参照して説明される。この例では、物理アドレス空間は4つのフレーム、すなわちフレーム0~3を有し、4つのページA、B、C、Dがそれぞれフレーム0~3に割り当てられる。説明を容易にするために、単一のバンクを使用してIBFSの一例を示す。
イントラバンクフレームストライピング(IBFS)ポリシーは、連続フレームからのデータ要素を、各バンク内の同じ行の同じ場所に配置するようにマッピングする。データ要素を、実装に応じて異なる方法で同じ場所に配置することができる。例えば、連続フレームからのデータ要素の対応するサブセットは、バンクの単一の行又は複数の行にインターリーブされ得る。IBFSは、図2に示される例示的なメモリシステムを参照して説明される。この例では、物理アドレス空間は4つのフレーム、すなわちフレーム0~3を有し、4つのページA、B、C、Dがそれぞれフレーム0~3に割り当てられる。説明を容易にするために、単一のバンクを使用してIBFSの一例を示す。
図2からのチャネル0のバンク0がIBFSを示すために使用されると仮定する。図4Aは、図2に関して説明したようなアドレスインターリーブメモリマッピング方式を有するチャネル0のバンク0を示す。図4Bは、IBFSアドレスマッピングを有する図4Aからのチャネル0のバンク0を示す。図4Bに示されるように、IBFSマッピングでは、ページA、B、C内の1つのデータ要素iについて、計算A[i]=B[i]+C[i]を実行するために、Bのi番目のデータ要素を読み出すために1つの特定の行が開かれる。次いで、データ要素は一時バッファに格納される。Cのi番目のデータ要素も同じ行から読み出される。次いで、データ要素の加算が実行される。加算の結果は同じ一時バッファに格納される。Aのi番目のデータ要素に結果を格納するために、結果は同じ行に格納される。全てのデータ要素が処理されるまで、同じ処理が各バンク内で繰り返される。
したがって、IBFSマッピングを使用して、計算A[i]=B[i]+C[i]の演算を実行するために1つの行のみが開かれる必要がある。例えば、計算A[i]=B[i]+C[i]の第1の演算、すなわちi=0の場合の計算の演算を実行するために、行R0と、行R0からのデータ要素B0、C0、A0のみが必要とされる。更に、IBFSマッピングを使用して、例えばi=8の場合、計算A[i]=B[i]+C[i]の第2の演算を、同じ行R0からのデータ要素A8、B8、C8を使用して実行することができる。計算A[i]=B[i]+C[i]の場合、バンクごとのPIM構成は、図2のメモリシステムのためのアドレスインターリーブマッピングを使用する以前の技術と比較して、IBFSを使用して行競合の数の最大6倍の低減を達成する。したがって、PIMスループットは、IBFSマッピングを使用して大幅に改善される。
IBFSポリシーを実装するために、バンクの各行の同じ場所に配置されるフレーム数を示すストライプ数(NoS)が定義される。フレームのそのような連続グループの各々は、フレームのスーパーセットと呼ばれる。図4Bに示されるように、行R0は、4つの連続フレームから来る等しい数のデータ要素、すなわち、ページA、B、C、Dの各々からの2つのデータ要素を含む。データ要素は、各ストライプが単一のページからの要素を含む「ストライプ」形態で各行の内側に配置される。図4Bに示されるように、NoSは4であり、各ストライプサイズは2である。ページA、B、C、Dの各々からのデータ要素を保持するために使用される行の全て(例えば、R0~R3)は、NoS及びストライプサイズパラメータに従い、そのような行のセットは、行のスーパーセットと呼ばれる。したがって、アドレスインターリーブメモリマッピング方式を使用して行R0に配置されたであろうページAからの8個のデータ要素(例えば、A0、A8、A16、A24、A32、A40、A48、A56)は、IBFSマッピングを使用して、行R0~R3のスーパーセット(例えば、A0、A8からR0、A16、A24からR1、A32、A40からR2、A48、A56からR3)に分散される。同様に、ページB、C、Dからのデータ要素は、スーパーセットの行にわたって分散される。各行内では、異なるフレームから来るデータ要素のストライプ開始位置は、スーパーセット内の第1のフレームに対するフレームの相対位置に依存する。
以下の式は、IBFSマッピングに従って物理メモリ内の行インデックス値及び列インデックス値を提供するために使用される。図3に示されるような物理アドレスの同じビットは、行及び列アドレス指定のために使用されるが、ビットを復号するために、異なる式がメモリコントローラによって利用される。以下の式は、オペレーティングシステムのページサイズ及びNoS等の外部パラメータの関数である。式は柔軟であり、異なるパラメータを有するメモリシステムで使用することができる。ここでは、全てのパラメータが2の累乗であるシステムについて示されている。2の累乗でないパラメータをサポートするための拡張は、当業者には明らかであろう。更に、例示的なメモリシステムパラメータ及びオペレーティングシステムパラメータを、サンプル計算とともに以下に示す。
メモリシステム特有のパラメータ:
バンクサイズ=32
トータルバンク=チャネルごとのバンク×トータルチャネル=4×2=8
バンクごとの行=4
行ごとの列=8
OS/ユーザ特有のパラメータ:
フレームサイズ(すなわち、ページサイズ)=64
ストライプ数=4
必要な計算:
ストライプサイズ=行ごとの列/ストライプ数=8/4=2
バンクごとのフレーム=バンクサイズ/(フレームサイズ/トータルバンク)=32/(64/8)=4
バンクごとのフレームごとの行=バンクごとの行/バンクごとのフレーム=4/4=1
IBFSマッピングのために必要な式:
IBFS列アドレス=IBFS列ベース+IBFS列オフセット
IBFS列ベース=相対フレーム位置×ストライプサイズ=(フレーム数%ストライプ数)×ストライプサイズ
IBFS列オフセット=列アドレス%ストライプサイズ
IBFS行アドレス=IBFS行ベース+IBFS行オフセット1+IBFS行オフセット2
IBFS行ベース=スーパーセット数×バンクごとのフレームごとの行×ストライプ数=(フレーム数/ストライプ数)×バンクごとのフレームごとの行×ストライプ数
IBFS行オフセット1=(行アドレス%バンクごとのフレームごとの行)×ストライプ数
IBFS行オフセット2=列アドレス/ストライプサイズ
メモリシステム特有のパラメータ:
バンクサイズ=32
トータルバンク=チャネルごとのバンク×トータルチャネル=4×2=8
バンクごとの行=4
行ごとの列=8
OS/ユーザ特有のパラメータ:
フレームサイズ(すなわち、ページサイズ)=64
ストライプ数=4
必要な計算:
ストライプサイズ=行ごとの列/ストライプ数=8/4=2
バンクごとのフレーム=バンクサイズ/(フレームサイズ/トータルバンク)=32/(64/8)=4
バンクごとのフレームごとの行=バンクごとの行/バンクごとのフレーム=4/4=1
IBFSマッピングのために必要な式:
IBFS列アドレス=IBFS列ベース+IBFS列オフセット
IBFS列ベース=相対フレーム位置×ストライプサイズ=(フレーム数%ストライプ数)×ストライプサイズ
IBFS列オフセット=列アドレス%ストライプサイズ
IBFS行アドレス=IBFS行ベース+IBFS行オフセット1+IBFS行オフセット2
IBFS行ベース=スーパーセット数×バンクごとのフレームごとの行×ストライプ数=(フレーム数/ストライプ数)×バンクごとのフレームごとの行×ストライプ数
IBFS行オフセット1=(行アドレス%バンクごとのフレームごとの行)×ストライプ数
IBFS行オフセット2=列アドレス/ストライプサイズ
いくつかの実施形態では、上記の式について、フレームサイズは、トータルバンク×行ごとの列の倍数である。ストライプ数(NoS)は2の累乗であり、最大許容値は行ごとの列の値である。列アドレス及び行アドレスは、それぞれ列アドレスビット及び行アドレスビットによって表される基本2進数(basic binary numbers)を指す。一実施形態では、全ての演算は整数演算である。
C.イントラチャネルフレームストライピングポリシー
イントラチャネルフレームストライピングポリシー(ICFS)は、連続フレームからのデータ要素を、各チャネルのバンクにわたって対応する行内に同じ場所に配置するようにマッピングする。データ要素を、実装に応じて異なる方法で同じ場所に配置することができる。例えば、連続フレームからのデータ要素の対応するサブセットは、チャネルの単一のチャネル行又は複数のチャネル行にインターリーブされ得る。ICFSは、図2に示される例示的なメモリシステムを参照して説明される。この例では、物理アドレス空間は4つのフレーム、すなわちフレーム0~3を有し、4つのページA、B、C、Dがそれぞれフレーム0~3に割り当てられる。説明を容易にするために、単一のチャネルを使用してICFSの一例を示す。
イントラチャネルフレームストライピングポリシー(ICFS)は、連続フレームからのデータ要素を、各チャネルのバンクにわたって対応する行内に同じ場所に配置するようにマッピングする。データ要素を、実装に応じて異なる方法で同じ場所に配置することができる。例えば、連続フレームからのデータ要素の対応するサブセットは、チャネルの単一のチャネル行又は複数のチャネル行にインターリーブされ得る。ICFSは、図2に示される例示的なメモリシステムを参照して説明される。この例では、物理アドレス空間は4つのフレーム、すなわちフレーム0~3を有し、4つのページA、B、C、Dがそれぞれフレーム0~3に割り当てられる。説明を容易にするために、単一のチャネルを使用してICFSの一例を示す。
図2からのチャネル0がICFSを示すために使用されると仮定する。図5Aは、図2に関して説明したようなアドレスインターリーブメモリマッピング方式を有するチャネル0を示す。図5Bは、ICFSアドレスマッピングを有する図2からのチャネル0を示す。図5Bに示されるように、ICFSマッピングを用いて、ページA、B、C内の1つの要素iについて計算A[i]=B[i]+C[i]を実行するために、バンク1の1つの特定の行が開かれて、Bのi番目のデータ要素が読み出される。次いで、データ要素は、一時バッファに格納される。バンク2の1つの特定の行は、Cのi番目のデータ要素を読み出すために開かれる。次いで、データ要素の加算が実行される。加算の結果は同じ一時バッファに格納される。Aのi番目のデータ要素に結果を格納するために、バンク0の1つの特定の行が開かれ、結果がバンク0のその行に戻されて格納される。
したがって、ICFSマッピングを使用して、計算A[i]=B[i]+C[i]の演算を実行するために、3つの異なるバンクにわたる3つの行のみが開かれる必要がある。例えば、計算A[i]=B[i]+C[i]の第1の演算、すなわちi=0の場合の計算の演算を実行するために、対応する行からのデータ要素A0、B0、C0に対して、バンク0からの行R0、バンク1からの行R0、バンク2からの行R0のみが必要とされる。更に、ICFSマッピングを使用して、例えばi=8、16、24、32、40、48、56である場合、計算A[i]=B[i]+C[i]の7つの追加の演算が、3つのバンクにわたって同じ行のセットを使用して実行され得る。計算A[i]=B[i]+C[i]の場合、チャネルごとのPIMシステムは、図2のメモリに対してアドレスインターリーブマッピングを使用する以前の技術と比較して、ICFSを使用して行競合の数の最大24倍の低減を達成する。したがって、PIMスループットは、ICFSマッピングを使用して大幅に改善される。
ICFSポリシーを実装するために、「チャネル行」と呼ばれる行のチャネルレベルのビューが利用される。チャネル行は、それぞれのチャネルの全てのバンクからの同じ行を備える。例えば、図5Bから、チャネル行は、バンク0からのR0、バンク1からのR0、バンク2からのR0、バンク3からのR0を備える。行のチャネルレベルのビューは、IBFSマッピングのために利用される「行」又は「バンク行」と呼ばれる行のバンクレベルのビューと対比される。
各チャネル行の同じ場所に配置されるフレーム数を示すストライプ数(NoS)が定義される。フレームのそのような連続グループの各々は、フレームのスーパーセットと呼ばれる。上述したように、同じ番号のバンク行の全ては、一緒にチャネル行として見なされ、例えば、バンク0、1、2、3の行R0は、一緒にチャネル行R0として見なされる。ICFSマッピングでは、バンク行は1つの単一のユニットと見なされ、ストライプサイズはこのユニットを使用して測定される。
図5Bに示されるように、チャネル行R0は、4つの連続フレームからの等しい数のバンク行サイズのデータ要素、すなわち、ページA、B、C、Dの各々からの1つのそのような要素を含み、バンクにわたって「ストライプ」形式で配置され、各ストライプは単一のページからの要素を含む。図5Bに示されるように、NoSは4であり、各ストライプサイズは1である。ページA、B、C、Dの各々からのデータ要素を保持するために使用される全てのチャネル行(R0からR3)は、NoS及びストライプサイズパラメータに従い、そのようなチャネル行のセットは、チャネル行のスーパーセットと呼ばれる。したがって、ページAからの4つのバンク行サイズのデータ要素は、アドレスインターリーブメモリマッピング方式を使用してチャネル行R0に配置されたはずであり、ICFSマッピングを使用してチャネル行R0~R3のスーパーセットにわたって(例えば、バンク0のR0はチャネル行R0に、バンク1のR0はチャネル行R1に、バンク2のR0はチャネル行R2に、バンク3のR0はチャネル行R3に)分散される。同様に、ページB、C、Dからのデータ要素は、スーパーセットのチャネル行にわたって分散される。各チャネル行内で、異なるフレームから来るデータ要素のストライプ開始位置は、スーパーセット内の第1のフレームに対するフレームの相対位置に依存する。
以下の式は、ICFSマッピングに従って物理メモリ内の行インデックス値及びバンクインデックス値を提供するために使用される。図3に示されるような物理アドレスの同じビットが、行及びバンクアドレス指定のために使用されるが、ビットを復号するために、メモリコントローラによって異なる式が利用される。式は、OSページサイズ及びNoS等の外部パラメータの関数である。式は柔軟であり、異なるパラメータを有するメモリシステムで使用することができる。ここでは、全てのパラメータが2の累乗であるシステムについて示されている。2の累乗でないパラメータをサポートするための拡張は、当業者には明らかであろう。更に、例示的なメモリシステムパラメータ及びオペレーティングシステムパラメータを、サンプル計算とともに以下に示す。
メモリシステムに特有のパラメータ:
チャネルサイズ=16
トータルチャネル=2
チャネルごとのチャネル行=4
チャネル行ごとのバンク=4
ユーザによって選択されるパラメータ:
フレームサイズ(すなわち、ページサイズ)=8
ストライプ数=4
必要な計算:
ストライプサイズ=チャネル行ごとのバンク/ストライプ数=4/4=1
チャネルごとのフレーム=チャネルサイズ/(フレームサイズ/トータルチャネル)=16/(8/2)=4
チャネルごとのフレームごとのチャネル行=チャネルごとのチャネル行/チャネルごとのフレーム=4/4=1
ICFSマッピングのために必要な式:
ICFSバンクアドレス=ICFSバンクベース+ICFSバンクオフセット
ICFSバンクベース=相対フレーム位置×ストライプサイズ=(フレーム数%ストライプ数)×ストライプサイズ
ICFSバンクオフセット=バンクアドレス%ストライプサイズ
ICFS行アドレス=ICFS行ベース+ICFS行オフセット1+ICFS行オフセット2
ICFS行ベース=スーパーセット数×チャネルごとのフレームごとのチャネル行xストライプ数=(フレーム数/ストライプ数)×チャネルごとのフレームごとのチャネル行xストライプ数
ICFS行オフセット1=(行アドレス%チャネルごとのフレームごとのチャネル行)xストライプ数
ICFS行オフセット2=バンクアドレス/ストライプサイズ
メモリシステムに特有のパラメータ:
チャネルサイズ=16
トータルチャネル=2
チャネルごとのチャネル行=4
チャネル行ごとのバンク=4
ユーザによって選択されるパラメータ:
フレームサイズ(すなわち、ページサイズ)=8
ストライプ数=4
必要な計算:
ストライプサイズ=チャネル行ごとのバンク/ストライプ数=4/4=1
チャネルごとのフレーム=チャネルサイズ/(フレームサイズ/トータルチャネル)=16/(8/2)=4
チャネルごとのフレームごとのチャネル行=チャネルごとのチャネル行/チャネルごとのフレーム=4/4=1
ICFSマッピングのために必要な式:
ICFSバンクアドレス=ICFSバンクベース+ICFSバンクオフセット
ICFSバンクベース=相対フレーム位置×ストライプサイズ=(フレーム数%ストライプ数)×ストライプサイズ
ICFSバンクオフセット=バンクアドレス%ストライプサイズ
ICFS行アドレス=ICFS行ベース+ICFS行オフセット1+ICFS行オフセット2
ICFS行ベース=スーパーセット数×チャネルごとのフレームごとのチャネル行xストライプ数=(フレーム数/ストライプ数)×チャネルごとのフレームごとのチャネル行xストライプ数
ICFS行オフセット1=(行アドレス%チャネルごとのフレームごとのチャネル行)xストライプ数
ICFS行オフセット2=バンクアドレス/ストライプサイズ
いくつかの実施形態では、上記の式について、フレームサイズは、トータルチャネル×チャネルごとのバンクの倍数である。ストライプ数(NoS)は2の累乗であり、最大許容値はチャネルごとのバンクの値である。バンクアドレス及び行アドレスは、それぞれ、バンクアドレスビット及び行アドレスビットによって表される基本2進数を指す。一実施形態では、全ての演算は整数演算である。
D.実装の詳細
IBFS及びICFSは、既存のポリシーと並んでメモリコントローラに組み込まれる。提供される式は、シフト演算によって効率的に達成され得る、2の累乗の数による除算/乗算/モジュロ演算を含む。メモリコントローラは、非PIM/バンクごとPIM対応/チャネルごとPIM可能システムに応じて、汎用IBFS及びICFSを使用するように構成される。例えば、PIM実行ユニットがバンクレベルでメモリ構造に結合されるシステム構成の場合、IBFSは、メモリコントローラによって使用されるように選択されてもよい。PIM実行ユニットがチャネルレベルでメモリ構造に結合されるシステム構成の場合、ICFSは、メモリコントローラによって使用されるように選択されてもよい。
IBFS及びICFSは、既存のポリシーと並んでメモリコントローラに組み込まれる。提供される式は、シフト演算によって効率的に達成され得る、2の累乗の数による除算/乗算/モジュロ演算を含む。メモリコントローラは、非PIM/バンクごとPIM対応/チャネルごとPIM可能システムに応じて、汎用IBFS及びICFSを使用するように構成される。例えば、PIM実行ユニットがバンクレベルでメモリ構造に結合されるシステム構成の場合、IBFSは、メモリコントローラによって使用されるように選択されてもよい。PIM実行ユニットがチャネルレベルでメモリ構造に結合されるシステム構成の場合、ICFSは、メモリコントローラによって使用されるように選択されてもよい。
フレームサイズ及びNoS等のパラメータが、IBFS及びICFSを利用したPIM対応メモリシステムに提供される。フレームサイズの選択は、オペレーティングシステム仕様に従って提供される。NoSは、システム起動時に(例えば、基本入出力システムを介して)ユーザ選好に従って静的に提供されるか、又は、柔軟性を達成するために動的に提供される。
PIM対応メモリシステムがIBFS及びICFSの利点を活用できるように、オペレーティングシステム及びコンパイラの変更が行われる。オペレーティングシステムは、コンパイラからヒントを受信することによって、互いに関連付けられているメモリ割り当て(mallocs)を認識することができる。プログラマは、何れのデータ構造がPIM計算に関与するかを示すヒントをコンパイラに提供することができる。次いで、コンパイラは、PIMデータ構造と呼ばれる、PIM計算に一緒に参加している関連データ構造を決定する。コンパイラは、そのようなPIMデータ構造のNoS以下の数を選択し、単一の色を割り当てる。PIMデータ構造の各セットには、個別の色が割り当てられる。任意のそのようなPIMデータ構造に対してmalloc呼び出しが行われる場合にはいつでも、PIMデータ構造は、仮想アドレス空間内の必要な数のページが割り当てられる。オペレーティングシステムは、それぞれのPIMデータ構造に関連付けられた色である、仮想ページに関連付けられた個別の色について通知される。この時点では、物理メモリ(フレーム)は割り当てられていない。同じセットからの任意の他のPIMデータ構造が割り当てられる場合、同じ処理が行われる。次いで、プログラムがそのようなページにアクセスする場合、オペレーティングシステムは、フレームのスーパーセットのチャンク内の同じ色を有する要求されたページに物理メモリを割り当てる。そのようなデータ構造の各々がnページを有する場合、フレームの1つのスーパーセットがPIMデータ構造のi番目のページに要求に応じて割り当てられ、フレームの別のスーパーセットがPIMデータ構造の(i+1)番目のページに要求に応じて割り当てられ、n番目のページまで同様である。
例えば、PIM計算a[]=b[]+c[]に対するa[]、b[]、c[]に対するページ割り当てを考える。各割り当てが4ページを必要とすると仮定する。12(3×4)ページの全てに赤色が割り当てられる。オペレーティングシステムは、全ての割り当てのページ[i]が類似していること、すなわち、a[]のページ[0]の割り当てに対する要求が、b[]及びc[]に対するページ[0]の割り当てをトリガすることを確実にする。割り当て要求の全ては、フレームの同じスーパーセットに含まれる連続フレームで満たされる。b[]及びc[]のページ[0]の割り当てをトリガする代わりに、ページが要求された場合に割り当てがトリガされる。しかしながら、フレームは、[]のページ[0]が割り当てられているフレームの同じスーパーセット内の割り当てられていないページのために予約される。断片化を回避するために、フレームのスーパーセットの任意の未使用フレームは、将来の要求において割り当てられるようにオペレーティングシステムに戻され得る。
プログラムが仮想アドレスを指定する任意のPIMコマンドを発行すると、通常のアドレス変換処理に従って仮想アドレスが物理アドレスに変換される。物理アドレスは、メモリコントローラがIBFS及びICFSを使用するように構成されるので、PIMフレンドリな方法でマッピングされる。
上述したように、IBFS及びICFSは、静的方式又は動的方式として実装され得る。静的方式では、NoSは、ユーザ選好に従って、システム起動時に任意の定数(例えば、2/4/8)に結び付けられる。メモリ構造は指定されたNoSでマッピングされ、マッピングは異なるNoSでシステムを再起動することなく変更することはできない。静的方式は、上で提案されたもの以外の余分なステップを必要としない。
動的方式は、ユーザ選好に従って、PIMデータ構造に対応するページのためのPIMフレンドリなアドレスマッピング、及び、同時に他のメモリページのための汎用アドレスマッピングを可能にすることによって、メモリマッピングに対する柔軟性及びより微細な程度の制御を提供する。上で提案されたように、コンパイラは、必要なNoSを有する関連するPIMデータ構造の異なるセットを識別し、そのようなセットの各々を個別の色でマークする。任意のそのようなセットのページに対する物理メモリ割り当て時に、上述したオペレーティングシステム割り当て処理は、スーパーセットがNoS数のフレームを含むように、必要なフレームのスーパーセットを保証する。任意のデータ構造及び/又はページは、その存続期間を通じて1つのNoS値のみに関連付けられ得る。任意のメモリアクセス、例えば、ストレージファイルからこれらのフレームへの読み出し若しくは書き戻し、又は、プロセッサコアからの任意のアクセスがこれらのページに対して行われる場合にはいつでも、メモリコントローラは、ページの任意の所定の仮想アドレスに対する仮想アドレスから物理メモリアドレスへの変換の後にメモリコントローラにおいて受信される物理メモリアドレスとともに、対応するNoS情報について常に通知される。メモリコントローラは、そのようなメモリ要求の各々に含まれるNoS情報を認識し、IBFS又はICFSごとに物理メモリアドレスを復号する。したがって、各データ構造/ページのNoS情報を追跡し、任意のメモリアクセス要求の物理メモリアドレスとともにメモリコントローラに伝達しなければならない。
メモリコントローラへのNoS情報の伝達を達成するために、4つの可能なアプローチ、(i)命令ベースのアプローチ及び(ii)ページテーブルエントリ(PTE)ベースのアプローチ、(iii)構成レジスタアプローチ、(iv)モードレジスタベースのアプローチが利用される。命令ベースのアプローチでは、命令セットアーキテクチャ(ISA)は、PIM計算で使用されるようにユーザによって注釈が付けられた任意のメモリ構造にアクセスするための特殊な読み込み/格納命令を含むように拡張される。コンパイラが、最初に、必要なNoS情報とともにアクセスされる関連するPIMデータ構造のセットを選択するコンパイラパスにおいて、コンパイラは、例えば、そのシンボルテーブルにおいて、そのような各メモリ構造に対応するNoS情報を追跡する。後に、これらのメモリ構造に対して、必要に応じて、コンパイラは、命令に埋め込まれたNoS情報を有する特殊な読み込み/格納命令(例えば、LOAD_PIM、STORE_PIM)を発行する。一実施形態では、一度に1つのIBFS又はICFSのみをサポートするメモリシステムの場合、IBFS又はICFSのうち何れがメモリコントローラによって使用される必要があるかを伝達するために動的指定子は必要とされない。他の実施形態では、IBFS及びICFSの両方を動的に可能にするメモリシステムの場合、単一のビットポリシーインジケータ情報が、IBFS又はICFSの間で選択するためにメモリコントローラによって使用されるNoS情報とともに、PIMデータ構造のための特殊な読み込み/格納命令に埋め込まれる。ポリシーインジケータは、ここで説明したNoS情報と同様に、コンパイラによって決定され、管理される。
メモリコントローラは、そのような特殊な読み込み/格納コマンドを認識し、受信したコマンドから必要なNoS情報を見つけて、物理メモリアドレスマッピングをIBFS若しくはICFS又は汎用アドレスマッピングに従って正しく復号する機能を備えている。実装の選択に応じて、異なる数のビットを使用してNoS情報を伝達することができる。例えば、2ビットのみを使用して、1、2、4、8の4つの異なるNoS値が符号化され、ここで、1のNoS値は、アドレスインターリーブメモリマッピング方式等のデフォルトマッピングポリシーを示す。NoS情報が提供されない通常の読み込み/格納コマンドの場合、メモリコントローラは、1のNoS値を使用し、アドレスインターリーブメモリマッピング方式等のデフォルトマッピングポリシーにデフォルト設定する。
PTEベースのアプローチでは、割り当てられたページごとに、PTE内のビットのセットを使用して、それぞれのページの対応するNoS情報を保持する。2ビットのみで、1、2、4、8の4つの異なるNoS値を符号化することが可能であり、1のNoS値は、アドレスインターリーブメモリマッピング方式等のデフォルトマッピングポリシーを示す。何れのPIM計算にも属さない任意の通常のページについても、デフォルトNoS値1が格納される。NoS値を示すPTE内のこれらのビットは、物理メモリアドレスとともに変換索引バッファ(TLB)エントリにキャッシュされる。任意のメモリアクセス要求に対して、物理メモリアドレスとともに、対応するNoS情報が含まれる。任意のそのようなメモリ要求がメモリコントローラに到達すると、メモリコントローラは、そのようなメモリ要求とともに含まれるNoS情報を認識し、IBFS若しくはICFS又は汎用アドレスマッピングに従って物理メモリアドレスマッピングを復号する。一実施形態では、一度に1つのIBFS又はICFSのみをサポートするメモリシステムの場合、IBFS又はICFSのうち何れがメモリコントローラによって使用される必要があるかを伝達するために動的指定子は必要とされない。他の実施形態では、IBFS及びICFSの両方を動的に可能にするメモリシステムの場合、単一のビットポリシーインジケータ情報が、IBFS又はICFSの間で選択するためにメモリコントローラによって使用されるNoS情報とともに、任意のメモリアクセス要求に含まれる。ポリシーインジケータは、PTEベースのアプローチにおけるNoS情報と同様に選択され、管理される。
構成レジスタベースのアプローチでは、PIMデータ構造を格納する物理メモリアドレスの範囲について、メモリコントローラに関連付けられた1つ以上の構成レジスタが、それぞれの物理アドレス範囲の対応するNoS情報を保持するために使用される。物理アドレスの範囲へのPIMデータ構造の集約、及び、NoS情報を用いた1つ以上の構成レジスタのプログラミングは、ソフトウェア(例えば、オペレーティングシステム)又はハードウェアによって管理される。2ビットのみで、2、4、8、16の4つの異なるNoS値を符号化することが可能である。構成レジスタは、PIMデータ構造を保持するアドレス範囲のみを保持するので、このアプローチは、アドレスインターリーブメモリマッピング方式等のデフォルトマッピングポリシーのためのインジケータを明示的に格納することを必要としない。メモリコントローラで受信された任意のメモリアクセス要求に対して、関連付けられた物理メモリアドレスが、構成レジスタに問い合わせるために使用される。アドレスが1つ以上の構成レジスタにプログラムされた範囲内に入る場合、その構成レジスタからの対応するNoS情報がメモリアクセスに関連付けられる。PIMデータ構造にアクセスしない通常のアクセスの場合、構成レジスタはエントリを保持せず、NoS値1等のデフォルトマッピングが使用される。メモリコントローラは、NoS情報を認識し、IBFS又はICFS若しくは汎用アドレスマッピングに従って物理メモリアドレスマッピングを復号する。メモリシステムがIBFS及びICFSの両方を動的にサポートする実施形態では、対応する物理アドレス範囲に対してIBFS又はICFSの何れがメモリコントローラによって使用される必要があるかを示すために、単一のビットポリシーインジケータ情報もNoS情報とともに構成レジスタ内に保持される。ポリシーインジケータは、構成レジスタベースのアプローチにおけるNoS情報と同様に選択され、管理される。
モードレジスタベースのアプローチでは、プロセッサ又はハードウェア上で実行されるソフトウェアが、メモリコントローラに関連付けられた単一のモードレジスタに、全ての後続のメモリアクセスのためのNoS情報を書き込む。2ビットのみで、1、2、4、8の4つの異なるNoS値を符号化することが可能であり、1のNoS値は、アドレスインターリーブメモリマッピング方式等のデフォルトマッピングポリシーを示す。一実施形態では、モードレジスタのプログラミングに続く全てのメモリアクセスは、モードレジスタからのNoS情報を使用する。モードレジスタは、後続のメモリアクセスに関連するNoS情報を変更するのに必要な頻度でソフトウェアによって更新してもよい。別の実施形態では、単一のモードレジスタの代わりに、メモリコントローラは、システム内の各メモリ要求生成器(例えば、各コア又は各スレッド)のためのモードレジスタを有する。このような実施形態では、各モードレジスタからの設定は、関連するリクエスタから発信されたメモリ要求にのみ適用される。メモリシステムがIBFS及びICFSの両方を動的にサポートする実施形態では、後続のメモリアクセスのためにIBFS又はICFSの何れがメモリコントローラによって使用される必要があるかを示すために、単一のビットポリシーインジケータ情報もNoS情報とともにモードレジスタに書き込まれる。ポリシーインジケータは、モードレジスタベースのアプローチにおけるNoS情報と同様に選択され、管理される。
提案されたハードウェア/ソフトウェア協働アドレスマッピング方式は、図2のメモリシステムのための以前の方式と比較して、それぞれIBFS及びICFSポリシーとともにアクセスされる大規模データ構造に対応するデータ要素にアクセスしながら、行アクティブ化の数の低減を提供する。そのような低減は、優れたPIM性能及びエネルギー効率をもたらす。
E.例示的手順
図6は、IBFS及びICFSアドレスマッピングを使用してメモリにアクセスするためのアプローチを示すフロー図600である。説明のために、図6は、図1に示されるアーキテクチャに関して説明される。
図6は、IBFS及びICFSアドレスマッピングを使用してメモリにアクセスするためのアプローチを示すフロー図600である。説明のために、図6は、図1に示されるアーキテクチャに関して説明される。
ステップ602において、メモリに格納された複数のデータ要素のうち1つのデータ要素に対するメモリアクセス要求が、メモリコントローラ102によって受信される。いくつかの実施形態では、メモリは、メモリ内処理(PIM)対応メモリを備える。メモリアクセス要求は、物理メモリアドレス及びストライプ数(NoS)値を備える。例えば、ホストプロセッサは、メモリアクセス要求を送信し、その要求をメモリコントローラ102に送信する。
一実施形態では、NoS値は、特殊命令セットアーキテクチャ(ISA)命令から導出される。別の実施形態では、NoS値は、ページテーブルエントリ(PTE)の1つ以上のビットから導出される。別の実施形態では、NoS値は、要求の物理メモリアドレスを含む物理メモリアドレスの範囲に関連付けられた1つ以上の構成レジスタから導出される。別の実施形態では、NoS値は、メモリコントローラに関連付けられたモードレジスタから導出される。
ステップ604において、マッピングを使用して、行インデックス値及び列インデックス値が、受信された物理メモリアドレス及びNoS値に基づいてメモリコントローラ102によってデータ要素について計算される。例えば、メモリコントローラ102は、マッピングロジック110を使用して、データ要素の行インデックス値及び列インデックス値を計算する。
一実施形態では、マッピングはIBFSマッピングを備える。そのような実施形態では、メモリは複数のバンクを備え、複数のバンクの各バンクは、複数の行、複数の列、対応する実行ユニットを含む。いくつかの実施形態において、メモリは、PIM対応メモリを備え、対応する実行ユニットは、PIM実行ユニットを備える。複数のデータ要素は、複数のバンクのうち特定のバンクについて、計算の個別のオペランドに対応する複数のデータ要素のデータ要素を、特定のバンクの複数の行のうち単一の行にグループ化することによって、メモリに格納される。
別の実施形態では、マッピングはICFSマッピングを備える。そのような実施形態では、メモリは複数のチャネルを備え、複数のチャネルの各チャネルは、複数のバンク、複数のチャネル行、対応する実行ユニットを含む。いくつかの実施形態では、メモリはPIM対応メモリを備え、対応する実行ユニットはPIM実行ユニットを備える。複数のチャネル行の各チャネル行は、複数のチャネルのそれぞれのチャネルの複数のバンクの全てのバンクからの同じ行を備える。複数のデータ要素は、複数のチャネルのうち特定のチャネルに対して、計算の別個のオペランドに対応する複数のデータ要素のデータ要素を、特定のチャネルに対する複数のチャネル行のうち単一のチャネル行にグループ化することによって、メモリに格納される。
ステップ606において、データ要素は、行インデックス値及び列インデックス値に基づいてメモリコントローラ102によってメモリから取り出される。一実施形態では、IBFSの場合、メモリコントローラ102は、行インデックス値を行デコーダ112に送信し、列インデックス値を列デコーダ114に送信して、行を開き、データ要素にアクセスする。別の実施形態では、メモリ構造108は、複数のバンクを有するチャネルとして見られ、ICFSの場合、メモリコントローラ102は、複数のバンクからバンクを選択するためにバンクインデックス値を送信し、次いで、行を開き、データ要素にアクセスするために行インデックス値及び列インデックス値を送信する。PIM実行ユニット106は、そのようなデータ要素を集約し、必要な動作を実行し、結果をメモリ構造108及び/又はメモリコントローラ102に送信する。
一実施形態では、一度にIBFS又はICFSのうち1つのみをサポートするメモリシステムの場合、IBFS又はICFSのうち何れがメモリコントローラによって使用される必要があるかを伝達するために動的指定子は必要とされない。他の実施形態では、IBFS及びICFSの両方を動的に許可するメモリシステムの場合、ポリシーインジケータ情報は、IBFS又はICFSの間で選択するためにメモリコントローラによって使用されるNoS情報とともに伝達される。ポリシーインジケータ情報は、本明細書で説明するNoS情報と同様に決定され、管理される。
F.アプリケーション
いくつかの実施形態では、IBFS及びICFS等の技術は、種々の機械学習(ML)アプリケーションに適用される場合に、有用であり得る。例えば、ディープニューラルネットワーク(DNN)を実装するMLアプリケーションは、一般に、2つの大きな行列を要素ごとに加算し、その結果を別の行列に格納する(例えば、A[i]=B[i]+C[i])等の演算を使用する。複数のレイヤを構成要素として有する残差ユニットを使用するDNNでは、各残差ユニットの1つのレイヤが要素ごとの行列加算演算を実行してもよい。IBFS及びICFS技術を使用して、そのような行列のデータ要素の対応するサブセット(例えば、A[]、B[]、C[])が同じDRAMバンクレベル行又はチャネルレベル行においてインターリーブされる場合、要素ごとの行列加算演算を実行するためにこれらのデータ要素にアクセスする間に遭遇する行競合はより少なくなる。したがって、IBFS及びICFSは、DNNがより少ない行競合で同じ動作を実行することを可能にし、様々なMLアプリケーションの速度を効果的に向上させる。
いくつかの実施形態では、IBFS及びICFS等の技術は、種々の機械学習(ML)アプリケーションに適用される場合に、有用であり得る。例えば、ディープニューラルネットワーク(DNN)を実装するMLアプリケーションは、一般に、2つの大きな行列を要素ごとに加算し、その結果を別の行列に格納する(例えば、A[i]=B[i]+C[i])等の演算を使用する。複数のレイヤを構成要素として有する残差ユニットを使用するDNNでは、各残差ユニットの1つのレイヤが要素ごとの行列加算演算を実行してもよい。IBFS及びICFS技術を使用して、そのような行列のデータ要素の対応するサブセット(例えば、A[]、B[]、C[])が同じDRAMバンクレベル行又はチャネルレベル行においてインターリーブされる場合、要素ごとの行列加算演算を実行するためにこれらのデータ要素にアクセスする間に遭遇する行競合はより少なくなる。したがって、IBFS及びICFSは、DNNがより少ない行競合で同じ動作を実行することを可能にし、様々なMLアプリケーションの速度を効果的に向上させる。
Claims (21)
- メモリコントローラであって、
マッピングロジックを備え、
前記マッピングロジックは、
複数のデータ要素がメモリに格納されている場所を判定することであって、前記メモリは複数のバンクを有し、前記複数のバンクの各バンクは、複数の行と、複数の列と、対応する実行ユニットと、を含む、ことと、
前記複数のバンクのうち特定のバンクについて、前記複数のデータ要素のうちデータ要素の対応するサブセットを、前記特定のバンクの前記複数の行のうち単一の行にインターリーブすることと、
を行うように構成されている、
メモリコントローラ。 - 前記実行ユニットは、前記特定のバンクの前記複数の行のうち前記単一の行にインターリーブされたデータ要素の前記対応するサブセットに基づいて、計算の第1の演算を実行し、
前記実行ユニットは、前記特定のバンクの前記複数の行のうち前記単一の行にインターリーブされたデータ要素の前記対応するサブセットに基づいて、前記計算の追加の演算を実行する、
請求項1のメモリコントローラ。 - 前記マッピングロジックは、
前記複数のデータ要素のうち特定のデータ要素に対するメモリアクセス要求であって、物理メモリアドレス及び関連付けられたストライプ数(NoS)値を含むメモリアクセス要求に応じて、前記NoS値に基づいて前記物理メモリアドレスを復号して、前記特定のデータ要素のバンクインデックス、行インデックス値及び列インデックス値を生成するように更に構成されている、
請求項1のメモリコントローラ。 - 前記複数のデータ要素のうちデータ要素の前記対応するサブセットは、前記複数のバンクのうち前記特定のバンクの前記複数の行のうち単一の行の同じ場所に配置するフレーム数を定義するストライプ数(NoS)値に基づいて、前記特定のバンクに格納される、
請求項1のメモリコントローラ。 - 前記NoS値は、特殊命令セットアーキテクチャ(ISA)命令、ページテーブルエントリ(PTE)の1つ以上のビット、構成レジスタの1つ以上のビット、又は、モードレジスタの1つ以上のビットのうち1つ以上から導出される、
請求項4のメモリコントローラ。 - 前記複数のバンクのうち前記特定のバンクの前記複数の行の各行の同じ場所に、各行に対応する前記NoS値に基づいて、複数のフレームが配置される、
請求項4のメモリコントローラ。 - 前記複数のバンクのうち前記特定のバンクの前記複数の行の各行は、前記複数のフレームの各フレームからの前記複数のデータ要素のうち1つ以上のデータ要素を含み、
前記複数のバンクのうち前記特定のバンクの前記複数の行の各行は、前記複数のフレームの各フレームからの等しい数のデータ要素を含む、
請求項6のメモリコントローラ。 - 前記メモリは、プロセッシングインメモリ(PIM)対応メモリを備え、前記実行ユニットは、PIM実行ユニットを含む、
請求項6のメモリコントローラ。 - メモリコントローラであって、
マッピングロジックを備え、
前記マッピングロジックは、
複数のデータ要素がメモリに格納されている場所を判定することであって、前記メモリは複数のチャネルを有し、前記複数のチャネルの各チャネルは、複数のバンクと、複数のチャネル行と、対応する実行ユニットと、を含む、ことと、
前記複数のチャネル行の各チャネル行は、前記複数のチャネルの各チャネルの前記複数のバンクの全てのバンクからの同じ行を含み、
前記複数のチャネルのうち特定のチャネルについて、前記複数のデータ要素のうちデータ要素の対応するサブセットを、前記特定のチャネルの前記複数のチャネル行のうち単一のチャネル行にインターリーブすることと、
を行うように構成されている、
メモリコントローラ。 - 前記実行ユニットは、前記特定のチャネルの前記複数のチャネル行のうち前記単一のチャネル行にインターリーブされたデータ要素の前記対応するサブセットに基づいて、計算の第1の演算を実行し、
前記実行ユニットは、前記特定のチャネルの前記複数のチャネル行のうち前記単一のチャネル行にインターリーブされたデータ要素の前記対応するサブセットに基づいて、前記計算の追加の演算を実行する、
請求項9のメモリコントローラ。 - 前記マッピングロジックは、
前記複数のデータ要素のうち特定のデータ要素に対するメモリアクセス要求であって、物理メモリアドレス及びストライプ数(NoS)値を含むメモリアクセス要求に応じて、前記NoS値に基づいて前記物理メモリアドレスを復号して、前記特定のデータ要素のバンクインデックス値と行インデックス値とを生成するように更に構成されている、
請求項9のメモリコントローラ。 - 前記複数のデータ要素のうちデータ要素の前記対応するサブセットは、前記複数のチャネルの各チャネルの前記複数のチャネル行のうち単一のチャネル行の同じ場所に配置するフレーム数を定義するストライプ数(NoS)値に基づいて、前記特定のチャネルに格納される、
請求項9のメモリコントローラ。 - 前記NoS値は、特殊命令セットアーキテクチャ(ISA)命令、ページテーブルエントリ(PTE)の1つ以上のビット、構成レジスタの1つ以上のビット、又は、モードレジスタの1つ以上のビットのうち1つ以上のから導出される、
請求項12のメモリコントローラ。 - 各チャネル行に対応する前記NoS値に基づいて、前記複数のチャネルのうち前記特定のチャネルの前記複数のチャネル行の各チャネル行の同じ場所に、各チャネル行に対応する前記NoS値に基づいて、複数のフレームが配置される、
請求項12のメモリコントローラ。 - 前記特定のチャネルの前記複数のチャネル行の各チャネル行は、前記複数のフレームの各フレームに関連付けられた前記複数のデータ要素のうち1つ以上のデータ要素を含み、
前記特定のチャネルの前記複数のチャネル行の各チャネル行は、前記複数のフレームの各フレームからの等しい数のデータ要素を含む、
請求項14のメモリコントローラ。 - 前記メモリは、プロセッシングインメモリ(PIM)対応メモリを備え、前記実行ユニットは、PIM実行ユニットを含む、
請求項14のメモリコントローラ。 - 方法であって、
メモリに格納された複数のデータ要素のうち1つのデータ要素に対するメモリアクセス要求を受信することであって、前記メモリアクセス要求は、物理メモリアドレス及びストライプ数(NoS)値を含む、ことと、
前記物理メモリアドレス及び前記NoS値に基づいて、前記データ要素のインデックス値を計算することと、
前記インデックス値に基づいて、メモリ構造から前記データ要素を取り出すことと、を含む、
方法。 - 前記インデックス値は、前記データ要素の行インデックス値、及び、列又はバンクインデックス値を含み、
前記データ要素は、前記行インデックス値、及び、前記列又は前記バンクインデックス値に基づいて、前記メモリ構造から取り出される、
請求項17の方法。 - 前記メモリは、プロセッシングインメモリ(PIM)対応メモリを備える、
請求項17の方法。 - 前記メモリは複数のバンクを備え、前記複数のバンクの各バンクは、複数の行と、複数の列と、対応する実行ユニットと、を含み、
前記複数のデータ要素は、前記複数のバンクのうち特定のバンクについて、前記複数のデータ要素のうちデータ要素の対応するサブセットを、前記特定のバンクの前記複数の行のうち単一の行にインターリーブすることによって、前記メモリに格納される、
請求項17の方法。 - 前記メモリは複数のチャネルを備え、前記複数のチャネルの各チャネルは、複数のバンクと、複数のチャネル行と、対応する実行ユニットと、を含み、
前記複数のチャネル行の各チャネル行は、前記複数のチャネルの各チャネルの前記複数のバンクの全てのバンクからの同じ行を含み、
前記複数のデータ要素は、前記複数のチャネルのうち特定のチャネルについて、前記複数のデータ要素のデータ要素の対応するサブセットを、前記特定のチャネルの前記複数のチャネル行のうち単一のチャネル行にインターリーブすることによって、前記メモリに格納される、
請求項17の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/006,646 | 2020-08-28 | ||
US17/006,646 US11487447B2 (en) | 2020-08-28 | 2020-08-28 | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems |
PCT/US2021/044350 WO2022046371A1 (en) | 2020-08-28 | 2021-08-03 | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023540232A true JP2023540232A (ja) | 2023-09-22 |
Family
ID=80355553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023513427A Pending JP2023540232A (ja) | 2020-08-28 | 2021-08-03 | 効率的なプロセッシングインメモリのためのハードウェア‐ソフトウェア協働アドレスマッピング方式 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11487447B2 (ja) |
EP (1) | EP4204977A1 (ja) |
JP (1) | JP2023540232A (ja) |
KR (1) | KR20230056772A (ja) |
CN (1) | CN116235153A (ja) |
WO (1) | WO2022046371A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11487447B2 (en) | 2020-08-28 | 2022-11-01 | Advanced Micro Devices, Inc. | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems |
US20220309734A1 (en) * | 2021-03-29 | 2022-09-29 | Samsung Electronics Co., Ltd. | Apparatus and method with graphics processing |
US20230133360A1 (en) * | 2021-10-28 | 2023-05-04 | Taiwan Semiconductor Manufacturing Company, Ltd. | Compute-In-Memory-Based Floating-Point Processor |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101686590B1 (ko) * | 2010-09-20 | 2016-12-14 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 워드 라인 인터리빙 방법 |
KR20120107336A (ko) * | 2011-03-21 | 2012-10-02 | 삼성전자주식회사 | 메모리 시스템 및 그것의 어드레싱 방법 |
US10152408B2 (en) | 2014-02-19 | 2018-12-11 | Rambus Inc. | Memory system with activate-leveling method |
US9734889B2 (en) | 2014-12-22 | 2017-08-15 | Empire Technology Development Llc | Reconfigurable row DRAM |
US9934153B2 (en) | 2015-06-30 | 2018-04-03 | Nvidia Corporation | Patch memory system |
US10198369B2 (en) | 2017-03-24 | 2019-02-05 | Advanced Micro Devices, Inc. | Dynamic memory remapping to reduce row-buffer conflicts |
US10297307B1 (en) | 2017-12-29 | 2019-05-21 | Micron Technology, Inc. | Methods for independent memory bank maintenance and memory devices and systems employing the same |
US10877693B2 (en) * | 2018-06-29 | 2020-12-29 | Intel Corporation | Architecture for dynamic transformation of memory configuration |
US20210333999A1 (en) * | 2018-08-30 | 2021-10-28 | SK Hynix Inc. | Data storage device, operation method thereof and storage system having the same |
KR102520412B1 (ko) * | 2018-09-19 | 2023-04-12 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20210007503A (ko) * | 2019-07-11 | 2021-01-20 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11403217B2 (en) * | 2019-10-30 | 2022-08-02 | Qualcomm Incorporated | Memory bank group interleaving |
KR20210152738A (ko) * | 2020-06-09 | 2021-12-16 | 에스케이하이닉스 주식회사 | 스트라이프 형태로 데이터를 액세스하는 메모리 시스템 및 메모리 시스템의 동작방법 |
US11487447B2 (en) | 2020-08-28 | 2022-11-01 | Advanced Micro Devices, Inc. | Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems |
-
2020
- 2020-08-28 US US17/006,646 patent/US11487447B2/en active Active
-
2021
- 2021-08-03 EP EP21862343.7A patent/EP4204977A1/en active Pending
- 2021-08-03 KR KR1020237010518A patent/KR20230056772A/ko unknown
- 2021-08-03 JP JP2023513427A patent/JP2023540232A/ja active Pending
- 2021-08-03 WO PCT/US2021/044350 patent/WO2022046371A1/en unknown
- 2021-08-03 CN CN202180065324.1A patent/CN116235153A/zh active Pending
-
2022
- 2022-05-16 US US17/745,278 patent/US11797201B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11797201B2 (en) | 2023-10-24 |
US20220276795A1 (en) | 2022-09-01 |
WO2022046371A1 (en) | 2022-03-03 |
US11487447B2 (en) | 2022-11-01 |
US20220066662A1 (en) | 2022-03-03 |
CN116235153A (zh) | 2023-06-06 |
KR20230056772A (ko) | 2023-04-27 |
EP4204977A1 (en) | 2023-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2023540232A (ja) | 効率的なプロセッシングインメモリのためのハードウェア‐ソフトウェア協働アドレスマッピング方式 | |
US10949347B2 (en) | Multiple data channel memory module architecture | |
US8996844B1 (en) | Apparatus and method for accessing non-overlapping portions of memory according to respective orders of dimensions | |
US20130044557A1 (en) | Memory control method of memory device and memory control system thereof | |
WO2014105705A2 (en) | Flash memory using virtual physical addresses | |
JP2009503729A5 (ja) | ||
CN107025181B (zh) | 存取存储器单元的方法、分配存储器请求的方法、系统及存储器控制器 | |
CN114185818B (zh) | 基于扩展页表的gpu访存自适应优化方法及装置 | |
TWI254856B (en) | Memory interleave method | |
JP6961997B2 (ja) | 情報処理装置、メモリ制御装置および情報処理装置の制御方法 | |
EP3367246B1 (en) | Memory partitioning for a computing system with memory pools | |
KR20090087689A (ko) | 다중 채널 플래시 메모리 시스템 및 그것의 액세스 방법 | |
KR102142509B1 (ko) | 고체 상태 디바이스를 위한 다중 어드레스 레지스터를 위한 장치 및 방법 | |
US6542958B1 (en) | Software control of DRAM refresh to reduce power consumption in a data processing system | |
KR20090106221A (ko) | 병렬 구조를 가지는 플래시 메모리 시스템 및 그 데이터기록방법 및 플래시 메모리 | |
US10579519B2 (en) | Interleaved access of memory | |
WO2010023356A1 (en) | Method, apparatus and software product for distributed address-channel calculator for multi-channel memory | |
US11756606B2 (en) | Method and apparatus for recovering regular access performance in fine-grained DRAM | |
US20230017019A1 (en) | Systems, methods, and devices for utilization aware memory allocation | |
US20240111672A1 (en) | Data co-location using address hashing for high-performance processing in memory | |
CN116802617A (zh) | 支持改进的部分阵列自刷新的同时用于非对称大小通道或排的有效dram交错 | |
JPH11203252A (ja) | 並列プロセッサおよびメモリ制御方法 | |
EP0500915A4 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230425 |