具有內(nèi)部讀取-修改-寫(xiě)入操作的存儲(chǔ)部件的制作方法
【專(zhuān)利說(shuō)明】具有內(nèi)部讀取-修改-寫(xiě)入操作的存儲(chǔ)部件
[0001 ] 相關(guān)申請(qǐng)
[0002]本申請(qǐng)要求2013年9月24日提交的美國(guó)臨時(shí)申請(qǐng)第61/881,869號(hào)的權(quán)益,在此通過(guò)參考將該臨時(shí)申請(qǐng)的全部?jī)?nèi)容引入。
【附圖說(shuō)明】
[0003]在附圖中,通過(guò)示例而不限制地示出本公開(kāi)。
[0004]圖1是示出根據(jù)實(shí)施例的包括具有內(nèi)部讀取-修改-寫(xiě)入操作的存儲(chǔ)部件的計(jì)算系統(tǒng)的框圖。
[0005]圖2是示出根據(jù)實(shí)施例的具有內(nèi)部讀取-修改-寫(xiě)入操作的存儲(chǔ)部件的框圖。
[0006]圖3是示出根據(jù)實(shí)施例的利用一列循環(huán)間隔的延遲對(duì)存儲(chǔ)部件中的讀取-修改-寫(xiě)入操作進(jìn)行的延遲讀取訪問(wèn)的定時(shí)圖。
[0007]圖4是示出根據(jù)實(shí)施例的利用兩列循環(huán)間隔的延遲對(duì)存儲(chǔ)部件中的讀取-修改-寫(xiě)入操作進(jìn)行的延遲讀取訪問(wèn)的定時(shí)圖。
[0008]圖5是示出根據(jù)實(shí)施例的存儲(chǔ)部件中的兩個(gè)讀取-修改-寫(xiě)入操作的重疊的定時(shí)圖。
[0009]圖6是示出根據(jù)實(shí)施例的存儲(chǔ)部件中的三個(gè)讀取-修改-寫(xiě)入操作的重疊的定時(shí)圖。
[0010]圖7是示出根據(jù)實(shí)施例的對(duì)存儲(chǔ)部件中的讀取-修改-寫(xiě)入操作的延遲讀取訪問(wèn)的流程圖。
[0011]圖8是示出根據(jù)實(shí)施例的存儲(chǔ)部件中的重疊讀取-修改-寫(xiě)入操作的流程圖。
[0012]圖9是示出根據(jù)實(shí)施例的具有用于每對(duì)存儲(chǔ)體的專(zhuān)用錯(cuò)誤檢測(cè)和校正電路的存儲(chǔ)部件的框圖。
【具體實(shí)施方式】
[0013]描述用于存儲(chǔ)部件的讀取-修改-寫(xiě)入操作的實(shí)施例。在所描述的實(shí)施例中,讀取-修改-寫(xiě)入操作是在同一操作期間自動(dòng)地讀取存儲(chǔ)位置并將新值寫(xiě)入該存儲(chǔ)位置的部件內(nèi)部存儲(chǔ)操作。寫(xiě)入存儲(chǔ)位置的新值可以是完全的新值(例如,從存儲(chǔ)控制器接收)或者可以是從存儲(chǔ)位置讀取的先前值的一些函數(shù)。讀取-修改-寫(xiě)入操作通常可用于防止多線程應(yīng)用中的競(jìng)爭(zhēng)條件,并且可用于非阻塞同步等。
[0014]在一個(gè)實(shí)施例中,存儲(chǔ)部件(例如,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM))包括存儲(chǔ)單元的一個(gè)或多個(gè)存儲(chǔ)體(bank)。每個(gè)存儲(chǔ)體都可以包括若干存儲(chǔ)單元,存儲(chǔ)客戶(hù)端數(shù)據(jù)可存儲(chǔ)在其中。存儲(chǔ)體中的每個(gè)單元可以通過(guò)存儲(chǔ)地址來(lái)識(shí)別。存儲(chǔ)部件外的存儲(chǔ)控制器部件可代表存儲(chǔ)客戶(hù)端向存儲(chǔ)部件發(fā)送命令。這些命令例如可以包括讀取-修改-寫(xiě)入命令。在一個(gè)實(shí)施例中,本文使用的“部件”是指在單個(gè)芯片或裸片上實(shí)施的電路或設(shè)備。在其他實(shí)施例中,各個(gè)部件可以堆疊或利用其他裸片密封,然而每個(gè)部件本身是單個(gè)裸片。
[0015]在一個(gè)實(shí)施例中,存儲(chǔ)部件包括兩個(gè)或更多個(gè)雙向數(shù)據(jù)總線。全局總線(G)可用于傳送存儲(chǔ)部件內(nèi)的數(shù)據(jù),諸如在數(shù)據(jù)接口與一個(gè)或多個(gè)存儲(chǔ)體之間。數(shù)據(jù)總線(DQ)可用于傳送來(lái)自存儲(chǔ)部件的數(shù)據(jù),諸如在存儲(chǔ)部件的接口與存儲(chǔ)控制器之間。當(dāng)在存儲(chǔ)部件中執(zhí)行讀取-修改-寫(xiě)入操作時(shí),全局總線和數(shù)據(jù)總線根據(jù)數(shù)據(jù)是寫(xiě)入存儲(chǔ)部件的存儲(chǔ)體還是從存儲(chǔ)體讀取出來(lái)而在相對(duì)方向上使用。這會(huì)導(dǎo)致讀取和寫(xiě)入信號(hào)的干擾,這可以被稱(chēng)為阻塞。為了避免阻塞,全局和數(shù)據(jù)總線的數(shù)據(jù)流的方向根據(jù)讀取-修改-寫(xiě)入操作的當(dāng)前相位而改變。然而,存在與改變這些總線的方向相關(guān)聯(lián)的周轉(zhuǎn)時(shí)間,這會(huì)不利地影響存儲(chǔ)部件的性能。如果作為讀取-修改-寫(xiě)入操作的一部分執(zhí)行內(nèi)部錯(cuò)誤校正,則會(huì)進(jìn)一步降低性能。
[0016]為了減少或避免對(duì)存儲(chǔ)部件性能的不利影響,在一個(gè)實(shí)施例中,存儲(chǔ)部件可執(zhí)行內(nèi)部讀取-修改-寫(xiě)入操作,其包括讀取-修改-寫(xiě)入操作的延遲讀取訪問(wèn)部分、讀取數(shù)據(jù)解碼和寫(xiě)入數(shù)據(jù)編碼的時(shí)間的重疊、兩個(gè)或多個(gè)讀取-修改-寫(xiě)入操作的重疊(其中第一讀取-修改-寫(xiě)入操作的寫(xiě)入訪問(wèn)發(fā)生在第二讀取-修改-寫(xiě)入操作的讀取訪問(wèn)之后)、或者專(zhuān)用于存儲(chǔ)部件中的第一存儲(chǔ)體的第一讀取-修改-寫(xiě)入操作(此時(shí)第二讀取-修改-寫(xiě)入操作專(zhuān)用于存儲(chǔ)部件中的第二存儲(chǔ)體)中的至少一種。在一個(gè)實(shí)施例中,如本文所描述的,存儲(chǔ)部件可以包括內(nèi)部錯(cuò)誤檢測(cè)和校正塊,其與字節(jié)可屏蔽寫(xiě)入操作一起操作來(lái)執(zhí)行讀取-修改-寫(xiě)入操作。這些技術(shù)中的每一項(xiàng)技術(shù)即使與內(nèi)部錯(cuò)誤檢測(cè)和校正組合使用時(shí)仍可以提高讀取-修改-寫(xiě)入性能。例如,根據(jù)實(shí)施例,讀取-修改-寫(xiě)入帶寬可以從峰值帶寬的1/6提高到峰值帶寬的1/5、1/4、2/7或3/8。這表示用于執(zhí)行存儲(chǔ)部件中的讀取-修改-寫(xiě)入操作的時(shí)間的顯著改善。
[0017]圖1是示出根據(jù)實(shí)施例的包括具有內(nèi)部讀取-修改-寫(xiě)入操作的存儲(chǔ)部件102的計(jì)算系統(tǒng)100的框圖。計(jì)算設(shè)備100可以是個(gè)人計(jì)算機(jī)(PC)、平板PC、機(jī)頂盒(STB)、個(gè)人數(shù)字助理(PDA)、蜂窩電話(huà)、環(huán)球網(wǎng)設(shè)備、服務(wù)器、網(wǎng)絡(luò)路由器、開(kāi)關(guān)或橋或者能夠執(zhí)行指定將由機(jī)器進(jìn)行的動(dòng)作的指令集(順序或其他方式)的任何機(jī)器。此外,雖然僅示出了單個(gè)計(jì)算設(shè)備,但術(shù)語(yǔ)“計(jì)算設(shè)備”還可以包括單獨(dú)或聯(lián)合地執(zhí)行指令集(執(zhí)行本文討論的任何一個(gè)或多個(gè)方法)的任何機(jī)器的集合。在一個(gè)實(shí)施例中,計(jì)算系統(tǒng)100包括存儲(chǔ)部件102、存儲(chǔ)控制器104以及一個(gè)或多個(gè)存儲(chǔ)客戶(hù)端106。
[0018]存儲(chǔ)控制器104可以管理進(jìn)出存儲(chǔ)部件102的數(shù)據(jù)流。例如,存儲(chǔ)控制器104可以接收并處理來(lái)自計(jì)算設(shè)備100中的一個(gè)或多個(gè)存儲(chǔ)客戶(hù)端106的存儲(chǔ)訪問(wèn)請(qǐng)求。此外,存儲(chǔ)控制器104可以恢復(fù)來(lái)自存儲(chǔ)部件102的請(qǐng)求數(shù)據(jù)并將數(shù)據(jù)提供給請(qǐng)求存儲(chǔ)客戶(hù)端106。在一個(gè)實(shí)施例中,存儲(chǔ)控制器104可以具有內(nèi)部隊(duì)列,其接受來(lái)自請(qǐng)求者(諸如存儲(chǔ)客戶(hù)端106)的存儲(chǔ)訪問(wèn)請(qǐng)求。例如,請(qǐng)求可以包括寫(xiě)入、讀取-修改-寫(xiě)入或者其他存儲(chǔ)操作。在一個(gè)實(shí)施例中,寫(xiě)入請(qǐng)求和讀取-修改-寫(xiě)入請(qǐng)求被保持在內(nèi)部隊(duì)列中,而讀取請(qǐng)求在接受時(shí)被傳輸至存儲(chǔ)部件102。當(dāng)內(nèi)部隊(duì)列達(dá)到特定大小(例如,閾值)時(shí),存儲(chǔ)控制器104可以在突發(fā)(burst)中向存儲(chǔ)部件102發(fā)布寫(xiě)入和讀取-修改-寫(xiě)入。根據(jù)突發(fā)中讀取-修改-寫(xiě)入的數(shù)量,存儲(chǔ)控制器104可以指示存儲(chǔ)部件102使用延遲讀取訪問(wèn)或者重疊讀取-修改-寫(xiě)入技術(shù)以?xún)?yōu)化性能。在一個(gè)實(shí)施例中,存儲(chǔ)控制器104可以是另一部件(諸如處理設(shè)備)的一部分。然而,在其他實(shí)施例中,存儲(chǔ)控制器104可以是獨(dú)立的芯片或者集成到計(jì)算設(shè)備100內(nèi)的不同芯片中。例如,在另一實(shí)施例中,處理設(shè)備的CPU或GPU核可以相互連接或者連接至內(nèi)部處理器高速緩存器,并且存儲(chǔ)控制器104可以外部地連接至處理設(shè)備。在其他實(shí)施例中,存儲(chǔ)控制器104和存儲(chǔ)客戶(hù)端106可以以一些其他方式連接。包含存儲(chǔ)控制器104的芯片上系統(tǒng)(SoC)將通常稱(chēng)為“控制器部件”、“DRAM控制器”或“存儲(chǔ)控制器”。
[0019]存儲(chǔ)部件102可以包括存儲(chǔ)陣列(諸如閃存、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)(例如,同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等))或靜態(tài)存儲(chǔ)器(諸如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)等)。存儲(chǔ)體110和120可分別包括其中可存儲(chǔ)數(shù)據(jù)值的多個(gè)存儲(chǔ)單元或位置。存儲(chǔ)體110和120中的每個(gè)單元或單元的集合可以由存儲(chǔ)地址進(jìn)行識(shí)別。因此,當(dāng)通過(guò)存儲(chǔ)部件102接收命令地址信號(hào)時(shí)(例如,作為讀取-修改-寫(xiě)入請(qǐng)求的一部分來(lái)接收),命令接口 130可以識(shí)別存儲(chǔ)體110和120中的對(duì)應(yīng)位置或單元。在實(shí)施例中,命令和地址接收器可以是分離的總線或者可以在單個(gè)請(qǐng)求接口中多路復(fù)用到一起。
[0020]在一個(gè)實(shí)施例中,存儲(chǔ)部件102包括存儲(chǔ)體110和120、命令接口130、數(shù)據(jù)接口 140以及錯(cuò)誤校正電路150。存儲(chǔ)體110和120可以通過(guò)全局總線103連接至存儲(chǔ)部件102中的其他塊,諸如命令接口 130、數(shù)據(jù)接口 140和錯(cuò)誤校正電路150。存儲(chǔ)部件102中的命令接口 130和數(shù)據(jù)接口 140可以分別通過(guò)命令總線105和數(shù)據(jù)總線107連接至存儲(chǔ)控制器104。在一個(gè)實(shí)施例中,存儲(chǔ)控制器104和存儲(chǔ)部件102橫跨高速極低搖擺-近地(VLS-NG)信令接口相互通信。VLS-NG信令使用極低的電壓擺幅以多達(dá)2Gbps的速度在一個(gè)設(shè)計(jì)中操作,以使功率最小化。參考?jí)K(CK)和命令地址(CA)105和數(shù)據(jù)(DQ)107線路可以都使用VLS-NG技術(shù),而標(biāo)準(zhǔn)的軌對(duì)軌CMOS信令可以用于芯片使能(EN)線路。
[0021]在一個(gè)實(shí)施例中,CA線路105被用于從存儲(chǔ)控制器104向存儲(chǔ)部件102傳送命令和地址,而DQ線路107在二者之間承載讀取和寫(xiě)入數(shù)據(jù)。被用于在存儲(chǔ)控制器104和存儲(chǔ)部件102之間通信的CA和DQ線路的數(shù)量是接口架構(gòu)的可伸縮參數(shù)。所實(shí)現(xiàn)的CA和DQ線路的數(shù)量可以取決于存儲(chǔ)部件102的數(shù)量和寬度以及所要求的CA和DQ帶寬。在一個(gè)實(shí)施例中,存儲(chǔ)控制器104的大小被確定為支持用于每個(gè)系統(tǒng)的適當(dāng)數(shù)量的CA和DQ線路。在一個(gè)實(shí)施例中,所有CA和DQ數(shù)據(jù)傳輸可以是同步的,意味著它們是指CK轉(zhuǎn)換。
[0022]圖2是示出根據(jù)實(shí)施例的用于讀取-修改-寫(xiě)入操作的存儲(chǔ)部件102的框圖。如上所述,在一個(gè)實(shí)施例中,存儲(chǔ)部件102包括存儲(chǔ)體110和120、命令接口 130、數(shù)據(jù)接口 140以及錯(cuò)誤檢測(cè)電路150。在該實(shí)施例中,全局總線103被示為兩個(gè)獨(dú)立的總線,包括全局地址總線202和全局?jǐn)?shù)據(jù)總線204。全局地址總線202在命令接口 130與存儲(chǔ)體110和120之間傳輸?shù)刂沸畔ⅲ瑫r(shí)全局?jǐn)?shù)據(jù)總線204在數(shù)據(jù)接口 140、錯(cuò)誤校正電路105與存儲(chǔ)體110和120之間傳輸讀取和寫(xiě)入數(shù)據(jù)。實(shí)際上,根據(jù)實(shí)施例,全局總線103可以包括更多或更少的總線。所示實(shí)施例示出了兩個(gè)存儲(chǔ)體110和120。然而,在其他實(shí)施例中,存儲(chǔ)部件102可以包括一些其他數(shù)量的存儲(chǔ)體。
[0023]在一個(gè)實(shí)施例中,在命令接口130處接收讀取-修改-寫(xiě)入命令。可以在命令總線105上從存儲(chǔ)控制器104在命令地址(CA)焊盤(pán)232處接收讀取-修改-寫(xiě)入命令。在一個(gè)實(shí)施例中,讀取-修改-寫(xiě)入命令包括16位值。然而,在其他實(shí)施例中,讀取-修改-寫(xiě)入命令可以包括一些其他大小的值。基于時(shí)鐘信號(hào)(CK),16位值可以存儲(chǔ)在寄存器234中。在一個(gè)實(shí)施例中,表示存儲(chǔ)體110和120中的位置的地址A在全局地址總線202上被驅(qū)動(dòng)到存儲(chǔ)體110和120。執(zhí)行由地址A指定的位置處的數(shù)據(jù)訪問(wèn)操作,并且266位數(shù)據(jù)值在全局?jǐn)?shù)據(jù)總線204上從存儲(chǔ)體110和120中驅(qū)出。該值可以存儲(chǔ)在錯(cuò)誤校正電路150的寄存器252中。在一個(gè)實(shí)施例中,該值可以稱(chēng)為與讀取-修改-寫(xiě)入操作相關(guān)聯(lián)的“讀取數(shù)據(jù)”。
[0024]在一個(gè)實(shí)施例中,解碼器254對(duì)266位讀取數(shù)據(jù)進(jìn)行解碼。解碼器254使用讀取數(shù)據(jù)中的10位校驗(yàn)子(syndrome)對(duì)讀取數(shù)據(jù)執(zhí)行錯(cuò)誤檢測(cè)和校正。根據(jù)實(shí)施例,解碼器254可使用漢明(hamming)錯(cuò)誤校正、單一錯(cuò)誤校正/雙重錯(cuò)誤校正或者一些其他錯(cuò)誤校正技術(shù),以校正讀取數(shù)據(jù)中的至少單個(gè)位的錯(cuò)誤。作為錯(cuò)誤校正的結(jié)果