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

跨時(shí)鐘域數(shù)據(jù)傳輸方法和裝置的制作方法

文檔序號(hào):6419314閱讀:195來源:國知局
專利名稱:跨時(shí)鐘域數(shù)據(jù)傳輸方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)傳輸領(lǐng)域,尤其涉及在不同數(shù)字時(shí)鐘域中進(jìn)行操作的電路之間的信息傳輸。
發(fā)明
背景技術(shù)
在現(xiàn)代電子設(shè)備之中,經(jīng)常需要在不同數(shù)字時(shí)鐘域下的電路之間傳輸數(shù)據(jù)。盡管在多數(shù)情況下不同域的時(shí)鐘是完全無關(guān)的,但是在某些情況下,從一個(gè)共同的基礎(chǔ)時(shí)鐘或其它情況產(chǎn)生的時(shí)鐘具有一個(gè)頻率關(guān)系,它可以用來對(duì)信息傳輸計(jì)時(shí)。例如,在至少一個(gè)現(xiàn)有技術(shù)的存儲(chǔ)器系統(tǒng)中,用一個(gè)基準(zhǔn)時(shí)鐘信號(hào)來產(chǎn)生一個(gè)存儲(chǔ)器時(shí)鐘17和一個(gè)主機(jī)時(shí)鐘16。存儲(chǔ)器時(shí)鐘17用來計(jì)算通過一個(gè)高速、包對(duì)象的通信通道,向一個(gè)或多個(gè)存儲(chǔ)器設(shè)備傳輸數(shù)據(jù)命令的時(shí)間。主機(jī)時(shí)鐘16用來管理來自外部作用的存儲(chǔ)器訪問請(qǐng)求,并且將請(qǐng)求格式化為用于在存儲(chǔ)器時(shí)鐘17域中處理的恰當(dāng)?shù)拿詈蛿?shù)據(jù)包。為了將命令或數(shù)據(jù)包傳輸?shù)酱鎯?chǔ)器時(shí)鐘17域,主機(jī)時(shí)鐘16域中的控制邏輯確認(rèn)包到達(dá)存儲(chǔ)器時(shí)鐘17域中邏輯器所需要的主機(jī)時(shí)鐘16的周期數(shù)與存儲(chǔ)器時(shí)鐘17域處理這個(gè)包所需要的周期數(shù)一樣多。
以上描述的包傳輸方法的一個(gè)缺點(diǎn)是除了某些存儲(chǔ)器時(shí)鐘17與主機(jī)時(shí)鐘16的頻率比以外,主機(jī)時(shí)鐘16域中的控制邏輯確認(rèn)包到存儲(chǔ)器時(shí)鐘17域的時(shí)間將超過存儲(chǔ)器時(shí)鐘17域處理該包所需要的時(shí)間。例如,假定在存儲(chǔ)器時(shí)鐘17和主機(jī)時(shí)鐘16之間的頻率比滿足存儲(chǔ)器時(shí)鐘17域在主機(jī)時(shí)鐘16的每個(gè)周期內(nèi)能夠處理一個(gè)包的四分之三。由于存儲(chǔ)器時(shí)鐘17域不能在主機(jī)時(shí)鐘16的一個(gè)周期內(nèi)處理一個(gè)完整的包,所以在主機(jī)時(shí)鐘16域中的控制邏輯至少用主機(jī)時(shí)鐘16的二個(gè)周期輸出一個(gè)包,即使存儲(chǔ)器時(shí)鐘17域?qū)H僅在主機(jī)時(shí)鐘16的一又三分之一個(gè)周期內(nèi)處理數(shù)據(jù)(每個(gè)四分之一包是在主機(jī)時(shí)鐘16三分之一周期內(nèi)完成的)。因此,每個(gè)包都確認(rèn)比必需的時(shí)間長(zhǎng)主機(jī)時(shí)鐘16的三分之二個(gè)周期,從而在存儲(chǔ)器系統(tǒng)中減少了吞吐量并且增加了響應(yīng)延遲時(shí)間。
發(fā)明概述本發(fā)明公開了一種用于在存儲(chǔ)器系統(tǒng)中時(shí)鐘域之間傳輸信息單元的方法和裝置。在第一時(shí)鐘域的每個(gè)時(shí)鐘周期內(nèi),從第一時(shí)鐘域中的一個(gè)輸出電路中載入相應(yīng)的一組N個(gè)信息單元到在第二時(shí)鐘域中的一個(gè)存儲(chǔ)電路。輸出電路選擇每個(gè)相應(yīng)的N個(gè)信息單元組,使組中包含那些先前已經(jīng)載入存儲(chǔ)電路、而且不會(huì)在該存儲(chǔ)電路中載入后續(xù)的一組N個(gè)信息單元之前從該存儲(chǔ)電路輸出的信息單元,以及那些沒有先前載入該存儲(chǔ)電路的多個(gè)補(bǔ)充信息單元。
結(jié)合隨后的詳細(xì)描述和附圖,本發(fā)明的其他特征和優(yōu)點(diǎn)將更為明顯。
附圖簡(jiǎn)要說明本發(fā)明用實(shí)施例進(jìn)行圖例說明,但是并不局限在附圖表示內(nèi),其中類似的索引表示類似的元件,其中

圖1表示依據(jù)一個(gè)實(shí)施例的一個(gè)存儲(chǔ)器系統(tǒng);圖2說明了一個(gè)列命令包的示例;圖3說明依據(jù)一個(gè)實(shí)施例的圖1的行命令邏輯;圖4說明依據(jù)一個(gè)實(shí)施例的圖3的行推控制器的保持邏輯和控制邏輯;圖5為一個(gè)時(shí)序圖,表示使用一個(gè)取樣選擇信號(hào)從一個(gè)推控制器中載入數(shù)據(jù)到一個(gè)移位邏輯;圖6為一個(gè)時(shí)序圖,表示當(dāng)在每個(gè)主機(jī)時(shí)鐘周期內(nèi)有分?jǐn)?shù)個(gè)存儲(chǔ)器時(shí)鐘周期時(shí),使用一個(gè)取樣選擇信號(hào)從一個(gè)推控制器中載入數(shù)據(jù)到一個(gè)移位邏輯;圖7表示依據(jù)一個(gè)實(shí)施例的推控制器內(nèi)部的pget邏輯;圖8是依據(jù)一個(gè)實(shí)施例路的一個(gè)線路選擇狀態(tài)機(jī)的例圖,該狀態(tài)機(jī)用于產(chǎn)生磁泡選擇和有效選擇信號(hào);圖9是一個(gè)表,表示一個(gè)給定的輸出通道的通道指針的下一個(gè)值;圖10是一個(gè)邏輯框圖,用來說明為在保持邏輯內(nèi)的一個(gè)存儲(chǔ)元件產(chǎn)生一個(gè)保持選擇信號(hào);圖11說明了通過控制邏輯的輸出通道移動(dòng)包組塊的第一個(gè)示例;圖12說明了通過控制邏輯的輸出通道移動(dòng)包組塊的第二個(gè)示例;圖13說明了通過控制邏輯的輸出通道移動(dòng)包組塊的第三個(gè)示例;以及圖14說明了通過控制邏輯的輸出通道移動(dòng)包組塊的第四個(gè)示例。
詳細(xì)描述本發(fā)明公開了一種存儲(chǔ)器控制器,其中包含用于在主機(jī)時(shí)鐘16域和存儲(chǔ)器時(shí)鐘17域之間有效地傳傳輸信息的邏輯。調(diào)度程序30響應(yīng)來自外部作用的存儲(chǔ)器訪問請(qǐng)求,并格式化命令包并將該包插入到包隊(duì)列63中。相應(yīng)的行推控制器27從包隊(duì)列63接收該包,并將該包輸出到存儲(chǔ)器時(shí)鐘17域中的一個(gè)移位電路。該包以部分包單元的形式移位出移位電路,在這兒被稱為“包組塊”。存儲(chǔ)器時(shí)鐘17的每個(gè)周期內(nèi),一個(gè)包組塊在存儲(chǔ)器時(shí)鐘17域下從移位電路中移出。當(dāng)一個(gè)包組塊從移位電路中移出時(shí),就稱存儲(chǔ)器時(shí)鐘17域?qū)σ粋€(gè)包組塊進(jìn)行了處理。
為了避免向存儲(chǔ)器時(shí)鐘17域輸出包的時(shí)間長(zhǎng)于必需時(shí)間,行推控制器27設(shè)計(jì)為以包組塊而不是整個(gè)包為基礎(chǔ)來管理包傳送。由于在處理了一個(gè)包的初始部分之后只有包的未處理部分在后續(xù)時(shí)鐘周期內(nèi)輸出,而且行推控制器27的剩余輸出通路被用來輸出后續(xù)包的初始部分,所以通過基于包組塊管理包傳送,就有可能增加主機(jī)時(shí)鐘16域的包吞吐量。由于包從主機(jī)時(shí)鐘16域傳送到存儲(chǔ)器時(shí)鐘17域有較小的延遲,就可能會(huì)減少該存儲(chǔ)器系統(tǒng)的總體響應(yīng)延遲時(shí)間。
圖1表示一依據(jù)一個(gè)實(shí)施例的存儲(chǔ)器系統(tǒng)10。存儲(chǔ)器系統(tǒng)10包含一個(gè)存儲(chǔ)器控制器20、一個(gè)存儲(chǔ)器陣列11、一個(gè)基準(zhǔn)時(shí)鐘信號(hào)發(fā)生器12和一個(gè)存儲(chǔ)器時(shí)鐘信號(hào)發(fā)生器14?;鶞?zhǔn)時(shí)鐘信號(hào)發(fā)生器12輸出一個(gè)基準(zhǔn)時(shí)鐘15(REFCLK)到存儲(chǔ)器控制器20和存儲(chǔ)器時(shí)鐘信號(hào)發(fā)生器14。在將基準(zhǔn)時(shí)鐘15提供給存儲(chǔ)器時(shí)鐘信號(hào)發(fā)生器14之前,可以將其分頻得到一個(gè)折合頻率。存儲(chǔ)器時(shí)鐘信號(hào)發(fā)生器14從基準(zhǔn)時(shí)鐘15中產(chǎn)生一個(gè)存儲(chǔ)器時(shí)鐘17(MCLK),并將存儲(chǔ)器時(shí)鐘17輸出到存儲(chǔ)器陣列11和存儲(chǔ)器控制器20。
存儲(chǔ)器控制器20包含主機(jī)端控制邏輯21、存儲(chǔ)器端控制邏輯22和傳動(dòng)裝置邏輯23。主機(jī)端控制邏輯21包含用于從基準(zhǔn)時(shí)鐘15中產(chǎn)生一個(gè)主機(jī)時(shí)鐘16(HCLK)的時(shí)鐘插入邏輯19。在一個(gè)實(shí)施例中,時(shí)鐘插入邏輯19包含一個(gè)鎖相環(huán)電路,使主機(jī)時(shí)鐘16的相位相對(duì)于基準(zhǔn)時(shí)鐘15提前,從而抵銷由基準(zhǔn)時(shí)鐘15插入到包含存儲(chǔ)器控制器20的集成電路(IC)里所引起的延遲。主機(jī)時(shí)鐘16用于為主機(jī)端控制邏輯21內(nèi)部的邏輯單元計(jì)時(shí),存儲(chǔ)器時(shí)鐘17用于為存儲(chǔ)器端控制邏輯內(nèi)部的邏輯單元、以及為傳輸數(shù)據(jù)包和指令到存儲(chǔ)器陣列11計(jì)時(shí)。
主機(jī)端控制邏輯21包含一個(gè)調(diào)度程序30,用于從外部作用(例如處理器、圖形子系統(tǒng)、擴(kuò)展總線主控器等等)中接收讀寫存儲(chǔ)器陣列11的請(qǐng)求。在一個(gè)實(shí)施例中,存儲(chǔ)器陣列11是一個(gè)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)陣列,其中包化行指令用于將一排排的存儲(chǔ)器單元啟動(dòng)和預(yù)充電,且包化列指令行用于讀寫活動(dòng)行中的數(shù)據(jù)。因此,調(diào)度程序30通過產(chǎn)生一個(gè)適當(dāng)序列的包化行和列指令對(duì)來自外部作用的存儲(chǔ)器訪問請(qǐng)求作出響應(yīng),以執(zhí)行請(qǐng)求的訪問操作。例如,如果調(diào)度器30接收到一個(gè)訪問存儲(chǔ)器陣列11中一個(gè)不活動(dòng)行的請(qǐng)求,調(diào)度器30將輸出一個(gè)包化行激活指令以激活該行,繼之以一個(gè)包化列訪問指令來訪問該行。在列訪問完成之后調(diào)度程序30還可輸出一個(gè)包化行預(yù)充電指令從而對(duì)該行進(jìn)行預(yù)充電。
在某些情況下,調(diào)度器30可能接收訪問存儲(chǔ)器陣列11的同一存儲(chǔ)單元內(nèi)不同行的請(qǐng)求。如果請(qǐng)求到達(dá)得足夠及時(shí),它們可能會(huì)相互沖突,在存儲(chǔ)器系統(tǒng)10中產(chǎn)生一個(gè)資源沖突。在存儲(chǔ)器系統(tǒng)10中還可能出現(xiàn)其他類型的資源沖突。當(dāng)發(fā)生資源沖突時(shí),可能就需要延遲一個(gè)存儲(chǔ)器訪問操作,直到完成一個(gè)優(yōu)先的操作或是需要的資源變得可用為止。在一個(gè)實(shí)施例中,調(diào)度器30包含邏輯,其基于進(jìn)入的請(qǐng)求,確定何時(shí)可能出現(xiàn)資源沖突,并根據(jù)需要通過在命令包之間插入一個(gè)延遲來延緩存儲(chǔ)器操作。這種延遲在這兒被稱為磁泡。依據(jù)一個(gè)實(shí)施例,調(diào)度器30在每個(gè)命令包中包含一個(gè)被稱作磁泡矢量的值,用來指示是否要延遲該包,以及如果需要延遲的話該包延遲多長(zhǎng)時(shí)間。磁泡矢量是一個(gè)用來指示有多少個(gè)空包組塊在該包之前要被插入到組塊的輸出流(即,用多少個(gè)空組塊要預(yù)先考慮到該包)。在另一個(gè)可選實(shí)施例中,磁泡矢量能夠指示將應(yīng)當(dāng)有多少個(gè)空包組塊被附加到該包的后面。磁泡矢量還能夠指示預(yù)先考慮到該包的空組塊的數(shù)目以及被附加到該包的組塊的數(shù)目。磁泡插入將在下面進(jìn)行更深入的論述。
在至少一個(gè)實(shí)施例中,除了產(chǎn)生命令包和磁泡矢量之外,調(diào)度器30還可能會(huì)偶而在有效的旁路68上(圖1中未顯示)輸出一個(gè)包。調(diào)度器通過斷定一個(gè)旁路信號(hào)55、54來指示在有效旁路68上有包存在。有效的旁路操作將在下面進(jìn)行進(jìn)一步的詳細(xì)論述。
主機(jī)端控制邏輯21包含行隊(duì)列邏輯25、行推控制器27、列隊(duì)列邏輯26和列推控制器28。調(diào)度器30輸出行請(qǐng)求命令包和相關(guān)的磁泡矢量到行隊(duì)列邏輯25,由它對(duì)行指令包和磁泡矢量進(jìn)行排隊(duì),并且每次輸出一個(gè)行指令包和磁泡矢量到行推控制器27。行隊(duì)列邏輯25控制器27輸出一個(gè)包可用信號(hào)97(PAVAIL)到行推控制器27以指示有效包的可用性,然后行推控制器27輸出一個(gè)包獲得信號(hào)98(PGET)到行隊(duì)列邏輯25以從該隊(duì)列中請(qǐng)求一個(gè)新包。行推控制器27輸出行命令包到存儲(chǔ)器端控制邏輯22中的行移位邏輯35,由它將命令包進(jìn)行移位輸出到一個(gè)高速請(qǐng)求通道43(RQ)以發(fā)送到存儲(chǔ)器陣列11。在這兒,將行隊(duì)列邏輯25、行推控制器27和行移位邏輯35合稱為行指令邏輯。
列隊(duì)列邏輯26、列推控制器28和列移位邏輯36一起形成列指令邏輯,除了列指令邏輯是用來將列指令包分發(fā)到存儲(chǔ)器陣列11以外,其操作與行指令邏輯的操作相似。同時(shí),發(fā)送數(shù)據(jù)邏輯31和發(fā)送數(shù)據(jù)移位邏輯33一起形成數(shù)據(jù)存儲(chǔ)邏輯,除了數(shù)據(jù)存儲(chǔ)邏輯經(jīng)過一個(gè)高速數(shù)據(jù)通道45(DQ)將寫入數(shù)據(jù)包傳送到存儲(chǔ)器陣列11之外,其操作類似于行和列指令邏輯。接收數(shù)據(jù)邏輯32和接收數(shù)據(jù)移位邏輯34一起形成數(shù)據(jù)檢索邏輯,其操作方式與數(shù)據(jù)存儲(chǔ)邏輯的恰好相反,從存儲(chǔ)器陣列11經(jīng)過DQ通道45檢索數(shù)據(jù)包,并且格式化該數(shù)據(jù)包使其經(jīng)過一個(gè)數(shù)據(jù)總線(DATA)傳輸?shù)秸?qǐng)求單元。
存儲(chǔ)器控制器還包含傳動(dòng)裝置邏輯23,基于主機(jī)時(shí)鐘與存儲(chǔ)器時(shí)鐘17的頻率比產(chǎn)生若干信號(hào)。傳動(dòng)裝置邏輯23產(chǎn)生的信號(hào)包含一對(duì)時(shí)鐘反饋信號(hào)(HCFB,MCFB)、一個(gè)下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)52(NX_MCLK_CNT)以及一個(gè)取樣選擇信號(hào)53(SAMP_SEL)。在一個(gè)實(shí)施例中,主機(jī)時(shí)鐘16頻率與存儲(chǔ)器時(shí)鐘17頻率的比值(被稱為“傳動(dòng)比”)可以用存儲(chǔ)器控制器內(nèi)部或提供給存儲(chǔ)器控制器20的電路信號(hào)集合來表示。傳動(dòng)裝置邏輯23接收主機(jī)時(shí)鐘16和一個(gè)存儲(chǔ)器時(shí)鐘17的細(xì)分形式一在這兒被稱為取樣時(shí)鐘18(SCLK),并將主機(jī)時(shí)鐘16和取樣時(shí)鐘18細(xì)分到一個(gè)公用的頻率以產(chǎn)生時(shí)鐘反饋信號(hào)對(duì)HCFB和MCFB。如果主機(jī)時(shí)鐘16和取樣時(shí)鐘18已經(jīng)是相同頻率的話,就沒有必要進(jìn)行細(xì)分了。時(shí)鐘反饋信號(hào)輸出到存儲(chǔ)器時(shí)鐘信號(hào)發(fā)生器14,由它依據(jù)時(shí)鐘反饋信號(hào)之間的相位差調(diào)準(zhǔn)存儲(chǔ)器時(shí)鐘17的相位從而控制主機(jī)時(shí)鐘16和存儲(chǔ)器時(shí)鐘17之間的相位關(guān)系。
在主機(jī)時(shí)鐘16的每個(gè)周期內(nèi),傳動(dòng)裝置邏輯23根據(jù)主機(jī)時(shí)鐘16和存儲(chǔ)器時(shí)鐘17之間的頻率比更新下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)52。如下所述,下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)52是一個(gè)計(jì)數(shù)值,用來指示在主機(jī)時(shí)鐘16的下一個(gè)周期內(nèi)將要從存儲(chǔ)器端控制邏輯22的移位邏輯電路35、36中移出的包組塊的數(shù)目。在一個(gè)實(shí)施例中,將下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)52提供給行推控制器27和列推控制器28。在另一個(gè)可選實(shí)施例中,除此之外,可另外將下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)52提供給發(fā)送數(shù)據(jù)邏輯31和接收數(shù)據(jù)邏輯32。
從傳動(dòng)裝置邏輯23輸出取樣選擇信號(hào)53到在存儲(chǔ)器端控制邏輯22中的時(shí)鐘管理邏輯29。取樣選擇信號(hào)53由存儲(chǔ)器端控制邏輯22在取樣時(shí)鐘18的每個(gè)周期內(nèi)進(jìn)行取樣,并用來確定后續(xù)的取樣時(shí)鐘18周期中有哪些存儲(chǔ)器時(shí)鐘17的周期被用來從行推控制器27載入數(shù)據(jù)到移位邏輯電路35、36。時(shí)鐘管理邏輯29從一個(gè)緩沖放大器41接收存儲(chǔ)器時(shí)鐘17,并把該存儲(chǔ)器時(shí)鐘17一分為四以生成取樣時(shí)鐘18。在可選實(shí)施例中可以選用其他的細(xì)分標(biāo)準(zhǔn)。時(shí)鐘管理邏輯29還輸出一個(gè)發(fā)送時(shí)鐘42(TCLK)和一個(gè)接收時(shí)鐘(RCLK)。這些時(shí)鐘在存儲(chǔ)器時(shí)鐘頻率進(jìn)行操作,但是其相位與存儲(chǔ)器時(shí)鐘17的相位稍有不同。
圖2說明了列命令包50的示例。在一個(gè)實(shí)施例中,依據(jù)在通道43中分配的、用來將包傳送到存儲(chǔ)器陣列11的導(dǎo)線的數(shù)目將列命令包的寬度設(shè)定為預(yù)定的位數(shù)。此外將包的長(zhǎng)度固定為預(yù)定位數(shù),從而允許在存儲(chǔ)器時(shí)鐘17預(yù)定的若干周期內(nèi)將該包輸出到存儲(chǔ)器陣列11。例如在這個(gè)列命令包50的示例中,在存儲(chǔ)器時(shí)鐘17的每個(gè)下降沿和每個(gè)上升沿期間傳送五個(gè)位。通過將列命令包限制具有8位的固定長(zhǎng)度,任何一個(gè)列命令包都能夠在存儲(chǔ)器時(shí)鐘的四個(gè)周期內(nèi)從列移位邏輯36移到通道43的適當(dāng)導(dǎo)線上。
在一個(gè)實(shí)施例中,每個(gè)行命令包和數(shù)據(jù)包都具有與列命令包相同的包長(zhǎng)度,但是包寬度不同。在隨后的討論中,假設(shè)包長(zhǎng)度固定為8位,從而使存儲(chǔ)器端控制邏輯22在四個(gè)存儲(chǔ)器時(shí)鐘的周期內(nèi)處理完一個(gè)包。然而,在可選實(shí)施例中可以使用其他的包尺寸,包括隨時(shí)間變化的包尺寸,這并沒有背離本發(fā)明的范圍。
包50中的每對(duì)位列構(gòu)成一個(gè)信息單元,在這兒被稱為一個(gè)包組塊。通常,一個(gè)包組塊是存儲(chǔ)器端控制邏輯22在存儲(chǔ)器時(shí)鐘17的單個(gè)周期內(nèi)處理的信息量。如上所述,存儲(chǔ)器端控制邏輯22每次在它從移位邏輯電路35、36中移出一個(gè)組塊時(shí)處理一個(gè)包組塊。一個(gè)包組塊的位數(shù)取決于包的寬度和每個(gè)存儲(chǔ)器時(shí)鐘17周期內(nèi)移位操作的數(shù)目。在圖2的包中,包的寬度為五位,在存儲(chǔ)器時(shí)鐘17的每個(gè)下降沿和每個(gè)上升沿期有單獨(dú)的五比特集合移出到通道43。因此,列命令包50包含四個(gè)組塊,每個(gè)組塊有10個(gè)比特。如上所述,行命令包和數(shù)據(jù)包可以有不同寬度,而且其他可選的包尺寸(包括隨時(shí)間變化的尺寸)也可以在其它實(shí)施例中使用。
圖3說明了依據(jù)一個(gè)實(shí)施例的圖1中的行命令邏輯。列命令邏輯執(zhí)行方式與此相類似,所以不會(huì)再單獨(dú)進(jìn)行描述。一個(gè)類似的結(jié)構(gòu)也可以用于在主機(jī)時(shí)鐘域和存儲(chǔ)器時(shí)鐘域之間傳輸數(shù)據(jù)。
行隊(duì)列邏輯25包含一個(gè)包隊(duì)列63和一個(gè)隊(duì)列控制器61。包隊(duì)列63包含1到N項(xiàng),其中每一項(xiàng)都能夠保持一個(gè)完整的包和一個(gè)相關(guān)的磁泡矢量。包組塊和磁泡矢量在包隊(duì)列入口處的排列可用Entry1來進(jìn)行說明。在一個(gè)實(shí)施例中,包隊(duì)列63的每一項(xiàng)都包含一個(gè)啟動(dòng)輸入(EN),它被選通來載入一個(gè)包。多路復(fù)用器64A-64C用來在在包隊(duì)列63中先前項(xiàng)或者是輸入包路徑70之間進(jìn)行選擇,以做為載入包的來源。包隊(duì)列的最后一項(xiàng)即EntryN直接連接到輸入包路徑70上。
當(dāng)排列在行隊(duì)列邏輯25中的一個(gè)包出現(xiàn)在輸入包路徑70上時(shí),調(diào)度器30(參見圖1)輸出一個(gè)載入信號(hào)72到隊(duì)列控制器61。隊(duì)列控制器61通過確認(rèn)一個(gè)適當(dāng)?shù)脑催x擇信號(hào)67和載入包信號(hào)68來做出響應(yīng),使包從輸入包路徑70載入到包隊(duì)列63中最低編號(hào)的可用項(xiàng),它被稱為包隊(duì)列63的尾端。如果沒有可用的包隊(duì)列63的項(xiàng)(即包隊(duì)列63是滿的),隊(duì)列控制器61發(fā)出一個(gè)回退信號(hào)74到調(diào)度器30從而使調(diào)度器30在后續(xù)的一個(gè)主機(jī)時(shí)鐘周期內(nèi)重試載入操作。
包隊(duì)列63中最低編號(hào)的項(xiàng)被稱為隊(duì)列的頂端。在包隊(duì)列63頂端的包和磁泡矢量輸出到行推控制器27,它們?cè)谶@兒被稱為是“有效的”。隊(duì)列控制器61輸出一個(gè)包可用信號(hào)97(PAVAIL)以指示在包隊(duì)列63頂端存在一個(gè)有效的包和磁泡矢量存在。當(dāng)行推控制器27為一個(gè)新的有效的包和磁泡矢量準(zhǔn)備好時(shí),行推控制器27確認(rèn)一個(gè)取包信號(hào)98(PGET)到隊(duì)列控制器61,從而使隊(duì)列控制器61推進(jìn)包隊(duì)列63中的項(xiàng)以便使按順序的下一個(gè)包在包隊(duì)列63頂端輸出。隊(duì)列控制器61通過確認(rèn)相應(yīng)的源選擇信號(hào)和載入包信號(hào)來對(duì)取包信號(hào)98作出響應(yīng),從而使包隊(duì)列63的內(nèi)容朝著包隊(duì)列63的頂端方向移動(dòng)一項(xiàng)。先前在包隊(duì)列63頂端的值被覆蓋,這被稱為從包隊(duì)列63中彈出。
在一個(gè)實(shí)施例中,隊(duì)列控制器61通過一個(gè)狀態(tài)機(jī)實(shí)現(xiàn),該狀態(tài)機(jī)由主機(jī)時(shí)鐘16進(jìn)行時(shí)鐘控制,并保持一個(gè)指向包隊(duì)列63尾端的尾指針。每次為響應(yīng)一個(gè)取包信號(hào)98而從包隊(duì)列63的頂端彈出一個(gè)包時(shí),將尾指針減1,在每次為響應(yīng)一個(gè)載入信號(hào)72而在包隊(duì)列63中載入一個(gè)包時(shí),將尾指針加1。如果尾指針指向包隊(duì)列63的頂端,然后將包隊(duì)列63清空,且不再確認(rèn)包可用信號(hào)97。如果尾指針沒有指向包隊(duì)列63的頂端,則要確認(rèn)包可用信號(hào)97來指示在包隊(duì)列63的頂端存在一個(gè)有效的包和磁泡存在。
在一個(gè)實(shí)施例中,行推控制器27包含保持邏輯85、控制邏輯83和一個(gè)推狀態(tài)機(jī)81。保持邏輯85用來存儲(chǔ)已經(jīng)部分處理的包的組塊,從而允許一個(gè)新包前進(jìn)到包隊(duì)列63的頂端,同時(shí)保留上述包尚未處理的組塊。在一個(gè)實(shí)施例中,保持邏輯85通過組塊線路72B、72C和72D接收包隊(duì)列63的輸出。保持邏輯85還連接到有效旁路通道68的至少一部分,在某些情況下,它被用來存儲(chǔ)通過有效旁路通道68傳送的一個(gè)或多個(gè)組塊。來自于推狀態(tài)機(jī)81的保持選擇信號(hào)91用來確定在每個(gè)主機(jī)時(shí)鐘16的周期內(nèi)保存在保持邏輯85中的組塊的來源。
控制邏輯83通過通道72A-72D(在圖3中用穿過保持邏輯85的虛線通道表示)直接接收來自包隊(duì)列63的頂端的有效包的每個(gè)組成組塊,以及其它任何保存在保持邏輯85內(nèi)存儲(chǔ)元件中的包組塊。當(dāng)出現(xiàn)一個(gè)有效旁路操作時(shí),控制邏輯83還連接到該有效旁路通道68以從中接收包組塊?;趤碜酝茽顟B(tài)機(jī)81的選擇信號(hào),其中包括一個(gè)有效選擇信號(hào)92、組塊選擇信號(hào)93、旁路選擇信號(hào)94和磁泡選擇信號(hào)95,控制邏輯83選擇四個(gè)包組塊輸出到行移動(dòng)邏輯35。選擇的包組塊可以包含空組塊。
推狀態(tài)機(jī)81從隊(duì)列控制器61接收包可用信號(hào)97,從傳動(dòng)裝置邏輯23(如圖1所示)接收下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)52,以及從調(diào)度器(也如圖1所示)接收旁路信號(hào)55。做為這些輸入信號(hào)、主機(jī)時(shí)鐘16和推狀態(tài)機(jī)81當(dāng)前狀態(tài)的響應(yīng),推狀態(tài)機(jī)81產(chǎn)生以上提到的選擇信號(hào)和取包信號(hào)98。用于產(chǎn)生這些選擇信號(hào)和取包信號(hào)的邏輯將在下面進(jìn)行論述。
圖4非常詳細(xì)地說明了圖3所示的行推控制器27的保持邏輯85和控制邏輯83。在一個(gè)實(shí)施例中,保持邏輯85包含三個(gè)存儲(chǔ)元件H1-H3和一對(duì)多路復(fù)用器101、103。存儲(chǔ)元件H1-H3的用途是保持一個(gè)部分處理了的包的組塊,以便使一個(gè)新包可以前進(jìn)到包隊(duì)列63的頂端而不會(huì)丟失當(dāng)前有效包未經(jīng)處理的組塊。這種排列允許來自于二個(gè)不同包的組塊在單個(gè)主機(jī)時(shí)鐘周期內(nèi)輸出到存儲(chǔ)器端控制邏輯。
術(shù)語上來說,一個(gè)部分處理的包是這樣的一個(gè)包其中至少有一個(gè)組塊(例如chunk0)已經(jīng)被載入并且移出存儲(chǔ)器端控制邏輯22的移位邏輯電路(即至少一個(gè)組塊已經(jīng)被處理了)。依據(jù)一個(gè)實(shí)施例,除非當(dāng)前有效包的至少一個(gè)組塊已經(jīng)由存儲(chǔ)器端控制邏輯22進(jìn)行了處理,推狀態(tài)機(jī)81不會(huì)確認(rèn)取包信號(hào)98以將一個(gè)新包推進(jìn)到包隊(duì)列63的頂端(即,得到一個(gè)新的有效包)。由于包組塊是從Chunk0開始按順序進(jìn)行處理的,進(jìn)而言之除非至少Chunk0已經(jīng)被處理了否則不會(huì)從包隊(duì)列的頂端彈出一個(gè)包。因此,由于如果一個(gè)包的Chunk0沒有進(jìn)行處理,這個(gè)包將保持有效而且Chunk0將在包隊(duì)列63的頂端保持可用,因此就沒有必要提供一個(gè)存儲(chǔ)元件用來儲(chǔ)存Chunk0了。
由于至少對(duì)于存儲(chǔ)元件H2和H3而言,要存儲(chǔ)的包組塊的可能來源會(huì)不只一個(gè),因此要提供多路復(fù)用器101、103。例如,就存儲(chǔ)元件H2來說,Chunk2可以是在有效旁路通道68上提供的或者是來自包隊(duì)列63。因此,提供一個(gè)雙輸入多路復(fù)用器103用來在主機(jī)時(shí)鐘16的每個(gè)周期內(nèi)從這兩個(gè)來源的任何一個(gè)中選擇Chunk2。就存儲(chǔ)元件H3來說,Chunk3可以從有效旁路通道68、包隊(duì)列63、或者存儲(chǔ)元件H3本身獲得。提供一個(gè)三輸入多路復(fù)用器101用來在這些不同組塊來源之間進(jìn)行選擇。多路復(fù)用器101、103都是由一個(gè)從推狀態(tài)機(jī)61輸出的保持選擇信號(hào)91進(jìn)行控制的。這個(gè)用來產(chǎn)生保持選擇信號(hào)91的邏輯將在下面進(jìn)行論述。
當(dāng)一個(gè)組塊是從H3存儲(chǔ)元件本身提供給存儲(chǔ)元件H3時(shí),就稱該組塊在H3存儲(chǔ)元件內(nèi)進(jìn)行再循環(huán)。每當(dāng)對(duì)一個(gè)部分處理過的包進(jìn)行完全處理需要超過一個(gè)主機(jī)時(shí)鐘16周期時(shí),就可能需要組塊在一個(gè)存儲(chǔ)元件中進(jìn)行再循環(huán)。也就是說,當(dāng)一個(gè)包的處理持續(xù)三個(gè)或更多主機(jī)時(shí)鐘16周期時(shí)(例如,在第一時(shí)鐘周期內(nèi)處理chunk0,在第二時(shí)鐘周期內(nèi)處理chunk1和chunk2,在第三時(shí)鐘周期內(nèi)處理chunk3),就會(huì)發(fā)生再循環(huán)。在一個(gè)實(shí)施例中,主機(jī)時(shí)鐘16與存儲(chǔ)器時(shí)鐘17的頻率比的允許范圍局限于比值要滿足在每個(gè)主機(jī)時(shí)鐘16周期內(nèi)至少有兩個(gè)包組塊在存儲(chǔ)器時(shí)鐘域中處理完。因此,一旦最少一個(gè)包被處理時(shí)(即Chunk0被處理),在主機(jī)時(shí)鐘16的后續(xù)周期內(nèi)至少將要對(duì)chunk1和chunk2進(jìn)行處理。因此只有Chunk3需要再循環(huán),而且僅僅在某些主機(jī)時(shí)鐘16與存儲(chǔ)器時(shí)鐘17的頻率比情況下。在可選實(shí)施例中,其中允許主機(jī)時(shí)鐘16與存儲(chǔ)器時(shí)鐘17的頻率比有較大的范圍,或者是使用較大的包尺寸,可能需要其它包組塊的再循環(huán),此外它還可能需要多次再循環(huán)一個(gè)給定的組塊。
在這兒,從控制邏輯83到存儲(chǔ)器端控制邏輯的輸出通道被稱為輸出通道。在一個(gè)實(shí)施例中,控制邏輯包含四個(gè)輸出通道1ane0-Lane3,允許在每個(gè)主機(jī)時(shí)鐘16周期內(nèi)輸出包組塊的一個(gè)補(bǔ)碼。由于在通過Lane1提供組塊給存儲(chǔ)器端控制邏輯之前要處理經(jīng)過Lane0提供給存儲(chǔ)器端控制邏輯的組塊(直至Lane3等等),輸出通道實(shí)際上是有不同優(yōu)先級(jí)的,其中Lane0具有最高優(yōu)先級(jí)而Lane3具有最低優(yōu)先級(jí)。
控制邏輯83還包含三級(jí)多路復(fù)用器和一個(gè)磁泡插入級(jí),其用來有效地形成通道指針從而依據(jù)來自推狀態(tài)機(jī)的選擇信號(hào)分別為每個(gè)輸出通道選擇一個(gè)相應(yīng)的組塊來源。在每個(gè)主機(jī)時(shí)鐘16周期內(nèi),這些多路復(fù)用器級(jí)從一個(gè)或者二個(gè)包中選擇Chunk0、Chunk1、Chunk2和Chunk3中間的一個(gè),并將這些組塊導(dǎo)入恰當(dāng)?shù)妮敵鐾ǖ乐?。如果要輸出來自二個(gè)不同包的組塊,則將從一個(gè)有效包獲得一個(gè)或多個(gè)組塊,而剩余的組塊將從保持邏輯中獲得。來自于保持邏輯的組塊是來源于一個(gè)部分使用的包,因此需要在自有效包的組塊之前由存儲(chǔ)器端控制邏輯進(jìn)行處理。因此,來自于保持邏輯的一個(gè)或多個(gè)組塊與來自于有效包的組塊相比,要導(dǎo)入具有較高優(yōu)先級(jí)的輸出通道。如果要輸出來自于單個(gè)包的組塊,就要么從一個(gè)有效包要么重有效旁路通道獲得這些組塊。不論是哪種情況,全部的四個(gè)組塊直接導(dǎo)入到輸出通道,這樣使Chunk0在Lane0上輸出、Chunk1在Lane1上輸出等等。
第一級(jí)多路復(fù)用器105用來選擇包隊(duì)列63(即有效數(shù)據(jù))或者保持邏輯85作為包組塊Chunk1、Chunk2和Chunk3的組塊來源。由來自推狀態(tài)機(jī)81的有效選擇信號(hào)92決定這些選擇。在一個(gè)實(shí)施例中,有效選擇信號(hào)92是一個(gè)包含三個(gè)不同值的矢量,這3個(gè)值用來對(duì)每一個(gè)第一級(jí)多路復(fù)用器105提供單獨(dú)控制。
第二級(jí)多路復(fù)用器107用來排列這四個(gè)包組塊,其中至少有一個(gè)包組塊是從保持邏輯85獲得的。如上討論那樣,來自于保持邏輯的組塊安排到較高優(yōu)先級(jí)的輸出通道上以便使它們?cè)谝粋€(gè)有效包組塊之前進(jìn)行處理。
第三級(jí)多路復(fù)用器109由一個(gè)旁路選擇信號(hào)94進(jìn)行控制,以選擇第二級(jí)多路復(fù)用器107或者有效旁路通道68作為這些輸出通道的組塊來源。在一個(gè)實(shí)施例中,在包隊(duì)列63已經(jīng)被清空和所有的包已經(jīng)被存儲(chǔ)器端控制邏輯22處理了之后,就會(huì)出現(xiàn)有效旁路。提供有效旁路通道68用來將一個(gè)包直接傳送到第三級(jí)多路復(fù)用器109,從而避免由于通過包隊(duì)列以及通過控制邏輯83的前兩個(gè)多路復(fù)用器級(jí)傳送而引起的包傳播延遲。以這種方法,行推控制器27能快速地準(zhǔn)備好將一個(gè)新包輸出到存儲(chǔ)器端控制邏輯22。而后續(xù)的包可在包隊(duì)列63中排隊(duì),并且當(dāng)有效旁路包正由存儲(chǔ)器端控制邏輯進(jìn)行處理時(shí)通過控制邏輯83進(jìn)行傳送。
磁泡插入級(jí)111用來在由存儲(chǔ)器端控制邏輯22處理的組塊序列中插入空組塊。在一個(gè)實(shí)施例中,依據(jù)存儲(chǔ)器陣列和存儲(chǔ)器端控制邏輯22的操作限制條件將零到三個(gè)空組塊插入到包之間。由于空組塊像包組塊那樣由存儲(chǔ)器端控制邏輯進(jìn)行處理,每個(gè)空組塊用來插入一個(gè)等于存儲(chǔ)器時(shí)鐘17周期的延遲。因此,空組塊充當(dāng)位置保持符來實(shí)施在連續(xù)的包傳輸之間的時(shí)間延遲。當(dāng)沒有包從調(diào)度器30出現(xiàn)以及包隊(duì)列63已被清空時(shí),也將空組塊輸出到存儲(chǔ)器端控制邏輯22。從術(shù)語上來說,一個(gè)來自于一命令包的組塊、一個(gè)來自于一數(shù)據(jù)包的組塊、以及一個(gè)空組塊全部被認(rèn)為是提供給存儲(chǔ)器端控制邏輯22的信息單元。
在一個(gè)實(shí)施例中,磁泡插入級(jí)111包含四個(gè)“與”邏輯元件112A-112D,它們每一個(gè)都由一個(gè)磁泡選擇信號(hào)95獨(dú)立地控制從而將空組塊提供給相應(yīng)的輸出通道。當(dāng)磁泡選擇信號(hào)95的一條線保持高電平時(shí),例如在“與”邏輯元件112A上,則對(duì)應(yīng)級(jí)的三個(gè)多路復(fù)用器輸出就通過該“與”邏輯元件112A到達(dá)輸出通道。當(dāng)磁泡選擇信號(hào)95的同一條線在“與”邏輯元件112A上為低電平時(shí),在Lane0輸出的組塊就為低(即為空)。類似地其它輸出通道也能夠?yàn)榭?。在可選實(shí)施例中也可使用其它的在輸出通道上輸出空數(shù)據(jù)的結(jié)構(gòu)。此外,在一個(gè)可選實(shí)施例中,磁泡插入級(jí)111可能位于級(jí)序列的其它位置,例如在第二級(jí)多路復(fù)用器107和第三級(jí)多路復(fù)用器109之間。
簡(jiǎn)要回顧一下推控制器27的操作,會(huì)注意到即使在每個(gè)主機(jī)時(shí)鐘周期內(nèi),一固定數(shù)目的包組塊載入到存儲(chǔ)器端控制邏輯的移位邏輯中,也不是所有的包組塊都在下一個(gè)主機(jī)時(shí)鐘周期發(fā)生載入操作之前(至少對(duì)某些主機(jī)時(shí)鐘與存儲(chǔ)器時(shí)鐘的頻率比而言)從移位電路中移出(即處理了)。實(shí)際上,推控制器27追蹤包組塊在移位電路中的狀態(tài),并控制將未處理組塊的備份引入適當(dāng)?shù)妮敵鐾ǖ?,以便?dāng)發(fā)生后續(xù)的載入操作時(shí),任何在移位邏輯中未處理的組塊用復(fù)制值覆蓋。因此,將新組塊載入到移位電路的空白項(xiàng)中,而同時(shí)移位電路中未處理的組塊不受影響。以這種方法,在每個(gè)主機(jī)時(shí)鐘周期內(nèi),由推控制器輸出包組塊的一個(gè)完整補(bǔ)碼,并將其載入到移位電路,但是只有移位邏輯的空白項(xiàng)用新組塊更新。
已經(jīng)對(duì)保持邏輯85和控制邏輯83進(jìn)行了描述,著重要強(qiáng)調(diào)保持邏輯85和控制邏輯83中的許多信號(hào)通道是多個(gè)導(dǎo)線通道,導(dǎo)線的總數(shù)由每個(gè)組塊的位數(shù)決定。例如,具有十位每組塊的包,就要求每個(gè)組塊有十條導(dǎo)線穿過保持邏輯85和控制邏輯83。保持邏輯85中的存儲(chǔ)元件H1-H3分別要求存儲(chǔ)一存儲(chǔ)單元十個(gè)比特,控制邏輯83的磁泡插入級(jí)中的“與”邏輯元件112A-112D分別需要能夠?qū)⑹畟€(gè)比特的數(shù)據(jù)置為空。對(duì)具有較多或較少位每組塊的包可以使用有較多或較少導(dǎo)線的信號(hào)通道。
圖5說明了用取樣選擇信號(hào)53(SAMP_SEL)從一個(gè)推控制器中載入數(shù)據(jù)到存儲(chǔ)器端控制邏輯的一個(gè)相應(yīng)移位邏輯電路的方式。在所示例子中,主機(jī)時(shí)鐘16(HCLK)與取樣時(shí)鐘18(SCLK)的比值是4∶3。在一個(gè)實(shí)施例中,取樣時(shí)鐘18是由存儲(chǔ)器時(shí)鐘17(MCLK)除以4得到的,以致使每個(gè)取樣時(shí)鐘18周期內(nèi)有四個(gè)存儲(chǔ)器時(shí)鐘17的周期,且每個(gè)主機(jī)時(shí)鐘16周期內(nèi)有三個(gè)存儲(chǔ)器時(shí)鐘17的周期。由于主機(jī)時(shí)鐘16與取樣時(shí)鐘18的比值為4∶3,使主機(jī)時(shí)鐘16和取樣時(shí)鐘18的上升沿在一個(gè)差頻上對(duì)準(zhǔn),該差頻為主機(jī)時(shí)鐘16頻率的四分之一和取樣時(shí)鐘18頻率的三分之一。
在一個(gè)實(shí)施例中,在存儲(chǔ)器時(shí)鐘17域下為響應(yīng)取樣時(shí)鐘18的每個(gè)下降沿由時(shí)鐘管理邏輯(圖1中的元件29)對(duì)取樣選擇信號(hào)53進(jìn)行取樣。在圖5中這些取樣點(diǎn)用取樣時(shí)鐘18下降沿上面的箭頭表示。取樣選擇信號(hào)53是一個(gè)矢量,其中的每一位分別對(duì)應(yīng)于后續(xù)取樣時(shí)鐘18周期內(nèi)的一個(gè)存儲(chǔ)器周期,并說明在該存儲(chǔ)器周期內(nèi)是否將推控制器的輸出載入到相應(yīng)的移位邏輯電路中。
作為對(duì)每個(gè)主機(jī)時(shí)鐘16上升沿的響應(yīng),開始傳送推控制器的輸出。由于在推控制器輸出開始變化之前要經(jīng)過一段相對(duì)固定的時(shí)間,而且由于它需要花費(fèi)一個(gè)相對(duì)固定的時(shí)間Ts用于將推控制器輸出進(jìn)行調(diào)整,在每個(gè)后續(xù)主機(jī)時(shí)鐘16上升沿的前后一段時(shí)間,推控制器的輸出保持有效。這在圖5中用Dat_0到Dat_5數(shù)據(jù)有效窗口來表示。因此,為響應(yīng)一個(gè)與主機(jī)時(shí)鐘16的上升沿相一致的存儲(chǔ)器時(shí)鐘17的上升沿,通過使存儲(chǔ)器端控制邏輯對(duì)推控制器的輸出進(jìn)行取樣,在每個(gè)主機(jī)時(shí)鐘16周期內(nèi)將一組來自于推控制器的有效組塊載入到存儲(chǔ)器端控制邏輯的相應(yīng)移位邏輯電路中。因此,將每個(gè)取樣時(shí)鐘18周期內(nèi)輸出到存儲(chǔ)器端控制邏輯的取樣選擇信號(hào)53賦值,該值說明在后續(xù)取樣時(shí)鐘周期內(nèi)的四個(gè)存儲(chǔ)器周期中的哪一個(gè)與主機(jī)時(shí)鐘16信號(hào)的一個(gè)上升沿一致或最接近一致。例如,在第二個(gè)取樣時(shí)鐘18周期內(nèi),四個(gè)存儲(chǔ)器時(shí)鐘周期中的第二個(gè)對(duì)準(zhǔn)主機(jī)時(shí)鐘16的一個(gè)上升沿。因此,在第一個(gè)取樣時(shí)鐘18信號(hào)期間取樣選擇信號(hào)53的輸出值為0010(在這種表示法中,最右的數(shù)字對(duì)應(yīng)于取樣時(shí)鐘18期間的存儲(chǔ)器時(shí)鐘17的第一個(gè)周期)。在第三個(gè)取樣時(shí)鐘18周期內(nèi),第一個(gè)和第四個(gè)存儲(chǔ)器時(shí)鐘17周期與存儲(chǔ)器時(shí)鐘16的一個(gè)上升沿對(duì)準(zhǔn)。因此,在第二個(gè)取樣時(shí)鐘18信號(hào)期間取樣選擇信號(hào)53的輸出值為1001,表明在第三個(gè)取樣時(shí)鐘18周期內(nèi)移位邏輯電路將被兩次載入數(shù)據(jù)。在第四個(gè)取樣時(shí)鐘18周期內(nèi),第三個(gè)存儲(chǔ)器時(shí)鐘17周期與存儲(chǔ)器時(shí)鐘16的一個(gè)上升沿對(duì)準(zhǔn)。因此,在第三個(gè)取樣時(shí)鐘18信號(hào)期間取樣選擇信號(hào)53的輸出值為0100。由于主機(jī)時(shí)鐘16和取樣時(shí)鐘18之間的相位關(guān)系,每三個(gè)取樣時(shí)鐘18周期就重復(fù)一次,取樣選擇信號(hào)53就會(huì)以0010、1001、0100的重復(fù)形式輸出。
圖6是一個(gè)時(shí)序圖,用來說明在主機(jī)時(shí)鐘16和取樣時(shí)鐘18之間的頻率比為3∶2情況下取樣選擇信號(hào)53的值。在這個(gè)時(shí)序排列中,每個(gè)主機(jī)時(shí)鐘16周期內(nèi)存儲(chǔ)器時(shí)鐘17的周期數(shù)是一個(gè)分?jǐn)?shù)值,以致于除在差頻周期(每三個(gè)主機(jī)時(shí)鐘16周期)以外,存儲(chǔ)器時(shí)鐘17不會(huì)與主機(jī)時(shí)鐘16的上升沿剛好一致。在一個(gè)實(shí)施例中,為了允許在稍微先于主機(jī)時(shí)鐘16上升沿的存儲(chǔ)器時(shí)鐘17周期上進(jìn)行取樣,通過延長(zhǎng)推控制器輸出保持有效的時(shí)間來實(shí)現(xiàn)這種情況。在一個(gè)實(shí)施例中,通過縮短推控制器輸出開始發(fā)生變化所需要的時(shí)間TBT,或是通過縮短推控制器輸出調(diào)整所需要的時(shí)間TS,或是同時(shí)通過縮短TBT和TS,將有效的推控制器輸出延長(zhǎng)。如圖6所示,在第三個(gè)取樣時(shí)鐘18周期內(nèi),出現(xiàn)了存儲(chǔ)器時(shí)鐘17的一個(gè)取樣沿與主機(jī)時(shí)鐘16的一個(gè)上升沿之間最壞情況的偏移。在那個(gè)點(diǎn)存儲(chǔ)器時(shí)鐘17的取樣沿超前主機(jī)時(shí)鐘三分之二個(gè)存儲(chǔ)器時(shí)鐘周期。如圖6所示,這個(gè)最壞情況取樣點(diǎn)和存儲(chǔ)器端控制邏輯中移位邏輯的安裝時(shí)間(即推控制器的輸出在它能夠被載入移位邏輯之前必須保持有效的時(shí)間)決定了TBT和TS總和的最大值。
存儲(chǔ)器時(shí)鐘17和主機(jī)時(shí)鐘16之間的頻率比為分?jǐn)?shù),其另一個(gè)有趣的后果是在取樣點(diǎn)之間存儲(chǔ)器時(shí)鐘17的周期數(shù)會(huì)發(fā)生變化。因此,每個(gè)主機(jī)時(shí)鐘16周期內(nèi)由存儲(chǔ)器端控制邏輯進(jìn)行處理的包組塊的數(shù)目以2、3、3、2、3、3的重復(fù)形式發(fā)生變化。這是由傳動(dòng)裝置邏輯23輸出的下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)52信號(hào)的形式。與之相比,在圖5的4∶3時(shí)鐘比中輸出的下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)52保持在3不變。
仍參考圖6,在第一個(gè)取樣時(shí)鐘18周期內(nèi)取樣選擇輸出值為1001、表明推動(dòng)控制器輸出將在第二個(gè)取樣時(shí)鐘18周期內(nèi)被取樣兩次(在存儲(chǔ)器時(shí)鐘周期1和4)。在第二個(gè)取樣時(shí)鐘18周期內(nèi)取樣選擇輸出值為0010,表明推動(dòng)控制器輸出將在第三個(gè)取樣時(shí)鐘18周期內(nèi)被取樣一次(在存儲(chǔ)器時(shí)鐘周期2)。由于主機(jī)時(shí)鐘16和取樣時(shí)鐘18之間的相位關(guān)系每?jī)蓚€(gè)取樣時(shí)鐘18周期就重復(fù)一次,取樣選擇信號(hào)53將會(huì)以1001、0010的重復(fù)形式輸出。
圖7說明了依據(jù)一個(gè)實(shí)施例的推控制器內(nèi)部的pget邏輯。在每個(gè)主機(jī)時(shí)鐘周期內(nèi),pget邏輯99確定將要由存儲(chǔ)器端控制邏輯進(jìn)行處理的組塊數(shù)目和在推控制器中掛起的組塊數(shù)目,并決定在后續(xù)主機(jī)時(shí)鐘周期內(nèi)推控制器是否需要一個(gè)新的有效包。如果是這樣,就確認(rèn)取包信號(hào)98,否則就不確認(rèn)取包信號(hào)98。
pget邏輯包含二個(gè)狀態(tài)元件一個(gè)組塊掛起寄存器153和一個(gè)先前pget寄存器151,它們分別在每個(gè)主機(jī)時(shí)鐘周期內(nèi)被更新一次。組塊掛起寄存器153指示在當(dāng)前主機(jī)時(shí)鐘下推控制器正在處理的包數(shù)據(jù)組塊和磁泡的數(shù)目。先前pget寄存器確認(rèn)一個(gè)表示前一周期內(nèi)取包信號(hào)98狀態(tài)的信號(hào)107。如果先前pget寄存器151表明在前一周期內(nèi)確認(rèn)了取包信號(hào),而且如果當(dāng)前確認(rèn)了包可用信號(hào)97,則將有效磁泡矢量73(即來自于包隊(duì)列)的值與來自于組塊掛起寄存器153的一個(gè)組塊掛起信號(hào)106通過使用加法器152組合在一起。然后在減法器154中將下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)52從加法器152的輸出中減去。如果減法的結(jié)果為負(fù),就會(huì)確認(rèn)一個(gè)借位信號(hào)108,表明沒有足夠的組塊掛起(包括由磁泡矢量指示的空組塊)以提供在下一個(gè)主機(jī)時(shí)鐘16周期內(nèi)將要處理的組塊的數(shù)目。在那種場(chǎng)合下,就確認(rèn)取包信號(hào)98。在圖7描繪的實(shí)施例中,借位信號(hào)108就是取包信號(hào)。在可選實(shí)施例中,可在借位信號(hào)108和取包信號(hào)98之間插入附加的邏輯(例如,在某些情況下迫使取包信號(hào)為高電平的邏輯)。當(dāng)確認(rèn)該借位信號(hào)時(shí),選中多路復(fù)用器158中的通道B以提供下一個(gè)組塊掛起值。如果確認(rèn)了包可用信號(hào)97,則下一個(gè)組塊掛起值將是通過多路復(fù)用器160的通道B提供的、把減法器154的輸出加上每個(gè)包的組塊數(shù)目(例如由加法器156加4)。如果沒有確認(rèn)包可用信號(hào),則通過多路復(fù)用器160的通道A使組塊掛起計(jì)數(shù)為0。在一個(gè)實(shí)施例中,通過選通旁路選擇信號(hào)(例如圖4中的信號(hào)94)來使用組塊掛起信號(hào),從而使只有在推控制器中沒有組塊掛起時(shí)才允許有效旁路。
圖8是一個(gè)依據(jù)一實(shí)施例產(chǎn)生磁泡選擇和有效選擇信號(hào)的通道選擇狀態(tài)機(jī)200的示意圖。通道選擇狀態(tài)機(jī)200包含在推狀態(tài)機(jī)的內(nèi)部,響應(yīng)主機(jī)時(shí)鐘的變換而在狀態(tài)之間進(jìn)行變換。在一個(gè)實(shí)施例中,為推控制器的每個(gè)輸出通道提供一個(gè)獨(dú)立的通道選擇狀態(tài)機(jī)200。
通道選擇狀態(tài)機(jī)能夠進(jìn)入三個(gè)狀態(tài)中的一個(gè)包201、磁泡203和保持205,而且在最初被重置為保持狀態(tài)205。從一個(gè)給定狀態(tài)包、磁泡或保持開始,通道選擇狀態(tài)機(jī)能夠進(jìn)入其它兩個(gè)狀態(tài)中的任何一個(gè)或是保持在同一個(gè)狀態(tài)中。通常,對(duì)一給定的輸出通道依據(jù)該通道的通道選擇狀態(tài)來確認(rèn)磁泡選擇信號(hào)和有效選擇信號(hào)。如果通道選擇狀態(tài)是磁泡狀態(tài)203,就為該通道確認(rèn)磁泡選擇信號(hào)。如果通道選擇狀態(tài)是保持狀態(tài)205,該通道就不確認(rèn)有效選擇信號(hào)以從保持邏輯85中選擇一個(gè)輸出。如果通道選擇狀態(tài)處于包狀態(tài)201,為該輸出通道確認(rèn)有效選擇信號(hào)以從在包隊(duì)列頂端的有效包中選擇一個(gè)輸出,只有一個(gè)例外;如果,當(dāng)處于包狀態(tài)時(shí),包可用信號(hào)為真,在前一個(gè)主機(jī)時(shí)鐘的周期內(nèi)要求了取包信號(hào),磁泡寬度非零,而且通道指針小于磁泡寬度,那么就確認(rèn)磁泡選擇信號(hào)。在三個(gè)狀態(tài)之間進(jìn)行變換的邏輯條件如圖8所示。如果變換到其它兩個(gè)狀態(tài)的條件都不滿足的話,通道選擇狀態(tài)機(jī)就保持在相同的狀態(tài)。正如以上討論的那樣,新的計(jì)數(shù)(NEW_CNT)指向?qū)⒂糜谳敵鐾ǖ赖耐ǖ乐羔?0-3)值加上下一個(gè)存儲(chǔ)器計(jì)數(shù)。在圖8的表示法中,表達(dá)式“bubble_width/=0”表示一個(gè)非零磁泡矢量;術(shù)語MOD表示取模數(shù)運(yùn)算符(即整數(shù)除法的余數(shù));表達(dá)式“pavail=‘1'”表示一個(gè)確認(rèn)了的包可用信號(hào);‘*’符號(hào)表示一個(gè)邏輯與操作;‘+’符號(hào)表示一個(gè)邏輯或操作;‘!’符號(hào)表示一個(gè)邏輯非操作。
如上面所提,一個(gè)通道指針用來指示是否一個(gè)給定的輸出通道要接收Chunk0、Chunk1、Chunk2或Chunk3(磁泡插入會(huì)替換一個(gè)組塊向一個(gè)輸出通道的傳送)。圖9是一個(gè)說明對(duì)于一給定的輸出通道,下一個(gè)通道指針(NXT_PTR)的值列表。在一個(gè)實(shí)施例中,下一個(gè)通道指針值是相應(yīng)的通道選擇狀態(tài)機(jī)的狀態(tài)和其指示條件的函數(shù)。例如,如表第2行所示,如果用于該輸出通道的通道選擇狀態(tài)機(jī)處于包狀態(tài),下一個(gè)通道指針值和新計(jì)數(shù)(NEW_CNT)對(duì)4的余數(shù)(即新的計(jì)數(shù)除以整數(shù)4的余數(shù))相等,如果新計(jì)數(shù)大于3,就確認(rèn)包可用信號(hào)。如上所討論,新的計(jì)數(shù)是通道指針當(dāng)前值和下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)的總和。另一個(gè)例子如表的第8行所示,如果通道狀態(tài)機(jī)處于保持狀態(tài),且新計(jì)數(shù)大于3,但是不確認(rèn)包可用信號(hào)(pavail==‘0’),則將通道指針賦值為通道id(即Lane0為0,Lane1為1,Lane2為2,且Lane3為3)。依據(jù)一個(gè)實(shí)施例,根據(jù)圖9的表把各種條件與通道選擇狀態(tài)機(jī)的狀態(tài)結(jié)合起來為每一輸出通道產(chǎn)生下一個(gè)通道指針。在某些情況下,為了更有效的實(shí)施條件可結(jié)合起來。
圖10是一個(gè)說明為保持邏輯85的存儲(chǔ)元件H3產(chǎn)生保持選擇信號(hào)的邏輯框圖。在判定塊171,對(duì)用于輸出Lane0的通道指針設(shè)置進(jìn)行計(jì)算以決定它是否指向存儲(chǔ)元件H1。如果是這樣,而且如果下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)小于3的話,那么在下一個(gè)主機(jī)時(shí)鐘周期內(nèi)就需要存儲(chǔ)元件H3的當(dāng)前內(nèi)容。然后,在塊173中,對(duì)存儲(chǔ)元件H3的選擇指針(即圖4的多路復(fù)用器)進(jìn)行配置從而再循環(huán)存儲(chǔ)元件H3的內(nèi)容。如果輸出Lane0的通道指針沒有指向存儲(chǔ)元件H1,或是如果下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)不小于3,那么就在判定塊175中對(duì)旁路信號(hào)進(jìn)行計(jì)算以決定是否執(zhí)行一個(gè)有效旁路操作。如果確認(rèn)了旁路信號(hào)(而且旁路沒有失效),就在塊177對(duì)存儲(chǔ)元件H3的選擇指針進(jìn)行配置以存儲(chǔ)來自于該有效旁路通道的chunk3。如果沒有要求旁路信號(hào)(或且旁路已經(jīng)失效),就在塊179中對(duì)存儲(chǔ)元件H3的選擇指針進(jìn)行配置以存儲(chǔ)一個(gè)有效的來自于包隊(duì)列的chunk3。
圖11說明了當(dāng)存儲(chǔ)器時(shí)鐘17與主機(jī)時(shí)鐘16的頻率比是3∶1時(shí)包組塊通過控制邏輯輸出通道移動(dòng)的實(shí)例。在主機(jī)時(shí)鐘16的Cyclel開始時(shí),包隊(duì)列頂端的項(xiàng)包含包A,而包A包括組塊A0-A3。包隊(duì)列頂端的項(xiàng)還包含一個(gè)磁泡矢量,用來指示零個(gè)空組塊在包A輸出到存儲(chǔ)器端控制邏輯22之前要預(yù)先加入包A前面。主機(jī)時(shí)鐘16Cyclel的晚些時(shí)候,分別在控制邏輯的輸出通道Lane0-Lane3上出現(xiàn)包A的組塊A0-A3。在控制邏輯輸出中包A的每個(gè)組塊上的腳標(biāo)“L”表示該組塊是從一個(gè)有效包(即,包隊(duì)列頂端的包)獲得的。由于包隊(duì)列至少包含包A,因此就確認(rèn)包可用信號(hào)(PAVAIL)。此外,由于下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)(圖11中用縮寫NC表示)是3,推狀態(tài)機(jī)決定在當(dāng)前組的組塊(set1)載入移位邏輯之后、在下一組組塊(set2)載入移位邏輯之前至少有一個(gè)當(dāng)前有效包(即包A)的組塊將被移位邏輯進(jìn)行處理(即包A有至少一個(gè)組塊將“在后續(xù)載入之前進(jìn)行處理”)。因此,推狀態(tài)機(jī)確認(rèn)取包信號(hào)(PGET)以使下一個(gè)包前進(jìn)到包隊(duì)列的頂端。
做為取包信號(hào)的響應(yīng),包B在主機(jī)時(shí)鐘16的Cycle2中成為新的有效包,并保持確認(rèn)包可用信號(hào)。由于包A的組塊A0-A2已經(jīng)被處理了,但是A3并沒有,因此在主機(jī)時(shí)鐘的Cycle2內(nèi)在控制邏輯輸出中重復(fù)A3。由于包A不再是有效的,A3是從保持邏輯的一個(gè)存儲(chǔ)元件中選出的(因此腳標(biāo)為H)并分配到具有最高優(yōu)先級(jí)的輸出通道Lane0。由于與有效包B有關(guān)磁泡矢量表明沒有空組塊預(yù)先插入包B之前,因此在Cycle2中有效包B的前3個(gè)組塊(即B0、B1和B2)同樣也出現(xiàn)在控制邏輯輸出上,但是是在較低優(yōu)先級(jí)的輸出通道Lanel-Lane3上。由于下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)是3,推狀態(tài)機(jī)決定在后續(xù)的載入之前對(duì)包B的組塊B0和B1(與包A的A3一起)進(jìn)行處理。因此,推狀態(tài)機(jī)確認(rèn)取包信號(hào)(PGET)以使下一個(gè)包前進(jìn)到包隊(duì)列的頂端。
做為取包信號(hào)的響應(yīng),包C在主機(jī)時(shí)鐘16的Cycle3期間成為新的有效包,并保持確認(rèn)包可用信號(hào)。由于組塊A3、B0和B1將在下一個(gè)載入操作之前進(jìn)行處理,因此將組塊B2和B3從保持邏輯中選出(包B不再有效),并分別轉(zhuǎn)向Lane0和Lane1輸出。由于與有效包C有關(guān)的磁泡矢量表明沒有空組塊要預(yù)先插入包C之前,將控制有效包C的組塊C0和C1轉(zhuǎn)到Lane2和Lane3輸出。此外,由于下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)是3,推狀態(tài)機(jī)決定在后續(xù)載入之前對(duì)包C的組塊C0(以及包B的組塊B2和B3)進(jìn)行處理。因此,推動(dòng)狀態(tài)機(jī)確認(rèn)取包信號(hào)以使下一個(gè)包前進(jìn)到包隊(duì)列的頂端。
做為取包信號(hào)的響應(yīng),包D在主機(jī)時(shí)鐘16的Cycle4期間成為新的有效包,并保持確認(rèn)包可用信號(hào)。由于組塊B2、B3和C0將在后續(xù)的載入之前進(jìn)行處理,將組塊C1、C2和C3從保持邏輯中選出(包C不再有效),并分別轉(zhuǎn)到Lane0、Lane1和Lane2輸出。由于與有效包D有關(guān)的磁泡矢量表明沒有空組塊要預(yù)先插入包D之前,將有效包D的組塊D0轉(zhuǎn)到Lane3輸出。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)保持為3,從而使推狀態(tài)機(jī)決定將在后續(xù)的載入之前對(duì)組塊C1、C2和C3進(jìn)行處理,而不是組塊D0。因此,推狀態(tài)機(jī)不在確認(rèn)取包信號(hào)(在圖11中用!PGET表示)從而使包D保持有效。因此,在主機(jī)時(shí)鐘16的Cycle5內(nèi),包D保持在包隊(duì)列的頂端,并在Cycle5的晚些時(shí)候在Lane0-Lane3上分別輸出組塊D0-D3。
圖12說明了在存儲(chǔ)器時(shí)鐘17與主機(jī)時(shí)鐘16的頻率比為3∶1時(shí)包組塊通過控制邏輯的輸出通道進(jìn)行移動(dòng)的另一個(gè)示例,但是在這個(gè)例子中用于包B和D的磁泡矢量是非零的。
在主機(jī)時(shí)鐘16的Cyclel期間,由控制邏輯將控制有效包A輸出到輸出通道。由于包隊(duì)列包含一個(gè)包所以就要確認(rèn)包可用信號(hào),由于組塊A0、A1和A2在后續(xù)載入之前(在這個(gè)例子中每個(gè)周期內(nèi)下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)是3)要進(jìn)行處理,所以要確認(rèn)取包信號(hào)。
做為取包信號(hào)的響應(yīng),包B在主機(jī)時(shí)鐘16的Cycle2內(nèi)成為新的有效包,并保持確認(rèn)包可用信號(hào)。將未處理的組塊A3從保持邏輯中選出(包A不再有效),并轉(zhuǎn)到Lane0輸出。由于與包B有關(guān)的磁泡矢量表明三個(gè)空組塊將預(yù)先插入包B之前,Lanel、Lane2和Lane3的輸出都是空的。在圖12中這些空組塊用標(biāo)記BUB0、BUB1和BUB2來表示。由于在后續(xù)載入之前沒有對(duì)來自于包B的組塊進(jìn)行處理,在主機(jī)時(shí)鐘16的Cycle2內(nèi)不確認(rèn)取包信號(hào),從而使包B在Cycle3中保持有效。由于下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為3,將在后續(xù)的載入之前對(duì)組塊A3、BUB0和BUB1進(jìn)行處理,而沒有BUB2。因此,在主機(jī)時(shí)鐘16的Cycle3期間,BUB2(即一個(gè)空組塊)在Lane0輸出,且有效包B的組塊B0、B1和B2分別在Lane1、Lane2和Lane3輸出。由于將在后續(xù)的載入之前對(duì)包B的組塊B0和B1進(jìn)行處理,就確認(rèn)取包信號(hào)以在Cycle4內(nèi)將包C前進(jìn)到隊(duì)列的頂端。與包C有關(guān)的磁泡矢量是零,表明沒有空組塊要預(yù)先插入包C之前。因此,包B的未處理組塊(即B2和B3)分別從保持邏輯中的存儲(chǔ)元件轉(zhuǎn)到Lane0和Lane1輸出,同時(shí)將來自于有效包C的組塊C0和C1引導(dǎo)到較低優(yōu)先級(jí)的Lane2和Lane3輸出。由于將在后續(xù)的載入之前對(duì)組塊B2、B3和C0進(jìn)行處理,就要確認(rèn)取包信號(hào)以將下一個(gè)包前進(jìn)到包隊(duì)列的頂端,并繼續(xù)將組塊通過控制邏輯83的輸出通道進(jìn)行移動(dòng)。
圖13說明了當(dāng)存儲(chǔ)器時(shí)鐘17與主機(jī)時(shí)鐘16的頻率比為8∶3時(shí)行推控制器27的操作。在這個(gè)時(shí)鐘比中,每個(gè)主機(jī)時(shí)鐘16間對(duì)不同數(shù)目的包組塊進(jìn)行處理。在主機(jī)時(shí)鐘16的Cycle1內(nèi),包A在包隊(duì)列頂端出現(xiàn),其磁泡矢量為3。假定沒有來自于先前包的組塊保持輸出,空組塊BUB0、BUB1和BUB2在控制邏輯的Lane0、Lane1和Lane2上輸出,且有效包A的A0在Lane3上輸出。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)(NC)為2,從而在后續(xù)的載入之前對(duì)空組塊BUB0和BUB1進(jìn)行處理,而沒有處理BUB2或A0。由于在后續(xù)載入之前沒有對(duì)包A的組塊進(jìn)行處理,就不確認(rèn)取包信號(hào),從而使包A在主機(jī)時(shí)鐘16的Cycle2期間保持為有效包。
在Cycle2,空組塊BUB2在控制邏輯的Lane0上輸出,且來自于有效包A的組塊A0、A1和A2分別在Lane1、Lane2和Lane3上輸出。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為3,從而在后續(xù)載入之前對(duì)組塊BUB2、A0和A1進(jìn)行處理。因此,就確認(rèn)取包信號(hào)以使包B在主機(jī)時(shí)鐘16的Cycle3內(nèi)前進(jìn)到包隊(duì)列的頂端。
在Cycle3期間,將來自于包A的未處理組塊(即A2和A3)分別從保持邏輯中的存儲(chǔ)元件引導(dǎo)到控制邏輯的Lane0和Lane1輸出。由于與有效包B有關(guān)的磁泡矢量為0,分別在Lane2和Lane3輸出來自于包B的組塊B0和B1。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為3,從而在后續(xù)的載入之前對(duì)組塊A2、A3和B0進(jìn)行處理。因此,確認(rèn)取包信號(hào)以使包C在主機(jī)時(shí)鐘16的Cycle4內(nèi)前進(jìn)到包隊(duì)列的頂端。
在Cycle4期間內(nèi),將來自于包B的未處理組塊(即B1、B2和B3)分別從保持邏輯中的存儲(chǔ)元件轉(zhuǎn)到Lane0、Lane1和Lane2輸出。由于與有效包C有關(guān)的磁泡矢量為零,來自于包C的組塊C0在Lane3輸出。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為2,從而在后續(xù)的載入之前對(duì)組塊B1和B2而不是B3或C0進(jìn)行處理,由于在Cycle4期間B3是從保持邏輯處獲得,但是還需要另一個(gè)主機(jī)時(shí)鐘16的周期,B3在保持邏輯85中進(jìn)行再循環(huán)。由于在后續(xù)載入之前沒有對(duì)包C的組塊進(jìn)行處理,在Cycle4內(nèi)就不確認(rèn)取包信號(hào),從而使包C在主機(jī)時(shí)鐘16的Cycle5內(nèi)保持有效。
在Cycle5內(nèi),將再循環(huán)的組塊B3從保持邏輯轉(zhuǎn)到控制邏輯的Lane0輸出,然后分別將組塊C0、C1和C2從包隊(duì)列的頂端轉(zhuǎn)到Lane1、Lane2和Lane3輸出。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為3,從而在后續(xù)載入之前對(duì)組塊B3、C0和C1進(jìn)行處理。因此,就確認(rèn)取包信號(hào)以使一個(gè)新包在主機(jī)時(shí)鐘16的下一個(gè)周期內(nèi)前進(jìn)到包隊(duì)列的頂端,并繼續(xù)通過輸出通道的包組塊交替。
圖14說明了一個(gè)有效旁路操作。在主機(jī)時(shí)鐘16的Cycle1期間,包A為有效包,并在控制邏輯的輸出通道Lane0-Lane3上輸出組塊A0-A3。確認(rèn)包可用信號(hào)以表示一個(gè)包出現(xiàn)在包隊(duì)列中。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為3,從而在后續(xù)載入之前對(duì)組塊A0、A1和A2進(jìn)行處理。因此,就確認(rèn)取包信號(hào)以使包B在主機(jī)時(shí)鐘16的Cycle2內(nèi)前進(jìn)到包隊(duì)列的頂端。如圖所示,在Cycle1內(nèi)不確認(rèn)旁路信號(hào)(!BYPASS)。(盡管在圖10、11、12中沒有明確顯示旁路信號(hào)的狀態(tài),在所有的那些例子中都假定不確認(rèn)旁路信號(hào))。
在主機(jī)時(shí)鐘16的Cycle2內(nèi),將先前載入的、而未處理的組塊A3從保持邏輯轉(zhuǎn)到控制邏輯的Lane0,并分別將組塊B0、B1和B2從包隊(duì)列轉(zhuǎn)到Lane1、Lane2和Lane3輸出。由于包B出現(xiàn)在包隊(duì)列的頂端中,因此就保持確認(rèn)包可用信號(hào)。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為3,從而在后續(xù)載入之前對(duì)組塊A3、B0和B1進(jìn)行處理。因此,就要確認(rèn)取包信號(hào)以使下一個(gè)包在主機(jī)時(shí)鐘16的Cycle3內(nèi)前進(jìn)到包隊(duì)列的頂端。在Cycle2內(nèi)保持不確認(rèn)旁路信號(hào)。
假定包B是包隊(duì)列中的最后一個(gè)包,那么在主機(jī)時(shí)鐘16的Cycle2內(nèi)確認(rèn)取包信號(hào)就會(huì)導(dǎo)致包隊(duì)列在Cycle3內(nèi)為空。因此,就不確認(rèn)包可用信號(hào)以通知推狀態(tài)機(jī)沒有包在包隊(duì)列的頂端。推狀態(tài)機(jī)通過將包B未處理的組塊(即B2和B3)轉(zhuǎn)到控制邏輯的Lane0和Lane1、以及通過將空組塊BUB0和BUB1轉(zhuǎn)到Lane2和Lane3來對(duì)響應(yīng)不確認(rèn)包可用信號(hào)。由于下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為2,在后續(xù)載入之前對(duì)組塊B2和B3、而不是空組塊BUB0和BUB1進(jìn)行處理。繼續(xù)確認(rèn)取包信號(hào)以表示需要一個(gè)有效包。且保持不確認(rèn)旁路信號(hào)。
在主機(jī)時(shí)鐘16的Cycle4期間,繼續(xù)不確認(rèn)包可用信號(hào),做為響應(yīng)推狀態(tài)機(jī)在控制邏輯的全部四個(gè)通道上都輸出空組塊(即BUB0-BUB4)。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為3,從而在后續(xù)載入之前對(duì)三個(gè)空組塊(BUB0、BUB1和BUB2)進(jìn)行處理。應(yīng)注意不管有沒有空組塊的插入,一個(gè)穩(wěn)定的組塊流會(huì)持續(xù)輸出到存儲(chǔ)器端控制邏輯。在Cycle4內(nèi),繼續(xù)確認(rèn)取包信號(hào),并繼續(xù)不確認(rèn)旁路信號(hào)。
在主機(jī)時(shí)鐘16的Cycle5內(nèi),繼續(xù)不確認(rèn)包可用信號(hào),但是確認(rèn)旁路信號(hào)以指示在有效旁路通道上有一個(gè)包可用。作出響應(yīng),推狀態(tài)機(jī)將包C的組塊C0-C3從旁路通道轉(zhuǎn)到控制邏輯的Lane0-Lane3上。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為3,從而在后續(xù)載入之前對(duì)組塊C0、C1和C2進(jìn)行處理。將組塊C3保存在保持邏輯中。繼續(xù)確認(rèn)取包信號(hào)以指示需要一個(gè)新的有效包。
在主機(jī)時(shí)鐘16的Cycle6內(nèi),包D在包隊(duì)列63的頂端變得可用,從而確認(rèn)包可用信號(hào)。在Cycle6的輸出組塊集載入之前不會(huì)對(duì)來自于包C的組塊C3進(jìn)行處理。因此,將組塊C3從保持邏輯轉(zhuǎn)到控制邏輯的Lane0,同時(shí)分別將組塊D0、D1和D2從包隊(duì)列的頂端轉(zhuǎn)到Lane1、Lane2和Lane3輸出。下一個(gè)存儲(chǔ)器時(shí)鐘計(jì)數(shù)為2,從而在后續(xù)載入之前對(duì)組塊C3和D0進(jìn)行處理。因此,如果一個(gè)新的包可用,就確認(rèn)取包信號(hào)以將其推進(jìn)到包隊(duì)列的頂端。不確認(rèn)旁路信號(hào)以指示在有效旁路通道上沒有包。
在上述的詳細(xì)說明中,結(jié)合其中的具體實(shí)施例已經(jīng)對(duì)本發(fā)明進(jìn)行了描述。然而,顯然可以對(duì)具體實(shí)施例進(jìn)行各種修改和變化,而沒有背離由附加的權(quán)利要求書所限定的本發(fā)明的更為廣泛的精神和范圍。因此,詳細(xì)說明和附圖只作為一個(gè)示例說明,而不是起限制作用。
權(quán)利要求
1.一種在存儲(chǔ)器系統(tǒng)中時(shí)鐘域之間傳輸信息單元的方法,該方法包含在第一個(gè)時(shí)鐘域的每個(gè)時(shí)鐘周期內(nèi),從第一時(shí)鐘域中的一個(gè)輸出電路中載入相應(yīng)的一組N個(gè)信息單元到第二時(shí)鐘域中的一個(gè)存儲(chǔ)電路;以及輸出電路選擇每相應(yīng)的組N個(gè)信息單元以包含已經(jīng)被預(yù)先存入存儲(chǔ)電路中,而且不會(huì)在該存儲(chǔ)電路載入一組后續(xù)的N個(gè)信息單元之前將其從存儲(chǔ)電路中輸出的信息單元,以及沒有預(yù)先載入存儲(chǔ)電路的多個(gè)補(bǔ)充信息單元。
2.如權(quán)利要求1所述的方法,其特征在于存儲(chǔ)電路是一個(gè)移位電路,而且做為對(duì)第二時(shí)鐘域中一個(gè)時(shí)鐘信號(hào)變換的響應(yīng)將信息單元從該移位電路中移出。
3.如權(quán)利要求1所述的方法,進(jìn)一步包含產(chǎn)生一個(gè)計(jì)數(shù)值,用來指示在該存儲(chǔ)電路中載入一組后續(xù)的N個(gè)信息單元之前載入到該存儲(chǔ)電路的每組N個(gè)單元中有多少個(gè)信息單元M將會(huì)從該電路中輸出,其中補(bǔ)充的多個(gè)信息單元中包含M個(gè)信息單元。
4.如權(quán)利要求3所述的方法,其特征在于為第一時(shí)鐘域的每個(gè)時(shí)鐘周期重新產(chǎn)生該計(jì)數(shù)值。
5.如權(quán)利要求4所述的方法,其特征在于如果第二時(shí)鐘域的頻率是第一時(shí)鐘域的頻率的整數(shù)倍時(shí),該計(jì)數(shù)值不隨時(shí)間改變。
6.如權(quán)利要求4所述的方法,其特征在于如果第二時(shí)鐘域的頻率不是第一時(shí)鐘域的頻率的整數(shù)倍時(shí),該計(jì)數(shù)值會(huì)隨時(shí)間發(fā)生變化。
7.如權(quán)利要求3所述的方法,其特征在于根據(jù)第一時(shí)鐘域和第二時(shí)鐘域的相關(guān)時(shí)鐘頻率來確定M。
8.如權(quán)利要求1所述的方法,其特征在于選擇相應(yīng)的每組N個(gè)信息單元,該選擇包含從一個(gè)或多個(gè)信息源中選擇信息單元。
9.如權(quán)利要求8所述的方法,其特征在于從一個(gè)或多個(gè)信息源中選擇信息單元,該選擇包含從一個(gè)或多個(gè)信息隊(duì)列,一組保持寄存器和一個(gè)空數(shù)據(jù)源中選擇信息單元。
10.如權(quán)利要求9所述的方法,其特征在于多個(gè)信息源進(jìn)一步包含一個(gè)旁路源,它旁路信息隊(duì)列。
11.如權(quán)利要求1所述的方法,其特征在于選擇相應(yīng)的每組N個(gè)信息單元,該選擇包含向控制邏輯83發(fā)出選擇信號(hào)以選擇多個(gè)源中的相應(yīng)一個(gè)提供給相應(yīng)的每組N個(gè)信息單元中的每個(gè)信息單元。
12.一種在存儲(chǔ)器系統(tǒng)中的時(shí)鐘域之間傳輸信息單元的方法,該方法包含在第一時(shí)鐘域的第一個(gè)時(shí)鐘周期期間,從第一時(shí)鐘域中的一個(gè)輸出電路中載入第一組N個(gè)信息單元到第二時(shí)鐘域中的一個(gè)移位電路;產(chǎn)生一個(gè)計(jì)數(shù)值,該計(jì)數(shù)值用來指示在第一時(shí)鐘域的第二個(gè)時(shí)鐘周期內(nèi),在移位電路中載入第二組N個(gè)信息單元之前、第一組N個(gè)信息單元中有多少個(gè)信息單元M將要從該移位電路中移出;以及在第二個(gè)時(shí)鐘周期期間從該輸出電路中載入第二組N個(gè)信息單元到該移位電路中,第二組N個(gè)單元包括M個(gè)沒有預(yù)先載入到移位電路中的信息單元,以及第一組N個(gè)信息單元中的N-M個(gè)信息單元。
全文摘要
用于在時(shí)鐘域間傳輸信息單元的裝置和方法。在第一時(shí)鐘域每個(gè)周期期間,從第一時(shí)鐘域(16)中的一個(gè)輸出電路(25-28,31)中載入相應(yīng)的一組N個(gè)信息單元到在第二時(shí)鐘域(17)中的儲(chǔ)存電路(33,35,36)中。由輸出電路選擇的每個(gè)N個(gè)單元組包含:1)先前已經(jīng)載入到存儲(chǔ)電路中而且在存儲(chǔ)電路載入后續(xù)的一組N信息單元之前不會(huì)從存儲(chǔ)電路中輸出的信息單元,及2)先前沒有載入到儲(chǔ)存電路中的多個(gè)補(bǔ)充信息單元。
文檔編號(hào)G06F1/04GK1332871SQ99815141
公開日2002年1月23日 申請(qǐng)日期1999年11月1日 優(yōu)先權(quán)日1998年11月3日
發(fā)明者D·J·麥東內(nèi)爾, A·M·沃爾克, M·W·威廉斯 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1