亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

處理存儲(chǔ)器請(qǐng)求的制作方法

文檔序號(hào):11216207閱讀:1114來源:國(guó)知局
處理存儲(chǔ)器請(qǐng)求的制造方法與工藝

背景

為了減少與訪問存儲(chǔ)在主存儲(chǔ)器中的數(shù)據(jù)相關(guān)聯(lián)的延遲,處理器(諸如cpu或gpu)通常具有一個(gè)或多個(gè)高速緩存,如圖1中的示例存儲(chǔ)器層次結(jié)構(gòu)100所示。通常存在兩個(gè)級(jí)別的片上高速緩存l1102和l2104,其通常利用sram(靜態(tài)隨機(jī)存取存儲(chǔ)器)來實(shí)現(xiàn)。高速緩存比主存儲(chǔ)器108小,主存儲(chǔ)器108可在dram(動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器)中實(shí)現(xiàn),但訪問高速緩存所涉及的延遲比針對(duì)主存儲(chǔ)器的延遲短得多并且在層次結(jié)構(gòu)內(nèi)的較低級(jí)別(即,更接近處理器)處變得更短。由于延遲至少近似地與高速緩存的大小相關(guān),因此較低級(jí)別的高速緩存(例如,l1)小于較高級(jí)別的高速緩存(例如,l2)。

當(dāng)處理器訪問數(shù)據(jù)項(xiàng)時(shí),數(shù)據(jù)項(xiàng)從層次結(jié)構(gòu)中的最低級(jí)被訪問,其中該數(shù)據(jù)項(xiàng)是可獲得的。例如,查找將在l1高速緩存102中執(zhí)行并且如果數(shù)據(jù)在l1高速緩存中,則這被稱為高速緩存命中并且數(shù)據(jù)可被加載到寄存器110中的一個(gè)中。然而,如果數(shù)據(jù)不在l1高速緩存(最低級(jí)別的高速緩存)中,則這是高速緩存缺失并且依次檢查層次結(jié)構(gòu)中的下一級(jí)別,直到發(fā)現(xiàn)數(shù)據(jù)(例如,在l1高速緩存缺失的情況下檢查l2高速緩存104)。在高速緩存缺失的情況下,數(shù)據(jù)進(jìn)入高速緩存(例如,l1高速緩存102)中,并且如果高速緩存已經(jīng)是滿的,則替換算法可用于決定哪個(gè)現(xiàn)有數(shù)據(jù)將被逐出(即,被刪除),以便可以存儲(chǔ)新的數(shù)據(jù)。

如果數(shù)據(jù)項(xiàng)不在片上高速緩存的任一個(gè)中(例如,不在圖1所示的層次結(jié)構(gòu)中的l1高速緩存102或l2高速緩存104中),則存儲(chǔ)器請(qǐng)求被發(fā)到外部總線(其也可被稱為互連結(jié)構(gòu))上,使得數(shù)據(jù)項(xiàng)可從層次結(jié)構(gòu)中的下一級(jí)別(例如,主存儲(chǔ)器108)中獲得。

下面描述的實(shí)施方式僅作為示例被提供且不是解決管理對(duì)存儲(chǔ)器的訪問的已知方法的任何或所有缺點(diǎn)的實(shí)現(xiàn)的限制。

概述

這個(gè)概述被提供來以簡(jiǎn)化形式引入一些概念,其在以下詳細(xì)描述中被進(jìn)一步描述。這個(gè)概述并不旨在識(shí)別所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用來協(xié)助確定所要求保護(hù)的主題的范圍。

描述了處理由高速緩存(例如,片上高速緩存)發(fā)出的存儲(chǔ)器請(qǐng)求的轉(zhuǎn)換器模塊,其中這些存儲(chǔ)器請(qǐng)求包括在虛擬存儲(chǔ)器空間內(nèi)定義的存儲(chǔ)器地址。轉(zhuǎn)換器模塊接收這些請(qǐng)求、發(fā)出每個(gè)請(qǐng)求連同事務(wù)標(biāo)識(shí)符并使用該標(biāo)識(shí)符來跟蹤存儲(chǔ)器請(qǐng)求的狀態(tài)。轉(zhuǎn)換器模塊向存儲(chǔ)器管理單元發(fā)送地址轉(zhuǎn)換的請(qǐng)求,并且在轉(zhuǎn)換在存儲(chǔ)器管理單元中不可用的情況下從存儲(chǔ)器管理單元接收另外的存儲(chǔ)器請(qǐng)求。存儲(chǔ)器請(qǐng)求經(jīng)由總線被發(fā)給存儲(chǔ)器,并且一旦從存儲(chǔ)器接收到響應(yīng),則釋放用于請(qǐng)求的事務(wù)標(biāo)識(shí)符。當(dāng)將存儲(chǔ)器請(qǐng)求發(fā)到總線上時(shí),從存儲(chǔ)器管理單元接收的存儲(chǔ)器請(qǐng)求可優(yōu)先于從高速緩存接收的存儲(chǔ)器請(qǐng)求。

第一方面提供了一種模塊,包括:分配模塊,其被布置為從高速緩存接收存儲(chǔ)器請(qǐng)求并將事務(wù)標(biāo)識(shí)符分配給每個(gè)接收的存儲(chǔ)器請(qǐng)求,其中從高速緩存接收的存儲(chǔ)器請(qǐng)求包括在虛擬地址空間中定義的一個(gè)或多個(gè)存儲(chǔ)器地址;事務(wù)跟蹤器模塊,其被布置為從分配模塊接收存儲(chǔ)器請(qǐng)求連同所分配的事務(wù)標(biāo)識(shí)符、跟蹤存儲(chǔ)器請(qǐng)求的狀態(tài)并從存儲(chǔ)器管理單元接收轉(zhuǎn)換信息,其中轉(zhuǎn)換信息包括存儲(chǔ)器請(qǐng)求中的虛擬存儲(chǔ)器地址到物理存儲(chǔ)器地址的轉(zhuǎn)換或指向該轉(zhuǎn)換的指針;以及仲裁器模塊,其被布置為當(dāng)存儲(chǔ)器請(qǐng)求準(zhǔn)備好發(fā)出時(shí)從事務(wù)跟蹤器模塊接收存儲(chǔ)器請(qǐng)求連同所分配的事務(wù)標(biāo)識(shí)符,并且經(jīng)由外部總線將存儲(chǔ)器請(qǐng)求發(fā)給存儲(chǔ)器,并且響應(yīng)于經(jīng)由外部總線接收到來自存儲(chǔ)器的響應(yīng),觸發(fā)對(duì)所分配的事務(wù)標(biāo)識(shí)符的釋放,其中發(fā)給存儲(chǔ)器的存儲(chǔ)器請(qǐng)求包括使用轉(zhuǎn)換信息確定的一個(gè)或多個(gè)物理存儲(chǔ)器地址。

第二方面提供了一種方法,包括:在轉(zhuǎn)換器模塊處從高速緩存接收存儲(chǔ)器請(qǐng)求;在轉(zhuǎn)換器模塊中,將事務(wù)標(biāo)識(shí)符分配給每個(gè)接收的存儲(chǔ)器請(qǐng)求,其中從高速緩存接收的存儲(chǔ)器請(qǐng)求包括在虛擬地址空間中定義的一個(gè)或多個(gè)存儲(chǔ)器地址;在轉(zhuǎn)換器模塊中,跟蹤存儲(chǔ)器請(qǐng)求的狀態(tài);在轉(zhuǎn)換器模塊中,從存儲(chǔ)器管理單元接收轉(zhuǎn)換信息,其中轉(zhuǎn)換信息包括存儲(chǔ)器請(qǐng)求中的一個(gè)中的虛擬存儲(chǔ)器地址到物理存儲(chǔ)器地址的轉(zhuǎn)換或指向該轉(zhuǎn)換的指針;經(jīng)由外部總線將來自轉(zhuǎn)換器模塊的存儲(chǔ)器請(qǐng)求中的所述一個(gè)發(fā)到存儲(chǔ)器,其中發(fā)到存儲(chǔ)器的存儲(chǔ)器請(qǐng)求包括使用轉(zhuǎn)換信息確定的一個(gè)或多個(gè)物理存儲(chǔ)器地址;以及響應(yīng)于經(jīng)由外部總線接收到來自存儲(chǔ)器的響應(yīng),觸發(fā)對(duì)所分配的事務(wù)標(biāo)識(shí)符的釋放。

另外的方面提供了處理系統(tǒng),其被配置為執(zhí)行本文所述的方法;處理系統(tǒng)包括在集成電路上的硬件中體現(xiàn)的如本文所述的模塊;計(jì)算機(jī)可讀代碼適于當(dāng)代碼運(yùn)行在計(jì)算機(jī)上時(shí)執(zhí)行本文所述的方法的步驟;在集成電路制造系統(tǒng)處制造包括如本文所述的模塊的處理系統(tǒng)的方法;集成電路定義數(shù)據(jù)集,當(dāng)其在集成電路制造系統(tǒng)中處理時(shí),將系統(tǒng)配置為制造包括如本文所述的模塊的處理系統(tǒng);計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有在其上存儲(chǔ)的集成電路的計(jì)算機(jī)可讀描述,當(dāng)其在集成電路制造系統(tǒng)中處理時(shí),使集成電路制造系統(tǒng)制造包括如本文所述的模塊的處理系統(tǒng);以及集成電路制造系統(tǒng),該集成電路制造系統(tǒng)包括:非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有在其上存儲(chǔ)的集成電路的計(jì)算機(jī)可讀描述,該集成電路的計(jì)算機(jī)可讀描述描述了圖形處理系統(tǒng);布局處理系統(tǒng),其被配置為對(duì)集成電路描述進(jìn)行處理,以便生成體現(xiàn)圖形處理系統(tǒng)的集成電路的電路布局描述;以及集成電路生成系統(tǒng),其被配置為根據(jù)電路布局描述來制造圖形處理系統(tǒng),其中處理系統(tǒng)包括如本文所述的模塊。

轉(zhuǎn)換器模塊可被體現(xiàn)在集成電路上的硬件中??梢蕴峁┰诩呻娐分圃煜到y(tǒng)處制造轉(zhuǎn)換器模塊和/或包括轉(zhuǎn)換器模塊的處理器的方法??梢蕴峁┘呻娐范x數(shù)據(jù)集,當(dāng)其在集成電路制造系統(tǒng)中處理時(shí),將系統(tǒng)配置為制造轉(zhuǎn)換器模塊和/或包括轉(zhuǎn)換器模塊的處理器??梢蕴峁┓菚簳r(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有在其上存儲(chǔ)的集成電路的計(jì)算機(jī)可讀描述,當(dāng)其被處理時(shí),使布局處理系統(tǒng)生成在集成電路制造系統(tǒng)中使用的電路布局描述,以制造轉(zhuǎn)換器模塊和/或包括轉(zhuǎn)換器模塊的處理器。

可以提供集成電路制造系統(tǒng),包括:非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有在其上存儲(chǔ)的計(jì)算機(jī)可讀集成電路描述,該計(jì)算機(jī)可讀集成電路描述描述了轉(zhuǎn)換器模塊和/或包括轉(zhuǎn)換器模塊的處理器;布局處理系統(tǒng),其被配置為對(duì)集成電路描述進(jìn)行處理,以便生成體現(xiàn)轉(zhuǎn)換器模塊和/或包括轉(zhuǎn)換器模塊的處理器的集成電路的電路布局描述;以及集成電路生成系統(tǒng),其被配置為根據(jù)電路布局描述來制造轉(zhuǎn)換器模塊和/或包括轉(zhuǎn)換器模塊的處理器。

可以提供用于執(zhí)行如本文所述的方法的計(jì)算機(jī)程序代碼??梢蕴峁┓菚簳r(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有在其上存儲(chǔ)的計(jì)算機(jī)可讀指令,當(dāng)計(jì)算機(jī)可讀指令在計(jì)算機(jī)系統(tǒng)處執(zhí)行時(shí),使計(jì)算機(jī)系統(tǒng)執(zhí)行如本文所述的方法。

優(yōu)選特征可在適當(dāng)時(shí)被組合,如對(duì)技術(shù)人員明顯的,并可與本發(fā)明的任何方面組合。

附圖簡(jiǎn)述

將參考以下附圖通過示例的方式來描述本發(fā)明的實(shí)施方式,在附圖中:

圖1是示例存儲(chǔ)器層次結(jié)構(gòu)的示意圖;

圖2是包括第一示例轉(zhuǎn)換器模塊的存儲(chǔ)器層次結(jié)構(gòu)的一部分的示意圖;

圖3a是示出如本文所述的轉(zhuǎn)換器模塊的第一示例操作方法的流程圖;

圖3b是示出如本文所述的轉(zhuǎn)換器模塊的第二示例操作方法的流程圖;

圖4是示出如本文所述的轉(zhuǎn)換器模塊的第三示例操作方法的流程圖;

圖5是包括第二示例轉(zhuǎn)換器模塊的存儲(chǔ)器層次結(jié)構(gòu)的一部分的示意圖;

圖6是示出如本文所述的轉(zhuǎn)換器模塊的第四示例操作方法的流程圖;

圖7是示出如本文所述的轉(zhuǎn)換器模塊的第五示例操作方法的流程圖;

圖8示出可在如本文所述的轉(zhuǎn)換器模塊內(nèi)實(shí)現(xiàn)的兩個(gè)示例狀態(tài)圖;

圖9示出其中實(shí)現(xiàn)本文所描述的轉(zhuǎn)換器模塊的計(jì)算機(jī)系統(tǒng);以及

圖10示出包括布局處理系統(tǒng)和集成電路生成系統(tǒng)的集成電路制造系統(tǒng)的示例。

附圖圖示各種示例。技術(shù)人員將認(rèn)識(shí)到附圖中示出的元素邊界(例如,框、框組或其他形狀)表示邊界的一個(gè)示例。可能的是在一些示例中,一個(gè)元素可被設(shè)計(jì)為多個(gè)元素或者多個(gè)元素可被設(shè)計(jì)為一個(gè)元素。共同的參考數(shù)字在全部附圖中用于指示類似的特征。

詳細(xì)描述

以下描述通過示例的方式來提出,以使得本領(lǐng)域中的技術(shù)人員能夠制造并使用本發(fā)明。本發(fā)明不限于本文所描述的實(shí)施方式并且對(duì)所公開的實(shí)施方式的各種修改對(duì)于本領(lǐng)域中的技術(shù)人員來說將是明顯的。

現(xiàn)在將僅通過示例的方式來描述實(shí)施方式。

本文描述的是轉(zhuǎn)換器模塊(其也可被稱為接口模塊),該轉(zhuǎn)換器模塊位于高速緩存(其可被稱為片上高速緩存,因?yàn)樗桥c處理器在同一芯片上的高速緩存、經(jīng)由內(nèi)部總線連接并被認(rèn)為是在處理器核心內(nèi)的,諸如圖1中示出的層次結(jié)構(gòu)100中的l2高速緩存104)和存儲(chǔ)器(其可被稱為片外存儲(chǔ)器,因?yàn)樗墙?jīng)由外部總線連接的存儲(chǔ)器,諸如圖1中示出的層次結(jié)構(gòu)100中的主存儲(chǔ)器108)之間。轉(zhuǎn)換器模塊(經(jīng)由內(nèi)部總線)從片上高速緩存接收存儲(chǔ)器請(qǐng)求并將存儲(chǔ)器請(qǐng)求發(fā)到外部總線上,使得存儲(chǔ)器請(qǐng)求可被片外存儲(chǔ)器接收。雖然以下描述將高速緩存稱為“片上”的,而將存儲(chǔ)器稱為“片外”的,但是這僅作為示例并且在各種實(shí)現(xiàn)方式中,高速緩存和存儲(chǔ)器兩者可在單個(gè)片上系統(tǒng)(例如,同一硅片上的)內(nèi)實(shí)現(xiàn)或者在單個(gè)封裝內(nèi)實(shí)現(xiàn)。

如下面更詳細(xì)描述的,轉(zhuǎn)換器模塊連接到mmu(存儲(chǔ)器管理單元),該mmu在虛擬存儲(chǔ)器地址和物理存儲(chǔ)器地址之間轉(zhuǎn)換。在使用本文所描述的轉(zhuǎn)換器模塊的系統(tǒng)中,片上高速緩存因而在虛擬存儲(chǔ)器地址空間中操作并在虛擬存儲(chǔ)器地址空間中生成對(duì)存儲(chǔ)器的請(qǐng)求。本文所描述的轉(zhuǎn)換器模塊將這些存儲(chǔ)器請(qǐng)求轉(zhuǎn)換成在物理地址空間中的外部總線上使用的協(xié)議(例如,axi4ace協(xié)議、開放核心協(xié)議ocp或私有協(xié)議)。在外部總線上使用的協(xié)議通常比在內(nèi)部總線上使用的協(xié)議(其通常是私有協(xié)議)更重量級(jí),并且雖然外部總線通常無序地操作并且出于性能原因可具有多個(gè)通道,但是內(nèi)部總線通常按順序操作。在mmu中缺失的情況下(即,由于所需的轉(zhuǎn)換沒有存儲(chǔ)在mmu中的轉(zhuǎn)換旁視緩沖器tlb中),mmu還生成存儲(chǔ)器請(qǐng)求并且這些存儲(chǔ)器請(qǐng)求還通過轉(zhuǎn)換器模塊被發(fā)到外部總線上。

通過對(duì)高速緩存的輸出執(zhí)行地址轉(zhuǎn)換(即,使用本文所描述的轉(zhuǎn)換器模塊),吸收(absorb)大量的轉(zhuǎn)換延遲是可能的。相反,如果在高速緩存(例如,對(duì)高速緩存的輸入)之前執(zhí)行轉(zhuǎn)換,則其可能需要在執(zhí)行轉(zhuǎn)換的同時(shí)暫停處理器,因?yàn)檗D(zhuǎn)換可以是非常緩慢的。此外,它減少了進(jìn)入mmu的請(qǐng)求量,這可降低功率消耗,并且由于l1和l2高速緩存之間的總線不再經(jīng)受mmu缺失(因?yàn)樗鼈兌荚谔摂M存儲(chǔ)器地址空間中工作),因此這些可保持更高的效率/利用率(例如,因?yàn)閘2高速緩存將傾向于吸收請(qǐng)求而不暫停,支持提供足夠的事務(wù)id)。

除了觸發(fā)(使用mmu從虛擬地址空間到物理地址空間的)地址轉(zhuǎn)換之外,轉(zhuǎn)換器模塊將事務(wù)標(biāo)識(shí)符(id)分配給從片上高速緩存接收的傳入存儲(chǔ)器請(qǐng)求并跟蹤每個(gè)未完成的事務(wù)(即,其已被接收但尚未完成)。一旦事務(wù)完成,事務(wù)id被釋放,使得它們可被重新使用(即,分配給另一傳入的存儲(chǔ)器請(qǐng)求)。當(dāng)將事務(wù)id分配給由mmu/tlb缺失引起的存儲(chǔ)器請(qǐng)求時(shí),可以使用一組單獨(dú)的事務(wù)id。這些事務(wù)id是與由外部總線分派的并允許總線也進(jìn)行重新排序的任何id分開且不同的。

事務(wù)id的分配和id的跟蹤使得存儲(chǔ)器請(qǐng)求能夠無序地執(zhí)行,即存儲(chǔ)器請(qǐng)求可被無序地發(fā)到外部總線上,并且響應(yīng)不需要在它們?cè)趯?shù)據(jù)傳回到片上高速緩存之前由轉(zhuǎn)換器模塊接收時(shí)重新排序(即,數(shù)據(jù)可按照其返回的順序被傳遞回mmu或片上高速緩存)。轉(zhuǎn)換器模塊使用一個(gè)或多個(gè)規(guī)則來選擇接下來將哪些事務(wù)發(fā)到外部總線上,并且這些規(guī)則(以及將請(qǐng)求無序地發(fā)到外部總線上的能力)使得mmu/tlb缺失能夠被優(yōu)先化并且與這樣的缺失相關(guān)聯(lián)的延遲能夠被隱藏(例如,因?yàn)榭梢栽诘却齧mu/tlb缺失返回的同時(shí)發(fā)出其他事務(wù))。

圖2是包括轉(zhuǎn)換器模塊202的存儲(chǔ)器層次結(jié)構(gòu)的一部分的示意圖200,轉(zhuǎn)換器模塊202從距離處理器最遠(yuǎn)的片上高速緩存204(即,在外部總線之前的層次結(jié)構(gòu)中的最后的高速緩存,其也可被稱為最后的片上高速緩存,例如l2高速緩存)接收存儲(chǔ)器請(qǐng)求,并且經(jīng)由(連接片外存儲(chǔ)器的)外部總線206將存儲(chǔ)器請(qǐng)求發(fā)給層次結(jié)構(gòu)中的下一存儲(chǔ)器(例如,圖1的示例中的主存儲(chǔ)器108)。轉(zhuǎn)換器模塊202連接到包括tlb210的mmu208。由轉(zhuǎn)換器模塊202接收的存儲(chǔ)器請(qǐng)求可以是高速緩存缺失(即,從其接收請(qǐng)求的高速緩存中的缺失)、高速緩存逐出或高速緩存維護(hù)操作(例如,高速緩存刷新)的結(jié)果。在高速緩存支持旁路接入的情況下,轉(zhuǎn)換器還可以從高速緩存接收寫請(qǐng)求,該寫請(qǐng)求不經(jīng)改變地通過高速緩存。

轉(zhuǎn)換器模塊202包括分配模塊212,分配模塊212從高速緩存204接收讀/寫請(qǐng)求并將事務(wù)id分配給那些請(qǐng)求。轉(zhuǎn)換器模塊202還包括事務(wù)跟蹤器模塊214,事務(wù)跟蹤器模塊214使用由分配模塊212分配的事務(wù)id來跟蹤每個(gè)傳入的讀/寫請(qǐng)求,例如以確定轉(zhuǎn)換是否在tlb中可用并且因此是否可以發(fā)出請(qǐng)求。

分配模塊212或事務(wù)跟蹤器模塊214可以針對(duì)從高速緩存204接收的每個(gè)存儲(chǔ)器請(qǐng)求向mmu208發(fā)送轉(zhuǎn)換請(qǐng)求。這些轉(zhuǎn)換請(qǐng)求用相應(yīng)的存儲(chǔ)器請(qǐng)求的事務(wù)id來標(biāo)記。響應(yīng)于轉(zhuǎn)換請(qǐng)求,mmu208將轉(zhuǎn)換或指向該轉(zhuǎn)換的指針以及事務(wù)id返回到事務(wù)跟蹤器模塊214(使得事務(wù)跟蹤器模塊214可以使轉(zhuǎn)換/轉(zhuǎn)換指針和相應(yīng)的存儲(chǔ)器請(qǐng)求相匹配)。在mmu命中的情況下,可以立即返回轉(zhuǎn)換/轉(zhuǎn)換指針;然而,在mmu/tlb缺失(即,其中轉(zhuǎn)換沒有存儲(chǔ)在tlb210中)的情況下,mmu在其可以返回對(duì)于特定事務(wù)id的轉(zhuǎn)換/轉(zhuǎn)換指針之前生成另外的存儲(chǔ)器請(qǐng)求并等待數(shù)據(jù)返回。如果mmu使用嵌套轉(zhuǎn)換,則在轉(zhuǎn)換/轉(zhuǎn)換指針可被返回到事務(wù)跟蹤器模塊214之前可能需要對(duì)存儲(chǔ)器進(jìn)行幾次調(diào)用(即,發(fā)出幾個(gè)存儲(chǔ)器請(qǐng)求),并且這導(dǎo)致幾個(gè)周期的延遲。

如上所述,可以通過(在仲裁器模塊216中)使mmu請(qǐng)求優(yōu)先于高速緩存發(fā)起的請(qǐng)求來最小化由mmu/tlb缺失引起的延遲。還可以通過無序地發(fā)出存儲(chǔ)器請(qǐng)求來至少部分地隱藏延遲,使得其他存儲(chǔ)器請(qǐng)求仍然可以在檢索轉(zhuǎn)換時(shí)被發(fā)出且不被暫停。

轉(zhuǎn)換器模塊202還包括仲裁器模塊216,仲裁器模塊216接收準(zhǔn)備從事務(wù)跟蹤器模塊214和mmu208發(fā)出的存儲(chǔ)器請(qǐng)求。從事務(wù)跟蹤器模塊214接收的請(qǐng)求是從高速緩存202發(fā)起的,但現(xiàn)在包括從tlb獲得的物理地址(而不是虛擬存儲(chǔ)器地址)。從mmu208接收的請(qǐng)求由mmu響應(yīng)于mmu/tlb缺失(如上所述)而生成。

仲裁器模塊216每個(gè)時(shí)鐘周期選擇其接收的存儲(chǔ)器請(qǐng)求中的一個(gè)或多個(gè)并將它們發(fā)到外部總線206上。仲裁器模塊216使用一個(gè)或多個(gè)規(guī)則來確定在任意時(shí)間選擇并發(fā)出哪個(gè)存儲(chǔ)器請(qǐng)求(例如,可選擇最高優(yōu)先級(jí)事務(wù)請(qǐng)求),而不是按照事務(wù)id順序工作。在準(zhǔn)備發(fā)出比可以發(fā)到外部總線206上的存儲(chǔ)器請(qǐng)求更多的存儲(chǔ)器請(qǐng)求的情況下,那些等待發(fā)出的存儲(chǔ)器請(qǐng)求可在仲裁器模塊216內(nèi)進(jìn)行緩沖或者可以保持在輸出狀態(tài)中,其中存儲(chǔ)器請(qǐng)求等待被仲裁器模塊216選擇。

在各種示例中,仲裁器模塊216可使由mmu208(由于mmu/tlb缺失)生成的存儲(chǔ)器請(qǐng)求優(yōu)先于由高速緩存204生成的存儲(chǔ)器請(qǐng)求。這減少了與mmu/tlb缺失相關(guān)聯(lián)的延遲。如果不存在由mmu208生成的存儲(chǔ)器請(qǐng)求,則由高速緩存204生成的存儲(chǔ)器請(qǐng)求可按照mmu命中的順序(即,按照tlb中的轉(zhuǎn)換可用的順序)選擇,然而,仲裁器模塊216還可以盡可能地試圖按照老化的順序發(fā)出來自高速緩存204的存儲(chǔ)器請(qǐng)求(例如,如果存在兩個(gè)來自高速緩存的存儲(chǔ)器請(qǐng)求,其中轉(zhuǎn)換是可用的,則最舊的存儲(chǔ)器請(qǐng)求可被選擇發(fā)到外部總線206上)。

仲裁器模塊216還接收從外部總線206返回的讀數(shù)據(jù)和寫響應(yīng),并且這些可按照與其中存儲(chǔ)器請(qǐng)求通過仲裁器模塊216發(fā)到外部總線206上的順序不同的順序被接收回來。然而,所接收的讀數(shù)據(jù)和寫響應(yīng)附有相應(yīng)的事務(wù)id,因此仲裁器模塊216可確定響應(yīng)是對(duì)應(yīng)于由高速緩存204還是mmu208發(fā)出的請(qǐng)求。在響應(yīng)對(duì)應(yīng)于由mmu208發(fā)出的請(qǐng)求的情況下,該響應(yīng)(例如,讀數(shù)據(jù))被傳遞到mmu208。在響應(yīng)對(duì)應(yīng)于由高速緩存204發(fā)出的請(qǐng)求的情況下,該響應(yīng)(其可以是讀數(shù)據(jù)或?qū)戫憫?yīng))被傳遞到事務(wù)跟蹤器模塊214并隨后傳遞到高速緩存上。

在事務(wù)跟蹤器模塊214中對(duì)傳入的讀/寫請(qǐng)求的跟蹤可包括存儲(chǔ)每個(gè)事務(wù)的當(dāng)前狀態(tài)并且當(dāng)事務(wù)的狀態(tài)變化時(shí),(例如,根據(jù)詳述狀態(tài)到狀態(tài)的可能的轉(zhuǎn)變和發(fā)生轉(zhuǎn)變所需的條件的狀態(tài)圖)更新所存儲(chǔ)的狀態(tài)。例如,可用的事務(wù)id最初可以處于空閑狀態(tài)。當(dāng)事務(wù)id(通過分配模塊212)被分派給傳入的讀/寫事務(wù)并且請(qǐng)求轉(zhuǎn)換時(shí),該狀態(tài)可被更新為轉(zhuǎn)換狀態(tài)。當(dāng)mmu208返回轉(zhuǎn)換(或指向該轉(zhuǎn)換的指針)時(shí),事務(wù)的狀態(tài)可被更新為輸出狀態(tài)。一旦處于輸出狀態(tài),則事務(wù)可以被仲裁器模塊216選擇,以用于發(fā)到外部總線206上。一旦發(fā)出,事務(wù)被更新為關(guān)于讀事務(wù)的等待數(shù)據(jù)狀態(tài)或關(guān)于寫事務(wù)的等待響應(yīng)狀態(tài),然后一旦接收到讀數(shù)據(jù)或?qū)戫憫?yīng)并且釋放了事務(wù)id,則狀態(tài)返回到空閑狀態(tài),其指示事務(wù)id可被重新分派給新的傳入存儲(chǔ)器請(qǐng)求。

將認(rèn)識(shí)到的是,為了使寫請(qǐng)求準(zhǔn)備好發(fā)出(且因此移動(dòng)到輸出狀態(tài)),要寫入的數(shù)據(jù)還必須是可用的。寫數(shù)據(jù)可由轉(zhuǎn)換器模塊202內(nèi)的單獨(dú)的路徑(未在圖2中示出)提供,該單獨(dú)的路徑包括輸出寫數(shù)據(jù)緩沖器(owdb)。寫數(shù)據(jù)在被接收時(shí)存儲(chǔ)在owdb中,并且owdb中的寫數(shù)據(jù)的索引/地址一旦可用就被提供給事務(wù)跟蹤器模塊214。一旦轉(zhuǎn)換和寫數(shù)據(jù)均可用,就準(zhǔn)備發(fā)出寫請(qǐng)求并可將其(連同事務(wù)id和owdb索引)傳遞到仲裁器模塊216。一旦寫請(qǐng)求被仲裁器選擇,則索引和突發(fā)長(zhǎng)度然后被發(fā)送到owdb,使得然后可以使用作為起始地址的索引和突發(fā)長(zhǎng)度來從owdb中讀出伴隨寫命令的所需的數(shù)據(jù),以確定數(shù)據(jù)的字的數(shù)量。

可以參考圖3a、圖3b和圖4對(duì)轉(zhuǎn)換器模塊202及其組件部分的操作進(jìn)行更詳細(xì)的描述。圖3a、圖3b和圖4示出了轉(zhuǎn)換器模塊202的三種不同的示例操作方法;然而,如從圖中可以看出,這些方法具有許多共同的方法塊。

在圖3a和圖3b中示出的方法中,轉(zhuǎn)換器模塊202從高速緩存204接收讀/寫請(qǐng)求(塊302),并且由分配模塊212分配事務(wù)id(塊304)。(在塊304中)分配的事務(wù)id可選自可用的事務(wù)id池中并且事務(wù)id可以是外部事務(wù)id,即在外部總線206上使用的id。例如,在外部總線206使用axi4ace協(xié)議的情況下,(在塊304中)分配的外部事務(wù)id是axiid。

一旦已經(jīng)(在塊304中)分配事務(wù)id,則針對(duì)該請(qǐng)求中的任何虛擬存儲(chǔ)器地址,請(qǐng)求轉(zhuǎn)換(塊306)。如上所述,轉(zhuǎn)換請(qǐng)求可通過分配模塊212傳遞到mmu208(如圖2中的箭頭所示)或者通過事務(wù)跟蹤器模塊214傳遞到mmu208。轉(zhuǎn)換請(qǐng)求包括(在塊304中)已經(jīng)分配給傳入存儲(chǔ)器請(qǐng)求的事務(wù)id。

在tlb命中(在塊308中為“是”)的情況下,事務(wù)跟蹤器模塊214接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的事務(wù)id(塊310)。這使得跟蹤每個(gè)未決事務(wù)的狀態(tài)的事務(wù)跟蹤器模塊214能夠更新所標(biāo)識(shí)的事務(wù)的狀態(tài),以示出轉(zhuǎn)換已準(zhǔn)備就緒。對(duì)于寫請(qǐng)求,事務(wù)只有在轉(zhuǎn)換可用且寫數(shù)據(jù)也可用(即,存儲(chǔ)在owdb中)(在塊311中為“是”)時(shí)才會(huì)準(zhǔn)備就緒。一旦(由事務(wù)id標(biāo)識(shí)的)存儲(chǔ)器請(qǐng)求準(zhǔn)備發(fā)出,則包括從tlb獲得的物理地址(例如,而不是在原始傳入存儲(chǔ)器請(qǐng)求中的虛擬存儲(chǔ)器地址)的存儲(chǔ)器請(qǐng)求可被傳遞到仲裁器模塊216。

仲裁器模塊216從準(zhǔn)備就緒的那些存儲(chǔ)器請(qǐng)求中選擇存儲(chǔ)器請(qǐng)求并使用(在塊304中)先前分配的事務(wù)id來將其發(fā)到外部總線206上(塊312)。如上所述,可以基于一個(gè)或多個(gè)規(guī)則來執(zhí)行(在塊312中的)選擇。

在(塊312中)發(fā)出具有特定事務(wù)id的存儲(chǔ)器請(qǐng)求后,仲裁器模塊216接收具有匹配的事務(wù)id的(用于讀請(qǐng)求的)讀數(shù)據(jù)或(用于寫請(qǐng)求的)寫響應(yīng)(塊314)。基于事務(wù)id,仲裁器模塊216可以確定讀數(shù)據(jù)或?qū)戫憫?yīng)對(duì)應(yīng)的存儲(chǔ)器請(qǐng)求是高速緩存204發(fā)起的還是mmu208發(fā)起的,并且然后(針對(duì)高速緩存發(fā)起的請(qǐng)求)將讀數(shù)據(jù)或?qū)戫憫?yīng)轉(zhuǎn)發(fā)到事務(wù)跟蹤器模塊214或者(針對(duì)mmu發(fā)起的請(qǐng)求)將其轉(zhuǎn)發(fā)到mmu208。

一旦讀/寫請(qǐng)求完成(即,已經(jīng)從外部總線接收到響應(yīng),其有效地完成該事務(wù)的生命周期),則可以釋放(在塊304中)分派給該請(qǐng)求的事務(wù)id(塊316)。這意味著事務(wù)id返回到(在塊304中)可分派給傳入請(qǐng)求的可用的事務(wù)id池。

在tlb缺失(在塊308中為“否”)的情況下,事務(wù)跟蹤器模塊214可以不立即接收來自mmu208的轉(zhuǎn)換或轉(zhuǎn)換指針,如圖3a所示。相反,mmu發(fā)出在mmu內(nèi)分派了事務(wù)id的存儲(chǔ)器請(qǐng)求。由mmu分派的事務(wù)id可選自分開的可用外部事務(wù)id池,其僅用于mmu發(fā)起的請(qǐng)求。仲裁器模塊216接收由mmu生成的存儲(chǔ)器請(qǐng)求及其事務(wù)id(塊318),并且存儲(chǔ)器請(qǐng)求可用于如上所述的選擇和發(fā)出(塊312)。另外,如上所述,(由mmu請(qǐng)求的特殊事務(wù)id標(biāo)識(shí)的)mmu請(qǐng)求可優(yōu)先于高速緩存發(fā)起的請(qǐng)求,以便使與mmu/tlb缺失相關(guān)聯(lián)的延遲最小化。

在(塊312中)發(fā)出mmu請(qǐng)求后,仲裁器模塊216(在塊314中)接收數(shù)據(jù)并且可以根據(jù)事務(wù)id識(shí)別出數(shù)據(jù)與由mmu208生成的存儲(chǔ)器請(qǐng)求相關(guān)。因此,仲裁器模塊216將數(shù)據(jù)傳遞到mmu(塊320)并且由仲裁器模塊216或mmu208釋放特殊mmu事務(wù)id(塊316)。如上所述,(例如,在嵌套轉(zhuǎn)換的情況下)單個(gè)tlb缺失可能需要多個(gè)存儲(chǔ)器查找,因此針對(duì)高速緩存發(fā)起的請(qǐng)求,在轉(zhuǎn)換在mmu中可用之前,仲裁器模塊可以接收另外的存儲(chǔ)器請(qǐng)求(如塊316到塊318的虛線箭頭所指示)。

一旦轉(zhuǎn)換可用,事務(wù)跟蹤器模塊214接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的事務(wù)id(塊310)。由于轉(zhuǎn)換現(xiàn)在準(zhǔn)備就緒,因此(由事務(wù)id標(biāo)識(shí)的)存儲(chǔ)器請(qǐng)求準(zhǔn)備發(fā)出并且因此可被傳遞到仲裁器模塊216。如上面提到的,對(duì)于寫請(qǐng)求,寫數(shù)據(jù)也必須是可用的(即,存儲(chǔ)在owdb中),以用于將準(zhǔn)備好被發(fā)出的存儲(chǔ)器請(qǐng)求(在塊311中為“是”)。對(duì)于讀請(qǐng)求,沒有類似的約束。

仲裁器模塊216(例如,基于一個(gè)或多個(gè)規(guī)則)從準(zhǔn)備就緒的那些存儲(chǔ)器請(qǐng)求中選擇存儲(chǔ)器請(qǐng)求,并且使用(在塊304中)先前分配的事務(wù)id將其發(fā)到外部總線206上(塊312)。

在(塊312中)發(fā)出具有特定事務(wù)id的存儲(chǔ)器請(qǐng)求后,仲裁器模塊216接收具有匹配的事務(wù)id的(用于讀請(qǐng)求的)讀數(shù)據(jù)或(用于寫請(qǐng)求的)寫響應(yīng)?;谑聞?wù)id,仲裁器模塊216可以確定讀數(shù)據(jù)或?qū)戫憫?yīng)對(duì)應(yīng)的存儲(chǔ)器請(qǐng)求是高速緩存204發(fā)起的還是mmu208發(fā)起的,并且然后(針對(duì)高速緩存發(fā)起的請(qǐng)求)將讀數(shù)據(jù)或?qū)戫憫?yīng)轉(zhuǎn)發(fā)到事務(wù)跟蹤器模塊214或者(針對(duì)mmu發(fā)起的請(qǐng)求)將其轉(zhuǎn)發(fā)到mmu208。

如上所述,一旦讀/寫請(qǐng)求完成,就可以釋放(在塊304中)分派給高速緩存發(fā)起的請(qǐng)求的事務(wù)id(塊316)。這意味著事務(wù)id返回到可用的事務(wù)id池,其可(在塊304中)被分派給來自高速緩存的另一傳入請(qǐng)求。

圖3b示出了圖3a中示出和以上所述的方法的變型。在該示例方法中,不論是存在tlb命中還是存在tlb缺失,事務(wù)跟蹤器模塊214均接收來自mmu208的轉(zhuǎn)換或轉(zhuǎn)換指針(塊310);然而,在tlb缺失的情況下,指針指向被標(biāo)記為未完成的條目(在塊322中為“是”),因此事務(wù)跟蹤器模塊214知道該事務(wù)尚未準(zhǔn)備好。如上所述,在tlb缺失(這意味著該條目被標(biāo)記為未完成,在塊322中為“是”)的情況下,mmu發(fā)出在mmu內(nèi)分派了事務(wù)id的存儲(chǔ)器請(qǐng)求(如以上參考圖3a描述的)。由mmu分派的事務(wù)id可選自分開的可用外部事務(wù)id池,其僅用于mmu發(fā)起的請(qǐng)求。仲裁器模塊216接收由mmu生成的存儲(chǔ)器請(qǐng)求及其事務(wù)id(塊318),并且存儲(chǔ)器請(qǐng)求可用于如上所述的選擇和發(fā)出(塊312)。還如上所述,(由mmu請(qǐng)求的特殊事務(wù)id標(biāo)識(shí)的)mmu請(qǐng)求可優(yōu)先于高速緩存發(fā)起的請(qǐng)求,以便使與mmu/tlb缺失相關(guān)聯(lián)的延遲最小化。

在(塊312中)發(fā)出mmu請(qǐng)求后,仲裁器模塊216(在塊314中)接收數(shù)據(jù)并且可以根據(jù)事務(wù)id識(shí)別出數(shù)據(jù)與由mmu208生成的存儲(chǔ)器請(qǐng)求相關(guān)。因此,仲裁器模塊216將數(shù)據(jù)傳遞到mmu(塊320)并且由仲裁器模塊216或mmu208釋放特殊mmu事務(wù)id(塊316)。如上所述,(例如,在嵌套轉(zhuǎn)換的情況下)單個(gè)tlb缺失可能需要多個(gè)存儲(chǔ)器查找,因此針對(duì)高速緩存發(fā)起的請(qǐng)求,在轉(zhuǎn)換在mmu中可用(如塊324中更新的)之前,仲裁器模塊可接收另外的存儲(chǔ)器請(qǐng)求(如塊316到塊318的虛線箭頭所指示的)。

一旦轉(zhuǎn)換可用,指針指向的條目不再被標(biāo)記為未完成(在塊322中為“否”)并且(由事務(wù)id標(biāo)識(shí)的)存儲(chǔ)器請(qǐng)求準(zhǔn)備發(fā)出且因此可被傳遞到仲裁器模塊216。如上面提到的,對(duì)于寫請(qǐng)求,寫數(shù)據(jù)也必須是可用的(即,存儲(chǔ)在owdb中),以用于將準(zhǔn)備被發(fā)出的存儲(chǔ)器請(qǐng)求(在塊311中為“是”)。對(duì)于讀請(qǐng)求,沒有類似的約束。

仲裁器模塊216(例如,基于一個(gè)或多個(gè)規(guī)則)從準(zhǔn)備就緒的那些存儲(chǔ)器請(qǐng)求中選擇存儲(chǔ)器請(qǐng)求,并且使用(在塊304中)先前分配的事務(wù)id將其發(fā)到外部總線206上(塊312)。

在(塊312中)發(fā)出具有特定事務(wù)id的存儲(chǔ)器請(qǐng)求后,仲裁器模塊216接收具有匹配的事務(wù)id的(用于讀請(qǐng)求的)讀數(shù)據(jù)或(用于寫請(qǐng)求的)寫響應(yīng)。基于事務(wù)id,仲裁器模塊216可以確定讀數(shù)據(jù)或?qū)戫憫?yīng)對(duì)應(yīng)的存儲(chǔ)器請(qǐng)求是高速緩存204發(fā)起的還是mmu208發(fā)起的,并且然后(針對(duì)高速緩存發(fā)起的請(qǐng)求)將讀數(shù)據(jù)或?qū)戫憫?yīng)轉(zhuǎn)發(fā)到事務(wù)跟蹤器模塊214或者(針對(duì)mmu發(fā)起的請(qǐng)求)將其轉(zhuǎn)發(fā)到mmu208。

如上所述,一旦讀/寫請(qǐng)求完成,就可以釋放(在塊304中)分派給高速緩存發(fā)起的請(qǐng)求的事務(wù)id(塊316)。這意味著事務(wù)id返回到可用的事務(wù)id池,其可(在塊304中)被分派給來自高速緩存的另一傳入請(qǐng)求。

通過使用上面描述的并在圖3a和圖3b中示出的方法,可以隱藏由mmu缺失所引起的延遲并且可以支持地址的無序轉(zhuǎn)換。方法改善了性能、延遲容忍和總線利用率。

與圖3a和圖3b中示出的方法相比,在圖4中示出的方法中,使用三種類型的事務(wù)id:內(nèi)部事務(wù)id、mmu事務(wù)id(其可被認(rèn)為是特殊類型的內(nèi)部事務(wù)id)和外部事務(wù)id。與圖3a和圖3b的方法不同,在圖4的方法中,分配模塊212將內(nèi)部事務(wù)id分配給傳入存儲(chǔ)器請(qǐng)求并且mmu208將mmu事務(wù)id分配給其生成的任何存儲(chǔ)器請(qǐng)求。然后,在存儲(chǔ)器請(qǐng)求被發(fā)到外部總線上之前,這些事務(wù)id通過仲裁器模塊216被映射到外部事務(wù)id。

通過以這種方式使用內(nèi)部事務(wù)id,使用較少量的外部事務(wù)id是有可能的,因?yàn)闆]有必要為mmu請(qǐng)求保留許多外部事務(wù)id。這產(chǎn)生了更靈活的系統(tǒng)(例如,外部總線不需要支持來自高速緩存的n個(gè)請(qǐng)求加上來自mmu的m個(gè)請(qǐng)求,而是固定大小的外部事務(wù)id池可由在任意一個(gè)時(shí)間點(diǎn)恰好在飛行中的任何比例的mmu請(qǐng)求和高速緩存請(qǐng)求來使用)??梢赃x擇包括mmu事務(wù)id的內(nèi)部事務(wù)id的總數(shù)以匹配外部事務(wù)id的總數(shù),或者可以存在比外部事務(wù)id更多的內(nèi)部事務(wù)id。

在存在比外部id更多的內(nèi)部事務(wù)id(包括mmu事務(wù)id)的情況下,也許不可能發(fā)出所有準(zhǔn)備好的存儲(chǔ)器請(qǐng)求,這是因?yàn)榭赡懿淮嬖谌魏慰捎玫耐獠渴聞?wù)id,且因此存儲(chǔ)器請(qǐng)求可在仲裁器模塊216和/或事物跟蹤器模塊214內(nèi)進(jìn)行緩沖。

如果增加了不包括mmu事務(wù)id的內(nèi)部事務(wù)id的數(shù)量,則用于跟蹤所有未決事務(wù)的事務(wù)跟蹤器模塊214中的存儲(chǔ)器的大小變得更大;然而,存儲(chǔ)器層次結(jié)構(gòu)的效率提高。

在圖4中示出的方法中,轉(zhuǎn)換器模塊202接收來自高速緩存204的讀/寫請(qǐng)求(塊302),并且內(nèi)部事務(wù)id由分配模塊212分配(塊404)。(在塊404中)分配的內(nèi)部事務(wù)id可選自可用的內(nèi)部事務(wù)id池。

一旦已經(jīng)(在塊404中)分配內(nèi)部事務(wù)id,則針對(duì)該請(qǐng)求中的任何虛擬存儲(chǔ)器地址,請(qǐng)求轉(zhuǎn)換(塊306)。如上所述,轉(zhuǎn)換請(qǐng)求可通過分配模塊212傳遞到mmu208(如圖2中的箭頭所示)或者通過事務(wù)跟蹤器模塊214傳遞到mmu208。轉(zhuǎn)換請(qǐng)求包括(在塊404中)已經(jīng)分配給傳入存儲(chǔ)器請(qǐng)求的內(nèi)部事務(wù)id。

在tlb命中(在塊308中為“是”)的情況下,事務(wù)跟蹤器模塊214接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的內(nèi)部事務(wù)id(塊310)。這使得跟蹤每個(gè)未決事務(wù)的狀態(tài)的事務(wù)跟蹤器模塊214能夠更新所標(biāo)識(shí)的事務(wù)的狀態(tài),以示出轉(zhuǎn)換已準(zhǔn)備就緒。一旦包括從tlb獲得的物理地址(例如,而不是在傳入存儲(chǔ)器請(qǐng)求中的虛擬存儲(chǔ)器地址)的存儲(chǔ)器請(qǐng)求(由內(nèi)部事務(wù)id所標(biāo)識(shí))準(zhǔn)備好發(fā)出,則其可被傳遞到仲裁器模塊216。

仲裁器模塊216從準(zhǔn)備好的那些存儲(chǔ)器請(qǐng)求中選擇存儲(chǔ)器請(qǐng)求(塊411),其中,如上所述,該選擇可以基于一個(gè)或多個(gè)規(guī)則。在可以發(fā)出存儲(chǔ)器請(qǐng)求(塊413)之前,必須首先向該存儲(chǔ)器請(qǐng)求分派來自可用的外部事務(wù)id池的外部事務(wù)id,并且內(nèi)部事務(wù)id和外部事務(wù)id之間的映射被存儲(chǔ)在仲裁器模塊216中(塊412)。

在示例中,外部事務(wù)id可通過仲裁器模塊216內(nèi)的重映射邏輯分派,重映射邏輯維持其中內(nèi)部事務(wù)id已被分配給每個(gè)外部事務(wù)id的數(shù)組。當(dāng)(在塊411中)已經(jīng)由仲裁器模塊216選擇請(qǐng)求時(shí),重映射邏輯找到數(shù)組中可用的空閑條目(例如,數(shù)組中的第一可用的空閑條目)。內(nèi)部事務(wù)id被存儲(chǔ)在所標(biāo)識(shí)的數(shù)組條目中并且已經(jīng)被分配的條目編號(hào)然后形成(在塊413中)輸出到外部總線206上的外部事務(wù)id。

在(塊413中)發(fā)出具有特定外部事務(wù)id的存儲(chǔ)器請(qǐng)求后,仲裁器模塊216接收具有匹配的外部事務(wù)id的(用于讀請(qǐng)求的)讀數(shù)據(jù)或(用于寫請(qǐng)求的)寫響應(yīng)(塊314)。然后,外部事務(wù)id映射回到內(nèi)部id并且釋放外部事務(wù)id(塊415)。

在其中使用以上所描述的數(shù)組的示例中,所接收的外部事務(wù)id被用作重映射數(shù)組的索引并且這允許獲得原始內(nèi)部事務(wù)id。一旦發(fā)生這種情況,該條目被再次標(biāo)記為空,允許該條目(以及因此的外部事務(wù)id)被重新分派給新的請(qǐng)求。

基于內(nèi)部事務(wù)id,仲裁器模塊216可以確定讀數(shù)據(jù)或?qū)戫憫?yīng)對(duì)應(yīng)的存儲(chǔ)器請(qǐng)求是由高速緩存204發(fā)起的還是由mmu208發(fā)起的,并且然后(針對(duì)高速緩存發(fā)起的請(qǐng)求)將讀數(shù)據(jù)或?qū)戫憫?yīng)轉(zhuǎn)發(fā)到事務(wù)跟蹤器模塊214或者(針對(duì)mmu發(fā)起的請(qǐng)求)將其轉(zhuǎn)發(fā)到mmu208。例如,第一范圍或類型的id可被用作用于高速緩存發(fā)起的請(qǐng)求的內(nèi)部事務(wù)id,并且第二不同的范圍或類型的id可被用作mmu事務(wù)id。

一旦讀/寫請(qǐng)求完成,就可以釋放(在塊404中)分派給請(qǐng)求的內(nèi)部事務(wù)id(塊416)。這意味著內(nèi)部事務(wù)id返回到(在塊404中)可分派給傳入請(qǐng)求的可用的內(nèi)部事務(wù)id池。

在tlb缺失(在塊308中為“否”)的情況下,事務(wù)跟蹤器模塊214可以不立即從mmu208接收轉(zhuǎn)換或轉(zhuǎn)換指針;可選地,如以上參考圖3b描述的,可以接收指向被標(biāo)記為未完成的條目的轉(zhuǎn)換指針。在tlb缺失的情況下,mmu發(fā)出在mmu內(nèi)分派了mmu事務(wù)id的存儲(chǔ)器請(qǐng)求。由mmu分派的mmu事務(wù)id可選自可用的mmu事務(wù)id池。仲裁器模塊216接收由mmu生成的存儲(chǔ)器請(qǐng)求及其mmu事務(wù)id(塊418)并且可用于(塊411中的)選擇和(塊413中的)發(fā)出。mmu請(qǐng)求(由其mmu事務(wù)id所標(biāo)識(shí))可以(在塊411中選擇請(qǐng)求時(shí))優(yōu)先于高速緩存發(fā)起的請(qǐng)求,以便使與mmu/tlb缺失相關(guān)聯(lián)的延遲最小化。

在(塊413中)發(fā)出存儲(chǔ)器請(qǐng)求之前,分派了外部事務(wù)id并存儲(chǔ)mmu到外部id的映射(塊422)。外部事務(wù)id可從可用的外部事務(wù)id池分派,并且與以上參考圖3a和圖3b描述的方法不同,相同的外部事務(wù)id池可用于高速緩存發(fā)起的存儲(chǔ)器請(qǐng)求和mmu發(fā)起的存儲(chǔ)器請(qǐng)求兩者。

在示例中,外部事務(wù)id可由(以上描述的)重映射邏輯分派。當(dāng)請(qǐng)求(在塊411中)已由仲裁器模塊216選擇時(shí),重映射邏輯在數(shù)組中找到可用的空閑條目。mmu事務(wù)id存儲(chǔ)在該特定的數(shù)組條目中,然后已經(jīng)被分配的條目編號(hào)形成(在塊413中)輸出到外部總線206上的外部事務(wù)id。

在(塊413中)發(fā)出mmu請(qǐng)求后,仲裁器模塊216(在塊314中)接收數(shù)據(jù)以及外部事務(wù)id。然后,該外部事務(wù)id(例如,使用由重映射邏輯保持的數(shù)組)被映射回到內(nèi)部id,在這種情況下,內(nèi)部id是mmu事務(wù)id,并且釋放外部事務(wù)id(塊425)。

仲裁器模塊216可根據(jù)mmu事務(wù)id識(shí)別出(在塊314中)所接收的數(shù)據(jù)與由mmu208生成的存儲(chǔ)器請(qǐng)求相關(guān)。因此,仲裁器模塊216將數(shù)據(jù)傳遞到mmu(塊320),并且mmu事務(wù)id由mmu208釋放。如上所述,(例如,在嵌套轉(zhuǎn)換的情況下)單個(gè)tlb缺失可能需要多個(gè)存儲(chǔ)器查找,因此對(duì)于高速緩存發(fā)起的請(qǐng)求,在轉(zhuǎn)換在mmu中可用之前,仲裁器模塊可以接收另外的存儲(chǔ)器請(qǐng)求(如塊320到塊418的虛線箭頭所指示的)。

一旦轉(zhuǎn)換可用,事務(wù)跟蹤器模塊214接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的事務(wù)id(塊310)。由于轉(zhuǎn)換現(xiàn)在準(zhǔn)備就緒,因此(由在塊404中分派的內(nèi)部事務(wù)id標(biāo)識(shí)的)存儲(chǔ)器請(qǐng)求準(zhǔn)備好發(fā)出并且因此可被傳遞到仲裁器模塊216。如以上提到的,對(duì)于寫請(qǐng)求,寫數(shù)據(jù)也必須是可用的,以便使寫請(qǐng)求準(zhǔn)備好發(fā)出(例如,寫數(shù)據(jù)存儲(chǔ)在owdb中)。

仲裁器模塊216從那些準(zhǔn)備好的存儲(chǔ)器請(qǐng)求中選擇存儲(chǔ)器請(qǐng)求(塊411)、分派外部事務(wù)id并存儲(chǔ)內(nèi)部到外部事務(wù)id的映射(塊412)并且使用外部事務(wù)id將其發(fā)到外部總線206上(塊413)。

在(塊413中)發(fā)出具有特定外部事務(wù)id的存儲(chǔ)器請(qǐng)求后,仲裁器模塊216接收具有匹配的外部事務(wù)id的(用于讀請(qǐng)求的)讀數(shù)據(jù)或(用于寫請(qǐng)求的)寫響應(yīng)(塊314)。仲裁器模塊216(例如,以上所述的重映射邏輯)將外部事務(wù)id映射回到內(nèi)部事務(wù)id并釋放外部事務(wù)id(塊415)。基于內(nèi)部事務(wù)id,仲裁器模塊216可以確定在該情況下,存儲(chǔ)器請(qǐng)求是從高速緩存204發(fā)起的并且然后將讀數(shù)據(jù)或?qū)戫憫?yīng)轉(zhuǎn)發(fā)到事務(wù)跟蹤器模塊214。

如上所述,一旦讀/寫請(qǐng)求完成,則可以釋放(在塊404中)分派給高速緩存發(fā)起的請(qǐng)求的內(nèi)部事務(wù)id(塊416)。這意味著內(nèi)部事務(wù)id返回到可用的內(nèi)部事務(wù)id池,其可(在塊404中)被分派給來自高速緩存的另一傳入請(qǐng)求。

在以上參考圖2-4描述的示例中,來自高速緩存的讀和寫請(qǐng)求被一起處理(即,以相同方式對(duì)待而沒有區(qū)分讀請(qǐng)求和寫請(qǐng)求,使得用于讀請(qǐng)求和寫請(qǐng)求的事務(wù)id從同一池中分派),而mmu請(qǐng)求被分開處理,其中用于mmu請(qǐng)求的事務(wù)id從分開的池中分派(其中這些事務(wù)id可以是如圖4中示出的示例中的內(nèi)部id或者如圖3a和圖3b中示出的示例中的外部id)。然而,在其他示例中,讀請(qǐng)求和寫請(qǐng)求可被分開處理,使得用于讀請(qǐng)求的事務(wù)id從與用于寫請(qǐng)求的事務(wù)id分開的id池中分派。與前面的示例一樣,分派的事務(wù)id可以是外部id(如下面參考圖6描述的)或內(nèi)部id(如下面參考圖7描述的)。

通過分別為讀請(qǐng)求和寫請(qǐng)求分派事務(wù)id,存儲(chǔ)器層次結(jié)構(gòu)可以更好地匹配外部總線,特別是如果總線和/或片外存儲(chǔ)器(例如,圖1中示出的層次結(jié)構(gòu)中的主存儲(chǔ)器108)可以在固定時(shí)間窗口內(nèi)支持不同數(shù)量的讀和寫(例如,讀比寫更多)。此外,讀不會(huì)變成卡在寫后面(例如,其中外部總線具有用于讀和寫的分開的通道)。

圖5是包括轉(zhuǎn)換器模塊502的存儲(chǔ)器層次結(jié)構(gòu)的一部分的示意圖500,轉(zhuǎn)換器模塊502從距離處理器最遠(yuǎn)的片上高速緩存204(即,層次結(jié)構(gòu)中的最后的片上高速緩存,例如l2高速緩存)接收存儲(chǔ)器請(qǐng)求,并且經(jīng)由(連接片外存儲(chǔ)器的)外部總線206將存儲(chǔ)器請(qǐng)求發(fā)到層次結(jié)構(gòu)中的下一存儲(chǔ)器(例如,圖1的示例中的主存儲(chǔ)器108)。轉(zhuǎn)換器模塊502連接到包括tlb210的mmu208。

與圖2中示出的轉(zhuǎn)換器模塊202相比,可以看出的是,圖5中示出的轉(zhuǎn)換器模塊502包括兩個(gè)并行路徑,一個(gè)路徑用于讀請(qǐng)求(在圖的左邊)以及一個(gè)路徑用于寫請(qǐng)求(在圖的右邊)。每個(gè)路徑(讀/寫)包括分配模塊512r、512w、事務(wù)跟蹤器模塊514r、514w以及仲裁器模塊516r、516w。如同圖2一樣,owdb沒有在圖5中示出。

讀分配模塊512r從高速緩存204接收讀請(qǐng)求并將事務(wù)id分配給這些讀請(qǐng)求,以及寫分配模塊512w從高速緩存204接收寫請(qǐng)求并將事務(wù)id分配給這些寫請(qǐng)求。讀事務(wù)跟蹤器模塊514r使用由讀分配模塊512r分配的事務(wù)id來跟蹤每個(gè)傳入的讀請(qǐng)求(例如,以確定轉(zhuǎn)換是否在tlb中可用,并且因此確定是否可以發(fā)出請(qǐng)求),以及寫事務(wù)跟蹤器模塊514w使用由寫分配模塊512w分配的事務(wù)id來跟蹤每個(gè)傳入的寫請(qǐng)求。

讀分配模塊512r或讀事務(wù)跟蹤器模塊514r可以向mmu208發(fā)送轉(zhuǎn)換請(qǐng)求,以用于從高速緩存204接收的每個(gè)存儲(chǔ)器讀請(qǐng)求。這些轉(zhuǎn)換請(qǐng)求用相應(yīng)的存儲(chǔ)器讀請(qǐng)求的事務(wù)id標(biāo)記。響應(yīng)于轉(zhuǎn)換請(qǐng)求,mmu208將轉(zhuǎn)換或指向該轉(zhuǎn)換的指針連同事務(wù)id返回到讀事務(wù)跟蹤器模塊514r(使得讀事務(wù)跟蹤器模塊514r可以匹配轉(zhuǎn)換/轉(zhuǎn)換指針和相應(yīng)的存儲(chǔ)器讀請(qǐng)求)。

類似地,寫分配模塊512w或?qū)懯聞?wù)跟蹤器模塊514w可以向mmu208發(fā)送轉(zhuǎn)換請(qǐng)求,以用于從高速緩存204接收的每個(gè)存儲(chǔ)器寫請(qǐng)求。這些轉(zhuǎn)換請(qǐng)求用相應(yīng)的存儲(chǔ)器寫請(qǐng)求的事務(wù)id標(biāo)記。響應(yīng)于轉(zhuǎn)換請(qǐng)求,mmu208將轉(zhuǎn)換或指向該轉(zhuǎn)換的指針連同事務(wù)id返回到寫事務(wù)跟蹤器模塊514w(使得讀事務(wù)跟蹤器模塊514w可以匹配轉(zhuǎn)換或轉(zhuǎn)換指針和相應(yīng)的存儲(chǔ)器寫請(qǐng)求)。

在mmu命中的情況下,轉(zhuǎn)換或轉(zhuǎn)換指針可立即返回到相應(yīng)的事務(wù)跟蹤器模塊514r、514w(即,對(duì)于與存儲(chǔ)器讀請(qǐng)求相關(guān)的轉(zhuǎn)換,返回到讀事務(wù)跟蹤器模塊514r,以及對(duì)于與存儲(chǔ)器寫請(qǐng)求相關(guān)的轉(zhuǎn)換,返回到寫事務(wù)跟蹤器模塊514w)。

在mmu/tlb缺失(即,其中轉(zhuǎn)換沒有存儲(chǔ)在tlb210中)的情況下,mmu在其可以返回用于特定事務(wù)id的轉(zhuǎn)換或轉(zhuǎn)換指針之前生成存儲(chǔ)器讀請(qǐng)求并等待數(shù)據(jù)返回。如果mmu使用嵌套轉(zhuǎn)換,則在轉(zhuǎn)換/轉(zhuǎn)換指針可以返回到事務(wù)跟蹤器模塊514r、514w之前可能需要對(duì)存儲(chǔ)器進(jìn)行幾次調(diào)用(即,發(fā)出幾個(gè)存儲(chǔ)器讀請(qǐng)求),并且這導(dǎo)致幾個(gè)周期的延遲。

讀仲裁器模塊516r從讀事務(wù)跟蹤器模塊514r接收準(zhǔn)備發(fā)出的存儲(chǔ)器讀請(qǐng)求并且還從mmu208接收響應(yīng)于mmu/tlb缺失而生成的存儲(chǔ)器讀請(qǐng)求。從讀事務(wù)跟蹤器模塊514r接收的讀請(qǐng)求是由高速緩存202發(fā)起的,但現(xiàn)在包括從tlb獲得的物理地址(而不是虛擬存儲(chǔ)器地址)。讀仲裁器模塊516r選擇其接收的存儲(chǔ)器讀請(qǐng)求中的一個(gè)或多個(gè)并且將它們發(fā)到外部總線206上(例如,每時(shí)鐘周期一個(gè))。讀仲裁器模塊516r使用一個(gè)或多個(gè)規(guī)則來確定在任意時(shí)間選擇并發(fā)出哪個(gè)存儲(chǔ)器讀請(qǐng)求,而不是按照事務(wù)id順序工作。在準(zhǔn)備發(fā)出比可以發(fā)到外部總線206上的請(qǐng)求更多的存儲(chǔ)器讀請(qǐng)求的情況下,那些等待發(fā)出的存儲(chǔ)器讀請(qǐng)求可在讀仲裁器模塊516r內(nèi)進(jìn)行緩沖。

在各種示例中,讀仲裁器模塊516r可以使由mmu208(由于mmu/tlb缺失)生成的存儲(chǔ)器讀請(qǐng)求優(yōu)先于由高速緩存204生成的存儲(chǔ)器讀請(qǐng)求。如果不存在由mmu208生成的存儲(chǔ)器讀請(qǐng)求,則由高速緩存204生成的存儲(chǔ)器讀請(qǐng)求可按照mmu命中的順序(即,按照tlb中的轉(zhuǎn)換可用的順序)選擇,然而,讀仲裁器模塊516r還可以試圖盡可能地按照老化的順序發(fā)出來自高速緩存204的存儲(chǔ)器讀請(qǐng)求(例如,如果存在兩個(gè)來自高速緩存的存儲(chǔ)器讀請(qǐng)求,其中轉(zhuǎn)換可用,則最舊的存儲(chǔ)器讀請(qǐng)求可被選擇以發(fā)到外部總線206上)。

讀仲裁器模塊516r還從外部總線206接收回讀數(shù)據(jù)并且可按照與存儲(chǔ)器讀請(qǐng)求通過讀仲裁器模塊516r發(fā)到外部總線206上的順序不同的順序接收回讀數(shù)據(jù)。然而,所接收的讀數(shù)據(jù)附有相應(yīng)的事務(wù)id,因此讀仲裁器模塊516r可以確定讀數(shù)據(jù)是對(duì)應(yīng)于由高速緩存204發(fā)出的請(qǐng)求還是對(duì)應(yīng)于由mmu208發(fā)出的請(qǐng)求。在讀數(shù)據(jù)對(duì)應(yīng)于由mmu208發(fā)出的請(qǐng)求的情況下,讀數(shù)據(jù)被傳遞到mmu208。在讀數(shù)據(jù)對(duì)應(yīng)于由高速緩存204發(fā)出的讀請(qǐng)求的情況下,讀數(shù)據(jù)被傳遞到讀事務(wù)跟蹤器模塊514r并且然后被傳遞到高速緩存上。

寫仲裁器模塊516w從寫事務(wù)跟蹤器模塊514w接收準(zhǔn)備發(fā)出的存儲(chǔ)器寫請(qǐng)求,并且如上所述,對(duì)于準(zhǔn)備發(fā)出的寫請(qǐng)求,寫數(shù)據(jù)也必須是可用的(例如,存儲(chǔ)在owdb中)。從寫事務(wù)跟蹤器模塊514w接收的寫請(qǐng)求是由高速緩存202發(fā)起的,但現(xiàn)在包括從tlb獲得的物理地址(而不是虛擬存儲(chǔ)器地址)。寫仲裁器模塊516w選擇其接收的存儲(chǔ)器寫請(qǐng)求中的一個(gè)或多個(gè)并將它們發(fā)到外部總線206上(例如,在具有分開的數(shù)據(jù)總線或數(shù)據(jù)通道的實(shí)現(xiàn)方式中每時(shí)鐘周期一個(gè))。寫仲裁器模塊516w使用一個(gè)或多個(gè)規(guī)則來確定在任意時(shí)間選擇并發(fā)出哪個(gè)存儲(chǔ)器寫請(qǐng)求,而不是按照事務(wù)id順序工作。在準(zhǔn)備發(fā)出的存儲(chǔ)器寫請(qǐng)求比可以發(fā)到外部總線206上的存儲(chǔ)器寫請(qǐng)求更多的情況下,這些等待發(fā)出的存儲(chǔ)器寫請(qǐng)求可在寫仲裁器模塊516w中進(jìn)行緩沖。

在各種示例中,由高速緩存204生成的存儲(chǔ)器寫請(qǐng)求可按照mmu命中的順序(即,按照tlb中的轉(zhuǎn)換可用的順序)選擇,然而,寫仲裁器模塊516w還可以試圖盡可能地按照老化的順序發(fā)出來自高速緩存204的存儲(chǔ)器寫請(qǐng)求(例如,如果存在兩個(gè)來自高速緩存的存儲(chǔ)器寫請(qǐng)求,其中轉(zhuǎn)換可用,則可以選擇最舊的存儲(chǔ)器寫請(qǐng)求來發(fā)到外部總線206上)。

寫仲裁器模塊516w還從外部總線206接收回寫響應(yīng)(例如,寫已經(jīng)被寫入的確認(rèn)),并且可以按照與寫仲裁器模塊516w將存儲(chǔ)器寫請(qǐng)求發(fā)到外部總線206上的順序不同的順序接收回寫響應(yīng)。然而,接收到的寫響應(yīng)伴隨有相應(yīng)的事務(wù)id。寫響應(yīng)被傳遞到寫事務(wù)跟蹤器模塊514w。

可以參考圖3a、圖3b和圖4對(duì)轉(zhuǎn)換器模塊502及其組件部分的操作進(jìn)行更詳細(xì)的描述。圖3a、圖3b和圖4示出了轉(zhuǎn)換器模塊502的兩種不同的示例操作方法,其中方法中的每個(gè)被復(fù)制用于分開的讀路徑和寫路徑;然而,如從圖中可以看出,這些方法具有許多共同的方法塊。

在圖3a和圖3b中示出的方法中,轉(zhuǎn)換器模塊502從高速緩存204接收讀/寫請(qǐng)求(塊302),并且讀請(qǐng)求由讀路徑(包括讀分配模塊512r、讀事務(wù)跟蹤器模塊514r和讀仲裁器模塊516r)處理,并且寫請(qǐng)求由分開的寫路徑(包括寫分配模塊512w、寫事務(wù)跟蹤器模塊514w和寫仲裁器模塊516w)處理。

如果請(qǐng)求是讀請(qǐng)求,則事務(wù)id由讀分配模塊512r分配,以及如果請(qǐng)求是寫請(qǐng)求,則事務(wù)id由寫分配模塊512w分配(塊304)。(在塊304中)分配的事務(wù)id可選自可用的事務(wù)id池中并且事務(wù)id可以是外部事務(wù)id,即在外部總線206上使用的id。例如,在外部總線206使用axi4ace協(xié)議的情況下,(在塊304中)分配的外部事務(wù)id是axiid。分開的可用事務(wù)id池由讀分配模塊512r和寫分配模塊512w使用,使得讀請(qǐng)求被分配了來自第一可用事務(wù)id池的事務(wù)id,而寫請(qǐng)求被分配了來自第二可用事務(wù)id池的事務(wù)id。

一旦已經(jīng)(在塊304中)分配事務(wù)id,則針對(duì)該請(qǐng)求中的任何虛擬存儲(chǔ)器地址,請(qǐng)求轉(zhuǎn)換(塊306)。用于讀請(qǐng)求的轉(zhuǎn)換請(qǐng)求可通過讀分配模塊512r傳遞到mmu208(如圖5中的箭頭所示)或者通過讀事務(wù)跟蹤器模塊514r傳遞到mmu208。用于寫請(qǐng)求的轉(zhuǎn)換請(qǐng)求可通過寫分配模塊512w傳遞到mmu208(如圖5中的箭頭所示)或者通過寫事務(wù)跟蹤器模塊514w傳遞到mmu208。不管轉(zhuǎn)換請(qǐng)求是涉及讀還是寫,轉(zhuǎn)換請(qǐng)求包括(在塊304中)已經(jīng)分配給傳入存儲(chǔ)器請(qǐng)求的事務(wù)id。

在針對(duì)與讀請(qǐng)求對(duì)應(yīng)的轉(zhuǎn)換請(qǐng)求的tlb命中(在塊308中為“是”)的情況下,讀事務(wù)跟蹤器模塊514r接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的事務(wù)id(塊310)。這使得跟蹤每個(gè)未決的讀事務(wù)的狀態(tài)的讀事務(wù)跟蹤器模塊514r能夠更新所標(biāo)識(shí)的事務(wù)的狀態(tài),以示出轉(zhuǎn)換已準(zhǔn)備就緒。一旦轉(zhuǎn)換準(zhǔn)備就緒,則(由事務(wù)id標(biāo)識(shí)的)存儲(chǔ)器讀請(qǐng)求準(zhǔn)備好發(fā)出,因此包括從tlb獲得的物理地址(而不是虛擬存儲(chǔ)器地址)的存儲(chǔ)器讀請(qǐng)求可被傳遞到讀仲裁器模塊516r。

類似地,在針對(duì)與寫請(qǐng)求對(duì)應(yīng)的轉(zhuǎn)換請(qǐng)求的tlb命中(在塊308中為“是”)的情況下,寫事務(wù)跟蹤器模塊514w接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的事務(wù)id(塊310)。這使得跟蹤每個(gè)未決的寫事務(wù)的狀態(tài)的寫事務(wù)跟蹤器模塊514w能夠更新所標(biāo)識(shí)的事務(wù)的狀態(tài),以示出轉(zhuǎn)換已準(zhǔn)備就緒。一旦轉(zhuǎn)換準(zhǔn)備就緒,則(由事務(wù)id標(biāo)識(shí)的)存儲(chǔ)器寫請(qǐng)求準(zhǔn)備好發(fā)出,因此包括從tlb獲得的物理地址(而不是虛擬存儲(chǔ)器地址)的存儲(chǔ)器寫請(qǐng)求可被傳遞到寫仲裁器模塊516w。

讀仲裁器模塊516r從那些準(zhǔn)備好的存儲(chǔ)器讀請(qǐng)求中選擇存儲(chǔ)器讀請(qǐng)求并使用(在塊304中)先前分配的事務(wù)id來將其發(fā)到外部總線206上(塊312)。類似地,寫仲裁器模塊516r從那些準(zhǔn)備好的存儲(chǔ)器寫請(qǐng)求中選擇存儲(chǔ)器寫請(qǐng)求并使用(在塊304中)先前分配的事務(wù)id來將其發(fā)到外部總線206上(塊312)。如上所述,(在塊312中)選擇可基于一個(gè)或多個(gè)規(guī)則并且不同的規(guī)則可由讀仲裁器模塊516r和寫仲裁器模塊516w使用(例如,因?yàn)閷懼俨闷髂K516w并不發(fā)出由mmu208生成的存儲(chǔ)器請(qǐng)求)。

在(塊312中)發(fā)出具有特定事務(wù)id的存儲(chǔ)器讀請(qǐng)求后,讀仲裁器模塊516r接收具有匹配的事務(wù)id的讀數(shù)據(jù)(塊314)?;谑聞?wù)id,讀仲裁器模塊516r可以確定存儲(chǔ)器請(qǐng)求是由高速緩存204發(fā)起的還是由mmu208發(fā)起的,并且然后(針對(duì)高速緩存發(fā)起的請(qǐng)求)將讀數(shù)據(jù)轉(zhuǎn)發(fā)到讀事務(wù)跟蹤器模塊514r或者(針對(duì)mmu發(fā)起的請(qǐng)求)將其轉(zhuǎn)發(fā)到mmu208。

在(塊312中)發(fā)出具有特定事務(wù)id的存儲(chǔ)器寫請(qǐng)求后,寫仲裁器模塊516w接收具有匹配的事務(wù)id的寫響應(yīng)(塊314)。寫仲裁器模塊516w將寫響應(yīng)轉(zhuǎn)發(fā)到寫事務(wù)跟蹤器模塊514w。

一旦讀請(qǐng)求完成,則可以釋放(在塊304中)分派給讀請(qǐng)求的事務(wù)id(塊316)。這意味著事務(wù)id返回到用于讀請(qǐng)求的可用的事務(wù)id池,其可(在塊304中)分派給傳入讀請(qǐng)求。

一旦寫請(qǐng)求完成,則可以釋放(在塊304中)分派給寫請(qǐng)求的事務(wù)id(塊316)。這意味著事務(wù)id返回到用于寫請(qǐng)求的可用的事務(wù)id池,其可(在塊304中)分派給傳入寫請(qǐng)求。

在針對(duì)與讀請(qǐng)求對(duì)應(yīng)的轉(zhuǎn)換請(qǐng)求的tlb缺失(在塊308中為“否”)的情況下,讀事務(wù)跟蹤器模塊514r可以不立即接收來自mmu208的轉(zhuǎn)換或轉(zhuǎn)換指針(如圖3a所示)??蛇x地,如以上參考圖3b描述的,可以接收指向被標(biāo)記為未完成的條目的轉(zhuǎn)換指針。類似地,在針對(duì)與寫請(qǐng)求對(duì)應(yīng)的轉(zhuǎn)換請(qǐng)求的tlb缺失(在塊308中為“否”)的情況下,寫事務(wù)跟蹤器模塊514w可以不立即接收來自mmu208的轉(zhuǎn)換或轉(zhuǎn)換指針(如圖3a所示)??蛇x地,如以上參考圖3b描述的,可以接收指向被標(biāo)記為未完成的條目的轉(zhuǎn)換指針。

在tlb缺失(關(guān)于與讀或?qū)懻?qǐng)求相關(guān)的缺失并且如以上參考圖3a和圖3b描述的)的情況下,mmu發(fā)出在mmu內(nèi)分派了事務(wù)id的存儲(chǔ)器讀請(qǐng)求。由mmu分派的事務(wù)id可選自分開的可用外部事務(wù)id池,其僅用于mmu發(fā)起的請(qǐng)求。讀仲裁器模塊516r接收由mmu生成的存儲(chǔ)器讀請(qǐng)求及其事務(wù)id(塊318),并且可用于由如上所述的讀仲裁器模塊516r(在塊312中)選擇和發(fā)出。另外,如上所述,mmu讀請(qǐng)求(由它們的特殊事務(wù)id所標(biāo)識(shí))可(通過讀仲裁器模塊516r)優(yōu)先于高速緩存發(fā)起的讀請(qǐng)求,以便使與mmu/tlb缺失相關(guān)聯(lián)的延遲最小化。

在(塊312中)發(fā)出mmu請(qǐng)求后,讀仲裁器模塊516r(在塊314中)接收數(shù)據(jù)并且可以根據(jù)事務(wù)id識(shí)別出數(shù)據(jù)與由mmu208生成的存儲(chǔ)器讀請(qǐng)求相關(guān)。因此,讀仲裁器模塊516r將數(shù)據(jù)傳遞到mmu(塊320)并且由讀仲裁器模塊516r或mmu208釋放特殊的mmu事務(wù)id(塊316)。如上所述,(例如,在嵌套轉(zhuǎn)換的情況下)單個(gè)tlb缺失可能需要多個(gè)存儲(chǔ)器查找,因此對(duì)于高速緩存發(fā)起的讀或?qū)懻?qǐng)求,在轉(zhuǎn)換在mmu中可用之前,讀仲裁器模塊516r可以接收另外的存儲(chǔ)器讀請(qǐng)求(如塊316到塊318的虛線箭頭所指示的)。

一旦轉(zhuǎn)換可用于與讀請(qǐng)求對(duì)應(yīng)的轉(zhuǎn)換請(qǐng)求,則讀事務(wù)跟蹤器模塊514r接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的事務(wù)id(塊310),或者在可選的示例中,如圖3b所示,指針指向的條目不再是未完成的。由于轉(zhuǎn)換現(xiàn)在準(zhǔn)備就緒,因此(由事務(wù)id標(biāo)識(shí)的)存儲(chǔ)器讀請(qǐng)求準(zhǔn)備發(fā)出并且因此可被傳遞到讀仲裁器模塊516r。

類似地,一旦轉(zhuǎn)換可用于與寫請(qǐng)求對(duì)應(yīng)的轉(zhuǎn)換請(qǐng)求,則寫事務(wù)跟蹤器模塊514w接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的事務(wù)id(塊310),或者在可選的示例中,如圖3b所示,指針指向的條目不再是未完成的。由于轉(zhuǎn)換現(xiàn)在準(zhǔn)備就緒,因此(由事務(wù)id標(biāo)識(shí)的)存儲(chǔ)器寫請(qǐng)求準(zhǔn)備發(fā)出并且因此可被傳遞到寫仲裁器模塊516w。

如上所述,讀仲裁器模塊516r(例如,基于一個(gè)或多個(gè)規(guī)則)從那些準(zhǔn)備好的存儲(chǔ)器讀請(qǐng)求中選擇存儲(chǔ)器讀請(qǐng)求,并且使用(在塊304中)先前分配的事務(wù)id將其發(fā)到外部總線206上(塊312)。類似地,(雖然在一些示例中使用不同的規(guī)則來執(zhí)行選擇)寫仲裁器模塊516w從那些準(zhǔn)備好的存儲(chǔ)器寫請(qǐng)求中選擇存儲(chǔ)器寫請(qǐng)求并使用(在塊304中)先前分配的事務(wù)id來將其發(fā)到外部總線206上(塊312)。

在(塊312中)發(fā)出具有特定事務(wù)id的存儲(chǔ)器讀請(qǐng)求后,讀仲裁器模塊516r接收具有匹配的事務(wù)id的讀數(shù)據(jù)。基于事務(wù)id,讀仲裁器模塊516r可以確定存儲(chǔ)器請(qǐng)求是由高速緩存204發(fā)起的還是由mmu208發(fā)起的,并且然后(針對(duì)高速緩存發(fā)起的請(qǐng)求)將讀數(shù)據(jù)轉(zhuǎn)發(fā)到讀事務(wù)跟蹤器模塊514r或者(針對(duì)mmu發(fā)起的請(qǐng)求)將其轉(zhuǎn)發(fā)到mmu208。

在(塊312中)發(fā)出具有特定事務(wù)id的存儲(chǔ)器寫請(qǐng)求后,寫仲裁器模塊516w接收具有匹配的事務(wù)id的寫響應(yīng)并將寫響應(yīng)轉(zhuǎn)發(fā)到寫事務(wù)跟蹤器模塊514w。

如上所述,一旦讀請(qǐng)求完成,則可以釋放(在塊304中)分派給高速緩存發(fā)起的請(qǐng)求的事務(wù)id(塊316)。這意味著事務(wù)id返回到用于讀請(qǐng)求的可用的事務(wù)id池,其可(在塊304中)被分派給來自高速緩存的另一傳入讀請(qǐng)求。類似地,一旦寫請(qǐng)求完成,則可以釋放(在塊304中)分派給高速緩存發(fā)起的請(qǐng)求的事務(wù)id(塊316)。這意味著事務(wù)id返回到用于寫請(qǐng)求的可用的事務(wù)id池,其可(在塊304中)被分派給來自高速緩存的另一傳入寫請(qǐng)求。

在圖3a和圖3b中示出的方法中,使用了外部事務(wù)id并且當(dāng)在圖5中示出的存儲(chǔ)器層次結(jié)構(gòu)500中使用時(shí),這些外部事務(wù)id從許多單獨(dú)的id池中被分派,例如,一個(gè)池用于讀請(qǐng)求,另一個(gè)池用于寫請(qǐng)求以及又一個(gè)池用于mmu請(qǐng)求(其是讀請(qǐng)求的特殊情況并因此由讀路徑處理)。將認(rèn)識(shí)到,在各種示例中,可以存在其他事務(wù)id池,其用于其他類型的存儲(chǔ)器請(qǐng)求并可由轉(zhuǎn)換器模塊502內(nèi)的單獨(dú)的路徑(例如,提供與寫請(qǐng)求對(duì)應(yīng)的寫數(shù)據(jù)的單獨(dú)的路徑)處理。

相比之下,在圖4中示出的方法中,使用了內(nèi)部事務(wù)id和外部事務(wù)id兩者,其中當(dāng)讀/寫請(qǐng)求準(zhǔn)備發(fā)到外部總線上時(shí),僅分派外部事務(wù)id。當(dāng)在圖5中示出的存儲(chǔ)器層次結(jié)構(gòu)500中使用時(shí),圖4的方法使用四種類型的事務(wù)id:內(nèi)部讀事務(wù)id、內(nèi)部寫事務(wù)id、mmu事務(wù)id(其可被認(rèn)為是特殊類型的內(nèi)部讀事務(wù)id)和外部事務(wù)id。與圖3a和圖3b的方法不同,在圖4的方法中,讀分配模塊512r和寫分配模塊512w分配內(nèi)部事務(wù)id(即,讀分配模塊512r分配內(nèi)部讀事務(wù)id以及寫分配模塊512w分配內(nèi)部寫事務(wù)id),以及mmu208將mmu事務(wù)id分配給其生成的任何存儲(chǔ)器請(qǐng)求。這些內(nèi)部事務(wù)id然后在存儲(chǔ)器請(qǐng)求發(fā)到外部總線上之前通過讀仲裁器模塊516r或?qū)懼俨闷髂K516w映射到外部事務(wù)id。可以存在用于讀和寫的外部事務(wù)id的分開的池,或者可以存在用于讀請(qǐng)求和寫請(qǐng)求兩者的外部事務(wù)id的單個(gè)集合。

通過以這種方式使用內(nèi)部事務(wù)id,可能使用較少量的外部事務(wù)id,因?yàn)闆]有必要為mmu請(qǐng)求保留許多外部事務(wù)id。如上所述,這產(chǎn)生了更靈活的系統(tǒng)(例如,外部總線不需要支持來自高速緩存的n個(gè)請(qǐng)求加上來自mmu的m個(gè)請(qǐng)求,而是固定大小的外部事務(wù)id池可由在任何一個(gè)時(shí)間點(diǎn)恰好在飛行中的任何比例的mmu請(qǐng)求和高速緩存請(qǐng)求來使用)??梢赃x擇可用的讀和寫內(nèi)部事務(wù)id的數(shù)目以匹配外部總線和/或片外存儲(chǔ)器的能力??梢赃x擇包括mmu事務(wù)id的內(nèi)部事務(wù)id的總數(shù)以匹配外部事務(wù)id的總數(shù),或者可以存在比外部事務(wù)id更多的內(nèi)部事務(wù)id。

在存在比外部id更多的內(nèi)部事務(wù)id(包括mmu事務(wù)id)的情況下,也許不可能發(fā)出所有準(zhǔn)備好的存儲(chǔ)器請(qǐng)求,因?yàn)榭赡懿淮嬖谌魏慰捎玫耐獠渴聞?wù)id,且因此存儲(chǔ)器請(qǐng)求可在讀仲裁器模塊516r和/或?qū)懼俨闷髂K516w和/或讀事務(wù)跟蹤器模塊514r和/或?qū)懯聞?wù)跟蹤器模塊514w內(nèi)進(jìn)行緩沖。

如果增加了內(nèi)部讀和/或?qū)懯聞?wù)id(未包括mmu事務(wù)id)的數(shù)量,則用于跟蹤所有未決讀或?qū)懯聞?wù)的相應(yīng)的讀事務(wù)跟蹤器模塊514r/寫事務(wù)跟蹤器模塊514w中的存儲(chǔ)器的大小分別變得更大;然而,存儲(chǔ)器層次結(jié)構(gòu)的效率提高。

在圖4中示出的方法中,當(dāng)與圖5中示出的存儲(chǔ)器層次結(jié)構(gòu)500一起使用時(shí),當(dāng)轉(zhuǎn)換器模塊502從高速緩存204接收讀請(qǐng)求(塊302)時(shí),內(nèi)部讀事務(wù)id通過讀分配模塊512r來從可用的內(nèi)部讀事務(wù)id池中分配(塊404)。類似地,當(dāng)轉(zhuǎn)換器模塊512從高速緩存204接收寫請(qǐng)求(塊302)時(shí),內(nèi)部寫事務(wù)id通過寫分配模塊512w來從可用的內(nèi)部寫事務(wù)id池中分配(塊404)。

一旦已經(jīng)(在塊404中)分配內(nèi)部事務(wù)id,則針對(duì)該請(qǐng)求中的任何虛擬存儲(chǔ)器地址,請(qǐng)求轉(zhuǎn)換(塊306)。如上所述,對(duì)于讀請(qǐng)求,轉(zhuǎn)換請(qǐng)求可通過讀分配模塊512r傳遞到mmu208(如圖2中的箭頭所示)或者通過讀事務(wù)跟蹤器模塊514r傳遞到mmu208。類似地,對(duì)于寫請(qǐng)求,轉(zhuǎn)換請(qǐng)求可通過寫分配模塊512w傳遞到mmu208(如圖2中的箭頭所示)或者通過寫事務(wù)跟蹤器模塊514w傳遞到mmu208。傳遞到mmu208的轉(zhuǎn)換請(qǐng)求包括(在塊404中)已經(jīng)分配給傳入存儲(chǔ)器請(qǐng)求的內(nèi)部讀/寫事務(wù)id。

在針對(duì)讀請(qǐng)求的tlb命中(在塊308中為“是”)的情況下,讀事務(wù)跟蹤器模塊514r接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的內(nèi)部讀事務(wù)id(塊310)。這使得跟蹤每個(gè)未決的讀事務(wù)的狀態(tài)的讀事務(wù)跟蹤器模塊514r能夠更新所標(biāo)識(shí)的讀事務(wù)的狀態(tài),以示出轉(zhuǎn)換已準(zhǔn)備就緒。一旦轉(zhuǎn)換準(zhǔn)備就緒,則(由內(nèi)部讀事務(wù)id標(biāo)識(shí)的)存儲(chǔ)器讀請(qǐng)求準(zhǔn)備發(fā)出且因此可被傳遞到讀仲裁器模塊516r,該存儲(chǔ)器讀請(qǐng)求包括從tlb獲得的物理地址(而不是虛擬存儲(chǔ)器地址)。

在針對(duì)寫請(qǐng)求的tlb命中(在塊308中為“是”)的情況下,寫事務(wù)跟蹤器模塊514w接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的內(nèi)部寫事務(wù)id(塊310)。這使得跟蹤每個(gè)未決的寫事務(wù)的狀態(tài)的寫事務(wù)跟蹤器模塊514w能夠更新所標(biāo)識(shí)的寫事務(wù)的狀態(tài),以示出轉(zhuǎn)換已準(zhǔn)備就緒。一旦轉(zhuǎn)換準(zhǔn)備就緒,則(由內(nèi)部寫事務(wù)id標(biāo)識(shí)的)存儲(chǔ)器寫請(qǐng)求準(zhǔn)備發(fā)出且因此可被傳遞到寫仲裁器模塊516w,該存儲(chǔ)器寫請(qǐng)求包括從tlb獲得的物理地址(而不是虛擬存儲(chǔ)器地址)。

讀仲裁器模塊516r從那些準(zhǔn)備好的存儲(chǔ)器讀請(qǐng)求中選擇存儲(chǔ)器讀請(qǐng)求(塊411),其中如上所述,該選擇可基于一個(gè)或多個(gè)規(guī)則。在可以發(fā)出存儲(chǔ)器讀請(qǐng)求(塊413)之前,必須首先向存儲(chǔ)器讀請(qǐng)求分派來自可用的外部事務(wù)id池的外部事務(wù)id,并且內(nèi)部讀事務(wù)id和外部事務(wù)id之間的映射被存儲(chǔ)在讀仲裁器模塊516r中(塊412)。

類似地,寫仲裁器模塊516w從那些準(zhǔn)備好的存儲(chǔ)器寫請(qǐng)求中選擇存儲(chǔ)器寫請(qǐng)求(塊411),其中,如上所述,該選擇可基于一個(gè)或多個(gè)規(guī)則并且其中對(duì)于讀仲裁器模塊516r和寫仲裁器模塊516w,規(guī)則可以是不同的。在可以發(fā)出存儲(chǔ)器寫請(qǐng)求(塊413)之前,必須首先向存儲(chǔ)器寫請(qǐng)求分派來自可用的外部事務(wù)id池的外部事務(wù)id(其中,如上所述,例如,對(duì)于具有分開的讀/寫通信的外部總線,可以存在分開的外部寫事務(wù)id池和外部讀事務(wù)id池),并且內(nèi)部寫事務(wù)id和外部事務(wù)id之間的映射被存儲(chǔ)在寫仲裁器模塊516w中(塊412)。

在各種示例中,外部事務(wù)id可通過仲裁器模塊516r、516w中的每一個(gè)中的重映射邏輯分派,重映射邏輯保留其中內(nèi)部讀/寫事務(wù)id已被分配給每個(gè)外部事務(wù)id的數(shù)組。當(dāng)請(qǐng)求已經(jīng)(在塊411中)由仲裁器模塊516r、516w選擇時(shí),重映射邏輯找到數(shù)組中的第一可用的空閑條目(其中每個(gè)仲裁器模塊保持單獨(dú)的數(shù)組并使用單獨(dú)的外部事務(wù)id池)。內(nèi)部讀/寫事務(wù)id被存儲(chǔ)在該特定的數(shù)組條目中并且已經(jīng)分配的條目編號(hào)然后形成外部事務(wù)id,其(在塊413中)被輸出到外部總線206上。

在(塊413中)發(fā)出具有特定外部事務(wù)id的存儲(chǔ)器請(qǐng)求后,讀仲裁器模塊516r接收具有匹配的外部事務(wù)id的讀數(shù)據(jù)(塊314)。然后,外部事務(wù)id被映射回到內(nèi)部讀事務(wù)id并且釋放外部事務(wù)id(塊415)。

在其中使用以上描述的數(shù)組的示例中,所接收的外部事務(wù)id被用作用于讀請(qǐng)求的重映射數(shù)組的索引并且這允許獲得原始內(nèi)部讀事務(wù)id。一旦發(fā)生這種情況,該條目被再次標(biāo)記為空,允許外部事務(wù)id被重新分派給新的讀請(qǐng)求。

基于內(nèi)部讀事務(wù)id,讀仲裁器模塊516r可確定存儲(chǔ)器讀請(qǐng)求是由高速緩存204發(fā)起的還是由mmu208發(fā)起的,并且然后(對(duì)于高速緩存發(fā)起的請(qǐng)求)將讀數(shù)據(jù)轉(zhuǎn)發(fā)到讀事務(wù)跟蹤器模塊514r或者(對(duì)于mmu發(fā)起的請(qǐng)求)將讀數(shù)據(jù)轉(zhuǎn)發(fā)到mmu208。

一旦讀請(qǐng)求完成,則可以釋放(在塊404中)分配給請(qǐng)求的內(nèi)部讀事務(wù)id(塊416)。這意味著內(nèi)部讀事務(wù)id返回到可用的內(nèi)部讀事務(wù)id池,其可(在塊404中)被分配給傳入的讀請(qǐng)求。

在(塊413中)發(fā)出具有特定的外部事務(wù)id的存儲(chǔ)器請(qǐng)求后,寫仲裁器模塊516w接收具有匹配的外部事務(wù)id的寫響應(yīng)(塊314)。然后,外部事務(wù)id被映射回到內(nèi)部寫事務(wù)id并且釋放外部事務(wù)id(塊415)。

在其中使用以上描述的數(shù)組的示例中,所接收的外部事務(wù)id被用作用于寫請(qǐng)求的重映射數(shù)組的索引并且這允許獲得原始內(nèi)部寫事務(wù)id。一旦發(fā)生這種情況,該條目被再次標(biāo)記為空,允許外部事務(wù)id被重新分派給新的寫請(qǐng)求。在重映射后,寫響應(yīng)被轉(zhuǎn)發(fā)到寫事務(wù)跟蹤器模塊514w。

一旦寫請(qǐng)求完成,則可以釋放(在塊404中)分派給請(qǐng)求的內(nèi)部寫事務(wù)id(塊416)。這意味著內(nèi)部寫事務(wù)id返回到可用的內(nèi)部寫事務(wù)id池,其可(在塊404中)被分派給傳入的寫請(qǐng)求。

在tlb缺失(在塊308中為“否”)的情況下,(用于讀請(qǐng)求的)讀事務(wù)跟蹤器模塊514r或(用于寫請(qǐng)求的)寫事務(wù)跟蹤器模塊514w可以不立即從mmu208接收轉(zhuǎn)換或轉(zhuǎn)換指針(如以上參考圖3a描述的)或者可接收指向被標(biāo)記為未完成的條目的轉(zhuǎn)換指針(如以上參考圖3b描述的)。相反,mmu發(fā)出在mmu內(nèi)分派了mmu事務(wù)id的存儲(chǔ)器讀請(qǐng)求。由mmu分派的mmu事務(wù)id可選自可用的mmu事務(wù)id池。讀仲裁器模塊516r接收由mmu生成的存儲(chǔ)器讀請(qǐng)求及其mmu事務(wù)id(塊418),并且可用于(在塊411中)選擇和(在塊413中)發(fā)出。mmu讀請(qǐng)求(由其mmu事務(wù)id所標(biāo)識(shí))可以(在塊411中選擇讀請(qǐng)求時(shí))優(yōu)先于高速緩存發(fā)起的讀請(qǐng)求,以便使與mmu/tlb缺失相關(guān)聯(lián)的延遲最小化。

在(塊413中)發(fā)出存儲(chǔ)器讀請(qǐng)求之前,分派外部事務(wù)id并存儲(chǔ)mmu到外部id的映射(塊422)。外部事務(wù)id可從用于讀請(qǐng)求的可用的外部事務(wù)id池中分派,并且與以上參考圖3a和圖3b描述的方法不同,相同的外部事務(wù)id池可用于高速緩存發(fā)起的存儲(chǔ)器讀請(qǐng)求和mmu發(fā)起的存儲(chǔ)器讀請(qǐng)求兩者。

在示例中,外部事務(wù)id可由(以上描述的)讀仲裁器模塊516r中的重映射邏輯分派。當(dāng)請(qǐng)求已經(jīng)(在塊411中)由讀仲裁器模塊516r選擇時(shí),重映射邏輯找到用于讀請(qǐng)求的數(shù)組中的第一可用的空閑條目。mmu事務(wù)id存儲(chǔ)在該特定的數(shù)組條目中,然后已經(jīng)被分配的條目編號(hào)形成(在塊413中)輸出到外部總線206上的外部事務(wù)id。

在(塊413中)發(fā)出mmu讀請(qǐng)求后,讀仲裁器模塊516r(在塊314中)接收數(shù)據(jù)連同外部事務(wù)id。該外部事務(wù)id然后被映射回到內(nèi)部id,該內(nèi)部id在該情況下為mmu事務(wù)id,并且例如使用由重映射邏輯保持的數(shù)組來釋放外部事務(wù)id(塊425)。

讀仲裁器模塊516r可根據(jù)mmu事務(wù)id識(shí)別出(塊314中)接收的數(shù)據(jù)與由mmu208生成的存儲(chǔ)器請(qǐng)求相關(guān)。因此,讀仲裁器模塊516r將數(shù)據(jù)傳遞到mmu(塊320)并且mmu事務(wù)id由mmu208釋放。如上所述,(例如,在嵌套轉(zhuǎn)換的情況下)單個(gè)tlb缺失可能需要多個(gè)存儲(chǔ)器查找,因此對(duì)于高速緩存發(fā)起的讀/寫請(qǐng)求,在轉(zhuǎn)換在mmu中可用之前,讀仲裁器模塊516r可以接收另外的存儲(chǔ)器讀請(qǐng)求(由塊320到塊418的虛線箭頭所指示的)。

一旦轉(zhuǎn)換可用于讀請(qǐng)求,讀事務(wù)跟蹤器模塊514r接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的事務(wù)id(塊310)。由于轉(zhuǎn)換現(xiàn)在準(zhǔn)備就緒,因此存儲(chǔ)器讀請(qǐng)求(由在塊404中分派的內(nèi)部事務(wù)id標(biāo)識(shí))準(zhǔn)備發(fā)出并因此可被傳遞到讀仲裁器模塊516r。

讀仲裁器模塊516r從那些準(zhǔn)備好的存儲(chǔ)器讀請(qǐng)求中選擇存儲(chǔ)器讀請(qǐng)求(塊411),分派外部事務(wù)id并存儲(chǔ)內(nèi)部到外部事務(wù)id的映射(塊412)并且使用外部事務(wù)id將其發(fā)到外部總線206上(塊413)。

在(塊413中)發(fā)出具有特定外部事務(wù)id的存儲(chǔ)器讀請(qǐng)求后,讀仲裁器模塊516r接收具有匹配的事務(wù)id的讀數(shù)據(jù)(塊314)。讀仲裁器模塊516r(例如,以上描述的重映射邏輯)將外部事務(wù)id映射回內(nèi)部事務(wù)id并釋放外部事務(wù)id(塊415)?;趦?nèi)部事務(wù)id(其可以是mmu事務(wù)id或內(nèi)部讀事務(wù)id),讀仲裁器模塊516r可確定存儲(chǔ)器請(qǐng)求是由高速緩存204發(fā)起的還是由mmu208發(fā)起的,并且然后(針對(duì)高速緩存發(fā)起的請(qǐng)求)將讀數(shù)據(jù)轉(zhuǎn)發(fā)到讀事務(wù)跟蹤器模塊514r或者(針對(duì)mmu發(fā)起的請(qǐng)求)將讀數(shù)據(jù)轉(zhuǎn)發(fā)到mmu208。

如上所述,一旦讀請(qǐng)求完成,就可以釋放(在塊404中)分派給高速緩存發(fā)起的讀請(qǐng)求的內(nèi)部讀事務(wù)id(塊416)。這意味著內(nèi)部讀事務(wù)id返回到可用的內(nèi)部事務(wù)id池,其可(在塊404中)被分派給來自高速緩存的另一傳入讀請(qǐng)求。

一旦轉(zhuǎn)換可用于寫請(qǐng)求,寫事務(wù)跟蹤器模塊514w接收來自mmu的轉(zhuǎn)換或指向tlb中的轉(zhuǎn)換的指針以及與轉(zhuǎn)換相關(guān)的事務(wù)id(塊310)。由于轉(zhuǎn)換現(xiàn)在準(zhǔn)備就緒,因此存儲(chǔ)器寫請(qǐng)求(由在塊404中分派的內(nèi)部事務(wù)id標(biāo)識(shí))準(zhǔn)備發(fā)出并因此可被傳遞到寫仲裁器模塊516w。

寫仲裁器模塊516w從那些準(zhǔn)備好的存儲(chǔ)器寫請(qǐng)求中選擇存儲(chǔ)器寫請(qǐng)求(塊411),分派外部事務(wù)id并存儲(chǔ)內(nèi)部到外部事務(wù)id的映射(塊412)并且使用外部事務(wù)id將其發(fā)到外部總線206(塊413)。

在(塊413中)發(fā)出具有特定外部事務(wù)id的存儲(chǔ)器寫請(qǐng)求后,寫仲裁器模塊516w接收具有匹配的事務(wù)id的寫響應(yīng)(塊314)。寫仲裁器模塊516w(例如,以上描述的重映射邏輯)將外部事務(wù)id映射回內(nèi)部事務(wù)id并釋放外部事務(wù)id(塊415)。寫仲裁器模塊516w將寫響應(yīng)轉(zhuǎn)發(fā)到寫事務(wù)跟蹤器模塊514w。

如上所述,一旦寫請(qǐng)求完成,就可以釋放(在塊404中)分派給高速緩存發(fā)起的寫請(qǐng)求的內(nèi)部寫事務(wù)id(塊416)。這意味著內(nèi)部寫事務(wù)id返回到可用的內(nèi)部事務(wù)id池,其可(在塊404中)被分派給來自高速緩存的另一傳入寫請(qǐng)求。

在各種示例中,轉(zhuǎn)換器模塊202、502還可以執(zhí)行沖突(hazard)檢查,例如以檢查請(qǐng)求之間的數(shù)據(jù)相關(guān)性并且然后確保在這樣的相關(guān)性發(fā)生的情況下,較早的存儲(chǔ)器請(qǐng)求在依賴于其的較晚的存儲(chǔ)器請(qǐng)求之前執(zhí)行。存在幾種類型的沖突(其還可被稱為地址或數(shù)據(jù)沖突):寫后讀(raw)、讀后寫(war)和寫后寫(waw)。在raw沖突中,寫必須在讀之前發(fā)生,否則錯(cuò)誤的數(shù)據(jù)將被讀取,以及在war沖突中,寫必須在讀之后發(fā)生,否則再一次地錯(cuò)誤的數(shù)據(jù)將被讀取。在waw沖突中,寫必須按照正確的順序發(fā)生,否則最終存儲(chǔ)的數(shù)據(jù)將不是正確的。在一些示例中,還可以考慮讀后讀(rar)沖突(如下所述)。沖突檢查可在分配模塊212、512r、512w和/或事務(wù)跟蹤器模塊214、514r、514w內(nèi)實(shí)現(xiàn)。

為了實(shí)現(xiàn)沖突檢查,許多附加的檢查被引入到以上描述的方法中,并且在存在分開的讀和寫路徑(如在圖5的層次結(jié)構(gòu)500中一樣)的情況下,每個(gè)路徑中實(shí)現(xiàn)沖突檢查的模塊進(jìn)行通信(例如,如虛線箭頭520-524所指示的)。

圖6和圖7示出了其中執(zhí)行沖突檢查的轉(zhuǎn)換器模塊502的其他示例操作方法。圖6是圖3a中示出且以上所描述的方法的變型,以及圖7是圖4中示出且以上所描述的方法的變型;然而,在圖6和圖7中,分別示出了讀和寫路徑的操作。此外,雖然圖6和圖7示出了在tlb缺失的情況下,沒有立即接收指針(如以上參考圖3a所描述的),但是在圖6和圖7中示出的方法的變型中,仍然可以接收指針但其可指向被標(biāo)記為未完成的條目(如以上參考圖3b所描述的)。

從圖6和圖7中可以看出,存在方法的三個(gè)附加的階段(塊605、611和615),但是在其他示例中,相同功能可在不同數(shù)量的附加階段中實(shí)現(xiàn)或者可被并入到現(xiàn)有階段中。首先,在已經(jīng)分配了事務(wù)id(在塊304或404中,其中這可以是如圖6中的外部事務(wù)id或者如圖7中的內(nèi)部事務(wù)id)之后,執(zhí)行對(duì)未決沖突的檢查(塊605)。該檢查識(shí)別出是否存在需要在可以執(zhí)行新事務(wù)之前完成的任何未決事務(wù)。未決事務(wù)是已經(jīng)分配了事務(wù)id但尚未完成的事務(wù),因此還沒有清除事務(wù)id??蛇x地,未決事務(wù)可被稱為飛行中事務(wù)。

由于沖突可發(fā)生在讀事務(wù)和寫事務(wù)之間(即,針對(duì)raw沖突和war沖突),因此通過轉(zhuǎn)換器模塊502的一個(gè)路徑不能與其他路徑隔離地執(zhí)行沖突檢查。相反,為了(在塊605中)執(zhí)行沖突檢查,實(shí)現(xiàn)沖突檢查的模塊(例如,事務(wù)跟蹤器模塊514r、514w)需要關(guān)于所有未決的讀和所有未決的寫的至少一些信息,而與它們處于的路徑無關(guān)。該信息可在每個(gè)路徑中實(shí)現(xiàn)沖突檢查的模塊(例如,事務(wù)跟蹤器模塊514r、514w,如圖5中的虛線箭頭520所指示的)之間傳達(dá),或者可選地,模塊可從高速緩存(例如,從其他路徑中的分配模塊512r、512w,如虛線箭頭522、524所指示的)接收關(guān)于所有傳入請(qǐng)求的數(shù)據(jù)。

如果(在塊605中)針對(duì)傳入讀請(qǐng)求識(shí)別到未決沖突,則在讀事務(wù)跟蹤器模塊514r中關(guān)于該傳入請(qǐng)求設(shè)置位(或標(biāo)志),并且(由于這是raw沖突)傳入讀請(qǐng)求所依賴的未決寫請(qǐng)求(也在塊605中)由寫事務(wù)跟蹤器模塊514w用讀請(qǐng)求的事務(wù)id來標(biāo)記。如果還考慮了rar沖突且針對(duì)傳入讀請(qǐng)求識(shí)別到rar沖突,則傳入讀請(qǐng)求所依賴的未決讀請(qǐng)求(也在塊605中)由讀事務(wù)跟蹤器模塊514r用讀請(qǐng)求的事務(wù)id來標(biāo)記。

如果(在塊605中)針對(duì)傳入寫請(qǐng)求識(shí)別到未決沖突,則在寫事務(wù)跟蹤器模塊514w中關(guān)于該傳入請(qǐng)求設(shè)置位(或標(biāo)志)。在waw沖突的情況下,傳入寫請(qǐng)求所依賴的未決寫請(qǐng)求(也在塊605中)由寫事務(wù)跟蹤器模塊514w用寫請(qǐng)求的事務(wù)id來標(biāo)記。在war沖突的情況下,傳入寫請(qǐng)求所依賴的未決讀請(qǐng)求(也在塊605中)由讀事務(wù)跟蹤器模塊514r用寫請(qǐng)求的事務(wù)id來標(biāo)記。

例如,可使用鏈表來實(shí)現(xiàn)(在塊605中由事務(wù)跟蹤器模塊514r、514w)對(duì)未決請(qǐng)求的標(biāo)記。例如,如果(在塊605中)已經(jīng)分派了事務(wù)id“004”的傳入存儲(chǔ)器請(qǐng)求被識(shí)別為依賴于已經(jīng)分派了事務(wù)id“002”的未決存儲(chǔ)器請(qǐng)求,則條目被添加到跟蹤存儲(chǔ)器請(qǐng)求“002”的事務(wù)跟蹤器模塊(即,如果id“002”的事務(wù)為讀請(qǐng)求,則為讀事務(wù)跟蹤器模塊514r,且如果id“002”的事務(wù)為寫請(qǐng)求,則為寫事務(wù)跟蹤器模塊514w)中的鏈表,其將事務(wù)“002”鏈接到事務(wù)“004”。因此,可以存在兩個(gè)鏈表:讀鏈表,其存儲(chǔ)在讀事務(wù)跟蹤器模塊514r中并存儲(chǔ)依賴于較早的讀請(qǐng)求的任何存儲(chǔ)器請(qǐng)求的細(xì)節(jié);以及寫鏈表,其存儲(chǔ)在寫事務(wù)跟蹤器模塊514w中且存儲(chǔ)依賴于較早的寫請(qǐng)求的任何存儲(chǔ)器請(qǐng)求的細(xì)節(jié)。

在各種示例中,可以使用單個(gè)鏈表,其包括讀和寫兩者且因此跨兩個(gè)事務(wù)跟蹤器模塊514r、514w(即,其部分地存儲(chǔ)在事務(wù)跟蹤器模塊514r、514w中的每一個(gè)中并用作單個(gè)組合的鏈表)。

在各種示例中,鏈表(不管存在一個(gè)鏈表還是兩個(gè)鏈表)被限制,使得只允許對(duì)特定地址的單個(gè)未完成請(qǐng)求(讀或?qū)?,因?yàn)閷?duì)相同地址的任何另外的請(qǐng)求應(yīng)當(dāng)始終具有排序依賴性且因此將被拖延直至列表中的較早的請(qǐng)求完成。在這樣的實(shí)現(xiàn)方式中,rar沖突也被包括在沖突檢查中,因?yàn)槠浜?jiǎn)化了鏈表。如果rar沖突從沖突檢查中排除(因?yàn)樵试S以任何順序進(jìn)行對(duì)同一地址的兩次讀不應(yīng)該引起問題),則對(duì)同一地址的后續(xù)寫請(qǐng)求將需要兩個(gè)讀在寫請(qǐng)求的未決沖突位可被清除(如下所述)之前完成,并且這增加了鏈表和位清除機(jī)制的復(fù)雜性。

當(dāng)事務(wù)具有在相關(guān)的事務(wù)跟蹤器模塊(即,用于讀請(qǐng)求的讀事務(wù)跟蹤器模塊514r以及用于寫請(qǐng)求的寫事務(wù)跟蹤器模塊514w)中設(shè)置的“未決沖突”位時(shí),該存儲(chǔ)器請(qǐng)求不能發(fā)到外部總線206上。在各種示例中,這意味著相關(guān)的事務(wù)跟蹤器模塊不能向相關(guān)的仲裁器模塊(即,用于讀請(qǐng)求的讀仲裁器模塊516r以及用于寫請(qǐng)求的寫仲裁器模塊516w)輸出存儲(chǔ)器請(qǐng)求,直至“未決沖突”位已被清除。在(塊312或411中)將存儲(chǔ)器請(qǐng)求發(fā)到外部總線上之前,通過檢查來在圖6和圖7中示出的示例中實(shí)現(xiàn)阻止這樣的請(qǐng)求(其具有“未決沖突”位)的發(fā)出(塊611)。如果(塊611中)檢查確定為存儲(chǔ)器請(qǐng)求設(shè)置了“未決沖突”位,則該請(qǐng)求被暫停直至“未決沖突”位被清除。

一旦存儲(chǔ)器請(qǐng)求所依賴于的未決請(qǐng)求已完成,則存儲(chǔ)器請(qǐng)求的“未決沖突”位被清除。在釋放由相關(guān)的分配模塊(即,用于讀請(qǐng)求的讀分配模塊512r和用于寫請(qǐng)求的寫分配模塊512w)分派的事務(wù)id之前或同時(shí),執(zhí)行檢查以識(shí)別依賴于已完成的請(qǐng)求的任何較晚的未決存儲(chǔ)器請(qǐng)求(塊615)。在鏈表用于記錄(塊605中的)相關(guān)性的情況下,該列表可被檢查以(在塊615中)識(shí)別依賴于已完成的請(qǐng)求的任何較晚的未決存儲(chǔ)器請(qǐng)求。

如果(在塊615中)識(shí)別了一個(gè)或多個(gè)未決存儲(chǔ)器請(qǐng)求,但是只有在那些識(shí)別的未決存儲(chǔ)器請(qǐng)求也不依賴于另一未決存儲(chǔ)器請(qǐng)求時(shí),那些存儲(chǔ)器請(qǐng)求的未決沖突位(也在塊615中)才可被清除。例如,如果存儲(chǔ)器請(qǐng)求“003”依賴于兩個(gè)存儲(chǔ)器請(qǐng)求“002”和“001”,則存儲(chǔ)器請(qǐng)求“003”的未決沖突位不能被清除,直到存儲(chǔ)器請(qǐng)求“001”和存儲(chǔ)器請(qǐng)求“002”都已完成。因此,在(塊615中)清除未決沖突位之前,可以檢查讀事務(wù)跟蹤器模塊514r和寫事務(wù)跟蹤器模塊514w兩者中的數(shù)據(jù)(例如,可以檢查讀鏈表和寫鏈表)。如上所述,在各種示例中,僅存在單個(gè)鏈表,并且在各種示例中,鏈表可以被限制,以僅允許對(duì)存儲(chǔ)器中的單個(gè)地址的一個(gè)未決存儲(chǔ)器請(qǐng)求。

在(如上所述)實(shí)現(xiàn)沖突檢查的情況下,轉(zhuǎn)換器模塊502的早期階段可以步伐一致地操作,使得兩個(gè)事務(wù)跟蹤器模塊514r、514w同時(shí)從高速緩存204接收關(guān)于傳入存儲(chǔ)器請(qǐng)求的細(xì)節(jié)。

如上所述,事務(wù)跟蹤器模塊214、514r、514w可以通過存儲(chǔ)每個(gè)未決讀和/寫事務(wù)的狀態(tài)來跟蹤每個(gè)事務(wù)。圖8示出了兩個(gè)示例狀態(tài)圖,其中第一狀態(tài)圖801用于讀事務(wù)(如可由圖2中的事務(wù)跟蹤器模塊214或圖5中的讀事務(wù)跟蹤器模塊514r使用),以及第二狀態(tài)圖802用于寫事務(wù)(如可由圖2中的事務(wù)跟蹤器模塊214或圖5中的寫事務(wù)跟蹤器模塊514w使用)。如從圖8中可以看出,在讀狀態(tài)圖801中存在5種可能的狀態(tài),以及在寫狀態(tài)圖802中存在6種可能的狀態(tài),這是因?yàn)榇嬖诘却龑憯?shù)據(jù)可用的額外狀態(tài)(“等待owdb數(shù)據(jù)”)。將認(rèn)識(shí)到,這些狀態(tài)圖通過示例的方式提供,并且在各種示例中,在所使用的狀態(tài)圖中,可能存在關(guān)于讀和/寫事務(wù)的不同數(shù)量的可能狀態(tài)。

將認(rèn)識(shí)到,本文所描述的轉(zhuǎn)換器模塊202、502可以在硬件邏輯中實(shí)現(xiàn),并且更具體地,分配模塊212、512r、512w、事務(wù)跟蹤器模塊214、514r、514w和仲裁器模塊216、516r、514w可以在硬件邏輯中實(shí)現(xiàn)。例如,事務(wù)跟蹤器模塊214、514r、514w可被實(shí)現(xiàn)為狀態(tài)機(jī)的數(shù)組(例如,每事務(wù)id一個(gè)狀態(tài)機(jī)),使得每個(gè)事務(wù)id可以被有效地獨(dú)立跟蹤(例如,如圖3a、圖3b、圖4、圖6和圖7所示)。

轉(zhuǎn)換器模塊202、502和包含它們的存儲(chǔ)器層次結(jié)構(gòu)200、500可以與任何類型的處理器一起使用。在各種示例中,處理器可涉及并行計(jì)算且因此可以是gpu(例如,使得高速緩存204是gpul2高速緩存)或多線程cpu。在轉(zhuǎn)換器模塊202、502用于涉及大量并行處理的處理器(諸如gpu)的情況下,在執(zhí)行mmu/tlb缺失中所花費(fèi)的時(shí)間內(nèi)可能存在許多要發(fā)出的存儲(chǔ)器請(qǐng)求,且因此本文所描述的方法可以提高性能并且至少部分地隱藏mmu/tlb缺失所涉及的任何延遲。

在以上參考圖4和圖7描述的方法中,可能僅需要具有足夠的外部事務(wù)id來覆蓋外部總線206和連接到該總線的外部存儲(chǔ)器的往返處理時(shí)間。雖然內(nèi)部事務(wù)id的數(shù)量可以與外部事務(wù)id的數(shù)量相同,但是如上所述,可通過以用于跟蹤事務(wù)跟蹤器模塊214、514r、514w內(nèi)的未決事務(wù)的狀態(tài)的較大存儲(chǔ)器為代價(jià)提供更大數(shù)量的內(nèi)部事務(wù)id來提高存儲(chǔ)器層次結(jié)構(gòu)的性能(例如,效率)。

在以上描述中,分配模塊212、512r、512w僅將事務(wù)id分配給由高速緩存缺失引起的傳入存儲(chǔ)器請(qǐng)求。在各種示例中,可以更早地應(yīng)用事務(wù)id,使得事務(wù)id(無論是如參考圖3a、圖3b和圖6描述的內(nèi)部事務(wù)id還是如參考圖4和圖7描述的外部事務(wù)id)被分配給由處理器(例如,由gpu)發(fā)出的所有存儲(chǔ)器請(qǐng)求。然而,這需要更多的事務(wù)id可用或者存儲(chǔ)器請(qǐng)求將被暫停,這是因?yàn)椴淮嬖谝煞峙淠K212、512r、512w分配的可用事務(wù)id。

圖9示出了在其中可以實(shí)現(xiàn)本文所描述的轉(zhuǎn)換器的計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)包括cpu902、gpu904、存儲(chǔ)器906和其他設(shè)備914,諸如顯示器916、揚(yáng)聲器918和照相機(jī)920。轉(zhuǎn)換器模塊910可以在cpu902和/或gpu904中實(shí)現(xiàn)。計(jì)算機(jī)系統(tǒng)的組件可經(jīng)由通信總線922彼此通信。

圖2和圖5的轉(zhuǎn)換器模塊202、502被示出為包括許多功能塊。這僅是示意性且并不旨在定義這樣的實(shí)體的不同邏輯元件之間的嚴(yán)格劃分??梢砸匀魏魏线m的方式設(shè)置每個(gè)功能塊。應(yīng)當(dāng)理解的是,本文中被描述為由功能塊形成的中間值不需要在任何點(diǎn)處由轉(zhuǎn)換器模塊物理地生成且可僅表示方便地描述由轉(zhuǎn)換器模塊在其輸入端和輸出端之間執(zhí)行的處理的邏輯值。

第一另外的示例提供了模塊,包括:分配模塊,其被布置為從高速緩存(204)接收存儲(chǔ)器請(qǐng)求并將事務(wù)標(biāo)識(shí)符分配給每個(gè)接收的存儲(chǔ)器請(qǐng)求,其中從高速緩存接收的存儲(chǔ)器請(qǐng)求包括在虛擬地址空間中定義的一個(gè)或多個(gè)存儲(chǔ)器地址;事務(wù)跟蹤器模塊,其被布置為從分配模塊接收存儲(chǔ)器請(qǐng)求連同所分配的事務(wù)標(biāo)識(shí)符,跟蹤存儲(chǔ)器請(qǐng)求的狀態(tài)并從存儲(chǔ)器管理單元(208)接收轉(zhuǎn)換信息,其中轉(zhuǎn)換信息包括存儲(chǔ)器請(qǐng)求中的虛擬存儲(chǔ)器地址到物理存儲(chǔ)器地址的轉(zhuǎn)換或指向該轉(zhuǎn)換的指針;以及仲裁器模塊,其被布置為當(dāng)存儲(chǔ)器請(qǐng)求準(zhǔn)備好發(fā)出時(shí)從事務(wù)跟蹤器模塊接收存儲(chǔ)器請(qǐng)求連同所分配的事務(wù)標(biāo)識(shí)符,并且經(jīng)由外部總線將存儲(chǔ)器請(qǐng)求發(fā)給存儲(chǔ)器,并響應(yīng)于經(jīng)由外部總線從存儲(chǔ)器接收到響應(yīng)而觸發(fā)對(duì)所分配的事務(wù)標(biāo)識(shí)符的釋放,其中發(fā)給存儲(chǔ)器的存儲(chǔ)器請(qǐng)求包括使用轉(zhuǎn)換信息確定的一個(gè)或多個(gè)物理存儲(chǔ)器地址。

仲裁器模塊還可被布置為接收多個(gè)存儲(chǔ)器請(qǐng)求,并從尚未發(fā)出的任何接收的存儲(chǔ)器請(qǐng)求中選擇要發(fā)出的存儲(chǔ)器請(qǐng)求。仲裁器模塊還可被布置為從存儲(chǔ)器管理單元接收存儲(chǔ)器讀請(qǐng)求連同由存儲(chǔ)器管理單元分配的事務(wù)標(biāo)識(shí)符,并且選擇來自存儲(chǔ)器管理單元的存儲(chǔ)器讀請(qǐng)求以用于在從事務(wù)跟蹤器模塊接收到的尚未發(fā)出的任何存儲(chǔ)器請(qǐng)求之前發(fā)出。仲裁器模塊可被布置為根據(jù)預(yù)定義的規(guī)則來從尚未發(fā)出的任何接收的存儲(chǔ)器請(qǐng)求中選擇要發(fā)出的存儲(chǔ)器請(qǐng)求。預(yù)定義的規(guī)則可導(dǎo)致先于從事務(wù)跟蹤器模塊接收的存儲(chǔ)器請(qǐng)求選擇從存儲(chǔ)器管理單元接收的存儲(chǔ)器請(qǐng)求,并且如果不存在從存儲(chǔ)器管理單元接收的存儲(chǔ)器請(qǐng)求,則至少部分地基于用于從事務(wù)跟蹤器模塊接收的存儲(chǔ)器請(qǐng)求的轉(zhuǎn)換信息的接收時(shí)間來選擇從事務(wù)跟蹤器模塊接收的存儲(chǔ)器請(qǐng)求。

由分配模塊分配的事務(wù)標(biāo)識(shí)符可以是外部事務(wù)標(biāo)識(shí)符,而且其中仲裁器模塊可被布置為使用所分配的外部事務(wù)標(biāo)識(shí)符來發(fā)出存儲(chǔ)器請(qǐng)求。仲裁器模塊可以響應(yīng)于經(jīng)由外部總線接收來自存儲(chǔ)器的響應(yīng)(該響應(yīng)包括外部事務(wù)標(biāo)識(shí)符)而被布置為識(shí)別從其接收到具有相同外部事務(wù)標(biāo)識(shí)符的相應(yīng)請(qǐng)求的單元并且將該響應(yīng)傳輸?shù)剿R(shí)別的單元,其中該單元包括事務(wù)跟蹤器模塊或存儲(chǔ)器管理單元。

由分配模塊分配的事務(wù)標(biāo)識(shí)符可以是內(nèi)部事務(wù)標(biāo)識(shí)符,而且其中仲裁器模塊還在選擇用于發(fā)出的存儲(chǔ)器請(qǐng)求之后被布置為將外部事務(wù)標(biāo)識(shí)符分派給存儲(chǔ)器請(qǐng)求并存儲(chǔ)所分配的內(nèi)部事務(wù)標(biāo)識(shí)符和所分派的外部事務(wù)標(biāo)識(shí)符之間的映射,而且其中仲裁器模塊被布置為使用所分派的外部事務(wù)標(biāo)識(shí)符來發(fā)出存儲(chǔ)器請(qǐng)求。仲裁器模塊可以響應(yīng)于經(jīng)由外部總線接收來自存儲(chǔ)器的響應(yīng)(該響應(yīng)包括外部事務(wù)標(biāo)識(shí)符)而被布置為將外部事務(wù)標(biāo)識(shí)符映射回到所分配的內(nèi)部事務(wù)標(biāo)識(shí)符,識(shí)別從其接收到具有相同內(nèi)部事務(wù)標(biāo)識(shí)符的相應(yīng)請(qǐng)求的單元并且將該響應(yīng)傳輸?shù)剿R(shí)別的單元,其中該單元包括事務(wù)跟蹤器模塊或存儲(chǔ)器管理單元。

該模塊可包括布置為從高速緩存接收存儲(chǔ)器讀請(qǐng)求的讀路徑和布置為從高速緩存接收存儲(chǔ)器寫請(qǐng)求的寫路徑,其中讀路徑包括分配模塊、事務(wù)跟蹤器模塊和仲裁器模塊,而且其中寫路徑包括第二分配模塊、第二事務(wù)跟蹤器模塊和第二仲裁器模塊。事務(wù)跟蹤器模塊和第二事務(wù)跟蹤器模塊都可以被布置為針對(duì)數(shù)據(jù)沖突檢查來自高速緩存的傳入存儲(chǔ)器請(qǐng)求,并且響應(yīng)于檢測(cè)到?jīng)_突,為傳入事務(wù)設(shè)置標(biāo)志,而且其中如果該標(biāo)志被設(shè)置,則存儲(chǔ)器請(qǐng)求沒有準(zhǔn)備好發(fā)出。事務(wù)跟蹤器模塊和第二事務(wù)跟蹤器模塊都可以被布置為響應(yīng)于經(jīng)由外部總線從存儲(chǔ)器接收用于較早的存儲(chǔ)器請(qǐng)求的響應(yīng),清除依賴于該較早的存儲(chǔ)器請(qǐng)求的存儲(chǔ)器請(qǐng)求的標(biāo)志。

第二另外的示例提供了一種方法,包括:在轉(zhuǎn)換器模塊處從高速緩存接收存儲(chǔ)器請(qǐng)求;在轉(zhuǎn)換器模塊中,將事務(wù)標(biāo)識(shí)符分配給每個(gè)接收的存儲(chǔ)器請(qǐng)求,其中從高速緩存接收的存儲(chǔ)器請(qǐng)求包括在虛擬地址空間中定義的一個(gè)或多個(gè)存儲(chǔ)器地址;在轉(zhuǎn)換器模塊中,跟蹤存儲(chǔ)器請(qǐng)求的狀態(tài);在轉(zhuǎn)換器模塊中,從存儲(chǔ)器管理單元接收轉(zhuǎn)換信息,其中轉(zhuǎn)換信息包括存儲(chǔ)器請(qǐng)求中的一個(gè)中的虛擬存儲(chǔ)器地址到物理存儲(chǔ)器地址的轉(zhuǎn)換或指向該轉(zhuǎn)換的指針;經(jīng)由外部總線將來自轉(zhuǎn)換器模塊的存儲(chǔ)器請(qǐng)求中的所述一個(gè)發(fā)到存儲(chǔ)器,其中發(fā)到存儲(chǔ)器的存儲(chǔ)器請(qǐng)求包括使用轉(zhuǎn)換信息確定的一個(gè)或多個(gè)物理存儲(chǔ)器地址;以及響應(yīng)于經(jīng)由外部總線從存儲(chǔ)器接收到響應(yīng),觸發(fā)對(duì)所分配的事務(wù)標(biāo)識(shí)符的釋放。

該方法還可包括:從尚未發(fā)出的任何接收的存儲(chǔ)器請(qǐng)求中選擇要發(fā)出的存儲(chǔ)器請(qǐng)求。該方法還可包括:從存儲(chǔ)器管理單元接收存儲(chǔ)器讀請(qǐng)求連同由存儲(chǔ)器管理單元分配的事務(wù)標(biāo)識(shí)符,而且其中選擇存儲(chǔ)器請(qǐng)求包括選擇從存儲(chǔ)器管理單元接收的存儲(chǔ)器讀請(qǐng)求以用于在從高速緩存接收的任何存儲(chǔ)器請(qǐng)求之前發(fā)出。可以根據(jù)預(yù)定義的規(guī)則來選擇要發(fā)出的存儲(chǔ)器請(qǐng)求。預(yù)定義的規(guī)則可導(dǎo)致先于從高速緩存接收的存儲(chǔ)器請(qǐng)求選擇從存儲(chǔ)器管理單元接收的存儲(chǔ)器請(qǐng)求,并且如果不存在從存儲(chǔ)器管理單元接收的存儲(chǔ)器請(qǐng)求,則至少部分地基于用于從高速緩存接收的存儲(chǔ)器請(qǐng)求的轉(zhuǎn)換信息的接收時(shí)間來選擇該存儲(chǔ)器請(qǐng)求。

所分配的事務(wù)標(biāo)識(shí)符可以是外部事務(wù)標(biāo)識(shí)符并且存儲(chǔ)器請(qǐng)求使用所分配的外部事務(wù)標(biāo)識(shí)符來發(fā)出。

所分配的事務(wù)標(biāo)識(shí)符可以是內(nèi)部事務(wù)標(biāo)識(shí)符,而且其中該方法還可包括在選擇用于發(fā)出的存儲(chǔ)器請(qǐng)求之后:將外部事務(wù)標(biāo)識(shí)符分派給存儲(chǔ)器請(qǐng)求;以及存儲(chǔ)所分配的內(nèi)部事務(wù)標(biāo)識(shí)符和所分派的外部事務(wù)標(biāo)識(shí)符之間的映射,而且其中存儲(chǔ)器請(qǐng)求使用所分派的外部事務(wù)標(biāo)識(shí)符來發(fā)出。該方法還可包括:響應(yīng)于經(jīng)由外部總線從存儲(chǔ)器接收到包括外部事務(wù)標(biāo)識(shí)符的響應(yīng),將外部事務(wù)標(biāo)識(shí)符映射回到所分配的內(nèi)部事務(wù)標(biāo)識(shí)符。

該方法還可包括:針對(duì)數(shù)據(jù)沖突檢查從高速緩存接收的存儲(chǔ)器請(qǐng)求;以及響應(yīng)于檢測(cè)到?jīng)_突,為傳入請(qǐng)求設(shè)置標(biāo)志,而且其中如果該標(biāo)志被設(shè)置,則存儲(chǔ)器請(qǐng)求不能被發(fā)出。該方法還可包括:響應(yīng)于經(jīng)由外部總線從存儲(chǔ)器接收到對(duì)于較早的存儲(chǔ)器請(qǐng)求的響應(yīng),清除依賴于該較早的存儲(chǔ)器請(qǐng)求的存儲(chǔ)器請(qǐng)求的標(biāo)志(615)。

第三方面提供了一種系統(tǒng),包括:處理器,其被布置為將事務(wù)標(biāo)識(shí)符分配給由處理器發(fā)出的每個(gè)存儲(chǔ)器請(qǐng)求;以及模塊,其包括:分配模塊,其被布置為從高速緩存接收存儲(chǔ)器請(qǐng)求,其中從高速緩存接收的存儲(chǔ)器請(qǐng)求包括由處理器分配的事務(wù)標(biāo)識(shí)符和在虛擬地址空間中定義的一個(gè)或多個(gè)存儲(chǔ)器地址;事務(wù)跟蹤器模塊,其被布置為從分配模塊接收存儲(chǔ)器請(qǐng)求連同所分配的事務(wù)標(biāo)識(shí)符,跟蹤存儲(chǔ)器請(qǐng)求的狀態(tài)并從存儲(chǔ)器管理單元接收轉(zhuǎn)換信息,其中轉(zhuǎn)換信息包括存儲(chǔ)器請(qǐng)求中的虛擬存儲(chǔ)器地址到物理存儲(chǔ)器地址的轉(zhuǎn)換或指向該轉(zhuǎn)換的指針;以及仲裁器模塊,其被布置為當(dāng)存儲(chǔ)器請(qǐng)求準(zhǔn)備好發(fā)出時(shí),從事務(wù)跟蹤器模塊接收存儲(chǔ)器請(qǐng)求連同所分配的事務(wù)標(biāo)識(shí)符,并且經(jīng)由外部總線將存儲(chǔ)器請(qǐng)求發(fā)給存儲(chǔ)器并響應(yīng)于經(jīng)由外部總線從存儲(chǔ)器接收到響應(yīng),觸發(fā)對(duì)所分配的事務(wù)標(biāo)識(shí)符的釋放,其中發(fā)給存儲(chǔ)器的存儲(chǔ)器請(qǐng)求包括使用轉(zhuǎn)換信息確定的一個(gè)或多個(gè)物理存儲(chǔ)器地址。

第四方面提供了一種方法,包括:在處理器中,將事務(wù)標(biāo)識(shí)符分配給每個(gè)發(fā)出的存儲(chǔ)器請(qǐng)求;在轉(zhuǎn)換器模塊處,從高速緩存接收存儲(chǔ)器請(qǐng)求;其中,從高速緩存接收的存儲(chǔ)器請(qǐng)求包括由處理器分配的事務(wù)標(biāo)識(shí)符和在虛擬地址空間中定義的一個(gè)或多個(gè)存儲(chǔ)器地址;在轉(zhuǎn)換器模塊中,跟蹤存儲(chǔ)器請(qǐng)求的狀態(tài);在轉(zhuǎn)換器模塊中,從存儲(chǔ)器管理單元接收轉(zhuǎn)換信息,其中轉(zhuǎn)換信息包括存儲(chǔ)器請(qǐng)求中的虛擬存儲(chǔ)器地址到物理存儲(chǔ)器地址的轉(zhuǎn)換或指向該轉(zhuǎn)換的指針;經(jīng)由外部總線將來自轉(zhuǎn)換器模塊的存儲(chǔ)器請(qǐng)求發(fā)到存儲(chǔ)器,其中發(fā)到存儲(chǔ)器的存儲(chǔ)器請(qǐng)求包括使用轉(zhuǎn)換信息確定的一個(gè)或多個(gè)物理存儲(chǔ)器地址;以及響應(yīng)于經(jīng)由外部總線從存儲(chǔ)器接收到響應(yīng),觸發(fā)對(duì)所分配的事務(wù)標(biāo)識(shí)符的釋放。

第五方面提供了集成電路制造系統(tǒng),包括:非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有在其上存儲(chǔ)的集成電路的計(jì)算機(jī)可讀描述,該集成電路的計(jì)算機(jī)可讀描述描述了圖形處理系統(tǒng);布局處理系統(tǒng),其被配置為對(duì)集成電路描述進(jìn)行處理,以便生成體現(xiàn)圖形處理系統(tǒng)的集成電路的電路布局描述;以及集成電路生成系統(tǒng),其被配置為根據(jù)電路布局描述來制造圖形處理系統(tǒng),其中處理系統(tǒng)包括如本文所述的模塊。

其他方面提供:處理系統(tǒng),其被配置為執(zhí)行本文所述的方法中的任一個(gè);處理系統(tǒng),其包括在集成電路上的硬件中體現(xiàn)的如本文所述的模塊;計(jì)算機(jī)可讀代碼,其適于當(dāng)代碼運(yùn)行在計(jì)算機(jī)上時(shí),執(zhí)行本文所述的方法中的任一個(gè)的步驟;計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有在其上編碼的計(jì)算機(jī)可讀代碼;在集成電路制造系統(tǒng)處制造包括如本文所述的模塊的處理系統(tǒng)的方法;集成電路定義數(shù)據(jù)集,當(dāng)其在集成電路制造系統(tǒng)中處理時(shí),將系統(tǒng)配置為制造包括如本文所述的模塊的處理系統(tǒng);以及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有在其上存儲(chǔ)的集成電路的計(jì)算機(jī)可讀描述,當(dāng)其在集成電路制造系統(tǒng)中處理時(shí),使集成電路制造系統(tǒng)制造包括如本文所述的模塊的處理系統(tǒng)。

本文所描述的轉(zhuǎn)換器模塊可被體現(xiàn)在集成電路上的硬件中。本文所描述的轉(zhuǎn)換器模塊可被配置為執(zhí)行本文所描述的方法中的任一個(gè)。通常,以上描述的功能、方法、技術(shù)或組件中的任一個(gè)可以在軟件、固件、硬件(例如,固定邏輯電路)或其任何組合中實(shí)現(xiàn)。本文中使用的術(shù)語(yǔ)“模塊”、“功能”、“組件”、“元件”、“單元”、“塊”和“邏輯”通??梢员硎拒浖?、固件、硬件或其任何組合。在軟件實(shí)現(xiàn)的情況下,模塊、功能、組件、元件、單元、塊或邏輯表示程序代碼,當(dāng)其在處理器上執(zhí)行時(shí),程序代碼執(zhí)行指定的任務(wù)。本文所描述的算法和方法可由執(zhí)行使處理器執(zhí)行算法/方法的代碼的一個(gè)或多個(gè)處理器執(zhí)行。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例包括隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、光盤、閃存、硬盤存儲(chǔ)器以及可使用磁、光和其他技術(shù)來存儲(chǔ)指令或其他數(shù)據(jù)且可由機(jī)器訪問的其他存儲(chǔ)器設(shè)備。

如本文所使用的術(shù)語(yǔ)計(jì)算機(jī)程序代碼和計(jì)算機(jī)可讀指令指的是用于處理器的任何種類的可執(zhí)行代碼,包括以機(jī)器語(yǔ)言、解釋語(yǔ)言或腳本語(yǔ)言表達(dá)的代碼??蓤?zhí)行代碼包括二進(jìn)制碼、機(jī)器碼、字節(jié)碼、定義集成電路的代碼(諸如硬件描述語(yǔ)言或網(wǎng)表)以及以諸如c、java或opencl的編程語(yǔ)言代碼表達(dá)的代碼??蓤?zhí)行代碼可以是例如,任何種類的軟件、固件、腳本、模塊或庫(kù),當(dāng)其在虛擬機(jī)或其他軟件環(huán)境下被適當(dāng)執(zhí)行、處理、解釋、編譯、執(zhí)行時(shí),使支持可執(zhí)行代碼的計(jì)算機(jī)系統(tǒng)的處理器執(zhí)行由代碼指定的任務(wù)。

處理器、計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)可以是具有處理能力使得其可執(zhí)行指令的任何種類的設(shè)備、機(jī)器或?qū)S秒娐坊蚱浼匣虿糠?。處理器可以是任何種類的通用或?qū)S锰幚砥?,諸如cpu、gpu、片上系統(tǒng)、狀態(tài)機(jī)、媒體處理器、專用集成電路(asic)、可編程邏輯陣列、現(xiàn)場(chǎng)可編程門陣列(fpga)、物理處理單元(ppu)、無線電處理單元(rpu)、數(shù)字信號(hào)處理器(dsp)、通用處理器(例如,通用gpu)、微處理器、被設(shè)計(jì)為在cpu外加速任務(wù)的任何處理單元等。計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)可包括一個(gè)或多個(gè)處理器。本領(lǐng)域中的技術(shù)人員將認(rèn)識(shí)到,這樣的處理能力被合并到很多不同的設(shè)備內(nèi),且因此術(shù)語(yǔ)“計(jì)算機(jī)”包括機(jī)頂盒、媒體播放器、數(shù)字收音機(jī)、pc、服務(wù)器、移動(dòng)電話、個(gè)人數(shù)字助理和很多其它設(shè)備。

還旨在包括定義如本文所述的硬件的配置的軟件,諸如hdl(硬件描述語(yǔ)言)軟件,如用于設(shè)計(jì)集成電路或用于配置可編程芯片以執(zhí)行期望功能。也就是說,可以提供計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其具有在其上編碼的以集成電路定義數(shù)據(jù)集的形式的計(jì)算可讀程序代碼,當(dāng)其在集成電路制造系統(tǒng)中處理時(shí),將系統(tǒng)配置為制造轉(zhuǎn)換器模塊,該轉(zhuǎn)換器模塊被配置為執(zhí)行本文所述的方法中的任一個(gè),或者將系統(tǒng)配置為制造包括本文所述的任何裝置的處理器和/或高速緩存層次結(jié)構(gòu)。集成電路定義數(shù)據(jù)集可以是例如,集成電路描述。

集成電路定義數(shù)據(jù)集可以是計(jì)算機(jī)代碼的形式,例如,作為用于配置可編程芯片的網(wǎng)表、代碼,作為定義任何級(jí)別的集成電路的硬件描述語(yǔ)言,包括作為寄存器傳輸級(jí)(rtl)代碼、作為諸如verilog或vhdl的高級(jí)電路表示以及作為諸如oasis(rtm)和gdsii的低級(jí)電路表示。邏輯上定義集成電路的更高級(jí)表示(諸如rtl)可以在計(jì)算機(jī)系統(tǒng)處進(jìn)行處理,該計(jì)算機(jī)系統(tǒng)被配置用于在軟件環(huán)境的背景中生成集成電路的制造定義,包括電路元件的定義和用于組合這些元件的規(guī)則以便生成由表示如此生成定義的集成電路的制造定義。如通常在計(jì)算機(jī)系統(tǒng)處執(zhí)行以定義機(jī)器的軟件的情況,可能需要一個(gè)或多個(gè)中間用戶步驟(例如,提供命令、變量等),以便使計(jì)算機(jī)系統(tǒng)被配置用于生成集成電路的制造定義以執(zhí)行定義集成電路的代碼,以便生成該集成電路的制造定義。

現(xiàn)在將參考圖10描述在集成電路制造系統(tǒng)處對(duì)集成電路定義數(shù)據(jù)集進(jìn)行處理以便使系統(tǒng)配置為制造轉(zhuǎn)換器模塊或包括如上所述的轉(zhuǎn)換器模塊的處理器的示例。

圖10示出了集成電路(ic)制造系統(tǒng)1002的示例,其包括布局處理系統(tǒng)1004和集成電路生成系統(tǒng)1006。ic制造系統(tǒng)1002被配置為接收ic定義數(shù)據(jù)集(例如,定義如在本文中的示例中的任一個(gè)中描述的轉(zhuǎn)換器模塊202、502或包括這樣的轉(zhuǎn)換器模塊的處理器),對(duì)ic定義數(shù)據(jù)集進(jìn)行處理并且根據(jù)ic定義數(shù)據(jù)集來生成ic(例如,其體現(xiàn)本文中的示例中的任一個(gè)中描述的轉(zhuǎn)換器模塊或包括這樣的轉(zhuǎn)換器模塊的處理器)。對(duì)ic定義數(shù)據(jù)集的處理使ic制造系統(tǒng)1002配置為制造體現(xiàn)如本文中的示例中的任一個(gè)中描述的轉(zhuǎn)換器模塊(或包括轉(zhuǎn)換器模塊的處理器)的集成電路。更具體地,布局處理系統(tǒng)1004被配置為接收和處理ic定義數(shù)據(jù)集,以確定電路布局。

根據(jù)ic定義數(shù)據(jù)集確定電路布局的方法在本領(lǐng)域中是已知的,并且例如可涉及合成rtl代碼以例如根據(jù)邏輯組件(例如,與非(nand)、或非(nor)、與(and)、或(or)、多路復(fù)用(mux)和觸發(fā)器(flip-flop)組件),確定要生成的電路的門級(jí)表示。電路布局可通過確定用于邏輯組件的位置信息來從電路的門級(jí)表示確定。這可以自動(dòng)地或者通過用戶參與來完成,以便優(yōu)化電路布局。當(dāng)布局處理系統(tǒng)1004已經(jīng)確定電路布局時(shí),它可以向ic生成系統(tǒng)1006輸出電路布局定義。

如本領(lǐng)域中已知的,ic生成系統(tǒng)1006根據(jù)電路布局定義來生成ic。例如,ic生成系統(tǒng)1006可以實(shí)現(xiàn)半導(dǎo)體設(shè)備制造工藝以生成ic,半導(dǎo)體設(shè)備制造工藝可涉及光刻的多步驟序列和化學(xué)處理步驟,在此期間,電子電路逐漸地在由半導(dǎo)體材料制成的晶片上形成。電路布局定義可以是可以在光刻工藝中使用的掩膜的形式以用于根據(jù)電路定義來生成ic??蛇x地,提供給ic生成系統(tǒng)1006的電路布局定義可以是計(jì)算機(jī)可讀代碼的形式,ic生成系統(tǒng)1006可以使用該代碼以形成用于生成ic的合適的掩膜。

由ic制造系統(tǒng)1002執(zhí)行的不同過程可以例如通過一方來全部在一個(gè)位置中實(shí)現(xiàn)??蛇x地,ic制造系統(tǒng)1002可以是分布式系統(tǒng),使得一些過程可以在不同位置處執(zhí)行并且可由不同方執(zhí)行。例如,以下階段中的一些可以在不同位置處執(zhí)行和/或由不同方執(zhí)行:(i)合成表示ic定義數(shù)據(jù)集的rtl代碼,以形成要生成的電路的門級(jí)表示,(ii)基于門級(jí)表示,生成電路布局,(iii)根據(jù)電路布局來形成掩膜,以及(iv)使用掩膜來制造集成電路。

在其他示例中,在集成電路制造系統(tǒng)處的對(duì)集成電路定義數(shù)據(jù)集的處理可使系統(tǒng)配置為在沒有ic定義數(shù)據(jù)集被處理以便確定電路布局的情況下,制造轉(zhuǎn)換器模塊(或包括轉(zhuǎn)換器模塊的處理器)。例如,集成電路定義數(shù)據(jù)集可定義諸如fpga的可重配置處理器的配置,并且對(duì)該數(shù)據(jù)集的處理可使ic制造系統(tǒng)配置為(例如,通過將配置數(shù)據(jù)加載到fpga)生成具有該所定義的配置的可重配置處理器。

在一些示例中,集成電路定義數(shù)據(jù)集可以包括運(yùn)行在由數(shù)據(jù)集定義的硬件上的軟件或者與由數(shù)據(jù)集定義的硬件組合的軟件。在圖10中示出的示例中,ic生成系統(tǒng)還可由集成電路定義數(shù)據(jù)集配置為在制造集成電路時(shí),根據(jù)在集成電路定義數(shù)據(jù)集處定義的程序代碼來將固件加載到該集成電路上,或者以其他方式向程序代碼提供集成電路以供集成電路使用。

本領(lǐng)域中的技術(shù)人員將認(rèn)識(shí)到,用于存儲(chǔ)程序指令的存儲(chǔ)設(shè)備可被分布在網(wǎng)絡(luò)當(dāng)中。例如,遠(yuǎn)程計(jì)算機(jī)可存儲(chǔ)被描述為軟件的過程的示例。本地或終端計(jì)算機(jī)可訪問遠(yuǎn)程計(jì)算機(jī)并下載軟件的一部分或全部以運(yùn)行程序??蛇x地,本地計(jì)算機(jī)可根據(jù)需要下載軟件的片段,或在本地終端處執(zhí)行一些軟件指令并在遠(yuǎn)程計(jì)算機(jī)(或計(jì)算機(jī)網(wǎng)絡(luò))處執(zhí)行一些軟件指令。本領(lǐng)域中的技術(shù)人員也將認(rèn)識(shí)到,通過利用本領(lǐng)域中的技術(shù)人員已知的常規(guī)技術(shù),軟件指令的全部或一部分可由專用電路(諸如dsp、可編程邏輯陣列等)執(zhí)行。

本文所述的方法可由配置有軟件的計(jì)算機(jī)執(zhí)行,軟件是以機(jī)器可讀形式存儲(chǔ)在有形存儲(chǔ)介質(zhì)上,例如,以包括用于配置計(jì)算機(jī)以執(zhí)行所描述的方法的組成部分的計(jì)算機(jī)可讀程序代碼的計(jì)算機(jī)程序的形式或以包括適于當(dāng)程序在計(jì)算機(jī)上運(yùn)行時(shí)執(zhí)行本文所述的任何方法的所有步驟的計(jì)算機(jī)程序代碼裝置的計(jì)算機(jī)程序的形式,且其中計(jì)算機(jī)程序可被體現(xiàn)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。有形(或非暫時(shí)性)存儲(chǔ)介質(zhì)的示例包括磁盤、拇指驅(qū)動(dòng)器、存儲(chǔ)卡等,且不包括傳播信號(hào)。軟件可適合于在并行處理器或串行處理器上執(zhí)行,使得方法步驟可以以任何合適的順序或同時(shí)執(zhí)行。

本文描述的硬件組件可由非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)生成,非暫時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)具有在其上編碼的計(jì)算機(jī)可讀程序代碼。

存儲(chǔ)機(jī)器可執(zhí)行數(shù)據(jù)以用于實(shí)現(xiàn)所公開的方面的存儲(chǔ)器可以是非暫時(shí)性介質(zhì)。非暫時(shí)性介質(zhì)可以是易失性或非易失性的。易失性非暫時(shí)性介質(zhì)的示例包括基于半導(dǎo)體的存儲(chǔ)器,諸如sram或dram。可用于實(shí)現(xiàn)非易失性存儲(chǔ)器的技術(shù)的示例包括光學(xué)和磁存儲(chǔ)器技術(shù)、閃存、相變存儲(chǔ)器、電阻式ram。

對(duì)“邏輯”的特定引用指的是執(zhí)行一種或多種功能的結(jié)構(gòu)。邏輯的示例包括被布置成執(zhí)行那些功能的電路。例如,這樣的電路可包括晶體管和/或在制造過程中可用的其它硬件元件。作為示例,這樣的晶體管和/或其它元件可用于形成實(shí)現(xiàn)和/或包含存儲(chǔ)器(諸如寄存器、觸發(fā)器或鎖存器)、邏輯運(yùn)算器(諸如布爾運(yùn)算)、數(shù)學(xué)運(yùn)算器(諸如加法器、乘法器或移位器)的電路或結(jié)構(gòu)并且互相連接。這樣的元件可作為定制電路或標(biāo)準(zhǔn)單元庫(kù)、宏或者在其它抽象級(jí)處提供。這樣的元件可以以特定布置互連。邏輯可包括固定功能的電路,且電路可被編程以執(zhí)行一種或多種功能;這樣的編程可從固件或軟件更新或控制機(jī)制中被提供。被識(shí)別為執(zhí)行一種功能的邏輯也可包括實(shí)現(xiàn)組成功能或子過程的邏輯。在示例中,硬件邏輯具有實(shí)現(xiàn)固定功能操作或多個(gè)操作、狀態(tài)機(jī)或過程的電路。

本文給出的任何范圍或設(shè)備值可被擴(kuò)展或改變而不失去所尋求的效應(yīng),如對(duì)技術(shù)人員將明顯的。

將理解,上面所述的益處和優(yōu)點(diǎn)可與一個(gè)實(shí)施方式有關(guān)或可與幾個(gè)實(shí)施方式有關(guān)。實(shí)施方式不限于解決任何或全部所陳述的問題的實(shí)施方式或具有任何或所有所陳述的益處和優(yōu)點(diǎn)的實(shí)施方式。

對(duì)“一個(gè)(an)”項(xiàng)目的任何引用指的是那些項(xiàng)目中的一個(gè)或多個(gè)。術(shù)語(yǔ)“包括(comprising)”在本文用于意指包括所識(shí)別的方法塊或元件,但這樣的塊或元件不包括排他性列表,且裝置可包含附加的塊或元件,以及方法可包含附加的操作或元件。此外,塊、元件和操作本身不是隱含地封閉的。

本文描述的方法的步驟可在適當(dāng)時(shí)以任何適當(dāng)?shù)捻樞蚧蛲瑫r(shí)被執(zhí)行。在附圖中的方框之間的箭頭示出方法步驟的一個(gè)示例順序,但并不旨在排除其它順序或并行執(zhí)行多個(gè)步驟。此外,各個(gè)塊可從任何方法中刪除而不偏離本文描述的主題的精神和范圍。上面描述的示例中的任一個(gè)的方面可與所描述的其它示例中的任一個(gè)的方面組合以形成另外的示例,而不失去所尋求的效果。在附圖中的元件被示為由箭頭連接的情況下,將認(rèn)識(shí)到,這些箭頭僅示出元件之間的通信(包括數(shù)據(jù)和控制消息)的一個(gè)示例流。元件之間的流可以在任一方向上或在兩個(gè)方向上。

申請(qǐng)人由此單獨(dú)地公開了本文所描述的每個(gè)單獨(dú)特征和兩個(gè)或更多個(gè)這樣的特征的任意組合,在某種程度上,這樣的特征或組合能夠基于作為整體的本說明書根據(jù)本領(lǐng)域中的技術(shù)人員的通用常識(shí)來執(zhí)行,而不管這樣的特征或特征組合是否解決了本文所公開的任何問題。鑒于前述描述,對(duì)于本領(lǐng)域中的技術(shù)人員將明顯的是,可以在本發(fā)明的范圍內(nèi)做出各種修改。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1