ダむナミックRAMのパフォヌマンスず、それを増やす方法のずんでもないアむデア

ちょっずした歎史



コンピュヌティングテクノロゞヌのAt明期に、動的メモリはプロセッサ呚波数で動䜜したした。 私の最初のコンピュヌタヌ゚クスペリ゚ンスは、ZX Spectrumコンピュヌタヌクロヌンでした。 Z80プロセッサは1挔算あたり平均4クロックサむクルで呜什を凊理したしたが、2クロックサむクルを䜿甚しお動的メモリを再生成したした。これにより、3.5 MHzの呚波数で毎秒875,000挔算以䞋になりたす。



ただし、しばらくするず、動的メモリが負荷に察応できなくなるず、プロセッサの呚波数はそのようなレベルに達したした。 これを補うために、キャッシュメモリの圢で䞭間リンクが導入されたした。これにより、少量のデヌタに察しお実行される操䜜によるプロセッサずメむンメモリの速床の差を滑らかにするこずができたした。



コンピュヌタヌのRAMが䜕であるか、そしおコンピュヌタヌシステムの速床を䞊げるために䜕ができるかを芋おみたしょう。







静的および動的メモリに぀いお簡単に説明したす



メモリは、行ず列で構成されるテヌブルの圢匏で構築されたす。 テヌブルの各セルには情報ビットがありたすただし、半導䜓メモリに぀いお説明したすが、他の倚くの実装も同じ原理に基づいおいたす。 このようなテヌブルはそれぞれ「バンク」ず呌ばれたす。 チップ/モゞュヌルは耇数のバンクに察応できたす。 メモリモゞュヌルのセットは、個々の芁玠のビット深床に応じお、プロセッサの線圢アドレス空間に投圱されたす。



静的メモリセルはトリガヌに基づいお構築されたす。トリガヌは通垞、安定状態「A」たたは「B」のいずれかですA =B。 1぀のセルのトランゞスタの最小数は6個ですが、セルのトレヌスの耇雑さにより、1ギガのスタティックメモリモゞュヌルを8ギガバむトの通垞のモゞュヌルの䟡栌で補造するこずはできたせん。



ダむナミックメモリセルは、情報を栌玍する1぀のコンデンサず、デヌタバスからコンデンサを分離する1぀のトランゞスタで構成されたす。 この堎合、電解液はコンデンサずしお䜿甚されたせんが、「基板」ずトランゞスタ電極間の接合郚の寄生容量pn特にこれらの目的のために増加したす。通垞は陀去しようずしたす。 コンデンサの欠点は挏れ電流ですリヌク電流ずキヌトランゞスタの䞡方。これを取り陀くのは非垞に困難であり、さらに、枩床が䞊昇するず増加し、保存された情報が歪む可胜性がありたす。 信頌性を維持するために、動的メモリでは「再生」が䜿甚されたす。これは、少なくずも情報が信頌できる倀を保持する特定の期間、保存された情報を定期的に曎新するこずです。 通垞の再生成期間は8ミリ秒であり、より頻繁に情報を曎新できたすが、あたり頻繁ではありたせん。



それ以倖の堎合、動䜜の原理は同じであり、次のもので構成されたす。



-メモリ行の最初の遞択は、バッファ行に配眮されたすべおのコンテンツぞのアクセスに぀ながり、さらに䜜業が行われるか、列ぞのアクセスの乗算が発生したす叀い、遅いアプロヌチ。

-芁求されたデヌタがホストデバむス通垞はCPUに送信されるか、指定されたセルが曞き蟌み操䜜䞭に倉曎されたすわずかな違いがあり、遞択された行セルを静的メモリで盎接倉曎でき、バッファラむンが動的メモリで倉曎されおから、曞き戻されたす特別なルヌプ内の行党䜓の内容;

-メモリ行のクロヌズず倉曎は、メモリの皮類によっおも異なりたす。静的の堎合、デヌタが倉曎されおいない堎合はすぐに行を倉曎できたす。動的メモリの堎合は、バッファ行の内容を所定の堎所に曞き蟌む必芁があり、その埌のみ別の行を遞択できたす。



コンピュヌティングの倜明けに、各読み取りたたは曞き蟌み操䜜が完党なメモリサむクルで完了した堎合



-行の遞択。

-セルからの読み取り/曞き蟌み操䜜。

-行の倉曎/再遞択。



「同期メモリa DDRX」チップの最新の動䜜は次のずおりです。



-行の遞択。

-4〜8ビット/ワヌドのグルヌプの行のセルの読み取り/曞き蟌み同じ行内の耇数のアクセスが蚱可されたす。

-情報を蚘録した状態で行を閉じたす。

-行の倉曎/再遞択。



この゜リュヌションにより、セル「1」から倀を読み取った埌、同じ行にあるセル「2、3、4、たたは7」にアクセスする必芁がある堎合、たたは読み取り操䜜の盎埌に倉曎した倀を曞き戻す必芁がある堎合に、デヌタアクセス時間を節玄できたす。



キャッシュず連動した動的メモリの操䜜の詳现を読む



メモリコントロヌラヌチップセット内たたはプロセッサに内蔵は、マむクロチップ/メモリモゞュヌルのブロックアドレスず行番号ブロックアドレスの䞊郚を蚭定したす。 察応するブロックが遞択され1぀のブロックのフレヌムワヌク内でのさらなる䜜業が考慮されたす、結果の「2進数」が文字列の䜍眮アドレスにデコヌドされ、その埌情報がバッファに転送されたす。 この操䜜に必芁なサむクルの時間はtRCDず呌ばれ、スキヌム「9-9-9 / 9-9-9-2-2」の2番目に衚瀺されたす。



行がアクティブになった埌、このための「列」にアクセスでき、メモリコントロヌラヌは行のセルのアドレスを送信し、しばらくしお「CL」䞊蚘の指定スキヌム「xxxx」で1桁で瀺されたす、メモリチップからデヌタが送信され始めたすキャッシュラむンで4〜8ビットシングルチップのパケットの圢匏でプロセッサになぜ耇数のキャッシュが干枉するのかサむズはプロセッサによっお異なりたすが、64バむトの䞀般的な倀は64ビットの8ワヌドですが、その他の意味。 デヌタパケットの転送に必芁な特定のクロックサむクル数の埌、遞択した行の他のセルからデヌタを読み取る次のリク゚ストを䜜成するか、「xxxx -...」の3番目のパラメヌタヌずしお指定されたtRPずしお衚されるラむンを閉じるコマンドを発行できたす「。 行が閉じられるず、バッファからのデヌタはブロックの行に曞き戻されたす。蚘録の終了埌、このブロック内の別の行を遞択できたす。 これらの3぀のパラメヌタヌに加えお、回線をアクティブにする必芁がある最小時間「tRAS」、および回線をアクティブにする2぀のコマンドを分離する回線で動䜜するフルサむクルの最小時間がありたすランダムアクセスに圱響したす。



総蚈2016幎4月19日12:40



CL-CASレむテンシ、tRCD-RASからCASぞの遅延、tRP-行のプリチャヌゞ、CAS-列アドレスストロヌブ、RAS-行アドレスストロヌブ。



半導䜓技術の速床は、回路芁玠の遅延によっお決たりたす。 出力で信頌できる情報を取埗するには、すべおの芁玠が定垞状態になるたで䞀定の時間埅機する必芁がありたす。 メモリバンクの珟圚の状態に応じお、デヌタアクセス時間は倉化したすが、䞀般に、次の遷移を特城付けるこずができたす。



ブロックが停止しおいるアクティブな行がない堎合、コントロヌラヌは行遞択コマンドを発行したす。その結果、バむナリ行番号が䜍眮番号に倉換され、「tRCD」時間䞭に行の内容が読み取られたす。



文字列の内容がバッファゟヌンに読み蟌たれた埌、列遞択コマンドを発行できたす。これに応じお、列の2進数が「CL」時間䞭に䜍眮番号に倉換されたすが、䞋䜍アドレスのアラむメントによっおは、ビット送信の順序が倉わる堎合がありたす。



読み取り䞭に情報が実際に砎壊されたため、行を倉曎たたは閉じる前に、デヌタを所定の堎所に曞き蟌む必芁がありたす。 文字列「tRP」の情報を埩元するのに必芁な時間。



動的メモリの完党な仕様によれば、制埡信号の倉化のシヌケンスず遅延を決定する倚くの時間パラメヌタがありたす。 これらの1぀はtRCminです。これは、ラむン遞択、デヌタアクセス、およびラむトバックを含む、ラむンサむクル党䜓の最小時間を定矩したす。



RAS信号は、文字列アドレスを発行する事実を決定したす。

CAS信号は、列アドレスが発行されたかどうかを刀断したす。



以前にすべおの制埡がメモリコントロヌラヌの偎にシフトされ、これらの信号によっお制埡されおいた堎合、コマンドがモゞュヌル/マむクロ回路に発行され、しばらくしおからデヌタが転送されるコマンドモヌドがありたす。 DDR4など、暙準の仕様を詳しく知るこずをお勧めしたす。





䞀般的なドラムの操䜜に぀いお話すず、倧衆読曞䞭は通垞次のようになりたす



回線のアドレスを蚭定し、

RASを蚭定およびビヌトによっお削陀

tRCDを埅った、

読み蟌む列のアドレスを蚭定したす次の各メゞャヌでは次の列番号を蚭定したす。

CASを入れお、

CLを埅機し、デヌタの読み取りを開始し、

CASを削陀し、残りのデヌタ別のCLクロックを読み取りたす。



遷移䞭、次の行はプリチャヌゞRAS + WEではなく、tRPが予想され、RASはラむンセットのアドレスで実行され、その埌、前述のように読み取りが実行されたす。



ランダムセルの読み取りのレむテンシは、䞊蚘のtRP + tRCD + CLから自然に続きたす。

実際には、アクセスされおいる「メモリバンク」の以前の状態に䟝存したす。






DDR RAMには2぀の呚波数があるこずに泚意しおください。



-コマンドずタむミングの䌝送速床を決定するメむンクロック呚波数。

-有効なデヌタ転送呚波数メモリモゞュヌルをマヌクするダブルクロック呚波数。



メモリコントロヌラヌの統合により、䞭間䌝送リンクが拒吊されるため、メモリサブシステムのパフォヌマンスが向䞊したした。 メモリチャネルを増やすには、アプリケヌション偎でこれを考慮する必芁がありたす。たずえば、特定のファむルの堎所での4チャネルモヌドでは、パフォヌマンスが向䞊したせん構成12および14。





異なるステップ1ステップ= 16バむトで単䞀のリンクリストアむテムを凊理する





今少し数孊



プロセッサヌプロセッサヌの動䜜呚波数は5 GHzに達したした。 補造業者によるず、回路゜リュヌションコンベア、予枬、その他のトリックにより、サむクルごずに1぀の呜什を実行できたす。 蚈算を終了するために、4 GHzのクロック呚波数の倀を取埗したす。これにより、0.25 nsで1぀の操䜜が埗られたす。



RAMたずえば、15-15-15のタむミングの新しいDDR4-2133圢匏のRAMを䜿甚したす。



䞎えられた



プロセッサ

事実= 4 GHz

タクト= 0.25 ns同時に、1぀の操䜜の実行時間は「条件付き」です



RAM DDR4-2133

事実= 1066 MHz

Fdate = 2133 MHz

ttact = 0.94 ns

tdate = 0.47 ns

SPDmax = 2133 MHz * 64 = 17064 MB / sデヌタ転送速床

tRCmin = 50 ns2行のアクティブ化間の最小時間



デヌタ取埗時間


レゞスタずキャッシュから、䜜業サむクル䞭レゞスタ、レベル1キャッシュにデヌタを提䟛するか、2番目ず3番目のレベルのキャッシュに数プロセッササむクルの遅延をかけおデヌタを提䟛できたす。



RAMの堎合、状況はさらに悪化したす。



-行遞択時間15 clk * 0.94 ns = 14 ns

-列遞択コマンドからデヌタを受信するたでの時間15 clk * 0.94 ns = 14 ns

-行のクロヌズ時間15 clk * 0.94 ns = 14 ns誰が考えおいたでしょうか



コマンドがメモリセルからデヌタを芁求するたでの時間キャッシュに入らなかった堎合は倉化する可胜性がありたす。



14 ns-デヌタはすでに遞択された行にありたす。

28 ns-前の行が既に閉じられおいるアむドル状態のブロック堎合、デヌタは遞択されおいない行にありたす。

42〜50 ns-デヌタは別の行にありたすが、珟圚の行は閉じる必芁がありたす。



この間にプロセッサ䞊蚘が実行できる操䜜の数は、5614 nsから20050 nsの改行です。 それずは別に、列遞択コマンドからデヌタパケット党䜓を受信するたでの間に、キャッシュラむンロヌド遅延が远加されるこずに泚意しおください8パケットビット* 0.47 ns = 3.76 ns。 キャッシュラむンをロヌドした埌にのみ「プログラム」がデヌタを䜿甚できる状況の堎合プロセッサの開発者が䜕をどのように䜿い果たしたか、メモリが必芁なデヌタを先に指定できるこずを知っおいる、最倧15クロックサむクルが倱われたす。



1぀の䜜業の䞀環ずしお、メモリの速床の調査を行いたした。結果は、メモリアクセス垯域幅をシヌケンシャルメモリアクセス操䜜でのみ完党に「利甚」できるこずを瀺したした。ランダムアクセスの堎合、凊理時間が増加したす䟋ずしお32ビットポむンタヌからのリンクリストを䜿甚 3぀のダブルワヌド。そのうちの1぀は曎新され、4〜10シヌケンシャルアクセスから60〜120 ns改行になり、凊理速床に12〜15倍の差が生じたす。



デヌタ凊理速床


遞択したモゞュヌルのピヌクスルヌプットは17064 MB / sです。 呚波数が4 GHzの堎合、1サむクルあたり32ビットワヌド17064 MB / 4000 MHz = 4.266バむト/サむクルを凊理できたす。 ここでは次の制限が適甚されたす。



-キャッシュのロヌドを明瀺的に蚈画しないず、プロセッサは匷制的にアむドル状態になりたす頻床が高くなるほど、カヌネルはデヌタを埅機するだけになりたす。

-サむクル「読み取り、倉曎、曞き蟌み」では、凊理速床が半分に䜎䞋したす。

-マルチコアプロセッサはコア間でメモリバス垯域幅を共有したす。競合する芁求がある堎合瞮退した堎合、メモリパフォヌマンスは「200倍改行* Xコア」に䜎䞋する堎合がありたす。



蚈算



17064 MB / s / 8コア=最適な堎合のコアあたり2133 MB / s

17064 MB / s /8コア* 200回の操䜜の倱敗=瞮退した堎合のコアあたり10 MB / s



挔算に倉換するず、8コアプロセッサが埗られたす。デヌタバむトを凊理する堎合は15〜400挔算、32ビットワヌドを凊理する堎合は60〜1600挔算/クロックです。



私の意芋では、どういうわけかゆっくり。 フルサむクルタむムは玄50 nsですが、タむミングが異なるDDR3-1333 9-9-9メモリず比范しお



-デヌタアクセス時間は13.5 ns1.5 ns * 9サむクルに短瞮されたした。

-8ワヌドのパケットの送信時間は6 ns3.75 nsではなく0.75 * 8であり、メモリぞのランダムアクセスにより、デヌタ転送速床の差は実質的になくなりたす。

-ピヌク速床は10 664 MB / sです。



そんなに遠くない。 この状況は、メモリモゞュヌルに「バンク」が存圚するこずでわずかに軜枛されたす。 各「バンク」は、個別にアクセスできる個別のメモリテヌブルです。これにより、ダりンタむムを短瞮するこずで、最適化された状況でデヌタバスを県球に「詰たらせる」こずができるため、1぀のバンクの行を倉曎しながら別の行のデヌタを読み曞きできたす。



実際、ずんでもないアむデアがここに行きたした



メモリテヌブルには、512、1024、2048ビットに等しい列数が含たれおいたす。 50 nsの行をアクティブにするサむクル時間を考えるず、珟圚の17 064 MB / s163 840および163の代わりに、「1 / 0.00000005 s * 512列* 64ビットワヌド= 81 920 MB / s」の朜圚的なデヌタ亀換レヌトを取埗したす。 1,024および2,048列の行の堎合は327,680 MB / s。 「わずか5倍4.8倍高速」ず答えたす。「これは、競合するすべおの芁求が同じメモリバンクに宛おられ、䜿甚可胜な垯域幅がバンクの数に比䟋しお増加し、各テヌブルの行の長さが増加するずきの為替レヌトです動䜜ラむンの長さを長くする必芁がありたす、これは䞻にデヌタバスの速床に䟝存したす。



デヌタ亀換モヌドを倉曎するには、ラむンのコンテンツ党䜓を䞋䜍レベルのキャッシュに転送する必芁がありたす。そのためには、速床だけでなく、ラむンキャッシュのサむズによっおキャッシュレベルを分離する必芁がありたす。 したがっお、たずえば、Nレベルキャッシュラむンの「長さ」を512列* 64ワヌドサむズ32,768ビットで実装するこずにより、比范操䜜の数を枛らしおキャッシュラむンの総数を増やし、それに応じお最倧サむズを増やすこずができたす。 ただし、このサむズのキャッシュにパラレルバスを䜜成するず、指定された「ゞャンボ」キャッシュラむンを最䞊郚のキャッシュラむンの長さに沿っおブロックに分割し、小さな郚分ず亀換する堎合、操䜜の頻床を枛らすこずができたす。アクセス遅延を耇数の段階に分割するこずにより、動䜜の頻床を維持できたす。キャッシュラむンを怜玢し、芋぀かったラむンで目的の「ワヌド」をフェッチしたす。



キャッシュずメむンメモリ間の盎接亀換に関しおは、1぀のバンクのラむンぞのアクセスレヌトでデヌタを転送するか、異なるバンクにリク゚ストを分散するための䞀定のマヌゞンを持たせる必芁がありたす。 さらに、行のさたざたな領域にあるデヌタぞのアクセスの時間の経過に䌎う困難がありたす。順次送信の堎合、行のフェッチに関連する初期遅延に加えお、「パケット内」のデヌタ量ず送信速床に応じおデヌタの送信に遅延がありたす。 ラムバスのアプロヌチでさえ、増加した負荷に察凊できたせん。 状況は、シリアルバスおそらく差動に切り替えるこずで節玄できたす。デヌタのビット深床をさらに枛らすこずで、チャネルの垯域幅を増やし、デヌタの最初ず最埌のビットの送信間の時間を短瞮し、文字列の送信を耇数のチャネルに分割できたす。 これにより、1぀のチャネルの䜎いクロック呚波数を䜿甚できたす。



そのようなチャネルの速床を掚定したしょう



1 / 0.00000005 ns = 20 MHz1ブロック内のラむン倉曎呚波数

20 MHz * 32,768ビット= 655 360 Mbps

同じデヌタバスサむズの差動䌝送の堎合、次のようになりたす。

655 360 Mbit / s / 32チャネル=チャネルあたり20 480 Mbit / s。



この速床は電気信号には蚱容できるように芋えたす15メヌトルの同期が組み蟌たれた信号の堎合は10ギガビット/秒、1メヌトルの倖郚同期で20 GB /秒を超えるこずはできたせん、ただし、䌝送速床をさらに䞊げお䌝送遅延を䜎枛する必芁がありたす情報の最初ず最埌のビットは、光䌝送チャネルを統合するために垯域幅を増やす必芁がありたすが、これはすでに回路蚭蚈者にずっお疑問であり、私はそのような呚波数の経隓がほずんどありたせん。



そしおOstapは苊しみたした


「メむンメモリを䞭間の超高速ブロックストレヌゞずしお䜿甚する」ためにキャッシュをメむンメモリに投圱するずいう抂念を倉曎するこずにより、ロヌドデヌタの予枬をコントロヌラヌ回路から凊理アルゎリズムにシフトできたす次に、パフォヌマンスを犠牲にするこずなく、倖郚レベルキャッシュのボリュヌムを増やすこずができたす。



さらに進むず、プロセッサアヌキテクチャの方向を「アクチュ゚ヌタのコンテキストの切り替え」から「プログラムの䜜業環境」に倉曎するこずができたす。 このような倉曎により、プログラムを個々のプロシヌゞャの指定された゚ントリポむント、凊理甚のデヌタを配眮するためのアクセス可胜な領域、および他のプロセスから関数を呌び出す可胜性のハヌドりェア制埡の可胜性がある関数のセットずしお定矩するこずにより、コヌドのセキュリティを倧幅に改善できたす このような倉曎により、䞀郚のスレッドのコンテキストスむッチを削陀するこずでマルチコアプロセッサをより効率的に䜿甚できるようになり、「プロセス」のアクセス可胜な環境内でむベントを䜿甚しお別のスレッドを䜿甚できるようになり、100以䞊の栞システムをより効率的に䜿甚できるようになりたす。



PS登録商暙たたは特蚱のランダムな䜿甚はランダムです。 オリゞナルのアむデアはすべお、ant hillラむセンス契玄の䞋で䜿甚できたす。



All Articles