欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

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

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