專利名稱:用于選擇命令發送到存儲器的方法、存儲器控制器和系統的制作方法
技術領域:
本發明一般涉及計算機系統,更具體地涉及發送命令到存儲器的存儲器控制器。
背景技術:
常常將1948年的EDVAC計算機系統的開發稱為計算機時代的開始。從那時起,計算機系統已經發展成在許多不同環境下可以找到的極為復雜的裝置。計算機系統典型地包括硬件(例如半導體、電路板等)和軟件(例如計算機程序)的組合。隨著半導體處理和計算機體系結構的發展將計算機硬件的性能向更高水平推動,更為復雜的計算機軟件已經得到了發展,以利用硬件的更高性能,帶來了比僅僅數年前強大得多的當今計算機系統。
對計算機系統的性能可以具有巨大影響的計算機系統的一個組件是存儲器子系統。計算機系統典型地包括經由處理器總線連接到存儲器子系統的一個或多個處理器。存儲器子系統典型地包括經由存儲器數據總線和相關聯的控制信號連接到一個或多個同步動態隨機訪問存儲器(SDRAM)的存儲器控制器。存儲器控制器負責接受來自處理器的存儲器讀和寫(加載和存儲)命令或請求、與SDRAM相聯系以執行讀或寫命令、以及將與讀操作相關聯的任何數據從SDRAM返回到處理器。存儲器控制器還具有管理存儲器存儲體(bank)定時、最大化存儲器數據總線的利用、以及優化存儲器訪問,比如在可能時使得讀優先于寫,的任務。
優化存儲器訪問對于計算機系統性能的提高已經是一個基本的問題。存儲器控制器努力解決的一個存儲器訪問問題是讀命令與寫命令的選擇。一般地,讀命令對于系統性能是限制性因素,因為處理器必須等待讀取數據,以便繼續執行指令,或者處理器預取讀取數據、然后試圖隱藏存儲器時延。寫命令一般不是嚴重的問題,因為一旦處理器將寫數據發送到存儲器控制器,處理器認為它們就完成了。然而,存儲器控制器具有固定數目的緩沖器(或隊列)用以保持寫命令和數據。一旦緩沖區近乎充滿,由于存儲器控制器中的寫隊列可能溢出,存儲器控制器就需要發信號通知處理器不能接受新的命令了,這就拖延了總線。該拖延可能造成所有處理器命令的額外延遲;于是,對于讀命令寫命令可能成為一個性能問題。
于是,需要一種選擇適當的時間以將寫命令發送到存儲器的更佳方式,以便允許提高性能。
發明內容
提供了一種方法、設備、存儲器控制器、系統和信號承載介質,在實施例中,選擇命令以發送到存儲器。在實施例中,如果如下情況中的一些或全部為真,則將寫隊列中不與沖突隊列相沖突的最舊的命令發送到存儲器和添加到沖突隊列讀隊列中的所有命令與沖突隊列相沖突,來自處理器的任何讀命令不與寫隊列相沖突,寫隊列中的命令數目大于第一閾值,以及沖突隊列中的所有命令已經出現小于第二閾值。在實施例中,如果命令不與隊列中的命令訪問存儲器中的同一高速緩存線,則該命令不與該隊列相沖突。以此方式,在實施例中,寫命令在減小了對于讀命令性能的影響的時刻發送到存儲器。
下文結合附圖來描述本發明的各種實施例圖1描繪了用于實現本發明實施例的示例系統的高層次框圖。
圖2描繪了按照本發明實施例的示例存儲器控制器的框圖。
圖3描繪了按照本發明實施例的存儲器控制器的示例處理流程圖。
圖4描繪了按照本發明實施例的存儲器控制器的另一示例處理流程圖。
圖5描繪了按照本發明實施例的存儲器控制器的另一示例處理流程圖。
然而,注意的是,附圖僅圖示了本發明的示例實施例,因此不應認為限制其范圍,因為本發明可允許其他同等有效的實施例。
具體實施例方式
參見附圖,其中相似的編號表示貫穿這幾幅附圖的相似部分。圖1描繪了按照本發明實施例的計算機系統100的高層次框圖表示,該計算機系統經由網絡130連接到服務器計算機系統132。僅為了方便而使用了名稱“計算機系統”和“服務器”,并且在實施例中,對于一個計算機工作為客戶機的計算機可對于另一計算機工作為服務器,反之亦然,而且可使用任何適當的電子裝置。在實施例中,計算機系統100的硬件組件可由IBM eServer iSeries或者pSeries計算機系統來實現。然而,本領域的技術人員將理解,本發明實施例的機制和設備同等地應用于任何適當的計算系統。
計算機系統100的主要組件包括一個或多個處理器101、主存儲器102、存儲器控制器106、終端接口111、存儲裝置接口112、I/O(輸入/輸出)裝置接口113和通信/網絡接口114,所有組件經由存儲器總線103、I/O總線104和I/O總線接口單元105相連接用于組件間的通信。
計算機系統100包含一個或多個可編程的中央處理單元(CPU)101A、101B、101C和101D,這里整體上稱為處理器101。處理器101可包括通用處理器、專用處理器和/或狀態機,并且可經由總線103與存儲器控制器106連接,以發出命令比如加載和存儲(讀和寫)命令以便訪問存儲器102。在實施例中,計算機系統100包含相對大型的系統典型具有的多個處理器;然而,在另一實施例中,作為代替,計算機系統100是單個CPU系統。每個處理器101執行在主存儲器102中存儲的指令,并且可包括一級或多級板上高速緩存。
主存儲器102是用于存儲數據和程序的隨機訪問半導體存儲器。在另一實施例中,主存儲器102代表計算機系統100的整個虛擬存儲器,并且還可包括連接到計算機系統100或者經由網絡130連接的其他計算機系統的虛擬存儲器。主存儲器102在概念上是單個的單片實體,但是在其他實施例中主存儲器102是更復雜的配置,比如高速緩存和其他存儲器裝置的分等級體系。例如,存儲器可以以多級高速緩存存在,并且這些高速緩存可進一步通過功能來劃分,從而一個高速緩存保持指令,而另一個保持非指令數據,其由處理器使用。可將不同的CPU或CPU集進一步分配給存儲器并與之相關聯,正如在任何各種所謂的非一致性存儲器訪問(NUMA)計算機體系結構中所知的那樣。在各種實施例中,存儲器102可以是任何級別的高速緩存或者主存儲器。在一種實施例中,將存儲器102實現為DRAM(動態隨機訪問存儲器),但是在其他實施例中可使用任何適當的存儲器技術。
存儲器控制器106與存儲器102之間的接口一般包括命令信號,比如由存儲器控制器106驅動的經由具有數據線和數據選通的雙向數據總線到存儲器的讀地址選通(RAS)和列地址選通(CAS)。由存儲器控制器106驅動的每個命令信號典型地包含多個時延周期。另外,在例如存儲器范圍的存儲體上執行這些命令之后,在該存儲體能夠進行另一操作之前,該存儲體通常需要額外的周期來恢復。例如,為了實現讀或加載,存儲器控制器106打開該存儲體,發出讀命令,等待用于CAS時延的必要周期,并且接收來自存儲器的數據突發。在該數據突發到存儲器控制器之后,該存儲體要求多個周期以預充電關聯于該加載的內部總線的行。
在實施例中,存儲器控制器106包括處理器(類似于處理器101)和能夠在其處理器上執行的指令或者能夠由在其處理器上執行的指令解釋的聲明,以執行如以下參照圖3、4和5進一步描述的功能。在另一實施例中,存儲器控制器106可以以微碼或固件實現。在另一實施例中,存儲器控制器106可以借助于邏輯門和/或其他適當的硬件技術以硬件實現。下面參照圖2進一步描述了存儲器控制器106。
存儲器總線103提供了用于在處理器101、存儲器控制器106和I/O總線接口單元105之間傳送數據的數據通信路徑。I/O總線接口單元105進一步連接到用于傳送數據到各種I/O單元和傳送來自各種I/O單元的數據的系統I/O總線104。I/O總線接口單元105通過系統I/O總線104與多個I/O接口單元111、112、113和114通信,I/O接口單元也稱為I/O處理器(IOP)或I/O適配器(IOA)。系統I/O總線104可以例如是工業標準PCI總線或任何其他適當的總線技術。
I/O接口單元支持與多種存儲裝置和I/O裝置的通信。例如,終端接口單元111支持一個或多個用戶終端121、122、123和124的配屬。存儲裝置接口單元112支持一個或多個直接訪問存儲裝置(DASD)125、126和127(它們一般是旋轉磁盤驅動器存儲裝置,不過作為代替,它們可以是其他裝置,包括配置為對于主機表現為單個大型存儲裝置的盤驅動器陣列)的配屬。主存儲器102的內容可存儲到直接訪問存儲裝置125、126和127中以及從其取回。
I/O和其他裝置接口113為任何各種其他輸入/偷出裝置或其他類型的裝置提供了接口。兩個這樣的裝置,打印機128和傳真機129,在圖1的示例性實施例中示出,但是在其他實施例中可存在許多其他這樣的裝置,它們可以是不同類型的。網絡接口114提供從計算機系統100到其他數字裝置和計算機系統的一個或多個通信路徑;這樣的路徑可包括例如一個或多個網絡130。
盡管存儲器總線103在圖1中表示為相對簡單的單個總線結構,其在處理器101、存儲器控制器106和I/O總線接口105之間提供直接的通信路徑,但是事實上存儲器總線103可包括多個不同的總線或通信路徑,其可以以各種形式的任一種來配置,比如分等級的、星形或網狀配置中的點對點鏈路、多個分等級的總線、并行和冗余的路徑、或者任何其他適當的配置類型。而且,盡管I/O總線接口105和I/O總線104表示為單個的各個單元,但是計算機系統100事實上可包含多個I/O總線接口單元105和/或多個I/O總線104。盡管示出了多個I/O接口單元,它們將系統I/O總線104與通向各種I/O裝置的各種通信路徑相隔離,但是在其他實施例中,一些或全部I/O裝置直接地連接到一個或多個系統I/O總線。
圖1中所示的計算機系統100具有多個配屬的終端121、122、123和124,比如可以是典型的多用戶“大型機”計算機系統。一般地,在這樣的情況下,配屬的裝置的實際數目大于圖1中所示的,盡管本發明不限于任何特定大小的系統。作為替代,計算機系統100可以是單用戶的系統,一般僅包含單個用戶顯示器和鍵盤輸入,或者可以是幾乎沒有或根本沒有直接的用戶接口但是從其他計算機系統(客戶機)接收請求的服務器或類似裝置。在其他實施例中,計算機系統100可實現為個人計算機、便攜式計算機、膝上或筆記本計算機、PDA(個人數字助理)、平板式計算機(Tablet Computer)、口袋計算機、電話機、尋呼機、汽車、遠程會議系統、用具或任何其他適當類型的電子裝置。
網絡130可以是任何適當的網絡或網絡組合,可支持適于向計算機系統100和服務器132傳送數據/或代碼、或者傳送來自計算機系統100和服務器132的數據/或代碼的任何適當協議。在各種實施例中,網絡130可代表存儲裝置或存儲裝置的組合,其直接地或間接地連接到計算機系統100。在實施例中,網絡130可支持無限帶寬(Infiniband)。在另一實施例中,網絡130可支持無線通信。在另一實施例中,網絡可支持硬有線通信,比如電話線或線纜。在另一實施例中,網絡130可支持以太網IEEE(電氣和電子工程師協會)802.3x規范。在另一實施例中,網絡130可以是互聯網并且可支持IP(互聯網協議)。
在另一實施例中,網絡130可以是局域網(LAN)或廣域網(WAN)。在另一實施例中,網絡130可以是熱點服務提供者網絡。在另一實施例中,網絡130可以是內聯網。在另一實施例中,網絡130可以是GPRS(通用分組無線服務)網絡。在另一實施例中,網絡130可以是FRS(家庭無線服務)網絡。在另一實施例中,網絡130可以是任何適當的蜂窩數據網絡或基于蜂窩的無線網絡技術。在另一實施例中,網絡130可以是IEEE 802.11B無線網絡。在又一實施例中,網絡130可以是任何適當的網絡或網絡組合。盡管示出了一個網絡130,但是在其他實施例中可存在任何數目(包括零)的網絡(相同或不同類型)。
圖1旨于在高層次描繪計算機系統100的代表性的主要組件、網絡130和服務器132;各個組件可比圖1中表示的更為復雜;可存在圖1中所示以外的或附加的組件;這些組件的數目、類型和配置可變化。這里公開了這些附加的復雜性或附加的變化的若干特定示例;應當理解,它們僅僅是作為示例,并且不必僅僅是這樣的變化。
圖1中所示的以及實現本發明各種實施例的各種軟件組件可以以許多方式實現,包括使用各種計算機軟件應用、例行程序、組件、程序、對象、模塊、數據結構等,下文稱為“計算機程序”或簡稱為“程序”。計算機程序一般包括一個或多個指令,這些指令在各個時刻駐留于計算機系統100中的各種存儲器和存儲裝置中,并且在由計算機系統100中的一個或多個處理器101讀取和執行時,使得計算機100執行用以執行包括本發明實施例各方面的步驟或元素所必需的步驟。
而且,盡管在完全功能計算機系統的環境中已經描述了并且下文將描述本發明的實施例,本發明的各種實施例能夠以多種形式作為程序產品來發布,并且本發明可等同地加以應用,而不管用以實際地實現該發布的信號承載介質的特定類型如何。定義該實施例的功能的程序可經由各種信號承載媒體交付給計算機系統100,其包括但不限于(1)永久地存儲于不可改寫的存儲介質上的信息,該存儲介質例如配屬于計算機系統或計算機系統內的只讀存儲器裝置,比如CD-ROM、DVD-R或DVD+R;(2)存儲于可改寫的存儲介質上的可更改信息,該存儲介質例如硬盤驅動器(例如DASD 125、126或127)、CD-RW、DVD-RW、DVD+RW、DVD-RAM或磁盤;或者(3)由通信介質傳送的信息,例如通過計算機或電話網絡,比如網絡130,包括無線通信。
這樣的信號承載媒體在承載用以指示本發明的這些功能的機器可讀指令時代表了本發明的實施例。
本發明的實施例還可作為與客戶公司、非盈利組織、政府實體、內部組織結構等等的服務承諾的一部分來交付。這些實施例的方面可包括將計算機系統配置為執行這里所述方法的一部分或全部以及部署實現這里所述方法的一部分或全部的web服務和軟件系統。這些實施例的方面還可包括分析客戶公司、根據該分析來形成推薦、生成用以實現該推薦的各部分的軟件、將該軟件集成到現有的處理和基礎設施中、度量這里所述方法和系統的使用、向用戶分配費用以及向用戶針對這些方法和系統的使用進行計費。
此外,下面所述的各種程序可根據它們在本發明的具體實施例中實現時所針對的應用來識別。但是,僅為了方便而使用了隨后的任何特定程序命名,因此本發明的實施例不應當限制為僅在由這樣的命名所識別的和/或暗示的任何具體應用中使用。
圖1中所示的示例性環境并不旨在限制本發明。實際上,可使用其他替代的硬件和/或軟件環境,而不會脫離本發明的范圍。
圖2描繪了按照本發明實施例的示例存儲器控制器106的框圖。存儲器控制器106包括讀隊列205、寫隊列210、沖突隊列215、滴流式(trickle)寫要求寄存器220、滴流式寫周期寄存器225和滴流式寫周期要求寄存器230。滴流式寫要求寄存器220、滴流式寫周期寄存器225和/或滴流式寫周期要求寄存器230中的值可由存儲器控制器106的設計者設置,或者存儲器控制器106可從計算機100的用戶或系統管理員、從計算機100的任何適當硬件和/或軟件、或者經由網絡130來接收它們。
讀隊列205存儲從處理器101接收的、存儲器控制器106尚未發送到存儲器102的讀命令。寫隊列210存儲從處理器101接收的、存儲器控制器106尚未發送到存儲器102的寫命令。沖突隊列215存儲存儲器控制器106先前已經發送到存儲器102的讀和寫命令二者,但是僅存儲那些自從發送該命令時起、閾值時間量尚未屆滿的命令。沖突隊列215進一步包括能夠在處理器上執行的指令或邏輯,以執行如下面參照圖3、4和5進一步所描述的功能。
滴流式寫要求寄存器220存儲處理器周期、時鐘的周期數目或時間量閾值,沖突隊列215將其與寫隊列210中的命令數目做比較。如果寫隊列210中的命令數目超過滴流式寫要求寄存器220的值,則沖突隊列215是在滴流式寫要求模式,如下面參照圖4進一步所描述的那樣。
滴流式寫周期寄存器225存儲處理器周期、時鐘的周期數目或時間量閾值,沖突隊列215將其與命令在沖突隊列215中已經出現的處理器周期、時鐘周期數目或時間量做比較。如果滴流式寫周期寄存器225中的值超過該命令在沖突隊列215中已經出現的周期數目或時間量,則沖突隊列215將寫隊列210中最舊的不與沖突隊列215相沖突的寫命令發送到存儲器102,如下面參照圖4進一步所描述的那樣。如果命令和隊列中的至少一個命令訪問存儲器102中的同一高速緩存線,則該命令與該隊列相沖突。如果命令所訪問的存儲器102中的高速緩存線與隊列中的所有命令所訪問的存儲器102中的高速緩存線均不相同,則該命令不與該隊列相沖突。
滴流式寫周期要求寄存器230存儲處理器周期、時鐘的周期數目或時間量閾值,沖突隊列215將其與命令在沖突隊列215中已經出現的處理器周期、時鐘周期數目或時間量做比較。如果滴流式寫周期要求寄存器230中的值超過該命令在沖突隊列215中已經出現的周期數目或時間量,則沖突隊列215將與沖突隊列215不相沖突的寫隊列210中最舊的寫命令發送到存儲器102,如下面參照圖5進一步所描述的那樣。
在各種其他實施例中,滴流式寫要求寄存器220、滴流式寫周期寄存器225和/或滴流式寫周期要求寄存器230可實現為存儲器控制器106中的存儲器位置。
圖3描繪了按照本發明實施例的存儲器控制器106的示例處理流程圖。圖3中所示的示例邏輯是在存儲器控制器106的每個處理器周期或每個時鐘周期執行的。控制始于方框300。控制然后繼續到方框305,在其中沖突隊列215確定寫隊列210中的寫數目是否超過寫隊列閾值。如果方框305處的確定為真,則寫隊列210中的寫數目超過寫隊列閾值,因此控制繼續到方框310,在其中沖突隊列215將最舊的寫命令從寫隊列210發送到存儲器102,并且將該寫命令添加到沖突隊列215。控制然后繼續到方框398,在其中圖3的邏輯返回。
如果方框305處的確定為假,則寫隊列210中的寫數目未超過寫隊列閾值,因此控制從方框305繼續到方框315,在其中沖突隊列215確定來自處理器101的輸入讀命令是否與寫隊列210中的任一命令相沖突。如果輸入讀命令與寫隊列210中的命令想要訪問存儲器102中的同一高速緩存線,則兩個命令相沖突。
如果方框315處的確定為真,則輸入讀命令與寫隊列210相沖突,因此控制繼續到方框320,在其中沖突隊列215將與輸入讀命令相沖突的寫命令從寫隊列210發送到存儲器102,并且將該寫命令添加到沖突隊列215。控制然后繼續到方框398,在其中圖3的邏輯返回。
如果方框315處的確定為假,則輸入讀命令不與寫隊列210中的寫命令相沖突,因此控制從方框315繼續到方框325,其中沖突隊列215確定讀隊列205中是否存在不與沖突隊列215中的命令相沖突的讀命令。
如果方框325處的確定為真,則讀隊列205中存在不與沖突隊列215相沖突的讀命令,因此控制繼續到方框330,在其中沖突隊列215將讀隊列205中與寫隊列210中的所有寫命令不相沖突的最舊的讀命令發送到存儲器102,并且將該讀命令添加到沖突隊列215。控制然后繼續到方框399,在其中圖3的邏輯返回。
如果方框325處的確定為假,則讀隊列205中的所有讀命令與沖突隊列215中的至少一個命令相沖突,因此控制繼續到方框335,在其中執行圖4的邏輯,其如下面進一步所述。控制然后繼續到方框399,在其中圖3的邏輯返回。
圖4描繪了按照本發明實施例的存儲器控制器106的又一示例處理流程圖。控制始于方框400。控制然后繼續到方框405,在其中沖突隊列215確定寫隊列210中的命令數目是否大于滴流式寫要求寄存器220中的值。如果方框405處的確定為真,則寫隊列210中的命令數目大于滴流式寫要求寄存器220中的值,因此控制繼續到方框410,在其中執行圖5的邏輯,其如下面進一步所述。控制然后繼續到方框499,在其中圖4的邏輯返回。
如果方框405處的確定為假,則寫隊列210中的命令數目不大于滴流式寫要求寄存器220中的值,因此控制從方框405繼續到方框415,在其中沖突隊列215對于沖突隊列215中的所有命令來確定滴流式寫周期寄存器225中的值是否大于所有命令在沖突隊列215中已經出現的處理器周期、時鐘周期數目或時間量的定時器值。在實施例中,沖突隊列215中存儲的所有命令具有不同的關聯定時器,該定時器對該命令在沖突隊列215中已經出現的時間量或周期數目保持跟蹤。
如果方框415處的確定為真,則滴流式寫周期寄存器225中的值大于所有命令在沖突隊列215中已經出現的周期數目或時間量,因此控制繼續到方框420,在其中沖突隊列215將寫隊列210中不與沖突隊列215相沖突的最舊的寫命令(已經出現最久的寫命令)發送到存儲器102,并且將該寫命令添加到沖突隊列215。控制然后繼續到方框499,在其中圖4的邏輯返回。
如果方框415處的確定為假,則滴流式寫周期寄存器225中的值不大于所有命令在沖突隊列215中已經出現的周期數目或時間量,因此控制從方框415繼續到方框499,在其中圖4的邏輯返回。
圖5描繪了按照本發明實施例的存儲器控制器106的又一示例處理流程圖。控制始于方框500。控制然后繼續到方框505,在其中沖突隊列215對于沖突隊列215中的所有命令來確定滴流式寫周期要求寄存器230中的值是否超過該命令在沖突隊列215中已經出現的處理器周期、時鐘周期數目或時間量的定時器值。
如果方框505處的確定為真,則滴流式寫周期要求寄存器230中的值超過所有命令在沖突隊列215中已經出現的周期數目,因此控制繼續到方框510,在其中沖突隊列215將寫隊列210中不與沖突隊列215相沖突的最舊的寫命令發送到存儲器102,并且將該寫命令添加到沖突隊列215。控制然后繼續到方框599,在其中圖5的邏輯返回。
如果方框505處的確定為假,則滴流式寫周期要求寄存器230中的值不超過所有命令在沖突隊列215中已經出現的周期數目,因此控制繼續到方框599,在其中圖5的邏輯返回。
以此方式,寫命令對于讀命令的性能的影響得以減小,在實施例中,如果寫隊列210幾乎充滿,寫命令才從寫隊列210發送到存儲器102,并且如果不采取動作,則可能發生總線103的拖延。
在本發明示范實施例的先前詳細描述中,參考了形成本說明書一部分的附圖(其中相似的編號代表相似的元素),在附圖中作為例子示出了可實施本發明的具體示例性實施例。充分詳細地描述了這些實施例,以使得本領域的技術人員能夠實施本發明,但是不脫離本發明的范圍,可利用其他實施例,以及可進行邏輯上的、機械上的、電氣上的和其他方面的變化。在本說明書中使用的措辭“實施例”的不同實例不必指代同一實施例,但是它們可以指代同一個實施例。因此,先前的詳細描述不能以限制性的意義來理解,本發明的范圍僅由所附權利要求書來限定。
在先前的描述中,給出了大量具體的細節,以提供本發明實施例的透徹理解。但是本發明可在沒有這些具體細節時實施。在其他實例中,沒有具體地示出公知的電路、結構和技術,以免使得本發明難以理解。
權利要求
1.一種方法,包括確定寫隊列中的命令數目是否大于第一閾值;如果該確定為真,則判斷沖突隊列中的所有命令在該沖突隊列中是否已經出現小于第二閾值周期數目;以及如果該判斷為真,則選擇該寫隊列中不與該沖突隊列中的任何命令相沖突的最舊的命令。
2.權利要求1的方法,進一步包括將不與該沖突隊列中的任何命令相沖突的最舊的命令從該寫隊列發送到存儲器。
3.權利要求2的方法,進一步包括將不與該沖突隊列中的任何命令相沖突的最舊的命令添加到該沖突隊列。
4.權利要求1的方法,其中該選擇進一步包括確定該寫隊列中的該最舊的命令與該沖突隊列中的任何命令是否要訪問存儲器中的同一個高速緩存線。
5.權利要求1的方法,其中該沖突隊列包括先前發送到存儲器的命令。
6.權利要求1的方法,其中該確定進一步包括確定讀隊列中的所有命令是否與該沖突隊列相沖突。
7.權利要求1的方法,其中該確定進一步包括確定來自處理器的任何讀命令是否不與該寫隊列相沖突。
8.一種存儲器控制器,包括寫隊列;以及沖突隊列,如果該寫隊列中的命令數目大于第一閾值,并且該沖突隊列中的所有命令在該沖突隊列中已經出現小于第二閾值周期數目,則該沖突隊列將該寫隊列中不與該沖突隊列中的任何命令相沖突的最舊的命令發送到存儲器。
9.權利要求8的存儲器控制器,其中如果該沖突隊列將最舊的命令發送到該存儲器,則該沖突隊列進一步將該最舊的命令添加到該沖突隊列。
10.權利要求8的存儲器控制器,其中該沖突隊列進一步確定該寫隊列中的不與該沖突隊列中的任何命令相沖突的最舊的命令,不與該沖突隊列中的任何命令訪問該存儲器中的同一個高速緩存線。
11.權利要求8的存儲器控制器,其中該沖突隊列包括先前發送到該存儲器的命令。
12.權利要求8的存儲器控制器,其中該沖突隊列基于如果讀隊列中的所有命令與該沖突隊列相沖突,進一步將該寫隊列中不與該沖突隊列中的任何命令相沖突的最舊的命令發送到存儲器。
13.權利要求8的存儲器控制器,其中該沖突隊列基于如果來自處理器的任何讀命令不與該寫隊列相沖突,將該寫隊列中不與該沖突隊列中的任何命令相沖突的最舊的命令發送到存儲器。
14.一種計算機系統,包括處理器;存儲器;以及如權利要求8至13的任一項中限定的從處理器接收命令的存儲器控制器。
15.權利要求14的計算機系統,其中該存儲器控制器進一步包括第一寄存器和第二寄存器,以及其中該存儲器控制器進一步將第一閾值存儲于該第一寄存器中和將第二閾值存儲于該第二寄存器中。
全文摘要
一種方法、設備、系統和信號承載介質,在實施例中選擇命令以發送到存儲器。在實施例中,如果如下情況中的一些或全部為真,則將寫隊列中不與沖突隊列相沖突的最舊的命令發送到存儲器和添加到沖突隊列讀隊列中的所有命令與沖突隊列相沖突,來自處理器的任何讀命令不與寫隊列相沖突,寫隊列中的命令數目大于第一閾值,以及沖突隊列中的所有命令已經出現小于第二閾值。在實施例中,如果命令不與隊列中的命令訪問存儲器中的同一高速緩存線,則該命令不與該隊列相沖突。以此方式,在實施例中,寫命令在減小了對于讀命令性能的影響的時刻發送到存儲器。
文檔編號G06F3/06GK1855026SQ200610057720
公開日2006年11月1日 申請日期2006年2月23日 優先權日2005年4月28日
發明者赫爾曼·李·布萊克蒙, 菲利普·羅杰斯·希利爾三世, 約瑟夫·艾倫·基爾希特, 布賴恩·T·范德普爾 申請人:國際商業機器公司