可編程地址映射和存儲器訪問操作的制作方法
【專利說明】
【背景技術】
[0001]計算系統的處理器運行計算機程序的指令以在數據上執行操作。計算系統的存儲器存儲可以由處理器訪問的計算機程序和/或數據。為了允許存儲和訪問信息,計算系統包括可尋址的存儲器設備以執行用以在存儲器設備中的特定所選位置處存儲數據的寫入操作以及從存儲器設備中的特定所選位置讀取數據。
【附圖說明】
[0002]圖1A是根據本公開的教導所構造的示例地址轉換器和可編程地址解碼器(PAD)。
[0003]圖1B是具有存儲器控制器的示例計算機系統,所述存儲器控制器具有圖1A的地址轉換器和PAD。
[0004]圖1C描繪了圖1B的存儲器控制器以及圖1A和IB的PAD的邏輯表示。
[0005]圖1D描繪了使用與圖1A和IB的地址轉換器和PAD相組合的現有存儲器控制器的示例。
[0006]圖2和3圖示了圖1A-1D的示例地址轉換器和示例PAD如何解碼主機物理地址以訪問可尋址存儲器位置的陣列的示例方式。
[0007]圖4A和4B圖示了可以用于實現圖1A、IB和IC的PAD的示例邏輯電路和狀態機。
[0008]圖5是圖示了由圖1A-1D以及圖2-4的示例PAD用于執行寫入操作的信號的時序圖。
[0009]圖6是圖示了由圖1A-1D以及圖2-4的示例PAD用于執行讀取操作的信號的時序圖。
[0010]圖7是圖示了由圖1A-1D以及圖2-4的示例PAD用于執行上移操作的信號的時序圖。
[0011]圖8是圖示了由圖1A-1D以及圖2-4的示例PAD用于執行下移操作的信號的時序圖。
[0012]圖9是圖示了由圖1A-1D以及圖2-4的示例PAD用于執行重映射操作的信號的時序圖。
[0013]圖10是圖示了由圖1A-1D以及圖2-4的示例PAD用于執行插入操作的信號的時序圖。
[0014]圖11是圖示了由圖1A-1D以及圖2-4的示例PAD用于執行刪除操作的信號的時序圖。
[0015]圖12是圖示了由圖1A-1D以及圖2_4的示例PAD用于執行部分上移操作的信號的時序圖。
[0016]圖13是圖示了由圖1A-1D以及圖2_4的示例PAD用于執行部分下移操作的信號的時序圖。
[0017]圖14是表示可以被運行以從圖1B的處理器接收并運行命令的示例機器可讀指令的流程圖。
[0018]圖15是表示可以被運行以執行寫入操作的示例機器可讀指令的流程圖。
[0019]圖16是表示可以被運行以執行讀取操作的示例機器可讀指令的流程圖。
[0020]圖17是表示可以被運行以執行上移操作的示例機器可讀指令的流程圖。
[0021]圖18是表示可以被運行以執行下移操作的示例機器可讀指令的流程圖。
[0022]圖19是表示可以被運行以執行重映射激活操作的示例機器可讀指令的流程圖。
[0023]圖20是表示可以被運行以執行重映射操作的示例機器可讀指令的流程圖。
[0024]圖21是表示可以被運行以執行插入操作的示例機器可讀指令的流程圖。
[0025]圖22是表示可以被運行以執行刪除操作的示例機器可讀指令的流程圖。
[0026]圖23是表示可以被運行以執行部分上移操作的示例機器可讀指令的流程圖。
[0027]圖24是表示可以被運行以執行部分下移操作的示例機器可讀指令的流程圖。
[0028]圖25描繪了表示可以被運行以執行在圖1A-1D以及圖2_3的PAD處接收到的命令的示例機器可讀指令的流程圖。
【具體實施方式】
[0029]處理器訪問計算系統的存儲器以運行計算機程序的指令來執行不同的操作。存儲器基于不同的存儲器架構和/或計算平臺而在以不同的位長度可尋址的存儲器設備中存儲數據位。例如,存儲器設備可以以字節(例如8位)或以不同大小的字(例如,16位、32位、64位、128位等等)可尋址。如本文所使用的,存儲了一組可尋址的位(例如字節、字等等)的存儲器位置被稱為可尋址存儲器位置。在一些實例中,處理器經由單獨的存儲器控制器而與存儲器通信,所述存儲器控制器管理在處理器和存儲器之間的數據流。存儲器控制器可以位于具有存儲器控制器的存儲器模塊以及具有例如動態隨機存取存儲器(DRAM)和/或任何其它類型的易失性或非易失性存儲器的諸如雙列直插式存儲器模塊(DIMM)之類的存儲器芯片上。在其它示例中,存儲器控制器實現為被裝配在計算系統的主計算機印刷電路板(PCB)上的芯片。
[0030]存儲器地址的三種類型包括邏輯(例如虛擬)地址、主機物理地址和硬件存儲器地址(或存儲器電路地址)。邏輯地址被程序用于執行存儲器訪問。邏輯地址對于將由軟件用于從計算機系統中的存儲器的物理布局中訪問存儲器的抽象尋址而言是有用的。
[0031]處理器的存儲器管理單元(MMU)通過使用轉換后備緩沖器(TLB)來將邏輯地址轉換成主機物理地址,以使得計算系統可以以其對應于由軟件使用的邏輯地址的主機物理地址來訪問物理存儲器。為了確定主機物理地址,TLB使用邏輯到物理存儲器映射,其中物理存儲器地址空間被映射到由軟件可使用的邏輯地址。這樣的邏輯到物理存儲器映射允許在物理存儲器的物理布置、布局、裝配等中的改變而不使軟件負擔對記錄物理存儲器的主機物理地址中的改變的需要。代替地,處理器更新TLB中的邏輯到物理存儲器映射以將邏輯地址重映射到新的/不同的主機物理地址。
[0032]在存儲器訪問請求期間,在處理器基于邏輯地址而確定了主機物理地址之后,處理器通過使用主機物理地址而向存儲器控制器發送存儲器訪問請求。存儲器控制器然后將主機物理地址解碼成具有對應于主機物理地址的可尋址存儲器位置的(一個或多個)存儲器設備的硬件存儲器地址或存儲器電路地址。在本文公開的示例中,硬件存儲器地址或存儲器電路地址標識物理存儲器模塊、物理存儲器陣列、物理存儲器管芯/芯片、以及存儲器管芯/芯片內的物理存儲器設備位置(例如,位單元的可尋址的群組)O存儲器控制器使用硬件存儲器地址(或存儲器電路地址)來訪問存儲器設備,以使得存儲器設備可以確定管芯上存儲器單元位置以控制內部字線和位線電路,其激活對應于由存儲器控制器解碼的主機物理地址的不同可尋址存儲器位置的存儲器位。在一些示例中,諸如在動態隨機存取存儲器(DRAM)管芯/芯片中,存儲器可尋址的位置是通過將硬件地址解釋為行地址(通過DRAM地址總線與行地址選通(RAS)同時傳送的)和列地址(通過DRAM地址總線與列地址選通(CAS)同時傳送的)而可訪問的。
[0033]在現有系統中,當處理器指定了主機物理地址時,存儲器控制器使用靜態數據結構而將主機物理地址解碼成硬件存儲器地址,所述靜態數據結構將存儲器設備的可尋址存儲器位置與順序的主機物理地址進行映射。
[0034]本文所公開的示例方法、裝置和制品提供具有可編程操作的存儲器控制器。特別地,本文公開的示例可以用于修改在由處理器指定的主機物理地址和存儲器設備中的存儲器可尋址位置的硬件存儲器地址之間的映射。這樣的映射修改可以通過使用本文所公開的示例在運行時期間、在系統引導階段期間和/或在存儲器裝配階段期間動態地執行。
[0035]本文公開的示例包括地址轉換器和可編程地址解碼器(PAD)。在存儲器訪問請求期間,示例地址轉換器從處理器(例如主機)接收物理存儲器地址(例如主機物理存儲器地址)。在接收到主機物理地址時,示例地址轉換器將主機物理地址轉換成PAD地址。PAD地址是由示例PAD在內部使用的邏輯中間地址(S卩,中間地址)。示例PAD從地址轉換器接收PAD地址并且將PAD地址解碼成與處理器所指定的主機物理地址相對應的可尋址存儲器位置的硬件存儲器地址。示例存儲器控制器然后可以以與處理器所指定的主機物理地址相對應的經解碼的硬件存儲器地址來執行所請求的存儲器訪問操作,諸如向經解碼的硬件存儲器地址處的可尋址存儲器位置寫入或者從其讀取。
[0036]在本文所公開的示例中,除了促進存儲器訪問之外,存儲器控制器還基于來自處理器的命令而修改在主機物理地址和硬件存儲器地址之間的地址映射。在所公開的示例中,存儲器控制器通過改變哪些PAD地址對應于哪些硬件存儲器地址來修改地址映射。例如,地址轉換器修改PAD地址來改變在主機物理地址和經修改的PAD地址之間的映射,這使得主機物理地址被映射到不同的硬件存儲器地址。因此,在主機物理地址和數據在存儲器單元中被存儲于的真實硬件存儲器位置之間的存儲器映射可以被存儲器控制器處置,所述存儲器控制器與處理器分離并且包括地址轉換器和PAD。以此方式,處理器不需要管理對存儲器單元中的數據的主機物理地址和實際硬件存儲器存儲位置的跟蹤,從而允許處理器的資源被用于其它計算任務。
[0037]圖1A是根據本公開的教導而構造的示例地址轉換器102和示例可編程地址解碼器(PAD) 104的框圖。
[0038]在圖1B中,在根據本公開的教導而構造的示例計算機系統106的示例存儲器控制器100中示出地址轉換器102和PAD 104。
[0039]在示例計算機系統106中,存儲器控制器100通信地耦合在處理器108 (例如硬件處理器)和存儲器設備I1的陣列之間。在圖示的示例中,處理器108運行一個或多個計算機程序的指令。示例處理器108與示例存儲器控制器100通信以執行存儲器訪問并且指示存儲器控制器100執行以下討論的其它可編程操作。盡管示例存儲器控制器100被示出為與示例處理器108分離,但是在其它示例中,存儲器控制器100可以位于處理器108中,在計算機系統106的存儲器模塊中,或與存儲器設備110位于同處。
[0040]示例存儲器設備110在存儲器位單元中存儲數據位。在圖示的示例中,可以以對應于存儲器設備110的可尋址數據寬度(例如,8位、16位、32位、64位、128位等等)的大長度來訪問存儲器位單元。在一些示例中,存儲器控制器100在比可尋址的數據寬度(例如1KB、4KB、1MB等等)更大的數據塊上進行操作。在圖示的示例中,存儲器設備110是隨機存取存儲器(RAM)設備,并且存儲器設備110中的存儲器位單元的可尋址數據寬度定義可尋址的存儲器位置。在其它示例中,其它類型的存儲器或者不同類型的存儲器的組合可以用于實現存儲器設備110。可尋址存儲器位置的數據寬度(例如,8位、16位、32位、64位、128位等等)取決于計算機系統106的特定架構和/或存儲器設備110的架構。
[0041]示例地址轉換器102被提供有用于與示例處理器108對接的邏輯。示例地址轉換器102還被提供有用于與示例PAD 104對接的邏輯。示例地址轉換器102從示例處理器108接收包括主機物理地址的存儲器訪問命令。示例地址轉換器102將接收到的主機物理地址轉換成對應的PAD地址并且將經轉換的PAD地址提供給示例PAD 104。示例地址轉換器102還將其它信息(例如命令)傳輸到示例PAD 104,如在以下進一步詳細描述的,以使得PAD 104執行可編程操作。
[0042]示例PAD 104可以被邏輯地表示為邏輯PAD的陣列,如在圖1C中圖示的那樣。每個邏輯PAD對示例存儲器設備110的不同的可尋址存儲器位置進行尋址。通過使用可以用于實現不同的邏輯PAD的可重配置或可編程邏輯(例如,可重編程的邏輯電路)來實現示例PAD 104。可替換地或附加地,可以通過使用諸如可重配置的查找表之類的數據結構來實現PAD 104。
[0043]圖1C將圖1A和IB的PAD 104圖示為圖1A和IB的示例存儲器控制器100中的多個邏輯PAD 103。每個邏輯PAD 103 (表示為邏輯PAD 103-0到103_n)具有對應的PAD地址,所述PAD地址對存儲器設備110的一個特定的可尋址存儲器位置120(表示為可尋址存儲器位置120-0到120-n)進行尋址。在圖示的示例中,為了運行命令,地址轉換器102將經轉換的PAD地址116連同命令一起廣播到PAD 104 (例如,發送到每個邏輯PAD 103)。接收經轉換的PAD地址116的每個邏輯PAD 103執行由命令所指定的操作,如果命令適用于邏輯