專(zhuān)利名稱(chēng):高速緩存系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及一種存儲(chǔ)在計(jì)算中使用的數(shù)據(jù)的高速緩存系統(tǒng)。
背景技術(shù):
在計(jì)算機(jī)系統(tǒng)中,通常與主存儲(chǔ)器分離地設(shè)置少量的快速高速緩沖存儲(chǔ)器。設(shè)置多個(gè)級(jí)別的高速緩沖存儲(chǔ)器,以減少在發(fā)生高速緩存命中失誤時(shí)對(duì)主存儲(chǔ)器的訪問(wèn)。例如, 可以在一級(jí)高速緩存和主存儲(chǔ)器之間設(shè)置能夠比主存儲(chǔ)器更快地被訪問(wèn)的二級(jí)高速緩存。在相關(guān)技術(shù)中,通過(guò)根據(jù)被稱(chēng)為雙數(shù)據(jù)速率2 (DDR2)的標(biāo)準(zhǔn)工作的主存儲(chǔ)器來(lái)實(shí)現(xiàn)加速與CPU的數(shù)據(jù)傳輸?shù)募夹g(shù)。DDR2是在同步計(jì)算機(jī)內(nèi)部的各個(gè)電路時(shí)使用時(shí)鐘信號(hào)的上升沿和下降沿兩者的技術(shù)。與僅使用時(shí)鐘的上升沿或者僅使用時(shí)鐘的下降沿來(lái)同步各個(gè)電路的情況相比,根據(jù)DDR2,能夠使每單位時(shí)間的處理效率提高到兩倍。在DDR2標(biāo)準(zhǔn)中,存儲(chǔ)器訪問(wèn)的最小單元是64字節(jié)。根據(jù)該值,將存儲(chǔ)在高速緩沖存儲(chǔ)器中的數(shù)據(jù)大小(行大小)類(lèi)似地設(shè)置為64字節(jié),以匹配關(guān)于主存儲(chǔ)器的最小存儲(chǔ)器訪問(wèn)單元。例如,在日本未審查專(zhuān)利申請(qǐng)公開(kāi)第2002-278836號(hào)中公開(kāi)了與高速緩沖存儲(chǔ)器相關(guān)的技術(shù)。此外,被稱(chēng)為DDR3的標(biāo)準(zhǔn)已作為DDR的第三代投入了使用。雖然關(guān)于主存儲(chǔ)器的內(nèi)部和外部頻率比與DDR2相同,但是在DDR3中的單個(gè)周期從主存儲(chǔ)器讀取的內(nèi)部數(shù)據(jù)大小倍增到1 字節(jié)。為了獲得這種DDR3的最完全的潛力,需要以DDR2雙倍的數(shù)據(jù)大小訪問(wèn)主存儲(chǔ)器。如上所述,如果以1 字節(jié)為單元訪問(wèn)主存儲(chǔ)器,而高速緩沖存儲(chǔ)器的行大小與 DDR2類(lèi)似地保持在64字節(jié),則高速緩存一致性控制變得復(fù)雜。高速緩存一致性控制是指用于將主存儲(chǔ)器中的記錄信息與高速緩沖存儲(chǔ)器中記錄的信息同步的過(guò)程。因此,可以想到將高速緩存系統(tǒng)的行大小擴(kuò)展為1 字節(jié),即在訪問(wèn)主存儲(chǔ)器時(shí)使用的相同字節(jié)數(shù)。然而,如果將高速緩存系統(tǒng)的行大小擴(kuò)展到兩倍,則花費(fèi)兩倍數(shù)量的周期來(lái)將數(shù)據(jù)寄存在高速緩沖存儲(chǔ)器中或者移出要替換的行上的數(shù)據(jù)。隨著高速緩存寄存和移出處理的次數(shù)增加,管道逐漸被針對(duì)高速緩沖存儲(chǔ)器的寄存和移出處理占據(jù)。其結(jié)果是,用于關(guān)于高速緩沖存儲(chǔ)器讀取和寫(xiě)入數(shù)據(jù)的過(guò)程在管道上變得較不頻繁。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的一方面,高速緩存系統(tǒng)包括在計(jì)算單元之間輸入/輸出數(shù)據(jù)的一級(jí)高速緩沖存儲(chǔ)器。一級(jí)高速緩沖存儲(chǔ)器包括多端口存儲(chǔ)器,每個(gè)多端口存儲(chǔ)器包括存儲(chǔ)單元,其存儲(chǔ)具有第一數(shù)據(jù)大小的單元數(shù)據(jù);寫(xiě)入單元,其將順序輸入的多個(gè)單元數(shù)據(jù)同時(shí)寫(xiě)入到存儲(chǔ)單元的連續(xù)位置;以及輸出單元,其從存儲(chǔ)單元讀出并輸出多個(gè)單元數(shù)據(jù)。當(dāng)向一級(jí)高速緩沖存儲(chǔ)器中寫(xiě)入具有作為第一數(shù)據(jù)大小的多倍的第二數(shù)據(jù)大小、并且被分割為單元數(shù)據(jù)的數(shù)據(jù)時(shí),通過(guò)將順序的單元數(shù)據(jù)寫(xiě)入到多端口存儲(chǔ)器的子集中的輸入端口寄存器中,并將順序的單元數(shù)據(jù)寫(xiě)入到多端口存儲(chǔ)器的另一子集中的輸入端口寄存器中,來(lái)將數(shù)據(jù)存儲(chǔ)在不同的多端口存儲(chǔ)器中。為了解決上述問(wèn)題,高速緩存系統(tǒng)如下地工作。當(dāng)將具有作為第一數(shù)據(jù)大小的任意多倍的第二數(shù)據(jù)大小的數(shù)據(jù)分割為單元數(shù)據(jù)并寫(xiě)入一級(jí)高速緩沖存儲(chǔ)器中時(shí),至少進(jìn)行第一寫(xiě)入操作和第二寫(xiě)入操作。在第一寫(xiě)入操作中,將順序的多個(gè)單元數(shù)據(jù)寫(xiě)入多個(gè)多端口存儲(chǔ)器單元的子集中的輸入端口寄存器中。在第二寫(xiě)入操作中,將順序的多個(gè)單元數(shù)據(jù)寫(xiě)入多個(gè)多端口存儲(chǔ)器單元的另一子集中的輸入端口寄存器中。這樣,將數(shù)據(jù)存儲(chǔ)在不同的多端口存儲(chǔ)器單元中。另外,當(dāng)從一級(jí)高速緩沖存儲(chǔ)器讀出數(shù)據(jù)時(shí),至少進(jìn)行第一讀取操作和第二讀取操作。在第一讀取操作中,從多個(gè)多端口存儲(chǔ)器單元的子集的輸出端口寄存器讀出順序的多個(gè)單元數(shù)據(jù)。在第二讀取操作中,從多個(gè)多端口存儲(chǔ)器單元的剩余子集的輸出端口寄存器中讀出順序的多個(gè)單元數(shù)據(jù)。這樣,從不同的多端口存儲(chǔ)器單元讀出數(shù)據(jù)。根據(jù)本發(fā)明的一個(gè)實(shí)施例的高速緩存系統(tǒng)可以包括多個(gè)寄存器,用于同時(shí)將第一數(shù)據(jù)大小的數(shù)據(jù)輸入到多個(gè)多端口存儲(chǔ)器單元中。這樣,將數(shù)據(jù)寫(xiě)入存儲(chǔ)器中的連續(xù)位置。 其結(jié)果是,能夠?qū)⒏咚倬彺嫦到y(tǒng)的一級(jí)高速緩存行大小從64字節(jié)擴(kuò)展為1 字節(jié),而不改變二級(jí)高速緩存和一級(jí)高速緩存之間的數(shù)據(jù)總線寬度,同時(shí)仍然保持將在一級(jí)高速緩存中寄存(和刷新(flushing))數(shù)據(jù)所需的處理時(shí)間相同的處理時(shí)間。換句話說(shuō),即使在擴(kuò)展一級(jí)高速緩存行大小之后,也能夠保持高速緩存利用率相同。將至少通過(guò)在權(quán)利要求中特別指出的單元、特征和組合來(lái)實(shí)現(xiàn)并獲得本發(fā)明的目的和優(yōu)點(diǎn)。應(yīng)當(dāng)理解,前面的概括描述和下面的詳細(xì)描述是示例性和說(shuō)明性的,而不限制所要求保護(hù)的本發(fā)明。
圖1示出根據(jù)本發(fā)明實(shí)施例的CPU的配置;圖2示出根據(jù)實(shí)施例的CPU的功能配置;圖3A至3C示出根據(jù)實(shí)施例的一級(jí)數(shù)據(jù)高速緩存存儲(chǔ)塊的位置;圖4示出根據(jù)實(shí)施例的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器的高速緩存路(way)配置;圖5示出包含在根據(jù)實(shí)施例的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器中的雙端口 RAM的配置;圖6示出將數(shù)據(jù)寫(xiě)入根據(jù)實(shí)施例的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器時(shí)的時(shí)序圖;圖7示出向根據(jù)實(shí)施例的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器寫(xiě)入數(shù)據(jù)的操作;圖8示出從根據(jù)實(shí)施例的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器讀取數(shù)據(jù)的操作;圖9示出向根據(jù)比較示例的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器寫(xiě)入數(shù)據(jù)的操作;圖10示出在從根據(jù)實(shí)施例的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器讀出數(shù)據(jù)時(shí)如何對(duì)一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器賦予地址;圖11示出對(duì)生成的地址的轉(zhuǎn)換;圖12示出雙端口 RAM的每個(gè)模塊的提供的地址和塊之間的關(guān)系;
圖13示出通過(guò)生成的地址和轉(zhuǎn)換的地址,針對(duì)各個(gè)雙端口 RAM模塊讀出數(shù)據(jù)的操作;圖14示出通過(guò)生成的地址和轉(zhuǎn)換的地址,針對(duì)各個(gè)雙端口 RAM模塊讀出數(shù)據(jù)的操作;圖15示出通過(guò)生成的地址和轉(zhuǎn)換的地址,針對(duì)各個(gè)雙端口 RAM讀出數(shù)據(jù)的操作;圖16示出將16字節(jié)數(shù)據(jù)從多個(gè)雙端口 RAM模塊提供到執(zhí)行/指令單元的配置; 以及圖17示出將16字節(jié)數(shù)據(jù)從多個(gè)雙端口 RAM模塊提供到執(zhí)行/指令單元的另一配置。
具體實(shí)施例方式下文中,將參考附圖描述本發(fā)明的實(shí)施例。根據(jù)本發(fā)明的實(shí)施例的高速緩存系統(tǒng)被包含在圖1所示的計(jì)算機(jī)的中央處理器 (下文中稱(chēng)為“CPU”) 1中。CPU 1包括指令單元(IU)2、執(zhí)行單元(EU) 3、一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器(L1D$)4、一級(jí)指令高速緩沖存儲(chǔ)器(L1I$)5和二級(jí)高速緩沖存儲(chǔ)器(L2$)6。在圖1所示的配置中,高速緩存系統(tǒng)包括一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4、一級(jí)指令高速緩沖存儲(chǔ)器5和二級(jí)高速緩沖存儲(chǔ)器6。高速緩存系統(tǒng)將存儲(chǔ)在主存儲(chǔ)器(未在圖1中示出)中的數(shù)據(jù)的一部分復(fù)制到一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4和二級(jí)高速緩沖存儲(chǔ)器6。通過(guò)以這種方式復(fù)制數(shù)據(jù),在訪問(wèn)存儲(chǔ)在高速緩沖存儲(chǔ)器之一中的數(shù)據(jù)時(shí),可以從高速緩沖存儲(chǔ)器而不是主存儲(chǔ)器讀出數(shù)據(jù),由此使得能夠快速地讀出信息。圖1示出了在CPU中設(shè)置了單個(gè)一級(jí)高速緩存和單個(gè)二級(jí)高速緩存的配置。然而, 高速緩存級(jí)別的數(shù)量以及每個(gè)級(jí)別上的高速緩存的數(shù)量不限于圖1所示的示例的數(shù)量。一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4和二級(jí)高速緩沖存儲(chǔ)器6保持主存儲(chǔ)器的副本。在 CPU 1內(nèi)部,在執(zhí)行單元3和一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4之間輸入和輸出數(shù)據(jù)。二級(jí)高速緩沖存儲(chǔ)器6針對(duì)一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4輸入和輸出數(shù)據(jù),并且針對(duì)主存儲(chǔ)器輸入和輸出數(shù)據(jù)。二級(jí)高速緩沖存儲(chǔ)器6從主存儲(chǔ)器中讀出要寫(xiě)入一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4的數(shù)據(jù),并且使得將該數(shù)據(jù)存儲(chǔ)在一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中。該一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4和二級(jí)高速緩沖存儲(chǔ)器6保持基本與主存儲(chǔ)器中的數(shù)據(jù)相同的數(shù)據(jù),并且還寫(xiě)回被計(jì)算重寫(xiě)的數(shù)據(jù)。換句話說(shuō),在存儲(chǔ)數(shù)據(jù)時(shí),將數(shù)據(jù)寫(xiě)回到主存儲(chǔ)器。指令和數(shù)據(jù)以如下順序流過(guò)部件主存儲(chǔ)器、二級(jí)高速緩沖存儲(chǔ)器6、一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4以及指令單元2或指令單元3。當(dāng)通過(guò)存儲(chǔ)數(shù)據(jù)而重寫(xiě)數(shù)據(jù)時(shí),在稱(chēng)為回寫(xiě)的處理中將數(shù)據(jù)寫(xiě)回到主存儲(chǔ)器。下文中,描述一級(jí)高速緩存的作用。一級(jí)指令高速緩沖存儲(chǔ)器5臨時(shí)存儲(chǔ)從主存儲(chǔ)器讀出的要處理的指令。將從主存儲(chǔ)器中讀出并且存儲(chǔ)在一級(jí)指令高速緩沖存儲(chǔ)器5中的指令發(fā)送到指令單元2并進(jìn)行解碼,然后由執(zhí)行單元3進(jìn)行處理。一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4臨時(shí)存儲(chǔ)從主存儲(chǔ)器讀出的數(shù)據(jù),以讀取和寫(xiě)入用于計(jì)算處理的數(shù)據(jù)。將存儲(chǔ)在一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中的數(shù)據(jù)加載到執(zhí)行單元3中。執(zhí)行單元3使用所加載的數(shù)據(jù)執(zhí)行計(jì)算過(guò)程,并使得所得到的數(shù)據(jù)被反映到主存儲(chǔ)器中。將該過(guò)程稱(chēng)為回寫(xiě)。
圖1中的CPU 1以固定數(shù)據(jù)大小為單元,針對(duì)主存儲(chǔ)器輸入和輸出數(shù)據(jù)。例如,在主存儲(chǔ)器內(nèi)部在一個(gè)周期中讀出的數(shù)據(jù)的寬度可以是1 字節(jié)。該數(shù)據(jù)大小對(duì)應(yīng)于在一個(gè)周期中讀出的數(shù)據(jù)寬度。在本實(shí)施例中,在一個(gè)周期中讀出的數(shù)據(jù)寬度基于稱(chēng)為DDR3的標(biāo)準(zhǔn)。在下文的描述中,將描述以1 字節(jié)為單元在CPU 1和主存儲(chǔ)器之間交換數(shù)據(jù)的示例。 然而,下文中描述的高速緩存系統(tǒng)的操作適用于其它數(shù)據(jù)寬度。如圖2所示,例如,針對(duì)在圖1所示的CPU 1的各個(gè)部件之間傳送的數(shù)據(jù)設(shè)置數(shù)據(jù)寬度。在包括指令單元2和執(zhí)行單元3的執(zhí)行/指令單元(EU/IU) 11和一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4之間,使用16字節(jié)數(shù)據(jù)寬度存儲(chǔ)和加載數(shù)據(jù)。此外,用于將數(shù)據(jù)從二級(jí)高速緩沖存儲(chǔ)器6傳送到一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4的傳送總線的寬度為32字節(jié)。當(dāng)將數(shù)據(jù)從二級(jí)高速緩沖存儲(chǔ)器6寫(xiě)入到一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4時(shí)(在移入(move-in)期間),以32字節(jié)為單元從二級(jí)高速緩沖存儲(chǔ)器6讀出移入數(shù)據(jù)。將從二級(jí)高速緩沖存儲(chǔ)器6讀出的移入數(shù)據(jù)提供到ECC校驗(yàn)/糾錯(cuò)/奇偶校驗(yàn)碼生成器12。ECC校驗(yàn)/糾錯(cuò)/奇偶校驗(yàn)碼生成器12針對(duì)從二級(jí)高速緩沖存儲(chǔ)器6提供的移入數(shù)據(jù)檢查糾錯(cuò)碼(下文中稱(chēng)為“ECC”),并針對(duì)移入數(shù)據(jù)生成奇偶校驗(yàn)碼。將具有從ECC 校驗(yàn)/糾錯(cuò)/奇偶校驗(yàn)碼生成器12生成的奇偶校驗(yàn)碼的移入數(shù)據(jù)臨時(shí)存儲(chǔ)在移入數(shù)據(jù)寄存器(下文中稱(chēng)為“MIDR”)13中。隨后,將存儲(chǔ)在移入數(shù)據(jù)寄存器13中的移入數(shù)據(jù)存儲(chǔ)在一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中。在圖2中,使用32字節(jié)傳送總線寬度將存儲(chǔ)在移入數(shù)據(jù)寄存器13中的移入數(shù)據(jù)傳送到一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4,并寫(xiě)入到一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4。類(lèi)似地,當(dāng)將存儲(chǔ)在一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中的數(shù)據(jù)排空到二級(jí)高速緩沖存儲(chǔ)器6時(shí),或者換句話說(shuō),當(dāng)來(lái)自一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4的數(shù)據(jù)被寫(xiě)入到二級(jí)高速緩沖存儲(chǔ)器6中時(shí),使用32字節(jié)傳送總線寬度從一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4讀出移出 (move-out)數(shù)據(jù)(寫(xiě)入數(shù)據(jù))。將從一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4讀出的移出數(shù)據(jù)提供到ECC校驗(yàn)/糾錯(cuò)單元14。 ECC校驗(yàn)/糾錯(cuò)單元14針對(duì)從一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4發(fā)送到二級(jí)高速緩沖存儲(chǔ)器6的移出數(shù)據(jù)進(jìn)行ECC校驗(yàn)。在進(jìn)行檢錯(cuò)和糾錯(cuò)過(guò)程之后,將移出數(shù)據(jù)臨時(shí)存儲(chǔ)在移出數(shù)據(jù)寄存器(下文中稱(chēng)為“M0DR”)15。由二級(jí)高速緩沖存儲(chǔ)器6讀入存儲(chǔ)在移出數(shù)據(jù)寄存器15中的移出數(shù)據(jù),并將其存儲(chǔ)在二級(jí)高速緩沖存儲(chǔ)器6中。由于移出數(shù)據(jù)寄存器15和二級(jí)高速緩沖存儲(chǔ)器6之間的傳送總線的寬度為16字節(jié),因此以16字節(jié)的單元將來(lái)自移出數(shù)據(jù)寄存器15的移出數(shù)據(jù)傳送并寫(xiě)入到二級(jí)高速緩沖存儲(chǔ)器6。以這種方式,通過(guò)ECC保護(hù)在二級(jí)高速緩沖存儲(chǔ)器6和一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器 4之間傳送的數(shù)據(jù),同時(shí)通過(guò)奇偶校驗(yàn)碼保護(hù)存儲(chǔ)在一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中的數(shù)據(jù)。在如上所述工作的CPU 1中,一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4可以具有1 字節(jié)的行大小,例如,可以采用2路組關(guān)聯(lián)技術(shù)。組關(guān)聯(lián)技術(shù)涉及將多個(gè)字(數(shù)據(jù))作為單個(gè)塊管理。 另外,一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4的行大小是1 字節(jié)。將一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中的行大小設(shè)置為1 字節(jié),以與CPUl以1 字節(jié)為單元訪問(wèn)主存儲(chǔ)器的方式匹配。換句話說(shuō),使一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4的行大小同樣為128字節(jié),這與CPU 1和主存儲(chǔ)器之間的數(shù)據(jù)寬度相同,以避免CPU 1和主存儲(chǔ)器之間的復(fù)雜的高速緩存一致性控制。另外,由下文中描述的多端口 RAM將128字節(jié)的數(shù)據(jù)輸入到一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中,并將從多端口 RAM輸入的128字節(jié)的數(shù)據(jù)以例如8字節(jié)數(shù)據(jù)的預(yù)定數(shù)據(jù)單元寫(xiě)入一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中的連續(xù)位置。將描述具有多個(gè)雙端口 RAM的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4的情況。雙端口 RAM是 1W2R-RAM,其使得能夠使用單個(gè)端口進(jìn)行數(shù)據(jù)寫(xiě)入,以及同時(shí)使用兩個(gè)端口進(jìn)行數(shù)據(jù)讀取。在圖3A至3C中示出了本實(shí)施例的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4。圖3A示出了路 (0)的數(shù)據(jù)排列,圖3B示出了路(1)的數(shù)據(jù)排列,圖3C示出了地址布局。在圖3A 至 3C 中,RAM(O)、RAM(I)、RAM (2)和 RAM (3)是各個(gè)雙端口 RAM模塊。在圖3A和3B所示的數(shù)據(jù)排列中,在RAM(0)和RAM(1)的對(duì)與RAM(2)和RAM(3)的對(duì)之間,每四個(gè)塊路便交替一次。圖3A示出了路(0)的數(shù)據(jù)排列。將路(0)的塊00至塊03分配給RAM(0)和RAM(1)。 此外,將路(0)的塊04至塊07分配給RAM (2)和RAM (3)。圖3B示出了路(1)的數(shù)據(jù)排列。與路(0)不同,將路(1)的塊00至塊03分配給 RAM (2)和RAM (3),而將路(1)的塊04至塊07分配給RAM(O)和RAM(I)。此外,在一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中的這種路配置中,將索引地址(0至η)分別分配給路(0)和路(1)中每個(gè)偶編號(hào)(evn)塊或奇編號(hào)(odd)塊,如圖4所示。圖4示出了分別對(duì)應(yīng)于圖3A和3B所示的雙端口 RAM(0)、雙端口 RAM(I)、雙端口 RAM(2)和雙端口 RAM(3)的索引地址。在圖4中,“W0”和 1”表示路編號(hào),而“evn”和“odd”指示特定塊編號(hào)是偶數(shù)還是奇數(shù)。在以這種方式配置的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中,在相鄰的雙端口 RAM模塊之間,或者換句話說(shuō),在RAM(O)和RAM(I)之間以及在RAM(2)和RAM(3)之間,形成連續(xù)的塊編號(hào)。其結(jié)果是,在給定圖3A至3C所示的塊設(shè)置時(shí),例如,能夠從一個(gè)雙端口 RAM模塊讀出一路的塊00和02,而能夠從另一雙端口 RAM模塊同時(shí)讀出該路的塊01和03。包含在上述一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中的雙端口 RAM模塊的配置例如可以如圖5所示。圖5中的雙端口 RAM 20包括第一輸入端口寄存器21a和第二輸入端口寄存器 21b、存儲(chǔ)器單元22以及第一輸出端口寄存器23a和第二輸出端口寄存器23b,其中從輸入端口對(duì)第一輸入端口寄存器21a和第二輸入端口寄存器21b提供針對(duì)一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4的移入數(shù)據(jù)。為了保持與相關(guān)技術(shù)中相同數(shù)量的高速緩存寄存過(guò)程,圖5所示的雙端口 RAM 20是配備有16字節(jié)寫(xiě)入功能的RAM。在圖5中的雙端口 RAM 20中,以8字節(jié)為單元將數(shù)據(jù)輸入并保持在第一輸入端口寄存器21a和第二輸入端口寄存器21b中??偣?6字節(jié)的數(shù)據(jù)保持在兩個(gè)輸入端口寄存器21a和21b中,然后從輸入端口寄存器21a和21b同時(shí)輸出該數(shù)據(jù),并將其寫(xiě)入存儲(chǔ)器單元22。此外,在圖5中的雙端口 RAM 20中的高速緩存移出期間,使用兩個(gè)輸出端口 23a和 23b讀出保持在存儲(chǔ)器單元22中的16字節(jié)數(shù)據(jù),并將其作為輸出數(shù)據(jù)輸出。這樣,能夠同時(shí)有效地處理兩個(gè)16字節(jié)加載指令(SIMD)。將與在CPU 1和主存儲(chǔ)器之間輸入和輸出的數(shù)據(jù)具有相同數(shù)據(jù)大小的數(shù)據(jù)(在該示例中為128字節(jié)的數(shù)據(jù))輸入到這些輸入端口寄存器21a和21b以及其它雙端口 RAM 20 的輸入端口寄存器。隨后,輸入端口寄存器21a和21b同時(shí)將與圖4所示的各個(gè)塊相對(duì)應(yīng)的單元數(shù)據(jù)寫(xiě)入到存儲(chǔ)器單元22中的連續(xù)位置。在一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中包括四個(gè)這種雙端口 RAM 20的模塊。因此,雙端口 RAM 20的每個(gè)模塊起到包括存儲(chǔ)器單元22、多個(gè)輸入端口寄存器21a和21b以及多個(gè)輸出端口的多端口存儲(chǔ)器單元的作用。
當(dāng)將8字節(jié)的移入數(shù)據(jù)順序提供到圖5中的雙端口 RAM 20時(shí),將第一組8字節(jié)的移入數(shù)據(jù)存儲(chǔ)在輸入端口寄存器21a中,將下一組8字節(jié)的移入數(shù)據(jù)存儲(chǔ)在輸入端口寄存器21b中。隨后,一旦將總共16字節(jié)的移入數(shù)據(jù)寫(xiě)入第一輸入端口寄存器21a和第二輸入端口寄存器21b,第一輸入端口寄存器21a和第二輸入端口寄存器21b同時(shí)將16字節(jié)的移入數(shù)據(jù)寫(xiě)入存儲(chǔ)器單元22中的連續(xù)位置22a和22b。此時(shí),對(duì)存儲(chǔ)器單元22提供地址信息,該地址信息指示要寫(xiě)入移入數(shù)據(jù)的存儲(chǔ)器單元22的連續(xù)位置22a和22b。換句話說(shuō),當(dāng)將對(duì)應(yīng)于兩個(gè)輸入端口寄存器21a和21b的兩個(gè)地址輸入到雙端口 RAM 20中時(shí),能夠同時(shí)讀取輸入端口寄存器21a和21b中的數(shù)據(jù)。然而,不能同時(shí)執(zhí)行寫(xiě)入操作和讀取操作。通常,能夠以8字節(jié)為單元將來(lái)自輸入端口寄存器21a和21b的數(shù)據(jù)同時(shí)寫(xiě)入存儲(chǔ)器單元22。然而,能夠通過(guò)用于向內(nèi)置鎖存器進(jìn)行寫(xiě)入的寄存器來(lái)將輸入端口寄存器21a和21b擴(kuò)展另外的8字節(jié)。這樣,可以寫(xiě)入到存儲(chǔ)器單元22中的連續(xù)的16字節(jié)位置。當(dāng)在這種由輸入端口寄存器21a和21b構(gòu)成的擴(kuò)展寄存器中寄存數(shù)據(jù)時(shí),可以進(jìn)行正常的RAM-RD操作。當(dāng)讀出存儲(chǔ)在存儲(chǔ)器單元22中的數(shù)據(jù)時(shí),向雙端口 RAM 20提供讀取地址?;陬A(yù)先提供的地址信息,雙端口 MM 20將8字節(jié)移出數(shù)據(jù)從存儲(chǔ)器單元22讀出到第一輸出端口寄存器23a中。基于接下來(lái)提供的地址信息,雙端口 RAM 20將8字節(jié)移出數(shù)據(jù)從存儲(chǔ)器單元22讀出到第二輸出端口寄存器23b中。第二個(gè)8字節(jié)數(shù)據(jù)順序地跟在上面讀出的移出數(shù)據(jù)之后。一旦針對(duì)總共16字節(jié)的移出數(shù)據(jù)將8字節(jié)的數(shù)據(jù)分別寫(xiě)入第一輸出端口寄存器23a和第二輸出端口寄存器23b,第一輸出端口寄存器23a和第二輸出端口寄存器 23b進(jìn)行協(xié)作以各自輸出8字節(jié)、總共輸出16字節(jié)的移出數(shù)據(jù)。一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中包括四個(gè)模塊的圖5所示的雙端口 RAM 20。當(dāng)在 CPU 1和主存儲(chǔ)器之間發(fā)送和接收的128字節(jié)的移入數(shù)據(jù)被寄存在一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中時(shí),一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4進(jìn)行圖6的下部所示的操作。在圖6的第三周期中,將第一組移入數(shù)據(jù)MIRD (總共32字節(jié))提供到四個(gè)雙端口 RAM模塊20中的各個(gè)輸入端口。在圖6的第四周期中,將該移入數(shù)據(jù)寫(xiě)入到每個(gè)雙端口 RAM 模塊20的輸入端口寄存器21a。此時(shí),每個(gè)雙端口 RAM模塊20處于針對(duì)移入數(shù)據(jù)的可讀取 (可RD)狀態(tài)。隨后,在圖6的第四周期中,將下一組移入數(shù)據(jù)MIRD(總共32字節(jié))提供到四個(gè)雙端口 RAM模塊20中的各個(gè)輸入端口。然后,在圖6的第五周期中,將該移入數(shù)據(jù)寫(xiě)入到每個(gè)輸入端口寄存器21b。此時(shí),每個(gè)雙端口 RAM模塊20處于可寫(xiě)入(wt)狀態(tài),雙端口 RAM 模塊20能夠共同將存儲(chǔ)在各個(gè)輸入端口寄存器21a和21b中的總共64字節(jié)的移入數(shù)據(jù)寫(xiě)入到存儲(chǔ)器單元22中。通過(guò)進(jìn)行兩次這種移入數(shù)據(jù)寫(xiě)入操作,一次在第三周期至第五周期,一次在第六周期至第八周期,一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4能夠?qū)懭肟偣?28字節(jié)的移入數(shù)據(jù)。因此,在本實(shí)施例中,在六個(gè)周期中完成移入數(shù)據(jù)寫(xiě)入。另一方面,在比較示例中,在輸入和寫(xiě)入32字節(jié)的移入數(shù)據(jù)之間需要兩個(gè)周期。由于只在已寫(xiě)入在前的32字節(jié)的移入數(shù)據(jù)之后輸入之后的32字節(jié)的移入數(shù)據(jù),因此在比較示例中,128字節(jié)的移入數(shù)據(jù)寫(xiě)入需要8個(gè)周期。一級(jí)數(shù)據(jù) 高速緩沖存儲(chǔ)器4和二級(jí)高速緩沖存儲(chǔ)器6之間的傳送總線寬度是32 字節(jié)。因此,當(dāng)將128字節(jié)的移入數(shù)據(jù)寫(xiě)入一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4時(shí),進(jìn)行兩次寫(xiě)入操作,在每個(gè)寫(xiě)入操作過(guò)程中將32 X 2字節(jié)的移入數(shù)據(jù)寫(xiě)入移入數(shù)據(jù)寄存器13。此時(shí),在第一寫(xiě)入操作過(guò)程中寫(xiě)入在前的64字節(jié)的移入數(shù)據(jù),而在第二寫(xiě)入操作過(guò)程中寫(xiě)入之后的64 字節(jié)的移入數(shù)據(jù)。這里,用于將移入數(shù)據(jù)從移入數(shù)據(jù)寄存器13寫(xiě)入到一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4的傳送總線寬度也是32字節(jié)。當(dāng)向四個(gè)雙端口 RAM模塊20發(fā)出存儲(chǔ)移入數(shù)據(jù)的指令時(shí),四個(gè)雙端口 RAM模塊20中的每個(gè)在第一輸入端口寄存器21a和第二輸入端口寄存器21b中存儲(chǔ)8字節(jié)的數(shù)據(jù),對(duì)于每個(gè)模塊總共16字節(jié)。這樣,將總共64字節(jié)的移入數(shù)據(jù)存儲(chǔ)在四個(gè)雙端口 RAM模塊20的輸入端口寄存器中。在寫(xiě)入指令之后,四個(gè)雙端口 RAM模塊20各自將16字節(jié)寫(xiě)入存儲(chǔ)器單元22,同時(shí)寫(xiě)入總共64字節(jié)的移入數(shù)據(jù)。針對(duì)之后的64字節(jié)的移入數(shù)據(jù),再次進(jìn)行這種用于同時(shí)寫(xiě)入64字節(jié)的移入數(shù)據(jù)的寫(xiě)入操作。這樣,將128字節(jié)的數(shù)據(jù)寫(xiě)入一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器 4。圖7示出了根據(jù)本實(shí)施例的一級(jí)高速緩存中的數(shù)據(jù)寄存。在圖7中,從塊00至塊 07的每個(gè)塊的大小為8字節(jié),八個(gè)塊總共64字節(jié)。當(dāng)在一級(jí)高速緩存中寄存128字節(jié)的數(shù)據(jù)時(shí),執(zhí)行兩次64字節(jié)的數(shù)據(jù)寄存操作。在圖7中的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4包括四個(gè)雙端口 RAM模塊RAM(O)至RAM(3) 的情況下,通過(guò)第一寫(xiě)入操作將總共16字節(jié)的移入數(shù)據(jù)寫(xiě)入雙端口 RAM模塊RAM(O)的塊 00和02。同時(shí),將總共16字節(jié)的移入數(shù)據(jù)寫(xiě)入雙端口 RAM模塊RAM(2)的塊04和06。另外, 通過(guò)針對(duì)第一組移入數(shù)據(jù)的接下來(lái)的寫(xiě)入操作,將總共16字節(jié)的移入數(shù)據(jù)寫(xiě)入雙端口 RAM 模塊RAM(I)的塊01和03。同時(shí),將總共16字節(jié)的移入數(shù)據(jù)寫(xiě)入雙端口 RAM模塊RAM(3) 的塊05和07。這樣,將總共64字節(jié)的移入數(shù)據(jù)寫(xiě)入一級(jí)高速緩存。類(lèi)似地,通過(guò)對(duì)應(yīng)于之后的64字節(jié)的移入數(shù)據(jù)的第二寫(xiě)入操作,將總共16字節(jié)的移入數(shù)據(jù)寫(xiě)入雙端口 RAM模塊RAM(O)的塊00和02。同時(shí),將總共16字節(jié)的移入數(shù)據(jù)寫(xiě)入雙端口 RAM模塊RAM(2)的塊04和06。另外,通過(guò)針對(duì)之后的移入數(shù)據(jù)的第二寫(xiě)入操作,將總共16字節(jié)的移入數(shù)據(jù)寫(xiě)入雙端口 RAM模塊RAM(I)的塊01和03。同時(shí),將總共16字節(jié)的移入數(shù)據(jù)寫(xiě)入雙端口 RAM模塊RAM(3)的塊05和07。作為上述兩個(gè)寫(xiě)入操作的結(jié)果,將總共128字節(jié)的移入數(shù)據(jù)寫(xiě)入一級(jí)高速緩存。以這種方式,僅通過(guò)兩個(gè)寫(xiě)入操作,一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4能夠?qū)懭?28字節(jié)的數(shù)據(jù)。換句話說(shuō),能夠在不改變二級(jí)高速緩存和一級(jí)高速緩存之間的數(shù)據(jù)總線寬度的情況下,將一級(jí)高速緩存的行大小從64字節(jié)擴(kuò)展為128字節(jié),同時(shí)保持高速緩存寄存和刷新所需的過(guò)程的數(shù)量相同。換句話說(shuō),即使在擴(kuò)展一級(jí)高速緩存行大小之后,仍能保持高速緩存利用率相同。當(dāng)讀出寫(xiě)入一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4的數(shù)據(jù)并將其移出到二級(jí)高速緩沖存儲(chǔ)器6時(shí),使用雙端口 RAM 20的第一輸出端口寄存器23a和第二輸出端口寄存器23b。圖8是用于說(shuō)明從一級(jí)高速緩存寫(xiě)回?cái)?shù)據(jù),或者換句話說(shuō)移出操作的圖。如圖8所示,通過(guò)第一移出數(shù)據(jù)讀取操作,從雙端口 RAM模塊RAM(O)的塊00和02讀出總共16字節(jié)的移出數(shù)據(jù)。同時(shí),從雙端口 RAM模塊RAM(2)的塊04和06讀出總共16字節(jié)的移出數(shù)據(jù)。這樣,從雙端口 RAM讀出總共32字節(jié)的移出數(shù)據(jù)。另外,通過(guò)接下來(lái)的讀取操作,從雙端口 RAM模塊RAM(I)的塊01和03讀出總共16字節(jié)的移出數(shù)據(jù)。同時(shí),從雙端口 RAM模塊RAM(3)的塊07和05讀出總共16字節(jié)的移出數(shù)據(jù)。通過(guò)這兩個(gè)讀取操作,讀出總共64 字節(jié)的移出數(shù)據(jù)。
類(lèi)似地,通過(guò)第二讀取操作,從雙端口 RAM模塊RAM(O)的塊00和02讀出總共16 字節(jié)的移出數(shù)據(jù)。同時(shí),從雙端口 RAM模塊RAM(2)的塊04和06讀出總共16字節(jié)的移出數(shù)據(jù)。另外,通過(guò)接下來(lái)的第二讀取操作,從雙端口 RAM模塊RAM(I)的塊01和03讀出總共16字節(jié)的移出數(shù)據(jù)。同時(shí),從雙端口 RAM模塊RAM(3)的塊07和05讀出總共16字節(jié)的移出數(shù)據(jù)。通過(guò)這兩個(gè)讀取操作,讀出總共128字節(jié)的移出數(shù)據(jù)。這時(shí),將從四個(gè)雙端口 RAM模塊20讀出的四組32字節(jié)的數(shù)據(jù)分別存儲(chǔ)在每個(gè)雙端口 RAM模塊20的第一輸出端口寄存器23a中,而將接下來(lái)的四組32字節(jié)的數(shù)據(jù)分別存儲(chǔ)在每個(gè)雙端口 RAM模塊20的第二輸出端口寄存器23b中。在兩個(gè)操作中,將存儲(chǔ)在輸出端口寄存器中的這些32字節(jié)的大塊(chunk)的數(shù)據(jù)作為移出數(shù)據(jù)讀取到移出數(shù)據(jù)寄存器 15中。通過(guò)進(jìn)行兩次這種移出數(shù)據(jù)讀取操作,將總共128字節(jié)的移出數(shù)據(jù)提供到移出數(shù)據(jù)寄存器15。另一方面,考慮圖6的上部和圖9所示的比較示例,其中,一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器具有64字節(jié)的行大小,其進(jìn)行每次32字節(jié)的數(shù)據(jù)寫(xiě)入操作。當(dāng)該比較示例中的一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器寫(xiě)入128字節(jié)的數(shù)據(jù)時(shí),將32字節(jié)的移入數(shù)據(jù)寫(xiě)入移入數(shù)據(jù)寄存器。因此,總共四次將32字節(jié)的移入數(shù)據(jù)寫(xiě)入一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器。在圖6的上部所示的比較示例中,將128字節(jié)的高速緩存行寄存在一級(jí)高速緩存中包括發(fā)出四次移入請(qǐng)求以及將移入數(shù)據(jù)寄存在高速緩存中。因此,與實(shí)施例相比,移入請(qǐng)求的管道利用率翻倍。因此,針對(duì)雙端口 RAM 20設(shè)置用于同時(shí)寫(xiě)入連續(xù)位置(2索引)的功能(16字節(jié)寫(xiě)入功能)。這樣,如在圖6的下部中的本實(shí)施例中,能夠使用四個(gè)雙端口 RAM 模塊20,通過(guò)單個(gè)移入請(qǐng)求寫(xiě)入64字節(jié)的數(shù)據(jù)。其結(jié)果是,在比較示例中,必須發(fā)出四次移入請(qǐng)求以寄存128字節(jié)的高速緩存行,而在本實(shí)施例中,這可以通過(guò)僅發(fā)出兩次移入請(qǐng)求來(lái)實(shí)現(xiàn)同樣功能。另外,當(dāng)在本實(shí)施例中發(fā)出移出請(qǐng)求時(shí),從二級(jí)高速緩沖存儲(chǔ)器6讀出64字節(jié)的數(shù)據(jù)(行大小的一半)。讀出的數(shù)據(jù)首先被寄存在輸出端口寄存器中,然后以四次發(fā)送到移出數(shù)據(jù)寄存器15,每次發(fā)送32字節(jié)。高速緩存訪問(wèn)包括兩次64字節(jié)的存取,因此與圖9 中的比較示例相比,移出請(qǐng)求的管道利用率不變。根據(jù)上述高速緩存系統(tǒng),能夠在不改變二級(jí)高速緩存和一級(jí)高速緩存之間的數(shù)據(jù)總線寬度的情況下,將一級(jí)高速緩存的行大小從64字節(jié)擴(kuò)展為128字節(jié),同時(shí)保持針對(duì)一級(jí)高速緩存的寄存和刷新操作的高速緩存利用率相同。換句話說(shuō),能夠?qū)?28字節(jié)的數(shù)據(jù)寫(xiě)入一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4,同時(shí)保持針對(duì)一級(jí)高速緩存的寄存和刷新操作的高速緩存利用率,并且不改變輸送總線寬度。因此,根據(jù)本實(shí)施例的高速緩存系統(tǒng),即使CPU 1和主存儲(chǔ)器之間的數(shù)據(jù)寬度增大,行大小也能夠與該數(shù)據(jù)寬度匹配,并且能夠由多個(gè)雙端口 RAM模塊20進(jìn)行數(shù)據(jù)讀取和寫(xiě)入。
接下來(lái),描述在CPU 1中使用特定數(shù)據(jù)大小的單元針對(duì)一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器 4的數(shù)據(jù)的讀取和寫(xiě)入。在下文中的描述中,描述如下示例,其中,加載到執(zhí)行/指令單元 11的指令是SIMD (單指令/多數(shù)據(jù))指令,并且根據(jù)這些指令以特定數(shù)據(jù)大小為單元寫(xiě)入和讀出數(shù)據(jù)。如果使用SIMD指令,則CPU 1通過(guò)單個(gè)SIMD指令同時(shí)處理多個(gè)數(shù)據(jù)。例如,當(dāng)出現(xiàn)單個(gè)SIMD指令時(shí),可以將16字節(jié)的順序的數(shù)據(jù)寫(xiě)入一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4或從一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4讀出。這里,16字節(jié)被視為“數(shù)據(jù)大小”。針對(duì)雙端口 RAM 20中的連續(xù)位置進(jìn)行根據(jù)SIMD指令的16字節(jié)的數(shù)據(jù)到一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4的寫(xiě)入。這時(shí),包含在一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中的每個(gè)雙端口 RAM 模塊20分別在第一輸入端口寄存器21a和第二輸入端口寄存器21b存儲(chǔ)了 8字節(jié)的數(shù)據(jù), 并且將兩組8字節(jié)的數(shù)據(jù)同時(shí)寫(xiě)入存儲(chǔ)器單元22中的連續(xù)位置。這樣,根據(jù)SIMD指令將 16字節(jié)的數(shù)據(jù)寫(xiě)入每個(gè)雙端口 RAM模塊20。在遵照用于讀出被寫(xiě)入雙端口 RAM 20的存儲(chǔ)器單元22的16字節(jié)的數(shù)據(jù)的SIMD 指令的情況下,針對(duì)一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4,指定與每8個(gè)字節(jié)劃界的塊的邊界相對(duì)應(yīng)的地址。例如,在圖4所示的路配置中,存儲(chǔ)在雙端口 RAM模塊RAM (0)中的數(shù)據(jù)和存儲(chǔ)在雙端口 RAM模塊RAM(I)中的數(shù)據(jù)構(gòu)成順序的16字節(jié)數(shù)據(jù)。然后,讀出該順序的16字節(jié)數(shù)據(jù),該順序的16字節(jié)數(shù)據(jù)由存儲(chǔ)為路編號(hào)(0)、雙端口 RAM模塊RAM(O)的索引地址(0)的數(shù)據(jù),以及存儲(chǔ)為路編號(hào)(0)、雙端口 RAM模塊RAM(I)的索引地址(0)的數(shù)據(jù)構(gòu)成。以這種方式,當(dāng)讀出跨越兩個(gè)塊的16字節(jié)的數(shù)據(jù)時(shí),將雙端口 RAM模塊RAM(O)中的數(shù)據(jù)的讀取地址從用于訪問(wèn)雙端口 RAM模塊RAM(I)中的塊的地址偏移開(kāi)一個(gè)決。另外, 在每個(gè)雙端口 RAM模塊20中,需要讀出跨越兩個(gè)塊(行交叉)的16字節(jié)的數(shù)據(jù)。 為了讀出該順序的16字節(jié)數(shù)據(jù),高速緩存系統(tǒng)包括圖10所示的配置。根據(jù)圖10, 高速緩存系統(tǒng)包括第一地址生成器30a和第一地址轉(zhuǎn)換器31a以及第二地址生成器30b和第二地址轉(zhuǎn)換器31b。第一地址生成器30a生成被分別讀出到雙端口 RAM模塊RAM(I)和 RAM(3)的第一輸入端口寄存器21a和第一輸出端口寄存器23a的數(shù)據(jù)的地址信息。第二地址生成器30b生成被分別讀出到雙端口 RAM模塊RAM(I)和RAM(3)的第二輸入端口寄存器 21b和第二輸出端口寄存器23b的數(shù)據(jù)的地址信息。 第一地址轉(zhuǎn)換器31a生成被分別讀出到雙端口 RAM模塊RAM(0)和RAM(2)的第一輸入端口寄存器21a和第一輸出端口寄存器23a的數(shù)據(jù)的地址信息。第二地址轉(zhuǎn)換器31b 生成被分別讀出到雙端口 RAM模塊RAM(O)和RAM(2)的第二輸入端口寄存器21b和第二輸出端口寄存器23b的數(shù)據(jù)的地址信息。遵循來(lái)自執(zhí)行/指令單元11的指令,第一地址生成器30a和第二地址生成器30b 生成要從一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4讀出的數(shù)據(jù)的地址。第一地址轉(zhuǎn)換器31a和第二地址轉(zhuǎn)換器31b采用由第一地址生成器30a和第二地址生成器30b生成的地址,并如下地對(duì)地址進(jìn)行轉(zhuǎn)換。例如,可以如圖11所示,對(duì)由第一地址生成器30a和第二地址生成器30b生成的虛擬地址VA(N[k字節(jié)])進(jìn)行轉(zhuǎn)換。圖11示出了生成的地址和經(jīng)轉(zhuǎn)換的地址之間的關(guān)系。 這里,采用虛擬地址以用于生成的地址和經(jīng)轉(zhuǎn)換的地址兩者。另外,在圖11中,使用十六進(jìn)制表示每個(gè)地址。此外,生成的地址VA⑴是高位地址,而VA(2)是低位地址。類(lèi)似地,經(jīng)轉(zhuǎn)換的地址VA (3)是高位地址,而VA (4)是低位地址。 在第一地址生成器30a和第二地址生成器30b生成地址[1000]的情況下,第一地址轉(zhuǎn)換器31a和第二地址轉(zhuǎn)換器31b將地址轉(zhuǎn)換為地址[1008]。另外,在第一地址生成器 30a和第二地址生成器30b生成地址[1008]的情況下,第一地址轉(zhuǎn)換器31a和第二地址轉(zhuǎn)換器31b將地址轉(zhuǎn)換為地址[1010]。這是因?yàn)?,要在圖10所示的偶數(shù)側(cè)訪問(wèn)的位置處在比要在奇數(shù)側(cè)訪問(wèn)的位置高一個(gè)索引地址的地址位置。在圖10中的示例中,第一地址轉(zhuǎn)換器31a和第二地址轉(zhuǎn)換器31b通過(guò)將等同于一個(gè)索引地址的值的8與第一地址生成器30a和第二地址生成器30b生成的地址相加來(lái)轉(zhuǎn)換地址。當(dāng)如在圖10中那樣一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4包括四個(gè)雙端口 RAM模塊時(shí),提供用于在每個(gè)雙端口 RAM模塊中針對(duì)第一輸出端口寄存器23a和第二輸出端口寄存器23b讀出數(shù)據(jù)的地址。隨后,如圖12所示,將第一地址生成器30a和第二地址生成器30b生成的地址提供到雙端口 RAM模塊RAM(I)和RAM(3)。另外,將第一地址轉(zhuǎn)換器31a和第二地址轉(zhuǎn)換器 31b輸出的經(jīng)轉(zhuǎn)換的地址分別提供到雙端口 RAM模塊RAM(O)和RAM(2),其存儲(chǔ)在提供了由第一地址生成器30a和第二地址生成器30b生成的地址的雙端口 RAM模塊RAM(I)和RAM(3) 中存儲(chǔ)的數(shù)據(jù)之后順序繼續(xù)的數(shù)據(jù)。在圖10中,第一地址生成器30a生成指定包含在雙端口 RAM模塊RAM(I)中的任意塊的地址。將第一地址生成器30a生成的地址提供到雙端口 RAM模塊RAM(I)的第一端口寄存器21a和23a。另外,第一地址轉(zhuǎn)換器31a將生成的地址轉(zhuǎn)換為存儲(chǔ)由第一地址生成器30a指定的雙端口 RAM模塊RAM(I)的塊中存儲(chǔ)的數(shù)據(jù)之后順序繼續(xù)的數(shù)據(jù)的塊的地址。 將經(jīng)轉(zhuǎn)換的地址提供到雙端口 RAM模塊RAM(0)的第一端口寄存器21a和23a。類(lèi)似地,第一地址生成器30a生成的地址指定雙端口 RAM模塊RAM(3)中的任意塊,并將其提供到雙端口 RAM模塊RAM(3)的第一端口寄存器21a和23a。此外,由第一地址轉(zhuǎn)換器31a輸出的經(jīng)轉(zhuǎn)換的地址是存儲(chǔ)由第一地址生成器30a指定的雙端口 RAM模塊 RAM(3)的塊中存儲(chǔ)的數(shù)據(jù)之后順序繼續(xù)的數(shù)據(jù)的塊的地址。將經(jīng)轉(zhuǎn)換的地址提供到雙端口 RAM模塊RAM (2)的第一端口寄存器21a和23a。此外,第二地址生成器30b生成指定包含在雙端口 RAM模塊RAM(I)中的任意塊的地址。然后,將第二地址生成器30b生成的地址提供到雙端口 RAM模塊RAM(I)。另外,第二地址轉(zhuǎn)換器31b將生成的地址轉(zhuǎn)換為存儲(chǔ)由第二地址生成器30b指定的雙端口 RAM模塊 RAM(I)的塊中存儲(chǔ)的數(shù)據(jù)之后順序繼續(xù)的數(shù)據(jù)的塊的地址。將該地址提供到雙端口 RAM模塊RAM(O)的第二端口寄存器21b和23b。類(lèi)似地,由第二地址生成器30b生成的地址指定雙端口 RAM模塊RAM(3)中的任意塊,并且被提供到雙端口 RAM模塊RAM(3)的第二端口寄存器21b和23b。此外,由第二地址轉(zhuǎn)換器31b輸出的經(jīng)轉(zhuǎn)換的地址是存儲(chǔ)由第二地址生成器30b指定的雙端口 RAM模塊 RAM(3)的塊中存儲(chǔ)的數(shù)據(jù)之后順序繼續(xù)的數(shù)據(jù)的塊的地址。將經(jīng)轉(zhuǎn)換的地址提供到雙端口 RAM模塊RAM(2)的第二端口寄存器21b和23b。其結(jié)果是,通過(guò)遵循SIMD指令,能夠訪問(wèn)存儲(chǔ)16字節(jié)的塊。下面給出具體示例。假設(shè)由第一地址生成器30a和第二地址生成器30b生成虛擬地址VA。
首先,給出如下示例,其中,VA = OxOOO0當(dāng)將16字節(jié)的數(shù)據(jù)加載到第一輸出端口寄存器23a中時(shí),由第一地址生成器30a生成的地址是VA(2) =0,如圖11所示。與之相比,當(dāng)由第一地址轉(zhuǎn)換器31a對(duì)地址進(jìn)行轉(zhuǎn)換時(shí),經(jīng)轉(zhuǎn)換的地址是VA(4) = 8。其結(jié)果是,能夠讀出圖13中的粗線指示的數(shù)據(jù)。換句話說(shuō),讀出雙端口 RAM模塊 RAM(O)的塊00和雙端口 RAM模塊RAM(I)的塊01中的順序的16字節(jié)數(shù)據(jù),而另外,讀出雙端口 RAM模塊RAM⑵的塊00和雙端口 RAM模塊RAM (3)的塊01中的順序的16字節(jié)數(shù)據(jù)。這時(shí),一旦第一地址生成器30a生成指定雙端口 RAM模塊RAM(I)的塊01的地址, 則第一地址轉(zhuǎn)換器31a對(duì)地址進(jìn)行轉(zhuǎn)換,以獲得指定雙端口 RAM模塊RAM(O)的塊00的地址。例如,在生成的地址是
的情況下,經(jīng)轉(zhuǎn)換的地址變?yōu)閇8]。此外,一旦第二地址生成器30b生成指定雙端口 RAM模塊RAM(3)的塊01的地址,則第二地址轉(zhuǎn)換器31b對(duì)地址進(jìn)行轉(zhuǎn)換,以獲得指定雙端口 RAM模塊RAM(2)的塊00的地址。這樣,能夠從一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中讀出路(0)和路(1)的塊00和01。這里,圖13中的“地址=000”等同于圖11中的VA(I)和VA(3)。這類(lèi)似地適用于之后的附圖。還考慮將16字節(jié)的數(shù)據(jù)加載到第一輸出端口寄存器23a中VA = 0x008的情況。 在這種情況下,由第一地址生成器30a生成的地址是VA(I) = 000,而由第一地址轉(zhuǎn)換器 31a輸出的經(jīng)轉(zhuǎn)換的地址是VA(3) = 001,如圖11所示。其結(jié)果是,能夠讀出圖14中的粗線指示的數(shù)據(jù)。換句話說(shuō),讀出雙端口 RAM模塊 RAM(I)的塊01和雙端口 RAM模塊RAM(O)的塊02中的順序的16字節(jié)數(shù)據(jù),而另外,讀出雙端口 RAM模塊RAM (3)的塊01和雙端口 RAM模塊RAM (2)的塊02中的順序的16字節(jié)數(shù)據(jù)。這時(shí),一旦第一地址生成器30a生成指定雙端口 RAM模塊RAM(I)的塊01的地址, 則第一地址轉(zhuǎn)換器31a對(duì)地址進(jìn)行轉(zhuǎn)換,以獲得指定雙端口 RAM模塊RAM(O)的塊02的地址。此外,一旦第二地址生成器30b生成指定雙端口 RAM模塊RAM(3)的塊01的地址,則第二地址轉(zhuǎn)換器31b對(duì)地址進(jìn)行轉(zhuǎn)換,以獲得指定雙端口 RAM模塊RAM(2)的塊02的地址。這樣,能夠從一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中讀出路(0)和路(1)的塊01和02。另外,考慮將16字節(jié)的數(shù)據(jù)加載到第一輸出端口寄存器23a中VA = 0x018的情況。在這種情況下,由第一地址生成器30a生成的地址是VA(I) = 001,而由第一地址轉(zhuǎn)換器31a輸出的經(jīng)轉(zhuǎn)換的地址是VA(3) = 002,如圖11所示。其結(jié)果是,能夠讀出圖15中的粗線指示的數(shù)據(jù)。換句話說(shuō),讀出雙端口 RAM模塊 RAM(I)的塊03和雙端口 RAM模塊RAM(O)的塊04中的順序的16字節(jié)數(shù)據(jù),而另外,讀出雙端口 RAM模塊RAM (3)的塊03和雙端口 RAM模塊RAM⑵的塊04中的順序的16字節(jié)數(shù)據(jù)。這時(shí),一旦第一地址生成器30a生成指定與雙端口 RAM模塊RAM(I)的路(0)相對(duì)應(yīng)的塊03的地址,則第一地址轉(zhuǎn)換器31a對(duì)地址進(jìn)行轉(zhuǎn)換,以獲得指定與雙端口 RAM模塊 RAM(O)的路(1)相對(duì)應(yīng)的塊04的地址。此外,一旦第二地址生成器30b生成指定與雙端口 RAM模塊RAM(3)的路(1)相對(duì)應(yīng)的塊03的地址,則第二地址轉(zhuǎn)換器31b對(duì)地址進(jìn)行轉(zhuǎn)換, 以獲得指定與雙端口 RAM模塊RAM(2)的路(0)相對(duì)應(yīng)的塊04的地址。這樣,能夠從一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4中讀出路(0)和路(1)的塊03和04。以這種方式,將給定數(shù)據(jù)大小的數(shù)據(jù)(16字節(jié)的數(shù)據(jù))分開(kāi),并將其寫(xiě)入不同雙端口 RAM模塊上的連續(xù)塊。隨后,能夠使用地址生成器30a和30b生成的地址來(lái)讀出給定數(shù)據(jù)大小的數(shù) 據(jù)的各部分,而另外,能夠使用地址轉(zhuǎn)換器31a和31b輸出的經(jīng)轉(zhuǎn)換的地址來(lái)讀出給定數(shù)據(jù)大小的數(shù)據(jù)的剩余部分。因此,即使在通過(guò)遵循SIMD指令來(lái)加載順序的16字節(jié)數(shù)據(jù)的情況下,也能夠分別通過(guò)設(shè)置有具有8字節(jié)的塊配置的存儲(chǔ)器單元22的兩個(gè)雙端口 RAM模塊讀出順序的16字節(jié)數(shù)據(jù)。接下來(lái),描述如下配置,其中,從一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4讀出16字節(jié)的數(shù)據(jù), 并通過(guò)遵循SIMD指令將該數(shù)據(jù)輸出到執(zhí)行/指令單元11。圖16示出了如下配置,其中,選擇按塊編號(hào)劃界的8字節(jié)單元數(shù)據(jù),并將兩組8字節(jié)數(shù)據(jù)順序輸出到執(zhí)行/指令單元11。高速緩存系統(tǒng)設(shè)置有選擇器41a至41h,其將從雙端口 RAM模塊RAM(O)至RAM(3)中的每個(gè)中的第一輸出端口寄存器23a和第二輸出端口寄存器23b輸出的8字節(jié)數(shù)據(jù)作為輸入接受?;趶牡谝坏刂飞善?0a、第二地址生成器 30b、第一地址轉(zhuǎn)換器31a和第二地址轉(zhuǎn)換器31b提供的地址,選擇器41a至41h選擇從連接到選擇器41a至41h的雙端口 RAM輸出的某個(gè)8字節(jié)數(shù)據(jù)。隨后,選擇器43a至43d選擇存儲(chǔ)在雙端口 RAM的存儲(chǔ)器單元22中的8字節(jié)數(shù)據(jù),并將其作為16字節(jié)數(shù)據(jù)順序輸出到執(zhí)行/指令單元11。更具體地,雙端口 RAM模塊RAM(O)和RAM⑴中的第一輸出端口寄存器23a分別連接到兩個(gè)選擇器41a和41b。類(lèi)似地,雙端口 RAM模塊RAM(2)和RAM(3)中的第一輸出端口寄存器23a分別連接到兩個(gè)選擇器41c和41d。相似地,雙端口 RAM模塊RAM(O)和RAM(I) 中的第二輸出端口寄存器23b分別連接到兩個(gè)選擇器41e和41f,而雙端口 RAM模塊RAM(2) 和RAM(3)中的第二輸出端口寄存器23b分別連接到兩個(gè)選擇器41g和41h。緩沖器42a連接到選擇器41a,緩沖器42c連接到選擇器41b,緩沖器42b連接到選擇器41c,緩沖器42d連接到選擇器41d。另外,緩沖器42e連接到選擇器41e,緩沖器42g 連接到選擇器41f,緩沖器42f連接到選擇器41g,緩沖器42h連接到選擇器41h。存儲(chǔ)在緩沖器42a和緩沖器42b中的各組8字節(jié)數(shù)據(jù)由選擇器43a以該順序選擇,并作為16字節(jié)數(shù)據(jù)經(jīng)由數(shù)據(jù)輸出單元44a提供到執(zhí)行/指令單元11。類(lèi)似地,分別存儲(chǔ)在緩沖器42c和緩沖器42d中的8字節(jié)數(shù)據(jù)被選擇器43b選擇,并被提供到數(shù)據(jù)輸出單元 44b ο數(shù)據(jù)輸出單元44b按照順序的次序重新設(shè)置從選擇器43b輸出的數(shù)據(jù),并將結(jié)果作為16字節(jié)數(shù)據(jù)提供到執(zhí)行/指令單元11。類(lèi)似地,將分別存儲(chǔ)在緩沖器42e和緩沖器 42f中的8字節(jié)數(shù)據(jù)作為16字節(jié)數(shù)據(jù)經(jīng)由選擇器43c和數(shù)據(jù)輸出單元44c提供到執(zhí)行/指令單元11。將分別存儲(chǔ)在緩沖器42g和緩沖器42h中的8字節(jié)數(shù)據(jù)作為16字節(jié)數(shù)據(jù)經(jīng)由選擇器43d和數(shù)據(jù)輸出單元44d提供到執(zhí)行/指令單元11。通過(guò)以這種方式配置高速緩存系統(tǒng),由選擇器41a至41h選擇分別從雙端口 RAM 模塊RAM(O)至RAM(3)的第一輸出端口寄存器23a和第二輸出端口寄存器23b輸出的8字節(jié)數(shù)據(jù)。另外,由選擇器43a至43d選擇屬于同一路、但是從不同的雙端口 RAM模塊輸出的數(shù)據(jù)。這樣,選擇器41a和41h各自選擇從雙端口 RAM模塊RAM(O)或RAM⑴的第一輸出端口寄存器23a輸出的8字節(jié)數(shù)據(jù)。類(lèi)似地,選擇器41c和41d各自選擇從雙端口 RAM 模塊RAM⑵或RAM(3)的第一輸出端口寄存器23a輸出的8字節(jié)數(shù)據(jù)。來(lái)自雙端口 RAM模塊RAM (0)或RAM (1)的數(shù)據(jù)被存儲(chǔ)在緩沖器42a中,而來(lái)自雙端口 RAM模塊RAM (2)或RAM (3)的數(shù)據(jù)被存儲(chǔ)在緩沖器42b中。 選擇器43a選擇以下數(shù)據(jù)之一從選擇器41a輸出的來(lái)自雙端口 RAM模塊RAM(O) 或RAM⑴的8字節(jié)數(shù)據(jù);或者從選擇器41c輸出的來(lái)自雙端口 RAM模塊RAM⑵或RAM(3) 的8字節(jié)數(shù)據(jù)。連接到緩沖器42c和緩沖器42d的選擇器43b與選擇器43a類(lèi)似地工作。 另外,除了連接到各個(gè)雙端口 RAM模塊的第二輸出端口寄存器之外,選擇器41e至41h基本上與選擇器41a至41d類(lèi)似地工作。選擇器43c和選擇器43d與選擇器43a和43b類(lèi)似地工作。以這種方式,通過(guò)從不同的雙端口 RAM模塊20讀出8字節(jié)數(shù)據(jù),實(shí)施例的高速緩存系統(tǒng)能夠生成要遵循SIMD指令而讀出的16字節(jié)數(shù)據(jù),然后將該數(shù)據(jù)輸出到執(zhí)行/指令單元11。另外,即使16字節(jié)數(shù)據(jù)被跨越不同路地存儲(chǔ),該高速緩存系統(tǒng)也能夠從所有雙端口 RAM模塊的輸出端口讀出8字節(jié)數(shù)據(jù),并且根據(jù)指定的地址選擇8字節(jié)數(shù)據(jù)。這樣,與在確定要讀出的數(shù)據(jù)的路之后基于每個(gè)路選擇數(shù)據(jù)的情況相比,該高速緩存系統(tǒng)能夠通過(guò)簡(jiǎn)單的模式布局輸出16字節(jié)數(shù)據(jù)。另外,使數(shù)據(jù)寫(xiě)入一級(jí)數(shù)據(jù)高速緩沖存儲(chǔ)器4并輸出到執(zhí)行/指令單元11的配置也可以與圖17所示的類(lèi)似。在包括圖17所示的配置的高速緩存系統(tǒng)中,以塊為單元對(duì)存儲(chǔ)在雙端口 RAM的存儲(chǔ)器單元22中的單元數(shù)據(jù)進(jìn)行劃界,按照路區(qū)分各個(gè)塊。為了根據(jù)SIMD指令將16字節(jié)數(shù)據(jù)輸出到執(zhí)行/指令單元11,圖17所示的高速緩存系統(tǒng)設(shè)置有選擇器41a至41h和43a至 43d。基于從第一地址生成器30a、第二地址生成器30b、第一地址轉(zhuǎn)換器31a和第二地址轉(zhuǎn)換器31b提供的地址,選擇器41a至41h分別選擇從雙端口 RAM模塊RAM(0)至RAM(3) 的第一輸出端口寄存器(在圖17中標(biāo)記為“1”)輸出的8字節(jié)數(shù)據(jù)。隨后,選擇器43a至 43d輸入由選擇器41a至41h選擇的8字節(jié)數(shù)據(jù),8字節(jié)數(shù)據(jù)的組數(shù)等于路數(shù),并且根據(jù)路選擇指令分別選擇8字節(jié)數(shù)據(jù)中的一些。隨后,將存儲(chǔ)在由選擇器43a至43d選擇的雙端口 RAM的存儲(chǔ)器單元22中的8字節(jié)數(shù)據(jù)作為16字節(jié)數(shù)據(jù)被順序輸出到執(zhí)行/指令單元11。如圖17所示,雙端口 RAM模塊RAM(O)至RAM(3)中的第一輸出端口寄存器連接到選擇器41a至41d。將從第一輸出端口寄存器23a輸出的四組數(shù)據(jù)提供到用于進(jìn)行數(shù)據(jù)選擇的四個(gè)選擇器41a至41d。選擇器41a至41d分別連接到用于進(jìn)行路選擇的8字節(jié)緩沖器42a至42d。通過(guò)遵循從執(zhí)行/指令單元11提供的命令,選擇器41a至41d分別取出從連接到選擇器41a至41d的雙端口 RAM模塊RAM(O)至RAM(3)的第一輸出端口寄存器輸出的數(shù)據(jù)中的一些。隨后,從選擇器41a至41d分別輸出取出的數(shù)據(jù),并將其存儲(chǔ)在連接到選擇器41a至41d的緩沖器42a至42d。此外,選擇器41e至41h連接到雙端口 RAM模塊RAM(O)至RAM (3)的第二輸出端口寄存器(在圖17中標(biāo)記為“2”)。將從四個(gè)第二輸出端口寄存器輸出的四組數(shù)據(jù)提供到用于進(jìn)行數(shù)據(jù)選擇的四個(gè)選擇器41e至41h。選擇器41e至41d分別連接到用于進(jìn)行路選擇的8字節(jié)緩沖器42e至42h。通過(guò)遵循從執(zhí)行/指令單元11提供的命令,選擇器41e至 41h分別取出從連接到選擇器41e至41h的雙端口 RAM模塊RAM(O)至RAM(3)的第二輸出端口寄存器輸出的數(shù)據(jù)中的一些。隨后,從選擇器41e至41h分別輸出取出的數(shù)據(jù),并將其存儲(chǔ)在連接到選擇器41e至41h的緩沖器42e至42h中。
緩沖器42a至42d連接到用于從路(0)和路(1)中選擇路的選擇器43a和43b。 選擇器43a遵循從執(zhí)行/指令單元11提供的路選擇命令,并且從緩沖器42a或42b取出數(shù)據(jù)。選擇器43b遵循從執(zhí)行/指令單元11提供的路選擇命令,并且從緩沖器42c或42d取出數(shù)據(jù)。將由選擇器43a和43b取出的數(shù)據(jù)作為取得數(shù)據(jù)經(jīng)由數(shù)據(jù)輸出單元44a和44b提供到執(zhí)行/指令單元11。緩沖器42e至42h連接到用于從路(0)和路(1)中選擇路的選擇器43c和43d。 選擇器43c遵循從執(zhí)行/指令單元11提供的路選擇命令,并且從緩沖器42e或42f取出數(shù)據(jù)。選擇器43d遵循從執(zhí)行/指令單元11提供的路選擇命令,并且從緩沖器42g或42h取出數(shù)據(jù)。將由選擇器43c和43d取出的數(shù)據(jù)作為取得數(shù)據(jù)經(jīng)由數(shù)據(jù)輸出單元44c和44d提供到執(zhí)行/指令單元11。
以這種方式,通過(guò)從不同的雙端口 RAM模塊20讀出8字節(jié)數(shù)據(jù),高速緩存系統(tǒng)能夠生成要遵循SIMD指令而讀出的16字節(jié)數(shù)據(jù),然后將該數(shù)據(jù)輸出到執(zhí)行/指令單元11。 另外,即使16字節(jié)數(shù)據(jù)跨越不同路地存儲(chǔ),該高速緩存系統(tǒng)也能夠從所有雙端口 RAM模塊的輸出端口讀出8字節(jié)數(shù)據(jù),并且根據(jù)指定的地址選擇8字節(jié)數(shù)據(jù)。這樣,與在確定要讀出的數(shù)據(jù)的路之后基于每路選擇數(shù)據(jù)的情況相比,該高速緩存系統(tǒng)能夠通過(guò)簡(jiǎn)單的模式布局輸出16字節(jié)數(shù)據(jù)。這里描述的所有示例和條件性語(yǔ)言旨在教導(dǎo)的目的,以幫助讀者理解本發(fā)明以及由發(fā)明人貢獻(xiàn)的概念以增進(jìn)本技術(shù),并且被解釋為不限于這些具體描述的示例和條件。雖然詳細(xì)描述了本發(fā)明的實(shí)施例,但是應(yīng)當(dāng)理解,可以對(duì)其進(jìn)行各種改變、替換和更改,而不脫離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種高速緩存系統(tǒng),包括 計(jì)算單元;一級(jí)高速緩沖存儲(chǔ)器,其被配置為在所述計(jì)算單元之間輸入和輸出數(shù)據(jù);其中, 所述一級(jí)高速緩沖存儲(chǔ)器包括多端口存儲(chǔ)器單元,每個(gè)多端口存儲(chǔ)器單元包括 存儲(chǔ)單元,其存儲(chǔ)具有第一數(shù)據(jù)大小的單元數(shù)據(jù);寫(xiě)入單元,其將經(jīng)由輸入端口寄存器順序輸入的多個(gè)單元數(shù)據(jù)同時(shí)寫(xiě)入到所述存儲(chǔ)單元的連續(xù)位置;以及輸出單元,其讀出由所述寫(xiě)入單元寫(xiě)入所述存儲(chǔ)單元的所述多個(gè)單元數(shù)據(jù),并將其輸出到多個(gè)輸出端口寄存器;其中,當(dāng)將具有作為第一數(shù)據(jù)大小的任意多倍的第二數(shù)據(jù)大小并且被分割為單元數(shù)據(jù)的數(shù)據(jù)寫(xiě)入所述一級(jí)高速緩沖存儲(chǔ)器中時(shí),通過(guò)進(jìn)行第一寫(xiě)入操作和第二寫(xiě)入操作將數(shù)據(jù)存儲(chǔ)在不同的多端口存儲(chǔ)器單元中,所述第一寫(xiě)入操作將順序的單元數(shù)據(jù)寫(xiě)入到所述多端口存儲(chǔ)器單元的子集中的所述輸入端口寄存器中,所述第二寫(xiě)入操作將所述順序的單元數(shù)據(jù)寫(xiě)入到所述多端口存儲(chǔ)器單元的另一子集中的所述輸入端口寄存器中;并且當(dāng)從所述一級(jí)高速緩沖存儲(chǔ)器讀出數(shù)據(jù)時(shí),通過(guò)進(jìn)行第一讀取操作和第二讀取操作, 從不同的多端口存儲(chǔ)器單元讀出數(shù)據(jù),所述第一讀取操作從所述多端口存儲(chǔ)器單元的子集的所述輸出端口寄存器讀取順序的單元數(shù)據(jù),所述第二讀取操作從所述多端口存儲(chǔ)器單元的剩余子集的所述輸出端口寄存器讀取順序的單元數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的高速緩存系統(tǒng),還包括二級(jí)高速緩沖存儲(chǔ)器,其被配置為在所述一級(jí)高速緩沖存儲(chǔ)器之間輸入和輸出數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的高速緩存系統(tǒng),還包括地址生成單元,其生成用于讀出所述第二數(shù)據(jù)大小的數(shù)據(jù)的地址,并且生成用于讀出存儲(chǔ)在所述多端口存儲(chǔ)器單元中的單元數(shù)據(jù)的第一地址;以及地址轉(zhuǎn)換單元,其轉(zhuǎn)換由所述地址生成單元生成的地址,并且將由所述地址生成單元生成的所述第一地址轉(zhuǎn)換為用于讀出接在所述多端口存儲(chǔ)器單元中存儲(chǔ)的所述單元數(shù)據(jù)之后的單元數(shù)據(jù)的第二地址。
4.根據(jù)權(quán)利要求3所述的高速緩存系統(tǒng),還包括選擇器,其基于從所述地址生成單元或者所述地址轉(zhuǎn)換單元提供的地址選擇從各個(gè)多端口存儲(chǔ)器單元中的輸出端口輸出的任意單元數(shù)據(jù);其中,將存儲(chǔ)在所述多端口存儲(chǔ)器單元中的、由所述選擇器選擇的所述單元數(shù)據(jù)以所述第二數(shù)據(jù)大小為單元順序輸出到所述計(jì)算單元。
5.根據(jù)權(quán)利要求3所述的高速緩存系統(tǒng),還包括第一選擇器,其基于從所述地址生成單元或所述地址轉(zhuǎn)換單元提供的地址選擇從各個(gè)多端口存儲(chǔ)器單元中的輸出端口輸出的特定單元數(shù)據(jù);以及第二選擇器,其根據(jù)路選擇指令選擇與由任意所述第一選擇器選擇的路數(shù)相等的特定單元數(shù)據(jù);其中,將存儲(chǔ)在所述多端口存儲(chǔ)器單元中的、由所述第二選擇器選擇的所述單元數(shù)據(jù)以所述第二數(shù)據(jù)大小為單元順序輸出到所述計(jì)算單元。
6.一種高速緩存系統(tǒng),包括一級(jí)高速緩沖存儲(chǔ)器,其被配置為在計(jì)算單元之間輸入和輸出數(shù)據(jù),所述一級(jí)高速緩沖存儲(chǔ)器包括多端口存儲(chǔ)器單元,所述多端口存儲(chǔ)器單元中的每個(gè)包括 存儲(chǔ)單元,其存儲(chǔ)具有第一數(shù)據(jù)大小的單元數(shù)據(jù);寫(xiě)入單元,其將順序輸入的多個(gè)單元數(shù)據(jù)同時(shí)寫(xiě)入到所述存儲(chǔ)單元的連續(xù)位置;以及輸出單元,其讀出并輸出被寫(xiě)入所述存儲(chǔ)單元的單元數(shù)據(jù);其中,當(dāng)將具有作為所述第一數(shù)據(jù)大小的任意多倍的第二數(shù)據(jù)大小并且被分割為單元數(shù)據(jù)的數(shù)據(jù)寫(xiě)入所述一級(jí)高速緩沖存儲(chǔ)器中時(shí),通過(guò)將順序的單元數(shù)據(jù)寫(xiě)入到所述多端口存儲(chǔ)器單元的子集中,并且將其它順序的單元數(shù)據(jù)寫(xiě)入到所述多端口存儲(chǔ)器單元的另一子集中,來(lái)將所述數(shù)據(jù)存儲(chǔ)在不同的多端口存儲(chǔ)器單元中。
全文摘要
一種高速緩存系統(tǒng),包括一級(jí)高速緩沖存儲(chǔ)器,其被配置為在計(jì)算單元之間輸入和輸出數(shù)據(jù),一級(jí)高速緩沖存儲(chǔ)器包括多端口存儲(chǔ)器單元,多端口存儲(chǔ)器單元中的每個(gè)包括存儲(chǔ)單元,其存儲(chǔ)具有第一數(shù)據(jù)大小的單元數(shù)據(jù);寫(xiě)入單元,其將順序輸入的多個(gè)單元數(shù)據(jù)同時(shí)寫(xiě)入到存儲(chǔ)單元的連續(xù)位置;以及輸出單元,其讀出并輸出被寫(xiě)入存儲(chǔ)單元的單元數(shù)據(jù),其中,當(dāng)將具有作為第一數(shù)據(jù)大小的任意多倍的第二數(shù)據(jù)大小、并且被分割為單元數(shù)據(jù)的數(shù)據(jù)寫(xiě)入一級(jí)高速緩沖存儲(chǔ)器中時(shí),通過(guò)將順序的單元數(shù)據(jù)寫(xiě)入到多端口存儲(chǔ)器單元的子集中,并且將其它順序的單元數(shù)據(jù)寫(xiě)入到多端口存儲(chǔ)器單元的另一子集中,來(lái)將數(shù)據(jù)存儲(chǔ)在不同的多端口存儲(chǔ)器單元中。
文檔編號(hào)G06F12/08GK102156676SQ20111003774
公開(kāi)日2011年8月17日 申請(qǐng)日期2011年2月10日 優(yōu)先權(quán)日2010年2月10日
發(fā)明者平野孝仁 申請(qǐng)人:富士通株式會(huì)社