專利名稱:用于主機(jī)子卡接口的后向兼容并行ddr總線的制作方法
背景技術(shù):
新產(chǎn)品和現(xiàn)有產(chǎn)品之間的不兼容性是包括聯(lián)網(wǎng)和信號(hào)交換在內(nèi)的許多技術(shù)領(lǐng)域中的主要問(wèn)題。通常,開(kāi)發(fā)出來(lái)的新產(chǎn)品具有增大的數(shù)據(jù)速率,而客戶已經(jīng)在以較低數(shù)據(jù)速率工作的遺留產(chǎn)品上投入了很多。
例如,許多路由平臺(tái)有用于WAN(廣域網(wǎng))接口卡(WIC)的插槽,這種接口卡提供路由平臺(tái)和廣域網(wǎng)之間的接口。
遺留WIC是幾年前構(gòu)思出來(lái)的,并且最初針對(duì)的是最大比特率為幾Mbps的PHY設(shè)備。此后,因特網(wǎng)和寬帶可用性的爆炸性增長(zhǎng)極大地增大了思科路由器接口所需的速度和復(fù)雜性。需要擴(kuò)展遺留WIC功能以使現(xiàn)有的路由平臺(tái)能夠繼續(xù)滿足目前的以及未來(lái)的接口卡需求。
發(fā)明內(nèi)容
在本發(fā)明的第一實(shí)施例中,遺留主機(jī)子卡(host-daughtercard)接口的管腳被占用以定義新的高速接口中的高速并行總線,這種新的高速接口與遺留接口是后向兼容的。
在本發(fā)明的另一個(gè)實(shí)施例中,數(shù)據(jù)和控制幀經(jīng)由高速并行總線發(fā)送,其中斷言控制線路以區(qū)分?jǐn)?shù)據(jù)和控制幀。
在本發(fā)明的另一個(gè)實(shí)施例中,被占用的管腳充當(dāng)遺留接口中的并行端口,并且主機(jī)利用讀和寫(xiě)幀來(lái)執(zhí)行高速接口中的遺留并行端口的功能。
在本發(fā)明的另一個(gè)實(shí)施例中,子卡利用中斷控制幀來(lái)中斷主機(jī)平臺(tái)上的處理器。
在本發(fā)明的另一個(gè)實(shí)施例中,地址擴(kuò)展位被保存在寄存器中以擴(kuò)展在主機(jī)存儲(chǔ)器的描述符中保存的緩沖器地址。
在本發(fā)明的另一個(gè)實(shí)施例中,子卡上的cookie指示子卡是支持遺留接口還是支持新的高速接口。主機(jī)讀取cookie以確定支持哪一種接口。
本發(fā)明的其他特征和優(yōu)點(diǎn)將從下面的詳細(xì)描述和附圖中變清楚。
圖1是遺留主機(jī)/WIC接口的框圖;圖2是并行DDR總線的實(shí)施例的框圖;圖3是主機(jī)-WIC系統(tǒng)的實(shí)施例的高級(jí)別框圖;圖4是到HWIC連接器的HWIC接口的更詳細(xì)示圖;圖5是用于區(qū)分遺留和HWIC接口的步驟的實(shí)施例的流程圖;圖6A和6B示出了8位HWIC讀和讀響應(yīng)命令的格式;圖7A和7B示出了8位HWIC寫(xiě)和寫(xiě)響應(yīng)命令的格式;圖8示出了中斷控制幀的格式;圖9示出了通用數(shù)據(jù)幀的格式;圖10示出了HWIC到主機(jī)DMA讀請(qǐng)求幀的格式;圖11示出了主機(jī)到HWIC DMA讀響應(yīng)的格式;以及圖12示出了HWIC到主機(jī)DMA寫(xiě)請(qǐng)求。
具體實(shí)施例方式
現(xiàn)將參考本發(fā)明的各個(gè)實(shí)施例。這些實(shí)施例的示例在附圖中示出。盡管將結(jié)合這些實(shí)施例描述本發(fā)明,但是應(yīng)當(dāng)理解,這并不是要將本發(fā)明局限于任何實(shí)施例。相反地,希望覆蓋可以包括在由所附權(quán)利要求限定的本發(fā)明的精神和范圍內(nèi)的備選方案、修改和等同物。在下面的描述中,給出了大量具體細(xì)節(jié)以提供對(duì)各個(gè)實(shí)施例的充分理解。但是,在沒(méi)有這些具體細(xì)節(jié)中的某些或全部的情況下也可以實(shí)施本發(fā)明。在其他實(shí)例中,沒(méi)有詳細(xì)描述公知的過(guò)程操作以免不必要地喧賓奪主。
現(xiàn)將參考實(shí)現(xiàn)路由平臺(tái)中的各個(gè)實(shí)施例來(lái)描述本發(fā)明。在下文中,術(shù)語(yǔ)路由平臺(tái)用來(lái)廣泛地包括諸如路由器、網(wǎng)橋、交換機(jī)、第2層或第3層交換機(jī)、網(wǎng)關(guān)等之類的任何組件,這些組件指用來(lái)實(shí)現(xiàn)網(wǎng)絡(luò)內(nèi)或網(wǎng)絡(luò)間的連接性的組件。下面將以示例方式而不是限制方式來(lái)描述運(yùn)行在由本專利申請(qǐng)的受讓人設(shè)計(jì)和制造的路由平臺(tái)上的實(shí)施例。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明在任何路由平臺(tái)中都有廣泛的應(yīng)用。
現(xiàn)將描述本發(fā)明實(shí)施例的簡(jiǎn)要概況。以下為了描述的方便,當(dāng)前的實(shí)施例將針對(duì)高速WAN接口卡(HWIC)。
遺留WIC/主機(jī)接口包括多個(gè)串行接口和一個(gè)并行接口。在當(dāng)前描述的HWIC的實(shí)施例中,物理接口保持與遺留WIC/主機(jī)接口相同,從而遺留VWIC模塊是管腳兼容的,并且可以被插入到針對(duì)新的HWIC接口構(gòu)建的主機(jī)平臺(tái)中。為了維持與現(xiàn)有VWIC(即,VIC(語(yǔ)音接口卡)和WIC)的兼容,該HWIC的實(shí)施例包含WIC/VIC串行外設(shè)接口(SPI),并且可以包含WIC/VIC串行接口的某些組合。對(duì)于這些串行接口,接口需求、管腳定義、接口操作和接口定時(shí)與遺留WIC/VIC的相同。
該兼容性還通過(guò)占用遺留WIC/主機(jī)接口的管腳以用于新的功能來(lái)實(shí)現(xiàn)。現(xiàn)將以示例方式而非限制方式來(lái)描述由本申請(qǐng)的受讓人設(shè)計(jì)和制造的特定接口的管腳的詳細(xì)占用。
遺留WIC/主機(jī)并行接口在圖1中示出,該接口是通用8位并行總線,其充當(dāng)并行端口以允許主機(jī)訪問(wèn)遺留WIC的板上寄存器以及其他網(wǎng)絡(luò)設(shè)備。該遺留WIC/主機(jī)接口包括連接主機(jī)10和WIC 11的面向字節(jié)的總線,利用該總線主機(jī)必須能夠訪問(wèn)位于奇數(shù)或偶數(shù)字節(jié)邊界中的任何遺留WIC的地址。
在圖1中示出的信號(hào)是RD_L讀信號(hào);WR_L寫(xiě)信號(hào);CS_L啟用信號(hào);Not_RDY在數(shù)據(jù)還未準(zhǔn)備好時(shí)斷言(LOW)的未準(zhǔn)備好信號(hào);ADDR[7:0]地址總線;和DATA[7:0]數(shù)據(jù)總線。
除了以上的遺留接口,當(dāng)前描述的實(shí)施例的HWIC還支持圖2中所示的8位雙數(shù)據(jù)速率(DDR)雙向總線。該DDR總線是同步總線。該接口將用來(lái)1)為WAN數(shù)據(jù)提供主機(jī)平臺(tái)和HWIC之間的高速數(shù)據(jù)路徑;2)提供到模塊的板上寄存器的訪問(wèn);以及3)為HWIC板上設(shè)備提供DMA路徑。
在該實(shí)施例中,TxClk和RxClk運(yùn)行在25MHz??偩€工作在雙數(shù)據(jù)速率(DDR)模式,其中數(shù)據(jù)是在每個(gè)時(shí)鐘邊沿捕捉的。這提供了800Mbps的聚集帶寬(每個(gè)方向上是400Mbps)。
在圖2中示出的信號(hào)是TxD[7:0]來(lái)自主機(jī)的發(fā)送數(shù)據(jù)總線;TxCtrl來(lái)自主機(jī)的發(fā)送控制位;TxClk來(lái)自主機(jī)的發(fā)送時(shí)鐘;RxD[7:0]去往主機(jī)的接收數(shù)據(jù)總線;RxCtrl去往主機(jī)的接收控制位;和RxClk去往主機(jī)的接收時(shí)鐘。
在該實(shí)施例中,遺留主機(jī)/WIC并行接口的ADDR[7:0](地址管腳)已被占用為主機(jī)/HWIC接口的DDR總線中的TxD[7:0](來(lái)自主機(jī)的發(fā)送數(shù)據(jù)總線)。同樣,遺留主機(jī)/WIC并行接口的DATA[7:0](數(shù)據(jù)總線)已被占用為主機(jī)/HWIC接口的DDR總線中的RxD[7:0](去往主機(jī)的接收數(shù)據(jù)總線)。此外,遺留接口的CS_L(啟用信號(hào))已被占用為主機(jī)/HWIC接口的TxCtrl管腳,并且遺留主機(jī)/WIC接口的RD_L管腳已被占用為主機(jī)/HWIC接口的RxCtrl管腳。另外,遺留主機(jī)/WIC并行接口的回波(echo)時(shí)鐘管腳已被占用為主機(jī)/HWIC接口的DDR總線中的TxClk和RxClk管腳。
如上所述,新的HWUC接口與遺留WIC/主機(jī)接口是插入兼容的。然而,某些管腳的功能在新的實(shí)現(xiàn)方式中有所不同。
注意,在當(dāng)前描述的實(shí)施例中,只有遺留主機(jī)/WIC并行接口的并行端口管腳和“回波時(shí)鐘”(TxCE)管腳被調(diào)撥用于HWIC高速總線。這樣做通過(guò)使SPI線路、SCC(串行通信控制器)、中斷線路等等仍可用于其在遺留主機(jī)/WIC并行接口中的傳統(tǒng)應(yīng)用,從而提供了后向兼容性。
圖3是主機(jī)-WIC系統(tǒng)的高級(jí)別框圖。在圖3中,主機(jī)10包括主機(jī)存儲(chǔ)器14和耦合到主機(jī)終接邏輯塊16的CPU 15,主機(jī)終接邏輯塊16包括HWIC接口18。HWIC 12包括含有HWIC接口22的HWIC終接邏輯塊20。主機(jī)HWIC接口22耦合到68管腳連接器24,如上所述,該連接器24是與遺留HWIC連接器管腳兼容的。
圖4是耦合到HWIC連接器24的HWIC接口22的更詳細(xì)視圖。來(lái)自HWIC一側(cè)的主要組件是連接到cookie 42的串行外設(shè)總線(SPI)40、耦合到HWIC終接邏輯16的HWIC DDR并行總線和用于向HWIC提供電力的電力管腳(未示出),在該實(shí)施例中,cookie 42是非易失性存儲(chǔ)器,如EEPROM形式的非易失性RAM(NVRAM),其用于存儲(chǔ)關(guān)于特定實(shí)現(xiàn)方式的信息,HWIC終接邏輯16是包括一組可配置寄存器44的FPGA。在該實(shí)施例中,F(xiàn)PGA包括用于配置HWIC的寄存器。
后向兼容性的一個(gè)重要成分是為主機(jī)提供用于確定遺留或更新后的部分是否已被插入到插槽中的系統(tǒng)。在當(dāng)前描述的實(shí)施例中,是需要該功能的,這是因?yàn)楸M管這些部分是管腳兼容的,但是某些管腳被用來(lái)執(zhí)行完全不同的功能。現(xiàn)將描述用于實(shí)現(xiàn)卡識(shí)別和防止由于不兼容信號(hào)引起的問(wèn)題的系統(tǒng)。
在該實(shí)施例中,HWIC可以被插入到較舊的主機(jī)平臺(tái)中,其中舊主機(jī)平臺(tái)仍舊可以經(jīng)由SPI線路訪問(wèn)HWIC上的cookie,并且發(fā)現(xiàn)該插入的WIC不被支持。HWIC將會(huì)被要求不驅(qū)動(dòng)Rx線路直到“被啟用”,以便WIC并行端口總線管腳在HWIC被插入到較舊主機(jī)平臺(tái)中的情況下不會(huì)引起總線爭(zhēng)奪。另外,通過(guò)設(shè)計(jì),遺留SCC在HWIC上仍舊可用,并且可用于諸如管理信道之類的用途。
現(xiàn)將參考圖5的流程圖詳細(xì)描述用于對(duì)當(dāng)前描述的實(shí)施例的HWIC加電并且促進(jìn)與遺留主機(jī)/WIC并行接口的兼容性的過(guò)程。
1.給主機(jī)平臺(tái)加電,主機(jī)CPU啟動(dòng)?;蛘?,主機(jī)CPU發(fā)出硬復(fù)位到HWIC(響應(yīng)于“清空接口”或者某些其他原因以從頭開(kāi)始)。
2.如果HWIC有用于其FPGA的板上配置ROM,則HWIC FPGA被自動(dòng)(重)配置。然而,HWIC繼續(xù)使遺留并行端口管腳處于三態(tài)Addr[7:0]、Data[7:0]、nCS、nRD、nWR、nRDY。
3.主機(jī)CPU使用SPI來(lái)讀取HWIC上的NVRAM并識(shí)別該NVRAM。如果平臺(tái)較舊或者不支持這類HWIC,則向用戶顯示消息,執(zhí)行在這里停止。
4.如果HWIC沒(méi)有用于其FPGA的板上配置ROM,則主機(jī)處理器利用8位并行端口或SPI下載配置位流到HWIC FPGA。同樣,在下載后,HWIC FPGA使其所有的并行端口線路(在以上的(2)中列舉)處于三態(tài)。
5.在HWIC的DDR模式被啟用時(shí),主機(jī)CPU使RD_L管腳處于三態(tài)以避免總線爭(zhēng)奪。
6.主機(jī)CPU關(guān)閉該WIC接口的(遺留WIC)并行端口模式,并且啟用主機(jī)終接邏輯中的HWIC DDR模式。
7.主機(jī)CPU通過(guò)寫(xiě)入到HWIC終接邏輯中的特殊寄存器來(lái)啟用HWIC終接邏輯以驅(qū)動(dòng)其10個(gè)HWIC到主機(jī)的DDR管腳(RxData[7:0]、RxClk和RxCtrl)。注意盡管HWIC到主機(jī)的DDR管腳是三態(tài)的,但是主機(jī)到HWIC的管腳(TxData[7:0]、TxClk和TxCtrl)仍然是活動(dòng)的,從而命令可以從主機(jī)發(fā)送到HWIC。
8.主機(jī)核實(shí)HWIC FPGA已被正確下載以及可以通過(guò)經(jīng)由DDR總線讀取HWIC寄存器來(lái)操作DDR總線。
9.利用HWIC DDR總線繼續(xù)HWIC配置。
現(xiàn)將更詳細(xì)的描述DDR總線自身的操作。定義了兩類幀控制幀和數(shù)據(jù)幀。數(shù)據(jù)幀被用來(lái)在去往和來(lái)自線路接口途中在主機(jī)和HWIC之間傳遞較大的數(shù)據(jù)分組??刂茙举|(zhì)上較小,并且由于其執(zhí)行管理功能,因此其優(yōu)先于數(shù)據(jù)幀以減少等待時(shí)間。在兩類幀之間還有另一個(gè)重要的差別控制幀格式是在硬件中生成和接收的,而數(shù)據(jù)幀格式是由主機(jī)處理器確定的(DMA幀是例外,這將在下面描述)。
控制位(RxCtrl、TxCtrl)區(qū)分?jǐn)?shù)據(jù)幀和控制幀TxCtrl、RxCtrl=“0”指示流式數(shù)據(jù)正被傳遞,TxCtrl、RxCtrl=“1”指示控制信息正被傳遞。在本實(shí)施例中,Tx和Rx總線總在發(fā)送字節(jié)或者控制字節(jié)、或者數(shù)據(jù)字節(jié)、或者空閑字節(jié)。
控制幀現(xiàn)將描述當(dāng)前描述的實(shí)施例中控制幀的功能和實(shí)現(xiàn)方式。控制幀有三個(gè)主要功能1)利用停止、繼續(xù)開(kāi)始和發(fā)送控制字符來(lái)執(zhí)行流控制,2)用來(lái)執(zhí)行遺留并行端口的功能的讀/寫(xiě)命令,和3)中斷幀。下面將詳細(xì)描述每一種功能。
首先討論控制幀格式,當(dāng)且僅當(dāng)相應(yīng)控制位(TxCtrl或RxCtrl)為“1”時(shí)控制幀(或字節(jié))才被發(fā)送。當(dāng)且僅當(dāng)相應(yīng)控制位(TxCtrl或RxCtrl)為“0”時(shí)數(shù)據(jù)幀才被發(fā)送。因而,例如,在控制位被設(shè)為1的情況下發(fā)送的0xFF具有特定含義(數(shù)據(jù)幀的開(kāi)始/結(jié)束);而在控制位被設(shè)為0的情況下發(fā)送0xFF被解釋為數(shù)據(jù)。
現(xiàn)將詳細(xì)描述用于實(shí)現(xiàn)流控制的控制幀字符。
0xFF數(shù)據(jù)幀的開(kāi)始/結(jié)束或者數(shù)據(jù)幀之間的空閑(IDLE)。每個(gè)數(shù)據(jù)幀必須以0xFF控制字節(jié)開(kāi)始,并且在接收到0xFF控制字節(jié)后才結(jié)束。允許標(biāo)志共享(兩個(gè)數(shù)據(jù)幀相隔一個(gè)0xFF標(biāo)志)。
0xF0數(shù)據(jù)幀中間的空閑字節(jié)。該控制字符可以被插入到幀的中間以指示“空閑”狀況。接收者對(duì)該字節(jié)不作任何處理,而僅僅是丟棄它??臻e字節(jié)的目的是為了使數(shù)據(jù)幀永遠(yuǎn)不會(huì)在主機(jī)/HWIC接口上欠載運(yùn)行(underrun)。
0xFA中止(ABORT)。如果遇到該控制字符,則進(jìn)行中的任何數(shù)據(jù)幀被立即終止,并且生成“中止”。在這之后,必須發(fā)送至少一個(gè)0xFF標(biāo)志以識(shí)別下一個(gè)數(shù)據(jù)幀的開(kāi)始。要求中止字符主要是為了以信號(hào)表示過(guò)早終止的通用數(shù)據(jù)幀。如果沒(méi)有中止字符,則很難確定過(guò)早的終止,這是因?yàn)橥ㄓ脭?shù)據(jù)幀不包含長(zhǎng)度字段。然而,中止字符也可以用來(lái)以信號(hào)表示DMA數(shù)據(jù)幀的過(guò)早終止。
0xF3延緩發(fā)送請(qǐng)求。該控制字符可由主機(jī)或HWIC發(fā)送,以請(qǐng)求另一方延緩發(fā)送數(shù)據(jù)幀。這是為了流控制目的,以防止就要變滿的FIFO的溢出。一旦接收到“延緩發(fā)送”請(qǐng)求,發(fā)送方在停止發(fā)送所有的“數(shù)據(jù)幀”字節(jié)之前最多可以再發(fā)送32字節(jié)。
0xFC繼續(xù)開(kāi)始發(fā)送請(qǐng)求。該控制字符可由主機(jī)或HWIC發(fā)送,以在發(fā)送已被“延緩發(fā)送請(qǐng)求”控制字節(jié)延緩之后,請(qǐng)求另一方繼續(xù)開(kāi)始數(shù)據(jù)幀發(fā)送。
0xC0低水印(Water Mark)。在接收隊(duì)列量變得小于或等于接收隊(duì)列低水印寄存器值并且水印控制字節(jié)被以配置寄存器位7啟用時(shí),該控制字符從主機(jī)終接邏輯發(fā)送到HWIC。一旦發(fā)送了一個(gè)低水印控制字節(jié),則不會(huì)再發(fā)送更多的低水印控制字節(jié),直到首先發(fā)送高水印控制字節(jié)。
0xCF高水印。在接收隊(duì)列量變得大于或等于接收隊(duì)列高水印寄存器值并且水印控制字節(jié)被以配置寄存器位7啟用時(shí),該控制字符從主機(jī)終接邏輯發(fā)送到HWIC。一旦發(fā)送了一個(gè)高水印控制字節(jié),則不會(huì)再發(fā)送更多的高水印控制字節(jié),直到首先發(fā)送低水印控制字節(jié)。
在該實(shí)施例中,對(duì)低水印/高水印控制字節(jié)的HWIC響應(yīng)是設(shè)計(jì)特定的。典型的使用可能是在HWIC上啟用選擇性分組丟棄(例如,如果接收緩沖器環(huán)就要變滿,則丟棄數(shù)據(jù)分組,但是繼續(xù)發(fā)送控制分組)或者作為告警以允許HWIC向線路另一側(cè)上的發(fā)送者施加流控制。
以上的單字節(jié)控制字符可以僅被插入到數(shù)據(jù)幀中。0xF0空閑字節(jié)不能被插入到控制幀中,控制幀也不需要0xFF定界符(這是因?yàn)榭刂茙穷A(yù)定長(zhǎng)度的)。
現(xiàn)將更詳細(xì)的描述讀寫(xiě)控制命令。遺留WIC并行端口管腳已被調(diào)撥用于HWIC DDR數(shù)據(jù)總線。讀/寫(xiě)控制幀替代了遺留并行端口的喪失的功能。讀和寫(xiě)控制命令被主機(jī)用于經(jīng)由DDR總線讀取來(lái)自HWIC的寄存器數(shù)據(jù)。
為了維持遺留并行端口操作的低等待時(shí)間,這些控制幀會(huì)被立即插入到當(dāng)前正在進(jìn)行中的任何數(shù)據(jù)幀中(在字節(jié)邊界上),并且HWIC終接邏輯會(huì)立即響應(yīng),再次優(yōu)先于可能正在進(jìn)行中的任何數(shù)據(jù)幀。
在圖6A和6B中示出了用于傳送8位數(shù)據(jù)的HWIC讀和讀響應(yīng)命令的格式。讀命令包括標(biāo)識(shí)命令類型(例如8位、16位或32位讀)的操作碼、地址和CRC位,如圖6A所示。讀響應(yīng)命令包括標(biāo)識(shí)命令類型(例如8位、16位或32位讀響應(yīng))的操作碼、地址、讀數(shù)據(jù)和CRC位。
HWIC讀被從主機(jī)發(fā)送到HWIC以查詢所指示的存儲(chǔ)單元。HWIC將以“8位HWIC讀響應(yīng)”幀作出響應(yīng)。一旦接收到“HWIC讀”命令,HWIC終接邏輯就會(huì)讀取“地址”處的HWIC存儲(chǔ)單元,并將所得到的數(shù)據(jù)以如圖6B所示的幀格式發(fā)送到主機(jī)。
在圖7A和7B中示出了HWIC寫(xiě)和寫(xiě)響應(yīng)命令的格式。如圖7A所示,寫(xiě)命令包括標(biāo)識(shí)命令類型(例如8位、16位或32位寫(xiě))的操作碼、地址、要寫(xiě)入的數(shù)據(jù)和CRC位。如圖7B所示,寫(xiě)響應(yīng)包括操作碼。
HWIC寫(xiě)命令被從主機(jī)發(fā)送到HWIC以將發(fā)送的數(shù)據(jù)寫(xiě)入到期望的HWIC存儲(chǔ)單元。在HWIC終接邏輯成功地完成寫(xiě)入之后,其會(huì)將該字節(jié)發(fā)回主機(jī)以告知完成。主機(jī)終接邏輯應(yīng)當(dāng)在其接收到來(lái)自HWIC的HWIC寫(xiě)響應(yīng)控制字節(jié)之后才發(fā)起下一個(gè)HWIC讀或?qū)懨睢?br>
現(xiàn)將描述中斷控制幀。在圖8中示出了中斷控制幀的格式。在檢測(cè)到某些無(wú)掩蔽的中斷事件后,HWIC中斷幀被從HWIC發(fā)送到主機(jī)。16個(gè)“源”字段位對(duì)應(yīng)于HWIC終接邏輯中斷事件寄存器中的16位。在接收到HWIC中斷幀后,將會(huì)對(duì)“源”字段和這些事件寄存器位執(zhí)行邏輯或運(yùn)算以創(chuàng)建新的事件寄存器位值。這又可能中斷主機(jī)處理器(如果相應(yīng)事件寄存器位無(wú)掩蔽的話)。
HWIC中斷幀的使用通過(guò)消除主機(jī)輪詢HWIC寄存器以確定HWIC上的中斷源的必要,從而減少了中斷等待時(shí)間。HWIC中斷幀也可用來(lái)緩和在等待事件發(fā)生的同時(shí)使主機(jī)CPU輪詢HWIC寄存器的任何嘗試(這可能?chē)?yán)重地降低性能)。
某些主機(jī)平臺(tái)支持到主機(jī)的3級(jí)HWIC中斷-錯(cuò)誤中斷、管理/配置中斷和網(wǎng)絡(luò)中斷。為了支持支持這三種中斷類型的主機(jī),HWIC中斷幀位(源字段的位15-0)被劃分如下位15-12錯(cuò)誤中斷;位11-8管理/配置中斷;位7-0網(wǎng)絡(luò)中斷。每個(gè)中斷組被映射到單獨(dú)的中斷啟用和中斷事件寄存器。
數(shù)據(jù)幀有兩類數(shù)據(jù)幀DMA數(shù)據(jù)幀和通用數(shù)據(jù)幀。它們有不同的用途。
下面是DMA和通用數(shù)據(jù)幀之間的某些相似性(1)按照定義,當(dāng)且僅當(dāng)相應(yīng)控制位(TxCtrl或RxCtrl)為“0”時(shí)數(shù)據(jù)幀才被發(fā)送;(2)所有數(shù)據(jù)幀承載CRC8作為最后字節(jié);(3)所有數(shù)據(jù)幀以封裝頭部開(kāi)始。所有通用數(shù)據(jù)幀以0x11字節(jié)開(kāi)始。所有DMA數(shù)據(jù)幀以0x61、0x62、0x66或0x67開(kāi)始。
DMA和通用數(shù)據(jù)幀有不同的用途。一方面,DMA數(shù)據(jù)幀充當(dāng)用于HWIC發(fā)起的DMA事務(wù)的媒介。DMA數(shù)據(jù)幀允許HWIC讀和寫(xiě)主機(jī)存儲(chǔ)器。DMA數(shù)據(jù)幀是完全在硬件中處理的,從而主機(jī)處理器沒(méi)有必要介入這些事務(wù)。例如,簡(jiǎn)單寄存器訪問(wèn)對(duì)于讀寄存器塊是效率不高的,從而DMA幀被用于將塊或寄存器數(shù)據(jù)經(jīng)由DDR總線從HWIC傳送到主機(jī)。HWIC要求在主機(jī)處理器存儲(chǔ)器中建立的數(shù)據(jù)結(jié)構(gòu)支持其通用數(shù)據(jù)幀發(fā)送和接收操作。所有這些數(shù)據(jù)結(jié)構(gòu)都被主機(jī)處理器和主機(jī)終接邏輯經(jīng)由DMA訪問(wèn)共享。
另一方面,通用數(shù)據(jù)幀是主機(jī)驅(qū)動(dòng)軟件和HWIC終接邏輯之間達(dá)成一致的實(shí)現(xiàn)方式特定的幀。例如,數(shù)據(jù)幀可以僅僅是IP分組或ATM信元,HWIC終接邏輯將這些分組或信元發(fā)送到HWIC上的PHY設(shè)備,或者從PHY設(shè)備接收這些分組或信元?;蛘呖梢杂幸环N封裝,例如具有8位端口號(hào)的頭部,這8位端口號(hào)指示HWIC終接邏輯向/從哪一個(gè)PHY設(shè)備發(fā)送/接收分組。通用數(shù)據(jù)幀的用途是給予HWIC設(shè)計(jì)者以創(chuàng)建最適合所設(shè)計(jì)的特定HWIC的幀格式的靈活性。
DMA和通用數(shù)據(jù)幀的處理也不同。一方面,DMA數(shù)據(jù)幀起源于硬件中(如果是DMA請(qǐng)求則起源于HWIC上的硬件,如果是DMA響應(yīng)則起源于主機(jī)上的硬件)。在接收后它們也完全是在硬件中處理的,使得主機(jī)CPU完全不介入事務(wù)(可能直到結(jié)束,在事務(wù)完成后,這時(shí)經(jīng)由中斷告知主機(jī)DMA事務(wù)已發(fā)生)。
另一方面,通用數(shù)據(jù)幀幾乎完全是在主機(jī)一側(cè)的軟件中處理的。用于發(fā)送幀的任何特殊封裝(初始0x11字節(jié)的外部)必須由主機(jī)處理器創(chuàng)建。并且類似的接收幀也完全由主機(jī)處理器處理(在去除了引導(dǎo)的0x11字節(jié)后)。
在HWIC一側(cè),在必要時(shí)(除非處理器駐留于HWIC上)所有通用數(shù)據(jù)幀都被在硬件中處理,硬件有關(guān)于HWIC特定通用數(shù)據(jù)幀格式的實(shí)際知識(shí),主機(jī)CPU和HWIC硬件之間已經(jīng)就該格式達(dá)成了一致。
這兩類數(shù)據(jù)幀的靈活性是不同的。由于DMA數(shù)據(jù)幀是完全在硬件中處理的,因此其是不靈活的,并且對(duì)于不同HWIC必須保持完全相同的格式(如下所述)。
由于通用數(shù)據(jù)幀是由主機(jī)處理器創(chuàng)建和解析的,因此通用數(shù)據(jù)幀的格式是非常靈活的。希望主機(jī)CPU選擇有利于每個(gè)特定HWIC的設(shè)計(jì)的通用數(shù)據(jù)幀格式。
通用數(shù)據(jù)幀現(xiàn)將參考圖9描述通用數(shù)據(jù)幀的格式。
命令操作碼在HWIC和主機(jī)之間傳遞的通用數(shù)據(jù)幀必須以0x11字節(jié)開(kāi)始以指示通用數(shù)據(jù)幀封裝。
數(shù)據(jù)“數(shù)據(jù)”字段可以是任何長(zhǎng)度的任何數(shù)據(jù)(當(dāng)然,假定其遵循由主機(jī)驅(qū)動(dòng)軟件和HWIC終接邏輯就其達(dá)成一致的實(shí)現(xiàn)方式特定的格式)。例如,這可以是在頭部中封裝有端口號(hào)或VC號(hào)的IP分組、ATM信元或PPP幀。
(可選的)Rx標(biāo)志對(duì)于從HWIC傳遞到主機(jī)平臺(tái)的通用數(shù)據(jù)幀,Rx標(biāo)志字節(jié)的較高2位被寫(xiě)入到接收緩沖器描述符字1的位23-22。這是為了在在將整個(gè)幀傳遞到主機(jī)之前不存儲(chǔ)整個(gè)幀的HWIC上能夠方便地傳遞可能不易于用于插入到通用數(shù)據(jù)幀的開(kāi)始的錯(cuò)誤/狀態(tài)信息,例如直到幀的結(jié)束到達(dá)PHY才完成的線路CRC計(jì)算。
可選的Rx標(biāo)志字節(jié)也被放置在接收緩沖器中,并且在接收緩沖器描述符的數(shù)據(jù)長(zhǎng)度字段中被計(jì)數(shù),從而如果不需要Rx標(biāo)志功能,則該字節(jié)可用于幀數(shù)據(jù),只要主機(jī)處理器忽略接收緩沖器描述符(字1的位23-22)中的Rx標(biāo)志即可。該字節(jié)不為發(fā)送方向提供任何特殊功能,并且應(yīng)當(dāng)用于有效幀數(shù)據(jù)。
CRC8對(duì)所有幀字節(jié)(除了CRC8字段自身)計(jì)算的8位CRC。另外,對(duì)任何插入的控制幀不計(jì)算CRC8。
DMA數(shù)據(jù)幀現(xiàn)將描述DMA幀。有三類DMA事務(wù)HWIC到主機(jī)DMA讀請(qǐng)求,主機(jī)到HWIC DMA讀響應(yīng)和HWIC到主機(jī)DMA寫(xiě)請(qǐng)求。所有DMA事務(wù)都由主機(jī)發(fā)起?,F(xiàn)將描述這些幀格式中的每一種。
在圖10中示出了HWIC到主機(jī)DMA讀請(qǐng)求幀的格式。
DMA讀操作碼該字節(jié)應(yīng)當(dāng)被設(shè)為0x61以指示HWIC正在請(qǐng)求來(lái)自主機(jī)的DMA讀。
地址主機(jī)存儲(chǔ)器空間中DMA操作的32位起始地址。
長(zhǎng)度所請(qǐng)求的DMA讀的字節(jié)的16位長(zhǎng)度-主機(jī)應(yīng)當(dāng)讀取多少存儲(chǔ)器并將其發(fā)送回HWIC。
CRC8對(duì)所有幀字節(jié)(除了CRC8字段自身)計(jì)算的8位CRC。另外,對(duì)任何插入的控制幀不計(jì)算CRC8。
現(xiàn)將參考圖11描述主機(jī)到HWIC DMA讀響應(yīng)幀的格式。該幀是響應(yīng)于“HWIC到主機(jī)DMA讀請(qǐng)求”幀而從主機(jī)發(fā)送到HWIC的。
DMA讀響應(yīng)操作碼該字節(jié)應(yīng)當(dāng)被設(shè)為0x62以指示這是“主機(jī)到HWIC DMA讀響應(yīng)”幀。
地址主機(jī)存儲(chǔ)器空間中DMA操作的32位起始地址。
長(zhǎng)度“數(shù)據(jù)”字段中接下來(lái)的字節(jié)的16位數(shù)目。
頭部CRC8對(duì)所有先前的幀字節(jié)(除了“頭部CRC8”字段自身)計(jì)算的8位CRC。
數(shù)據(jù)來(lái)自主機(jī)存儲(chǔ)器的數(shù)據(jù)字節(jié)。
幀CRC8對(duì)所有幀字節(jié)(除了CRC8字段自身)計(jì)算的8位CRC。另外,對(duì)任何插入的控制幀不計(jì)算CRC8。
現(xiàn)將參考圖12描述HWIC到主機(jī)DMA寫(xiě)請(qǐng)求幀。
DMA寫(xiě)操作碼該字節(jié)應(yīng)當(dāng)被設(shè)為0x66或0x67以指示HWIC正在請(qǐng)求到主機(jī)的DMA寫(xiě)。
0x66=在該DMA事務(wù)完成之后不中斷主機(jī)0x67=在該DMA事務(wù)完成之后中斷主機(jī)。
如果使用操作碼0x67,則主機(jī)終接邏輯會(huì)在所有數(shù)據(jù)都已被接收并被發(fā)送到主機(jī)存儲(chǔ)器或主機(jī)存儲(chǔ)器控制器之后中斷主機(jī)CPU。注意,這并不一定保證數(shù)據(jù)會(huì)在主機(jī)CPU被中斷之前被完全寫(xiě)入到主機(jī)存儲(chǔ)器中;然而,在這種情況下,操作碼0x67的目的是使中斷和存儲(chǔ)器寫(xiě)完成之間的等待時(shí)間盡可能的小。這樣通過(guò)使CPU必須中止并隨后重試的情況(當(dāng)其接收到0x67中斷,但是隨后發(fā)現(xiàn)需要的數(shù)據(jù)不在存儲(chǔ)器中時(shí))達(dá)到最少,從而增強(qiáng)了系統(tǒng)性能。
地址主機(jī)存儲(chǔ)器空間中DMA操作的32位起始地址。注意主機(jī)終接邏輯會(huì)實(shí)現(xiàn)地址掩碼功能以防止主機(jī)存儲(chǔ)器的各個(gè)部分受到意外的/錯(cuò)誤的HWIC寫(xiě)。
長(zhǎng)度“數(shù)據(jù)”字段中接下來(lái)的字節(jié)的16位數(shù)目。
頭部CRC8對(duì)所有先前的幀字節(jié)(除了“頭部CRC8”字段自身)計(jì)算的8位CRC。
數(shù)據(jù)要寫(xiě)入到主機(jī)存儲(chǔ)器的數(shù)據(jù)字節(jié)。
幀CRC8對(duì)所有幀字節(jié)(即,以“命令操作碼開(kāi)始”)(除了CRC8字段自身)計(jì)算的8位CRC。
緩沖器地址擴(kuò)展如上所述,若干種主機(jī)存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)與HWIC相關(guān)聯(lián),并且所有這些數(shù)據(jù)結(jié)構(gòu)都由主機(jī)處理器和主機(jī)終接邏輯經(jīng)由DMA訪問(wèn)共享。
發(fā)送和接收緩沖器描述符是包括緩沖器的主機(jī)存儲(chǔ)器中的32位緩沖器地址的主機(jī)數(shù)據(jù)結(jié)構(gòu),該緩沖器包含要利用通用數(shù)據(jù)幀傳送的數(shù)據(jù)。
該實(shí)施例包括發(fā)送和接收緩沖器地址擴(kuò)展寄存器,其允許通過(guò)附加的8位來(lái)擴(kuò)展在描述符中保存的緩沖器地址。如果主機(jī)終接邏輯不支持多于32位的主機(jī)地址空間,則該寄存器保存零值。
如果支持地址擴(kuò)展,則HWIC終接邏輯使用8位發(fā)送緩沖器擴(kuò)展位來(lái)將緩沖器地址擴(kuò)展到40位地址,如下所示{“發(fā)送緩沖器擴(kuò)展(8位)”,“發(fā)送緩沖器地址(32位)”}={“擴(kuò)展后的地址”(40位)}本發(fā)明的組件可以實(shí)現(xiàn)為存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上的由數(shù)字計(jì)算機(jī)執(zhí)行的程序代碼。計(jì)算機(jī)可讀介質(zhì)可以包括磁介質(zhì)、光介質(zhì)、對(duì)數(shù)字信息編碼的電磁場(chǎng)等等。
已經(jīng)參考優(yōu)選實(shí)施例描述了本發(fā)明。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),備選和替換方案是清楚的。例如,所描述的各種幀的格式只是示例性的,本領(lǐng)域技術(shù)人員可以采用其他幀格式。另外,被占用以用于高速接口的遺留接口的管腳根據(jù)遺留接口的管腳功能而有所不同。因此,本發(fā)明只能由所附權(quán)利要求限定。
權(quán)利要求
1.一種用于主機(jī)子卡接口的雙數(shù)據(jù)速率(DDR)總線系統(tǒng),所述主機(jī)子卡接口與用來(lái)使遺留子卡與主機(jī)接口的遺留接口是管腳兼容的,所述遺留接口包括被所述主機(jī)用來(lái)向所述子卡上的寄存器寫(xiě)入值的并行端口,所述并行端口利用主機(jī)子卡連接器上的管腳子集,所述總線系統(tǒng)包括子卡終接邏輯塊,其耦合到先前用于所述并行端口的管腳子集,并且將所述管腳子集重定義為接收管腳集合、接收控制管腳、接收時(shí)鐘管腳、發(fā)送管腳集合、控制管腳和發(fā)送時(shí)鐘管腳;主機(jī)終接邏輯塊,其耦合到先前用于所述并行端口的管腳子集,并且將所述管腳子集重定義為接收管腳集合、接收控制管腳、接收時(shí)鐘管腳、發(fā)送管腳集合、發(fā)送控制管腳和發(fā)送時(shí)鐘管腳;其中所述子卡終接邏輯實(shí)現(xiàn)所述子卡上的存儲(chǔ)器或寄存器和主機(jī)存儲(chǔ)器之間的DMA傳送,并且其中利用通用數(shù)據(jù)幀傳送分組數(shù)據(jù),利用控制幀斷言控制,并且在所述控制管腳上斷言控制信號(hào)以指示控制幀;其中所述主機(jī)終接邏輯利用讀和寫(xiě)幀來(lái)實(shí)現(xiàn)所述遺留并行端口的功能以讀和寫(xiě)數(shù)據(jù)到子卡寄存器,其中利用通用數(shù)據(jù)幀傳送分組數(shù)據(jù),利用DMA數(shù)據(jù)幀傳送DMA數(shù)據(jù),利用控制幀斷言控制,并且在所述控制管腳上斷言控制信號(hào)以指示控制幀。
2.如權(quán)利要求1所述的系統(tǒng),其中所述子卡終接邏輯利用中斷控制幀來(lái)中斷所述主機(jī)上的處理器。
3.如權(quán)利要求1所述的系統(tǒng),其中所述主機(jī)接口和子卡接口通過(guò)在數(shù)據(jù)幀的中間插入空閑控制幀以防止數(shù)據(jù)幀欠載運(yùn)行來(lái)實(shí)現(xiàn)流控制。
4.如權(quán)利要求1所述的系統(tǒng),其中主機(jī)存儲(chǔ)器包括具有地址字段的緩沖器描述符,所述地址字段具有指定數(shù)目的字節(jié);并且其中所述子卡包括擴(kuò)展寄存器,該擴(kuò)展寄存器保存與緩沖器描述符中保存的地址相連接以擴(kuò)展所述緩沖器描述符中保存的地址的位。
5.如權(quán)利要求1所述的系統(tǒng),其中所述遺留接口包括耦合到主機(jī)子卡連接器上的第二管腳子集的串行外設(shè)接口,并且其中所述子卡包括用于存儲(chǔ)子卡標(biāo)識(shí)信息的非易失性存儲(chǔ)器,所述子卡標(biāo)識(shí)信息包括指示所述子卡是實(shí)現(xiàn)所述遺留接口還是所述DDR總線的信息;并且其中所述主機(jī)終接邏輯塊利用所述遺留串行外設(shè)接口來(lái)讀所述子卡上的非易失性存儲(chǔ)器,并且如果所述子卡標(biāo)識(shí)信息指示所述子卡支持所述遺留接口則將所述第一管腳集合配置為所述遺留并行端口,而如果所述子卡標(biāo)識(shí)信息指示所述子卡支持所述DDR總線接口則將所述第一管腳集合配置為所述DDR總線。
6.一種總線系統(tǒng)接口,包括具有主機(jī)總線接口的主機(jī),所述主機(jī)總線接口與定義并行端口和串行總線的遺留總線是管腳兼容的,所述主機(jī)總線接口包括串行總線邏輯,所述串行總線邏輯確定所連接的子卡是遺留子卡還是高速子卡,并且所述主機(jī)總線接口還包括DDR總線邏輯,所述DDR總線邏輯在檢測(cè)到高速子卡時(shí)重定義管腳集合以實(shí)現(xiàn)雙數(shù)據(jù)速率(DDR)總線;以及高速子卡,其具有實(shí)現(xiàn)DDR總線和串行總線的子卡總線接口,并且包括標(biāo)識(shí)信息,所述標(biāo)識(shí)信息允許所述主機(jī)總線接口確定高速子卡是否被連接。
7.一種總線系統(tǒng),包括與定義并行端口和串行總線的遺留總線管腳兼容的主機(jī),所述主機(jī)包括用于與所述串行總線接口的裝置;耦合到所述用于與所述串行總線接口的裝置,并且用于確定所連接的子卡是遺留子卡還是高速子卡的裝置;用于在檢測(cè)到高速子卡時(shí)重定義管腳集合以實(shí)現(xiàn)雙數(shù)據(jù)速率(DDR)總線的裝置;以及高速子卡,包括用于實(shí)現(xiàn)所述DDR總線和所述串行總線的裝置;和用于提供標(biāo)識(shí)信息的裝置,所述標(biāo)識(shí)信息允許所述主機(jī)總線接口確定高速子卡是否被連接。
8.如權(quán)利要求7所述的系統(tǒng),還包括在所述主機(jī)處用于利用讀和寫(xiě)事務(wù)來(lái)實(shí)現(xiàn)所述并行端口的功能的裝置。
9.如權(quán)利要求7所述的系統(tǒng),還包括在所述子卡處用于利用中斷控制幀來(lái)中斷所述主機(jī)的裝置。
10.如權(quán)利要求2所述的系統(tǒng),其中所述主機(jī)包括存儲(chǔ)器,所述存儲(chǔ)器保存具有地址字段的緩沖器描述符,所述地址字段具有指定數(shù)目的字節(jié),所述系統(tǒng)還包括在所述子卡處用于利用在所述子卡處保存的位來(lái)擴(kuò)展所述緩沖器描述符中保存的地址的裝置。
11.一種總線系統(tǒng)接口,包括具有主機(jī)總線接口的主機(jī),所述主機(jī)總線接口與定義并行端口和串行總線的遺留總線是管腳兼容的,所述主機(jī)總線接口包括串行總線邏輯,所述串行總線邏輯確定所連接的子卡是遺留子卡還是高速子卡,并且所述主機(jī)總線接口包括DDR總線邏輯,所述DDR總線邏輯在檢測(cè)到高速子卡時(shí)重定義管腳集合以實(shí)現(xiàn)雙數(shù)據(jù)速率(DDR)總線。
全文摘要
一種主機(jī)子卡接口與遺留接口是管腳兼容的,但是重定義管腳子集以實(shí)現(xiàn)高帶寬雙數(shù)據(jù)速率(DDR)總線。通過(guò)檢查子卡上的cookie,主機(jī)平臺(tái)確定子卡是支持DDR總線還是支持遺留接口,然后配置管腳子集以實(shí)現(xiàn)遺留接口或DDR總線。
文檔編號(hào)G06F13/42GK1950810SQ200480029321
公開(kāi)日2007年4月18日 申請(qǐng)日期2004年10月13日 優(yōu)先權(quán)日2003年10月17日
發(fā)明者詹姆斯·埃弗雷特·格理施瓦, 麥崎·拉瑪爾·海尼格爾 申請(qǐng)人:思科技術(shù)公司