Skip to content

Latest commit

 

History

History
210 lines (166 loc) · 24.6 KB

File metadata and controls

210 lines (166 loc) · 24.6 KB

HRMEM (High-reliability Memory)

HRMEM (High-reliability Memory)は、SC-OBC-A1に実装される SRAMにアクセスを行うメモリコントローラモジュールです。

HRMEMのメモリ空間は、Address 0x00000000をベースとする 4 MByteの領域に配置されており、CPU SubSystemの CPU Local Busを通じアクセスされます。 また、Main AXI Bus Systemに接続されるAXIバスからアクセスが可能なミラーアドレスが、Base Address 0x60000000に配置されています。

HRMEMは SC OBC FPGAのシステムにおいて、CPUが使用するメインメモリとして動作します。 そのため、SC OBC FPGAに実装する CPUが効率的に動作できるよう、SRAMへのアクセスを最適化する機能が実装されています。

HRMEMは SRAMからのデータ読み出し時に 1 bit ECCエラーの発生を検出すると、エラーを修復する機能を持っています。 また、メモリスクラビング機能を持ち、SRAMの全領域のデータに対し定期的なエラーチェックとエラーの修復を行います。

レジスタ詳細

HRMEMはデータを格納する Address 0x00000000からの 4 MByte空間とは別に、HRMEMを制御するために使用するレジスタが配置されています。 HRMEMのレジスタは、Base Address 0x40500000に配置されています。

OffsetSymbolRegisterInitial
0x0000HRMEM_ECCCOLENRECC Error Collect Enable Register0x00000001
0x0008HRMEM_MEMSCRCTRLRMemory Scrubing Control Register0x06FF0001
0x0010HRMEM_INTSTRHRMEM Interrupt Status Register0x00000000
0x0014HRMEM_INTENRHRMEM Interrupt Enable Register0x00000000
0x0020HRMEM_ECC1ERRCNTR1Bit ECC Error Count Register0x00000000
0x0028HRMEM_ECDISCNTRECC Correct Data Discard Count Register0x00000000
0x002CHRMEM_ERRCNTCLRRError Count Clear Register0x00000000
0x0030HRMEM_ECCERRADMRECC Error Address Monitor Register0x00000000
0x0070HRMEM_PFEMDCTLRPrefetch Mode Control Register0x00000001
0x0074HRMEM_SPEPFENRSpecial Prefetch Enable Register0x00000000
0x0080HRMEM_SPEPFADRSETR1Special Prefetch Address Setting Register 10x00000000
0x0084HRMEM_SPEPFADRSETR2Special Prefetch Address Setting Register 20x00000000
0xF000HRMEM_VERHRMEM IP Version Register-

ECC Error Collect Enable Register (Offset: 0x0000)

ECC Error Collect Enable Registerは、1bit ECCエラー検出時にメモリの修復のため訂正データの書き戻す機能を設定するためのレジスタです。 このレジスタのEnableにすると、訂正データの書き戻し機能が有効になります。

bitSymbolFieldDescriptionR/W
31:1-ReservedReserved-
0ECCCOLENECC Error Collect Enableメモリ修復機能のEnable設定を行います。0: メモリ修復機能 OFF 1: メモリ修復機能 ONR/W

Memory Scrubing Control Register (Offset: 0x0008)

Memory Scrubing Control Registerは、メモリスクラビング機能の設定を行うためのレジスタです。 このレジスタのMemory Scrubing EnableをONにすると、SRAMの全フィールドの定期的な読み出し行い書き込まれたデータのチェックを行います。

メモリスクラビング機能は、SRAMの全領域のデータに対し定期的なエラーチェックを行う機能です。 メモリスクラビング機能により検出したデータのエラーを修復する場合には、メモリ修復機能 (ECC Error Collect Enable Registerの ECCCOLENビット)も有効にする必要があります。

MEMSCRCYCはメモリスクラビングのための メモリ読み出しが発生する間隔を設定します。 MEMSCRCYCの初期値は 1791に設定されています。 この値は、およそ 1分でメモリの全領域を検査できる設計値になっています。

bitSymbolFieldDescriptionR/W
31:16MEMSCRCYCMemory Scrubing Cycleメモリスクラビングによる読み出しアクセスの間隔を設定するビットです。設定はシステムクロックのサイクル数で設定します。0: 設定禁止 1: 1 サイクル 2: 2 サイクル … 65535: 65535 サイクル 初期状態では、1791 Cycle間隔に設定されています。R/W
15:9-ReservedReserved-
8COLFSRDSTPBMemory Scrubing Arbitration Enableエラー修復データ FIFOが Full状態での メモリスクラビング制御方法を設定するビットです。本ビットが 0の時、エラー修復データ FIFOが Fullになるとメモリスクラビング機能を停止します。また、本ビットが 1の時、エラー修復データ FIFOが Fullになってもメモリスクラビング機能が停止しません。新しく検出したエラーの修復データは破棄します。R/W
7:1-ReservedReserved-
0MEMSCRBENMemory Scrubing Enableメモリスクラビング機能の Enable設定を行います。0: メモリスクラビング機能 OFF 1: メモリスクラビング機能 ONR/W

HRMEM Interrupt Status Register (Offset: 0x0010)

HRMEM Interrupt Status Registerは、HRMEMの割り込みステータスレジスタです。 それぞれのビットは”1”をセットすると、割り込みをクリアする事ができます。

bitSymbolFieldDescriptionR/W
31:18-ReservedReserved-
17ATRDE1ERRAuto Read Access 1bit ECC Errorメモリスクラビング機能により SRAMの読み出しアクセスが行われた時に、1 bit ECC Errorを検出すると本ビットが”1”にセットされます。E1ERRINTビットの割り込みクリアを行うことで、本ビットの状態もクリアされます。RO
16BUSRDE1ERRAHB/AXI Bus Read Access 1bit ECC ErrorAHB/AXI Busからのリードアクセスが行われた時に、1 bit ECC Errorを検出すると本ビットが”1”にセットされます。E1ERRINTビットの割り込みクリアを行うことで、本ビットの状態もクリアされます。RO
15:9-ReservedReserved-
8ECDISINTECC Correct Data Discard1 bit ECCエラー検出時、エラー修復データを破棄すると本ビットが “1”にセットされます。R/WC
7:1-ReservedReserved-
0E1ERRINT1bit ECC Error1 bit ECC Errorを検出すると本ビットが”1”にセットされます。R/WC

HRMEM Interrupt Enable Register (Offset: 0x0014)

HRMEM Interrupt Enable Registerは、HRMEMの動作において発生した割り込みイベントを割り込み出力信号に通知するか設定するためのレジスタです。

bitSymbolFieldDescriptionR/W
31:9-ReservedReserved-
8ECDISINTENBECC Correct Data Discard EnableECDISINTイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W
7:1-ReservedReservedR/W
0E1ERRINTENB1bit ECC Error EnableE1ERRINTイベントが発生した時に割り込み信号を発生させるかどうかを設定します。R/W

1Bit ECC Error Count Register (Offset: 0x0020)

1Bit ECC Error Count Registerは、1Bit ECCエラー検出回数を示すレジスタです。 1 Bit ECCエラーを検出するたびに該当するカウンターをインクリメントします。

カウンターが上限である 0xFFFFに達すると停止します。 このカウンターのクリアは、Error Count Clear Registerによって行います。

bitSymbolFieldDescriptionR/W
31:16ATRDE1ERRCNTAuto Read Access 1bit ECC Error Counterメモリスクラビング機能による 読み出しアクセスが行われた時に検出した 1 bit ECCエラーの検出回数を読み出すためのフィールドです。RO
15:0BUSRDE1ERRCNTAHB/AXI Bus Read Access 1bit ECC Error CounterAHB/AXI Busよりリードアクセスが行われた時に検出した 1 bit ECCエラーの検出回数を読み出すためのフィールドです。RO

ECC Correct Data Discard Count Register (Offset: 0x0028)

ECC Correct Data Discard Count Registerは、エラー修復データの破棄回数を表示するカウンターレジスタです。 エラー修復データを破棄するたびに、本カウンターをインクリメントします。

カウンターが上限である 0xFFFFに達すると停止します。 このカウンターのクリアは、Error Count Clear Registerによって行います。

bitSymbolFieldDescriptionR/W
31:16-ReservedReserved-
15:0ECDISCNTECC Correct Data Discard Counterエラー修復データを破棄した回数を読み出すためのフィールドです。RO

Error Count Clear Register (Offset: 0x002C)

Error Count Clear Registerは、1 Bit ECC Errorカウンター、ECC Correct Data Discardカウンターをクリアするためのレジスタです。

bitSymbolFieldDescriptionR/W
31:1-ReservedReserved-
0ECNTCLRError Count Clear1 Bit ECC Errorカウンター、ECC Correct Data Discardカウンターをクリアするためのビットです。本ビットを 1にセットすると、1 Bit ECC Errorカウンター、ECC Correct Data Discardカウンターをクリアする事ができます。本ビットの 0の書き込みは何も影響しません。WO

ECC Error Address Monitor Register (Offset: 0x0030)

ECC Error Address Monitor Registerは、ECC Errorを検出したアドレスを表示するためのレジスタです。

最後にECC Errorを検出したSRAMのアドレスが表示されます。 AHB/AXI Busからのリードアクセスが バス幅の 32 bitに対し Unalignedだった場合でも、32 bit境界のアドレスが表示されます。 また、AXI Busからの読み出しにおいて、ECC Errorを検出した場合、ミラーアドレスである 0x60xxxxxxではなく、メモリの実アドレスである 0x00xxxxxxのアドレスで表示されます。

bitSymbolFieldDescriptionR/W
31:22-ReservedReserved-
21:0ECCERRADRECC Error Address1Bit ECC Errorを検出したアドレスを示します。RO

Prefetch Mode Control Register (Offset: 0x0070)

Prefetch Mode Control Registerは、Prefetch機能を設定するためのレジスタです。

Prefetch機能が有効の場合は、PFMDCTLビットの設定により Prefetchの対象として設定されている要因のリードアクセスが発生すると SRAMから Prefetch Bufferにデータを先読みします。 Prefetch Bufferへのデータの先読みは、リードアクセスが発生したアドレスから 8 word境界までのデータを格納します。 Prefetchされたアドレス範囲に Prefetchの対象として設定されているリードアクセスがあった場合 SRAMへのデータアクセスは行わず Prefetch Bufferに格納されたデータを返す事でメモリアクセスのパフォーマンスを向上します。

bitSymbolFieldDescriptionR/W
31:2-ReservedReserved-
1:0PFMDCTLPrefetch Mode ControlPrefetch機能を設定します。 bit[0]: Instruction fetchにおける Prefetch機能の有効/無効設定. bit[1]: Dataアクセスにおける Prefetch機能の有効/無効設定. 1: 設定有効. 0: 設定無効R/W

Special Prefetch Enable Register (Offset: 0x0074)

Special Prefetch Enable Registerは、特定のアドレスに対する Prefetch機能を設定するためのレジスタです。

Special Prefetch Enableビットの設定により、特定のアドレスの Prefetch機能が有効になっている場合、Prefetchの対象として設定されている要因のリードアクセスにより読み出されるアドレスが、Special Prefetch Address Setting Registerに設定されている ベースアドレスと一致した場合、そのアクセスを Prefetch対象と判定します。 Prefetch対象のアクセスが発生した場合、アクセスの発生したアドレスから 8 word境界までのデータを SRAMから Prefetch Bufferに先読みします。 Prefetchされたアドレス範囲にリードアクセスがあった場合 SRAMへのデータアクセスは行わず Prefetch Bufferに格納されたデータを返す事でメモリアクセスのパフォーマンスを向上します。

Special Pregetch Bufferに格納されたデータは、他のアドレスの リードアクセスにより更新される事は無く、指定されたアドレスの Prefetchデータを保持し続ける事ができます。 特定アドレスに対する Prefetch機能は 2つのベースアドレスを設定する事ができます。

CPUから頻繁に読み出されるアドレスがある場合、この機能を使用するとパフォーマンスを向上させる事ができます。 Prefetch Bufferに格納されているデータに書き込みを行うと、Prefetch Bufferのデータはフラッシュされてしまうため、書き込みが多く発生するアドレスに この機能を使用しても効果は少なくなってしまいます。

尚、Prefetch Mode Control Registerの PFMDCTLフィールドが 2’b00に設定されている場合、本レジスタの設定は無効となります。

bitSymbolFieldDescriptionR/W
31:2-ReservedReserved-
1:0SPPFENBSpecial Prefetch Enable専用アドレスのPrefetch機能を設定します。 2b00: Special Prefetch未使用 2b01: Special Prefetch1のみ使用 2b10: Special Prefetch2のみ使用 2b11: Special Prefetch1/2双方使用R/W

Special Prefetch Address Setting Register 1 (Offset: 0x0080)

Special Prefetch Address Setting Register 1は、Special Prefetch Buffer 1に Prefetchするアドレスを設定するためのレジスタです。

Special Prefetch Enable Registerの SPPFENB[0]ビットが 1に設定されている場合、本レジスタの設定が有効となります。

bitSymbolFieldDescriptionR/W
31:22-ReservedReserved-
21:5SPPFADR1Special Prefetch Address 1Special Prefetch Buffer 1に Prefetchするデータのベースアドレスを設定します。R/W
4:0-ReservedReserved-

Special Prefetch Address Setting Register 2 (Offset: 0x0084)

Special Prefetch Address Setting Register 2は、Special Prefetch Buffer 2に Prefetchするアドレスを設定するためのレジスタです。

Special Prefetch Enable Registerの SPPFENB[1]ビットが 1に設定されている場合、本レジスタの設定が有効となります。

bitSymbolFieldDescriptionR/W
31:22-ReservedReserved-
21:5SPPFADR2Special Prefetch Address 2Special Prefetch Buffer2にPrefetchするデータのベースアドレスを設定します。R/W
4:0-ReservedReserved-

HRMEM IP Version Register (Offset: 0xF000)

HRMEM IP Version Registerは、HRMEM IPコアのバージョン管理レジスタです。

bitSymbolFieldDescriptionR/W
31:24HRMEMMAJVERHRMEM IP Major VersionHRMEMコアのMajor Versionを示します。RO
23:16HRMEMMINVERHRMEM IP Minor VersionHRMEMコアのMinor Versionを示します。RO
15:0HRMEMPATVERHRMEM IP Patch VersionHRMEMコアのPatch Versionを示します。RO