国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      串行高級技術(shù)附件(sata)交換機的制作方法

      文檔序號:7593344閱讀:348來源:國知局
      專利名稱:串行高級技術(shù)附件(sata)交換機的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明通常涉及串行高級技術(shù)附件ATA(SATA)交換機,尤其是涉及到具有兩個主機端口以及一個設(shè)備端口的交換機,所述設(shè)備端口允許兩個主機端口同時向設(shè)備端口進行訪問。
      背景技術(shù)
      SATA協(xié)議概述在此使用的“設(shè)備”指的是遵守行業(yè)所采用的現(xiàn)有標準的外部設(shè)備。SATA是用于大容量存儲設(shè)備的并行高級技術(shù)附件(ATA)結(jié)構(gòu)的高速串行鏈路置換。所采用的串行鏈路是點到點高速差動鏈路,該鏈路使用為本領(lǐng)域普通技術(shù)人員所熟知的千兆位技術(shù)以及8b/10b編碼。所述SATA協(xié)議基于類似于開放系統(tǒng)互連(OSI)參考模型的層通信模型。下面介紹概述。對于更多的細節(jié),請讀者參看在此引入作為參考的SATA標準。所述SATA規(guī)范在2001年8月29日、題為“SerialATAHigh Speed Serialized ATA Attachment”的修訂版1.0的出版物,以及2002年10月16日的、題為“Serial ATA IIExtensionsto Serial ATA 1.0”的修訂版1.0的出版物中提供,這兩部分內(nèi)容通??梢詮腟erial ATA工作組網(wǎng)站www.serialata.com獲得。
      在SATA協(xié)議中,每層協(xié)議與其對方直接地或者間接地進行通信。

      圖1a示出了SATA協(xié)議通信層20。物理(Phy)層(PL)21管理SATA單元之間的物理通信。PL服務(wù)包括·串行化來自于鏈路層(LL)22的并行輸入并且發(fā)送差動不歸零(NRZ)到串行流。
      ·接收差動NRZ串行流,從串行比特流中提取數(shù)據(jù)(并且優(yōu)選的是時鐘),解串所述串行流,并且向LL 22提供校準的位和字的并行輸出。
      ·執(zhí)行加電排序,并且執(zhí)行速度交涉。
      ·提供指定的帶外(00B)信號檢測和生成所述串行ATA鏈路由依據(jù)現(xiàn)有標準的協(xié)議定義,其具有四層通信,即用于在物理級進行通信的物理層、鏈路層、傳輸層和應(yīng)用層,或者有時將應(yīng)用層稱為命令層。發(fā)送機和接收機無法直接彼此通信,而是在到達另一個的相應(yīng)層之前、它們必須通過它們系統(tǒng)的其它層。例如,為了使發(fā)送機的物理層與接收機的傳輸層進行通信,必須首先通過發(fā)送機的鏈路、傳輸和應(yīng)用層,然后通過串行ATA鏈路至接收機的應(yīng)用層,最后到達接收機的傳輸層。
      通信或者交換的基本單位是幀。幀包括幀開始(SOP)基元、幀信息結(jié)構(gòu)(FIS)、在FIS的內(nèi)容上計算的循環(huán)冗余校驗(CRC)以及幀結(jié)束(EOF)基元。所述串行ATA結(jié)構(gòu)已經(jīng)定義了一種規(guī)范,其中提供了幀的定義,并且所述定義將要遍及此文檔使用?;怯糜诳刂埔约疤峁┐芯€路的狀態(tài)的雙字(Dword)實體。所述串行ATA結(jié)構(gòu)已經(jīng)定義了這樣一種規(guī)范,其中提供了允許的基元的定義,并且此定義將要遍及此文檔使用。
      圖1b示出了幀30的例子。在圖1b中,所述幀從SOF基元(primitive)30a開始,繼之以第一FIS內(nèi)容30b,后面是用于指示發(fā)送機沒有可用數(shù)據(jù)的HOLD基元30c,繼之以第二FIS內(nèi)容30d,繼之以發(fā)送以便確認接收到HOLD基元的HOLDA基元30e,HOLD基元由接收機發(fā)送,用于指示接收機緩沖器處于‘未就緒’狀態(tài),繼之以CRC 30f以及EOF基元30g。
      在圖1b中,所述幀包括用于流量控制的兩個基元HOLD和HOLDA基元。HOLD基元表明發(fā)送或者接收FIS內(nèi)容的不可能性。HOLDA基元被發(fā)送以便確認HOLD基元的接收。例如,當接收節(jié)點檢測到它的緩沖器幾乎是滿的時,它將向發(fā)送節(jié)點發(fā)送一個HOLD基元,請求發(fā)送機節(jié)點停止,而當所述緩沖器就緒以接收更多數(shù)據(jù)時,所述接收節(jié)點將停止發(fā)送HOLD基元。所述發(fā)送節(jié)點發(fā)送HOLDA基元,以確認HOLD基元的接收。直到收到HOLDA基元,所述接收節(jié)點才繼續(xù)接收數(shù)據(jù)。為了避免緩沖器溢出,所述SATA協(xié)議在發(fā)送HOLD基元和接收HOLDA基元節(jié)點之間要求20雙字的最大延遲。
      如圖1d所示,存在多種不同的幀類型。例如,為了經(jīng)由直接存儲器存取(DMA)發(fā)送數(shù)據(jù),使用了其后為DMA data FIS(DMA數(shù)據(jù)FIS)的稱為DMA setup FIS(DMA建立FIS)的幀。通常存在三種FIS結(jié)構(gòu),一種用于命令、一種用于建立傳輸,而另一種用于關(guān)于傳輸?shù)臄?shù)據(jù)。每種幀結(jié)構(gòu)用于不同的目的。如上所述,以及如圖1c所示,發(fā)送幀的命令類型以便執(zhí)行命令,將建立幀用于準備命令的數(shù)據(jù)傳輸階段,而將數(shù)據(jù)幀用于傳輸數(shù)據(jù)。在所述命令層,所述系統(tǒng)通過任務(wù)文件與命令層通信。所述命令層使用兩個不同的總線來通信,一個用于傳輸數(shù)據(jù)FIS,而另一個用于傳輸非數(shù)據(jù)FIS。雖然在此討論了2種總線,但是也可以采用單個總線。
      鏈路層(LL)22基于來自于PL 21的控制信號來發(fā)送與接收幀、發(fā)送基元,并且接收來自于物理層(PL)21的基元,所述基元被轉(zhuǎn)換為控制信號并發(fā)送到傳輸層(TL)23。
      傳輸層(TL)23無須知道如何發(fā)送與接收幀。TL 23簡單地構(gòu)造用于傳輸以及分解所接收的FIS的幀信息結(jié)構(gòu)(FIS的)。
      圖1d示出了FIS類型。所述FIS類型概括如下-寄存器FIS(Register FIS)-主機至設(shè)備40(i)-寄存器FIS(Register FIS)-設(shè)備至主機40(ii)-DMA啟動FIS(DMA Activate FIS)40(iii)-DMA建立FIS(DMA Setup FIS)40(iv)-設(shè)置設(shè)備位FIS(Set Device Bits FIS)40(v)-PIO建立FIS(PIO Setup FIS)40(vi)-數(shù)據(jù)FIS(Data FIS)40(vii)-BIST啟動FIS(BIST Activate FIS 40)(viii)在串行ATA鏈路的應(yīng)用層中,主機訪問一組寄存器,所述寄存器有ATA寄存器、數(shù)據(jù)端口、錯誤、特征、扇區(qū)、柱面(Cylinder)低部、柱面高部、狀態(tài)以及命令。由此,所述應(yīng)用層依照與ATA標準相同的語言進行通信,并且此操作在命令層中進行。由此,所述命令層使用與ATA鏈路相同的寄存器組。所述寄存器組被稱為任務(wù)文件寄存器。
      所述命令層(CL)或者應(yīng)用層(AL)24與TL 23進行交互,以便發(fā)送/接收命令、數(shù)據(jù)以及狀態(tài)。所述CL 24包括寄存器塊寄存器;亦稱任務(wù)文件(TF),用于傳送命令或者郵寄狀態(tài),其相當于由傳統(tǒng)的并行ATA提供的操作。
      圖1c示出了并行ATA的屏蔽寄存器塊(Shadow Register Block)結(jié)構(gòu)31的簡化版本。所述屏蔽寄存器塊包括-數(shù)據(jù)端口31dp-錯誤寄存器31e-特征寄存器31f-扇區(qū)計算31sc-扇區(qū)編號31sn-柱面低部31cl-柱面高部31ch-設(shè)備/頭部31dev-狀態(tài)31s-命令31c-交替狀態(tài)31as-設(shè)備控制31dc包括部分或者所有1層功能的SATA端口將在此作為SATA 1級端口來介紹。包括部分或者所有1和2層功能的SATA端口將作為SATA2級端口在此介紹。包括部分或者所有1、2和3層功能的SATA端口將作為SATA 3級端口來介紹。包括部分或者所有1、2、3和4層功能的SATA端口將作為SATA 4級端口在此介紹。術(shù)語SATA端口指的是包括1級或者2級或者3級或者4級的通用端口。所述SATA層用于耦合主機或者設(shè)備。術(shù)語SATA主機端口指的是與主機相連的SATA端口。術(shù)語SATA設(shè)備端口指的是與設(shè)備相連的SATA端口。例如,如果將圖2a的輸出高速差動發(fā)送信號51tx和輸入差動接收信號51rx與主機相連,那么SATA端口是SATA主機端口。同樣地,如果將圖2a的輸出高速差動發(fā)送信號51tx和輸入差動接收信號51rx與設(shè)備相連,那么SATA端口是SATA設(shè)備端口。
      圖2a和2b示出了SATA端口50的框圖。SATA端口50包括PL電路51、LL電路52、TL電路53和CL電路54。將所述PL電路51與輸出高速差動發(fā)送信號51tx和輸入差動接收信號51rx相連,將PL電路51經(jīng)由鏈路發(fā)送總線52t和鏈路接收總線52r與LL電路52相連。所述PL電路51包括模擬前端(AFE)51a、物理初始化狀態(tài)機(Phy ISM)51b、帶外(OOB)檢測器51c、物理/鏈路界面51e。物理/鏈路界面塊選擇性地包括彈性先進先出(FIFO)51ef和發(fā)送FIFO51tf。所述物理/鏈路界面51e經(jīng)由鏈路發(fā)送總線52t和鏈路接收總線52r提供PL電路51至LL電路52的耦合。由Phy ISM 51b控制的多路復(fù)用器51d選擇鏈路發(fā)送數(shù)據(jù)51t或者來自于Phy ISM 51b的初始化序列51s。所述AFE 51a包括物理接收機和物理發(fā)送機。所述AFE 51a將差動發(fā)送信號51tx和差動接收信號51rx耦合至接收數(shù)據(jù)51r和發(fā)送數(shù)據(jù)51td。所述物理發(fā)送機由物理發(fā)送機啟動(PhyTxEn)信號51te啟動。當所述物理發(fā)送機被禁止時,所述物理輸出處于空閑總線狀態(tài)(Tx差分信號減少至零)。OOB檢測器51c檢測帶外(OOB)信號51o。所述OOB信號51o包括COMRESET、COMWAKE。
      所述LL電路52經(jīng)由鏈路發(fā)送總線52t和鏈路接收總線52r與PL電路51相連。所述LL電路52經(jīng)由傳輸發(fā)送總線53t、傳輸接收總線53r和傳輸控制/狀態(tài)總線53c與TL電路53相連。所述TL電路53包括數(shù)據(jù)FIS先進先出(FIFO)電路53a、非數(shù)據(jù)FIS寄存器塊53b和多路復(fù)用器53d,所述電路53a用于在傳輸期間保持數(shù)據(jù)FIS,所述塊53b用于保持非數(shù)據(jù)FIS。數(shù)據(jù)FIS FIFO 53a是雙端口FIFO,每個端口均具有獨立的輸入和輸出。所述FIFO 53a包括第一FIFO端口53a(1)和第二端口53a(2),所述第一端口還包括第一輸入端口53a(i1)和第一FIFO輸出端口53a(o1),所述第二端口還包括第二FIFO輸入端口53a(i2)和第二輸出端口53a(o2)。
      第一FIFO端口53a(1)經(jīng)由所述傳輸發(fā)送總線53t、傳輸接收總線53r和傳輸控制/狀態(tài)總線53c與LL電路52耦合。第二FIFO端口53a(2)經(jīng)由數(shù)據(jù)FIS接收總線54r和數(shù)據(jù)FIS發(fā)送總線54t與CL電路54耦合。TL電路53經(jīng)由任務(wù)文件輸入總線54i和任務(wù)文件輸出總線54o與CL電路54耦合。多路復(fù)用器53d在第一FIFO輸出端口53a(o1)和任務(wù)文件輸入總線54i之間選擇。CL電路54包括任務(wù)文件54a。任務(wù)文件54a經(jīng)由任務(wù)文件輸入總線54i和任務(wù)文件輸出總線54o與TL電路53耦合。任務(wù)文件54a經(jīng)由端口任務(wù)文件輸入總線56i和端口任務(wù)文件輸出總線56o與系統(tǒng)總線57耦合,另外,CL電路54經(jīng)由數(shù)據(jù)輸入總線55i和數(shù)據(jù)輸出總線55o將數(shù)據(jù)FIS接收總線54r和數(shù)據(jù)FIS發(fā)送總線54t耦合至系統(tǒng)總線57。配置信號配置用于主機或設(shè)備操作的SATA端口的操作。可以將CL電路54經(jīng)由單個總線耦合至系統(tǒng)總線57,用于數(shù)據(jù)端口和任務(wù)文件訪問。
      現(xiàn)有技術(shù)的SATA交換機允許兩個不同的主機連接同一設(shè)備,然而,當將一臺主機與所述設(shè)備相連時,另一臺主機無法訪問所述設(shè)備。將進一步地解釋現(xiàn)有技術(shù)系統(tǒng)的這種限制?,F(xiàn)有技術(shù)的SATA交換機不允許兩臺主機同時訪問所述設(shè)備。
      圖3a示出了使用現(xiàn)有技術(shù)SATA交換機14的系統(tǒng)10。示出的系統(tǒng)10包括與SATA主機總線適配器(SATA HBA)11a耦合的主機11,所示出的SATA HBA 11a經(jīng)由SATA鏈路11b與SATA交換機14的主機端口14a耦合,所述系統(tǒng)10還包括主機12,所示出的主機12與SATA HBA 12a耦合,所示出的SATA HBA 12a經(jīng)由SATA鏈路12b與SATA交換機14主機端口14b耦合。示出的SATA交換機14的設(shè)備端口14c經(jīng)由SATA鏈路16a與存儲單元16耦合,所述存儲單元是諸如硬盤驅(qū)動器(HDD)或者磁帶機或者光驅(qū)之類的。所述存儲單元16是設(shè)備的一個例子。
      選擇信號15選擇SATA交換機14的主機端口14a或者主機端口14b。將與SATA交換機上的當前選擇的主機耦合的端口視為有效端口,而將沒有與當前選擇的主機耦合的端口視為無效端口。在此使用的有效主機表示當前被選擇的主機。
      可以使用兩種方法來選擇有效端口,它們是頻帶端口選擇和基于協(xié)議的端口選擇。在頻帶端口選擇方法中,SATA交換機14基于選擇信號15的狀態(tài),選擇性地將主機11或者主機12耦合至設(shè)備16。用于生成選擇信號15的機制是取決于系統(tǒng)的?;趨f(xié)議的端口選擇對無效的主機端口使用SATA協(xié)議,以便令交換機成為有效。所述基于協(xié)議的端口選擇使用SATA OOB信號的序列來選擇有效端口。上述的方法只允許單個主機在任意給定時間訪問存儲單元。將此類SATA交換機稱為簡單的無故障(failover)交換機。
      圖3b示出了SATA至ATA交換機64的系統(tǒng)應(yīng)用。SATA至ATA交換機64包括與主機11耦合的SATA端口64a、與主機12耦合的SATA端口64b和與存儲單元66耦合的ATA端口64c。在系統(tǒng)60中,所述存儲單元66具有ATA鏈路,并且將ATA端口64c經(jīng)由ATA鏈路66a與存儲單元66耦合。
      在如果第一主機發(fā)生故障則系統(tǒng)切換到備用的第二主機的應(yīng)用中使用簡單的無故障交換機,由此簡單地命名為無故障交換機。在這些類型的系統(tǒng)中,系統(tǒng)的操作被中斷并且出現(xiàn)“假信號”。顯然,當發(fā)生故障時,無法經(jīng)受故障的任務(wù)關(guān)鍵性(mission-critical)系統(tǒng)要求連續(xù)的系統(tǒng)操作。任務(wù)關(guān)鍵性系統(tǒng)由此要求兩臺主機并行訪問存儲單元,因此,任務(wù)關(guān)鍵性系統(tǒng)無法使用簡單的無故障交換機,而是使用雙端口的存儲單元,其中所述存儲單元可以從兩個端口同時被訪問。光纖信道(FC)硬盤驅(qū)動器(HDD)是典型的雙端口的存儲單元,并且通常被用于任務(wù)關(guān)鍵性系統(tǒng)。典型地,F(xiàn)C HDD比SATAHDD貴幾個數(shù)量級。然而,在任務(wù)關(guān)鍵性系統(tǒng)的存儲單元中使用價格比較低廉的ATA或者SATA HDD的是經(jīng)濟上的需要。然而,ATA或者SATA HDD是單端口的,并且簡單的無故障交換機不許由多臺主機并行訪問存儲單元。
      因此,需要允許由主機訪問諸如存儲單元之類的設(shè)備的電子交換機,其中允許從兩個或更多主機端口經(jīng)由SATA鏈路或者ATA鏈路來并行訪問單端口存儲單元,其中所述單端口存儲單元與交換機的設(shè)備端口相連。
      SATA交換機將產(chǎn)生信號通路中的附加延遲,這樣做可以產(chǎn)生故障從而符合用于信號通路的SATA協(xié)議定時必要條件的定時要求。對于具有交換附加延遲的SATA交換機來說,需要符合SATA協(xié)議的定時要求。根據(jù)記述的上下文關(guān)系,這里使用的“主機”指的是圖3a和3b的主機11或者12。同樣地,這里使用的“設(shè)備”指的是圖3a和3b的設(shè)備16。
      現(xiàn)有技術(shù)的SATA交換機現(xiàn)有技術(shù)系統(tǒng)的簡單的無故障交換機在1層內(nèi)執(zhí)行交換。圖4示出了在1層內(nèi)進行交換的現(xiàn)有技術(shù)的簡單無故障交換機(SFX)100的框圖。示出的交換機100包括PL電路111、PL電路121、PL電路131、有效主機選擇電路141、多路復(fù)用器142和交換初始化電路144。PL電路111、121和131是PL電路51(圖2b中所示)的改進型,用于提供OOB信號和控制信號111i、121i和131i,后者分別為PL電路111,121和131提供一些控制信號。PL電路111被配置為連接至主機,并且與輸出高速差動發(fā)送信號111tx和輸入差動接收信號111rx相連。PL電路111的鏈路接收總線112r與多路復(fù)用器142相連。
      PL電路111的鏈路發(fā)送總線112t與PL電路131的鏈路接收總線132r相連,并且PL電路111的OOB信號111o與交換初始化電路144和有效主機選擇電路141相連,PL電路111的Phy ISM控制信號111i與交換初始化電路144相連。PL電路111的PhyTxEn 111en信號與有效主機選擇電路141相連。PL電路121被配置為連接至主機,并且與輸出高速差動發(fā)送信號121tx和輸入差動接收信號121rx相連,PL 121的鏈路接收總線122r與多路復(fù)用器142相連,PL電路121的鏈路發(fā)送總線122t與PL電路131的鏈路接收總線132r相連,PL電路121的OOB信號121o與交換初始化電路144和有效主機選擇電路141相連。PL電路121的Phy ISM控制信號121i與交換初始化電路144相連。PL電路121的PhyTxEn信號121en與有效主機選擇電路141相連。PL電路131被配置為連接至設(shè)備,并且與輸出高速差動發(fā)送信號131tx和輸入差動接收信號131rx相連,PL電路131的鏈路接收總線132r與PL電路111的鏈路發(fā)送總線112t以及PL電路121的鏈路發(fā)送總線122t相連。所述PL電路131的鏈路發(fā)送總線132t與多路復(fù)用器142的輸出端相連,PL131的OOB信號131o與交換初始化電路144相連,PL電路131的Phy ISM控制信號131i與交換初始化電路144相連。PL電路131的PhyTxEn信號131en與有效主機選擇電路141相連,或者作為選擇的,將其設(shè)置為一個電平以便啟動PL電路131發(fā)送機(圖4中未示出)的發(fā)送機。
      有效主機選擇電路141包括SFX端口選擇檢測電路141a以及SFX端口選擇檢測電路141b。所述SFX端口選擇檢測電路141a監(jiān)控COMRESET是否出現(xiàn)端口選擇序列,并且當檢測到端口選擇序列時,電路141a生成指示信號。依照從一個COMRESET信號的確定到下一個COMRESET信號的確定的特定定時要求,SATA協(xié)議將端口選擇序列定義為一系列COMRESET信號。
      不存在上電時選擇的有效主機端口。從主機端口接收的第一COMRESET或者COMWAKE選擇接收它的主機端口作為有效主機。在無效主機端口上接收基于協(xié)議的端口選擇信號令造成有效主機選擇電路141首先取消當前的有效主機端口,然后選擇在其上接收選擇信號的主機端口。通過將無效端口的PhyTxEn信號設(shè)置為預(yù)定電平來將無效主機置為休眠功率狀態(tài)。
      所述有效主機選擇電路141生成多路復(fù)用器選擇信號141s,用于選擇兩個輸入信號中的一個直接到多路復(fù)用器的輸出端,作為它的輸出。所述有效主機選擇電路141還生成第一主機有效信號141h1,當該信號處于‘高’或者邏輯1狀態(tài)時,表明與PL電路111相連的主機是有效主機。所述有效主機選擇電路141還生成主機有效信號141h2,當該信號處于‘高’或者邏輯1電平時,表明與PL電路121相連的主機是有效主機。
      所述交換初始化電路144接收來自于PL電路111的OOB信號111o、來自于PL電路121的OOB信號121o以及來自于PL電路131的OOB信號131o。所述交換初始化電路141生成PL電路111的PhyISM控制信號111i、PL電路121的Phy ISM控制信號121i以及PhyISM控制信號131i,以便執(zhí)行以下功能-從有效主機端口到設(shè)備端口的中繼(接收然后發(fā)送)COMRESET。
      -從設(shè)備端口到有效主機端口的中繼COMINIT。
      -從設(shè)備端口到有效主機端口的中繼COMWAKE。
      -從設(shè)備端口到有效主機端口的中繼COMWAKE。
      -從設(shè)備端口到有效主機端口的中繼ALIGN基元檢測。
      -從有效主機端口到設(shè)備端口的中繼主機ALIGN基元檢測。
      -至有效主機端口的中繼設(shè)備端口PHYJRDY。
      -從設(shè)備端口到有效主機端口的中繼SYNC基元。
      為了說明,當將信號131rx以及131tx與設(shè)備相連時,一個例子中設(shè)備端口是電路131。同樣地,當將信號111tx以及111rx與主機相連時,一個例子是主機端口是電路111。明顯地,另一個例子是當將信號121tx以及121rx與主機相連時,主機端口是電路121。
      諸如在此示出的現(xiàn)有技術(shù)系統(tǒng)的問題之一在于所述交換機100引起有效主機端口和設(shè)備端口之間的信號通路中的延遲,如此無法滿足SATA協(xié)議的定時要求。尤其是,依據(jù)SATA協(xié)議標準,用于流量控制的HOLD/HOLD-ACKNOWLEDGE(HOLD/HOLDA)信號交換規(guī)定了20雙字的最大延遲。在有效主機端口和設(shè)備端口之間的信號通路中附加交換機100導(dǎo)致不能滿足20雙字最大延遲的定時要求。
      由此,所述交換機100引起信號通路中的附加延遲,由此可能會使信號通路的定時無法滿足SATA協(xié)議的定時必要條件,尤其是,HOLD/HOLDA信號交換延遲不應(yīng)該超過20雙字。
      需要耦合在多個主機單元和設(shè)備之間的交換機,用于仲裁它們之間的通信,所述交換機與延遲時間相關(guān)聯(lián),其中不管交換機的延遲如何,都可滿足SATA協(xié)議的定時要求。
      所述SATA交換機100不許無效主機訪問設(shè)備。需要電子交換機允許從兩個主機端口經(jīng)由SATA鏈路或者ATA鏈路,對單端口存儲單元進行并行訪問,其中所述單端口存儲單元與交換機的設(shè)備端口相連。

      發(fā)明內(nèi)容
      簡短地講,本發(fā)明的實施例包括具有與第一主機單元耦合的第一串行ATA端口的交換機,所述第一端口包括第一主機任務(wù)文件。所述交換機還包括與第二主機單元耦合的第二串行ATA端口,所述第二端口包括第二主機任務(wù)文件。所述交換機還包括與存儲單元耦合的第三串行ATA端口,所述第三端口包括設(shè)備任務(wù)文件。所述交換機另外包括判優(yōu)器,當存在來自于許多主機單元的其中一個的至少一個未決命令的指示時,用于選擇多個主機單元的其中一個經(jīng)由交換機與存儲單元耦合,其中當多個主機單元的其中一個與存儲單元耦合時,多個主機單元的另一個向交換機發(fā)送ATA命令,以便由存儲單元來執(zhí)行。
      附圖發(fā)明圖1a示出了現(xiàn)有技術(shù)的SATA協(xié)議通信層。
      圖1b示出了現(xiàn)有技術(shù)SATA幀結(jié)構(gòu)的例子。
      圖1c示出了現(xiàn)有技術(shù)的SATA的屏蔽寄存器塊的例子。
      圖1d示出了SATA協(xié)議的現(xiàn)有技術(shù)FIS結(jié)構(gòu)。
      圖2a示出了包括協(xié)議1-4層的現(xiàn)有技術(shù)SATA端口的框圖。
      圖2b示出了包括每個協(xié)議層中的一些電路的現(xiàn)有技術(shù)SATA端口的框圖。
      圖3a示出了SATA交換機的現(xiàn)有技術(shù)的系統(tǒng)應(yīng)用。
      圖3b示出了SATA到ATA交換機的現(xiàn)有技術(shù)的系統(tǒng)應(yīng)用。
      圖4示出了在1層交換的現(xiàn)有技術(shù)的簡單無故障交換機的例子。
      圖5依照本發(fā)明的實施例舉例說明了在2層交換的簡單無故障交換機。
      圖6示出了依照本發(fā)明實施例的交換機的框圖。
      圖7a示出了圖6交換機的判優(yōu)和控制電路的框圖。
      圖7b示出了圖7a的Tag/Sactive映射電路341的框圖。
      圖7c示出了圖6交換機的多路復(fù)用-分解器353和多路復(fù)用-分解器354。
      圖8a示出了圖6的交換機300對遺留的隊列命令的操作流程圖。
      圖8b示出了圖6的交換機對本地隊列命令的操作流程圖。
      圖9舉例說明了在依照本發(fā)明的有效交換機實施例中使用的SATA 3級端口的框圖。
      圖10a和10b舉例說明了依照本發(fā)明可替換實施例的有效交換機。
      圖10c舉例說明了圖10a和10b的交換機的多路復(fù)用-分解器543a和多路復(fù)用器543b的實施例。
      圖11a和11b舉例說明了依照本發(fā)明實施例的有效SATA到ATA交換機的實施例。
      圖12示出了依照本交換機另一個實施例使用的路由明確的(route aware)FIS結(jié)構(gòu)的實施例。
      具體實施例方式
      現(xiàn)在參見圖__,在本發(fā)明實施例之一中采用的方法使用了主機和設(shè)備端口的2級SATA端口以及主機端口和設(shè)備端口之間的FISFIFO,以防止任何數(shù)據(jù)漏失。所述2級SATA端口立即響應(yīng)HOLD/HOLDA,而不是中繼基元并且等待來自于另一個端口的響應(yīng)。圖5示出了依照本發(fā)明實施例的,在2層內(nèi)交換的交換機200的高級框圖。示出的交換機200包括SATA 2級主機端口210、SATA 2級主機端口220、SATA 2級設(shè)備端口230、FIS負載FIFO 245、多路復(fù)用器242a、多路復(fù)用器242b、多路分解器243、有效主機選擇電路241以及交換初始化電路244。
      所述FIS FIFO 245包括雙端口FIFO,該FIFO具有FIS FIFO輸入端口245(i1)、FIS FIFO輸出端口245(o1)、FIS FIFO輸入端口245(i2)以及FIS FIFO輸出端口245(o2)。
      所述SATA 2級主機端口210包括PL電路211以及LL電路212,并且與輸出高速差動發(fā)送信號211tx和輸入差動接收信號211rx相連,并且包括傳輸接收總線213r、傳輸發(fā)送總線213t、從鏈路層212生成的傳輸控制/狀態(tài)總線213co以及被發(fā)送到鏈路層212的控制/狀態(tài)總線213ci。傳輸接收總線213r與多路復(fù)用器242a相連。示出的控制/狀態(tài)總線213co與多路復(fù)用器242b相連,示出的傳輸發(fā)送總線213t與FIS FIFO輸出端口245(o1)相連,示出的OOB信號211o與交換初始化電路244和有效主機選擇電路241相連。交換初始化電路244生成Phy ISM控制信號211i。
      示出的SATA 2級主機端口220包括PL電路221和LL電路222,并且與輸出高速差動發(fā)送信號221tx和輸入差動接收信號221rx相連。示出的端口220包括傳輸接收總線223r、傳輸發(fā)送總線223t、從鏈路層222生成的傳輸控制/狀態(tài)總線223co以及被發(fā)送到鏈路層222的控制/狀態(tài)總線223ci。所述傳輸接收總線223r與多路復(fù)用器242a相連,所述控制/狀態(tài)總線213co與多路復(fù)用器242b相連,所述傳輸發(fā)送總線223t與FIS FIFO輸出端口245(o21)相連,示出的所述OOB信號221o與交換初始化電路244和有效主機選擇電路241相連。所述交換初始化電路244生成Phy ISM控制信號221i。
      所述SATA 2級設(shè)備端口230包括PL電路231和LL電路232,并且與輸出高速差動發(fā)送信號231tx和輸入差動接收信號231rx相連。示出的端口230包括傳輸接收總線233r、傳輸發(fā)送總線233t、從鏈路層232生成的傳輸控制/狀態(tài)總線233co以及耦合至鏈路層232的控制/狀態(tài)總線233ci。所述傳輸接收總線233r與FIS FIFO輸入端口245(i2)相連,所述控制/狀態(tài)總線233ci與多路復(fù)用器242b的輸出端相連,傳輸發(fā)送總線233t連接FIS FIFO輸出端口245(o2)。提供控制/狀態(tài)總線233co作為多路分解器243的輸入,所述OOB信號231o與交換初始化電路244和有效主機選擇電路241相連。所述交換初始化電路244生成Phy ISM控制信號231i。
      所述有效主機選擇電路241與圖4的有效主機選擇電路141相同。圖5的SFX端口選擇檢測電路241a和241b分別與端口選擇檢測電路141a和141b相同。所述有效主機選擇電路241生成用于選擇輸入的多路復(fù)用選擇信號241s,其被置于多路復(fù)用器242a和多路復(fù)用器242b的輸出端上。所述有效主機選擇電路241還生成當有效或者處于邏輯狀態(tài)‘1’時表明主機端口210有效的主機有效信號141h1。所述主機選擇電路241還生成當有效或者處于邏輯狀態(tài)‘1’時表明主機端口220有效的主機有效信號141h2。所述主機有效信號141h1和142h2充當多路分解器243的輸入端,并且路由控制/狀態(tài)總線233co至有效主機。
      交換初始化電路244與圖4的交換初始化電路144相同??梢詫⒂山粨Q初始化電路244執(zhí)行的功能分給PL電路211、221和231。同樣地,可以將SFX端口選擇檢測電路241a和241b分別分給PL電路211和221。向PL電路211,221和231分配交換初始化電路244的功能的可選實施例,或者向PL電路211和221分配SFX端口選擇檢測電路的功能的可選實施例,都落入本發(fā)明的范圍內(nèi)。
      雖然圖5的2層交換機200消除了由交換機200延遲引起的定時問題,但是交換機200無法允許兩臺主機使用標準FIS結(jié)構(gòu)經(jīng)由SATA鏈路對單端口設(shè)備進行訪問。
      為了允許兩臺主機訪問單端口設(shè)備,根據(jù)本發(fā)明的可替代實施例,必須采用多路復(fù)用方法。傳統(tǒng)的多路復(fù)用方法是時分多路復(fù)用。在時分多路復(fù)用中,對于交替周期(相等的或者不同的時間的)來說,準予對一臺主機或者另一臺主機進行訪問。由于在處理中的命令中斷造成了性能降低或者數(shù)據(jù)丟失,所以無法和存儲單元一起使用傳統(tǒng)的時分多路復(fù)用。
      將用于本發(fā)明的多路復(fù)用方法稱為基于命令的多路復(fù)用。在基于命令的多路復(fù)用中,交換機知道空閑狀態(tài)(沒有命令在處理)、處理中的命令、命令完成和未決命令(因為命令在進行中并且設(shè)備正忙,所以接收和存儲命令但不發(fā)送給設(shè)備),使用這個信息,交換機可以實現(xiàn)用于提供兩個主機訪問設(shè)備的算法。
      基于命令的多路復(fù)用要求在4層處理。與在1層執(zhí)行交換的現(xiàn)有技術(shù)的SATA交換機相比,采用基于命令的多路復(fù)用的本發(fā)明SATA交換機在4層執(zhí)行交換(“4層交換機”)。在本發(fā)明的SATA交換機中,用于基于循環(huán)優(yōu)先級(rotating priority)的判優(yōu)算法被用于選擇可以向設(shè)備發(fā)送命令的主機。當存在來自于兩臺主機的未決命令時,具有最高優(yōu)先級的主機將開始向設(shè)備發(fā)送其命令。
      在上電初始化的操作中,將優(yōu)先級任意地給予主機11或者12中的一個。本發(fā)明不同實施例的SATA交換機知道所述優(yōu)先級并且執(zhí)行判優(yōu)以選擇可以向設(shè)備發(fā)送命令的主機。當設(shè)備輸入用于接受另一個命令狀態(tài)時,本發(fā)明不同實施例的交換機改變優(yōu)先級給另一臺主機。
      圖6示出了依照本發(fā)明可替換實施例的有效交換機300的框圖。示出的交換機300包括SATA4級主機端口310、SATA 4級主機端口320、SATA 4級設(shè)備端口330、判優(yōu)和控制電路340、多路復(fù)用器351、多路復(fù)用器352、多路復(fù)用-分解器353和多路復(fù)用-分解器354。示出的SATA 4級主機端口310與輸出高速差動發(fā)送信號311tx和輸入差動接收信號311rx相連,并且包括主機11命令層輸入總線315i、主機11命令層輸出總線315o、主機11任務(wù)文件輸入總線316i和主機11任務(wù)文件輸出總線316o。示出的SATA 4級主機端口320與輸出高速差動發(fā)送信號321tx和輸入差動接收信號321rx相連,并且包括主機12命令層輸入總線325i、主機12命令層輸出總線325o、主機12任務(wù)文件輸入總線326i和主機12任務(wù)文件輸出總線326o。示出的SATA 4級設(shè)備端口330與輸出高速差動發(fā)送信號331tx和輸入差動接收信號331rx相連,并且包括設(shè)備命令層輸入總線335i、設(shè)備命令層輸出總線335o、設(shè)備任務(wù)文件輸入總線336i和設(shè)備任務(wù)文件輸出336o。
      示出的主機11命令層輸出總線315o與多路復(fù)用器351的第一輸入端相連。示出的主機12命令層輸出總線325o與多路復(fù)用器351的第二輸入端相連,并且示出的多路復(fù)用器351輸出端與設(shè)備命令層輸入總線335i相連。示出的主機11任務(wù)文件輸出總線316o與多路復(fù)用器352的輸入端相連,并且示出的主機12任務(wù)文件輸出總線326o與多路復(fù)用器352的輸入端相連。判優(yōu)和控制電路340生成設(shè)備控制任務(wù)文件輸出總線352i,后者進而又與多路復(fù)用器352的一個輸入端相連,如圖5所示,并還生成控制信號352s,所述控制信號352s是多路復(fù)用器352的控制信號。示出的多路復(fù)用器352輸出端與設(shè)備任務(wù)文件輸入總線336i相連。在某些情況下,總線352i的功能將替換來自于主機的數(shù)據(jù),這將在此后描述。
      示出的設(shè)備命令層輸出總線335o與多路分解器353的輸入端相連。示出的設(shè)備任務(wù)文件輸出總線336o與多路分解器354的輸入端相連。判優(yōu)和控制電路340接收主機11任務(wù)文件輸出總線316o、主機12任務(wù)文件輸出總線326o以及設(shè)備任務(wù)文件輸出總線336o。判優(yōu)和控制電路340生成用于控制多路復(fù)用器351操作的選擇信號351s。所述判優(yōu)和控制電路340生成控制命令層輸出總線353i,該控制命令層輸出總線353i與多路復(fù)用-分解器353的輸入端相連。電路340還生成控制信號353c,所述控制信號353c是多路復(fù)用-分解器353的控制信號。在某些情況下,總線353i的功能將替換來自于設(shè)備的數(shù)據(jù),這將在此后描述。
      所述判優(yōu)和控制電路340生成控制任務(wù)文件輸出總線354i,該輸出總線354i與多路復(fù)用-分解器354的一個輸入端相連,如圖所示,控制信號354c控制多路復(fù)用-分解器354的操作。在某些情況下,總線354i的功能將替換設(shè)備任務(wù)文件輸出總線336o,這將在此后討論。
      現(xiàn)在參見圖7c,所述多路復(fù)用-分解器353具有兩輸入端335o、353i,以及兩個輸出端315i、325i。多路復(fù)用-分解器353執(zhí)行兩個功能,第一功能是選擇兩輸入端(多路復(fù)用)之一,第二功能是將所選擇的兩輸入端之一路由至所選擇的多路復(fù)用-分解器353的輸出端之一,并且將多路復(fù)用-分解器353的未選輸出端設(shè)置為無效的電壓電平(多路分解)。所述控制信號353c用于控制多路復(fù)用-分解器353的多路復(fù)用以及多路分解功能。
      所述多路復(fù)用-分解器354具有兩個輸入端336o、354i以及兩個輸出端316i以及326i。多路復(fù)用-分解器354執(zhí)行兩個功能,它的第一個功能是選擇兩個輸入端(多路復(fù)用)之一,它的第二個功能是將所選擇的兩個輸入端之一發(fā)送至所選的多路復(fù)用-分解器354的輸出端之一,并且將多路復(fù)用-分解器354的未選輸出端被設(shè)置為無效的電壓電平(多路分解)。所述控制信號354c用于控制多路復(fù)用以及多路分解功能。
      交換機300的操作要求交換機300知道處理中的命令,并且處理不同于其他命令的某些命令。判優(yōu)和控制電路340經(jīng)由主機11任務(wù)文件輸出總線316o來接收主機11任務(wù)文件。所述電路340還經(jīng)由主機12任務(wù)文件輸出總線326o接收主機12任務(wù)文件,并且還經(jīng)由設(shè)備任務(wù)文件輸出總線336o接收設(shè)備任務(wù)文件,并且還接收設(shè)備命令層輸出總線335o。
      除判優(yōu)之外,判優(yōu)和控制電路340知道處理中的命令以及未決命令,并且在某些特定情況下修改負載數(shù)據(jù)或者FIS。在特定情況下,當必須改變數(shù)據(jù)負載時,判優(yōu)和控制電路340生成替代數(shù)據(jù),并且提供控制命令層輸出總線353i上的替代數(shù)據(jù)以及控制信號353c上的值以便選擇輸出總線353i,其中所述控制命令層輸出總線353i與多路復(fù)用-分解器353的輸入信號之一相連。在特定的情況下,當必須改變非數(shù)據(jù)FIS時,或者必須發(fā)送全新的非數(shù)據(jù)FIS時,判優(yōu)和控制電路340生成相應(yīng)的替代任務(wù)文件,并且提供控制任務(wù)文件輸出總線354i上的替代任務(wù)文件以及控制信號354c上的值以便選擇輸出總線354i,其中所述控制任務(wù)文件輸出總線354i與多路復(fù)用-分解器354的輸入信號之一相連。
      要求從設(shè)備改變數(shù)據(jù)負載的特定情況包括識別驅(qū)動響應(yīng)的情況,所述識別驅(qū)動響應(yīng)是響應(yīng)來自于主機的識別驅(qū)動命令而生成。所述識別驅(qū)動響應(yīng)包括512字節(jié)(256個字)的數(shù)據(jù),用于提供設(shè)備的預(yù)定特性。
      尤其是,識別驅(qū)動響應(yīng)包括用于支持排隊以及隊列深度的設(shè)備能力。作為一個例子,識別驅(qū)動響應(yīng)的字83的第1位表明是否支持讀/寫DMA隊列命令(本領(lǐng)域中普通技術(shù)人員所公知的),而識別驅(qū)動響應(yīng)的字76的第8位表明是否支持本地隊列命令(本領(lǐng)域中普通技術(shù)人員所公知的),而識別驅(qū)動響應(yīng)的字75的第0至4位包括隊列深度減1的值。
      在一個應(yīng)用中,可以通過偵聽識別驅(qū)動響應(yīng)、使用零替換隊列深度值并復(fù)位字76的第8位來禁止命令排隊。在支持排隊的有效交換機應(yīng)用中,報告給每臺主機的隊列深度必須被改變,從而主機不發(fā)送設(shè)備支持不了的更多命令。
      在圖5的實施例中,判優(yōu)和控制電路340偵聽從設(shè)備發(fā)送的識別驅(qū)動響應(yīng),并且使用新生成的值來替換字75的第0至4位中的原始值,其中所述新生成的值表示隊列深度值,其是原始隊列深度值的一半。
      在原始值表示隊列深度的奇數(shù)值的情況中,新數(shù)值表示隊列深度值,該值是原始隊列深度值減掉1后的一半。如上所述,字75的第4至0位(75[4:0])(此注釋表示16位字75的第0位至4位)中的值表示隊列深度值減1。生成75[4:0]的新數(shù)值的操作通過逐位移位75[4:0]的原始值來執(zhí)行,然后如果75[4:0]的原始值表示偶數(shù)值(最小的有效位(75
      )是零),那么有條件地減掉1。所述判優(yōu)和控制電路340在控制命令層輸出總線353i上生成新數(shù)值,并且依照總線353i的選擇在控制信號353c上設(shè)置該值,其被多路分解,然后作為輸入提供至多路復(fù)用-分解器353。
      識別驅(qū)動響應(yīng)的字255是一個完整的字。此字的使用是任意的。如果字25的第7至0位(255[7:0]、(此注釋表示16位字的第0位至7位)包含值A(chǔ)5(依照十六進制記數(shù)法),那么字255的第15至8位包括校驗和,所述校驗和是字0至254中的所有字節(jié)和包括字255中的第0至7位的字節(jié)的和的二的補碼。當使用校驗和并且判優(yōu)和控制電路修改部分識別驅(qū)動響應(yīng)時,判優(yōu)和控制電路另外修改校驗和以便反映修正值,然后生成新的校驗和,并且將其提供到控制命令層輸出總線353i上,并且設(shè)置控制信號353c上的值以便選擇總線353i。
      現(xiàn)在描述用于支持SATA協(xié)議的遺留和本地命令排隊的有效交換機的操作。然而,首先給出主機和設(shè)備之間的遺留和本地命令排隊的簡短描述。
      無論隊列深度如何,遺留的讀/寫DMA隊列命令(LQ CMD)包括具有位于十進制整數(shù)0和31之間的值的主機標記。未決的遺留的讀/寫DMA隊列命令的數(shù)目不能超過隊列深度。如果主機發(fā)送具有無效的主機標記值的LQ CMD命令,那么設(shè)備以錯誤條件響應(yīng)。這種情況的例子是當超過隊列深度時。在主機發(fā)送LQ CMD命令之后,主機等待來自于設(shè)備對其的響應(yīng)。來自于設(shè)備的響應(yīng)包括以下情況-設(shè)備發(fā)送寄存器FIS 40(ii),其中設(shè)置(等于邏輯1)寄存器FIS40(ii)中的REL位,并且將寄存器FIS 40(ii)中的SERV位復(fù)位(等于邏輯0),以表明設(shè)備使命令排隊并且命令被“釋放”?!搬尫拧笔沁@樣一種情況,其中在排隊命令以便后續(xù)處理之后設(shè)備斷開(將“斷開”、“連接”以及“重新連接”在串行ATA規(guī)范中的定義引用于此,以供參考),并且在以后的時間重新連接以完成所述命令。當釋放命令時,只要沒有超過隊列深度,就允許主機發(fā)送另一個遺留的讀/寫DMA隊列命令。
      -設(shè)備發(fā)送寄存器FIS 40(ii),其中設(shè)置寄存器FIS 40(ii)中的REL位以及SERV位,以表明所述設(shè)備讓命令排隊,并且服務(wù)隊列命令已就緒。
      -所述設(shè)備發(fā)送數(shù)據(jù)FIS 40(vii)或者DMA啟動FIS 40(iii)以表明設(shè)備正在執(zhí)行所述命令;-所述設(shè)備發(fā)送寄存器FIS 40(ii),其中復(fù)位寄存器FIS 40(ii)中的BSY位,并且設(shè)置寄存器FIS 40(ii)中的ERR位,以便表明發(fā)生錯誤;或者-當設(shè)備就緒重新連接至主機時,所述設(shè)備向主機發(fā)送設(shè)置設(shè)備位FIS 40(v)或者寄存器FIS 40(ii),其中設(shè)置設(shè)備位FIS 40(v)或者寄存器FIS 40(ii)中的SERV位被設(shè)置。所述主機用SERVICE命令對此進行響應(yīng),并且設(shè)備將寄存器FIS 40(ii)發(fā)送回到包括主機標記值的主機。在這一點上,重新連接主機和設(shè)備并且恢復(fù)命令執(zhí)行。當設(shè)備具有遺留的隊列命令的非空隊列時,如果主機發(fā)送非隊列命令或者本地隊列命令,那么異常結(jié)束隊列命令。
      在本地隊列命令(NQ CMD)的情況下,主機標記值限于0和隊列深度減1(queue_depth_minus_one)之間的值。在主機發(fā)送本地隊列命令之后,主機等待來自于設(shè)備的寄存器FIS 40(ii)。如果復(fù)位寄存器FIS 40(ii)中的BSY位和DRQ,那么來自于設(shè)備的寄存器FIS表明所述命令被排隊,并且所述命令被釋放。如果復(fù)位寄存器FIS40(ii)中的BSY位,并且設(shè)置寄存器FIS 40(ii)中的ERR位,那么來自于設(shè)備的寄存器FIS 40(ii)表明發(fā)生錯誤。如果釋放命令,那么只要沒有超過隊列深度,主機就可以發(fā)送另一個本地隊列命令。當設(shè)備就緒以重新連接至主機時,所述設(shè)備發(fā)送DMA建立FIS40(iv),其包括主機標記值。
      在這一點上,重新連接主機和設(shè)備并且恢復(fù)命令執(zhí)行。所述設(shè)備經(jīng)由設(shè)置設(shè)備位FIS 40(v)發(fā)送完成狀態(tài)。設(shè)置設(shè)備位FIS 40(v)的Sactive字段40(v)(ii)具有32位,并且每位對應(yīng)于一個標記(位0對應(yīng)于標記值0,位1對應(yīng)于標記值1等等)。在設(shè)置設(shè)備位FIS 40(v)的Sactive字段40(v)(ii)中設(shè)置的位表現(xiàn)出相應(yīng)的隊列命令已經(jīng)被完成。如果沒有設(shè)置設(shè)置設(shè)備位FIS 40(v)中的ERR位,那么所述命令在沒有發(fā)生錯誤的情況下成功地完成。當設(shè)備具有本地隊列命令的非空隊列時,如果主機發(fā)送非隊列命令或者遺留隊列命令,那么異常結(jié)束隊列命令。
      由于兩臺主機都可以使用相同的標記值,所以交換機將主機標記值映射至不同的值,以便當重新連接設(shè)備時能夠區(qū)分。當本發(fā)明的一個實施例的交換機接收隊列命令時,將主機標記映射到唯一的設(shè)備標記,如此使得當重新連接設(shè)備時,可以識別出主機和原始主機標記。
      在遺留隊列命令的情況下,當交換機300從設(shè)備接收其中設(shè)置了設(shè)置設(shè)備位FIS 40(v)中的SERV位的設(shè)置設(shè)備位FIS 40(v),或者接收其中設(shè)置了寄存器FIS 40(ii)中的SERV位的寄存器FIS40(ii)時,由于設(shè)備需要服務(wù)的命令標記值仍然不是有效的,因而交換機300不能轉(zhuǎn)送設(shè)置設(shè)備位FIS 40(v)。為了獲得標記值,交換機300向設(shè)備發(fā)送服務(wù)命令,設(shè)備以包括標記的寄存器FIS 40(ii)來響應(yīng)。然后,交換機300重新映射標記以便識別主機和原始主機標記值。如果在交換機300中沒有來自于主機的未決遺留隊列命令,那么在設(shè)定了SERV位的情況下,交換機向主機發(fā)送設(shè)置設(shè)備位FIS40(v)。如果在交換機中存在未決的遺留隊列命令,那么交換機300將所述命令存儲在內(nèi)存儲器344中,并且當設(shè)備就緒釋放未決的遺留隊列命令時,所述設(shè)備以寄存器FIS 40(ii)來響應(yīng),其中設(shè)置了寄存器FIS 40(ii)中的REL位和SERV位。當主機以服務(wù)命令來響應(yīng)時,交換機300以包括原始主機標記值的寄存器FIS 40(ii)來響應(yīng)。
      在本地隊列命令的情況下,當交換機300接收來自于設(shè)備的DMA建立FIS 40(vi)時,交換機300首先在DMA建立FIS 40(vi)(ii)中重新映射所述標記以便識別主機和原始主機標記值,然后將DMA建立FIS 40(vi)(ii)轉(zhuǎn)送至識別出的主機,其中所述DMA安裝FIS40(vi)(ii)具有以原始主機標記代替的標記。
      在本地隊列命令的情況下,當交換機300接收來自于設(shè)備的設(shè)置設(shè)備位FIS 40(v)時,其中所述設(shè)置設(shè)備位FIS 40(v)包括表明本地隊列命令完成狀態(tài)的Sactive字段41(圖1d(v)中所示),交換機300生成主機11 Sactive字段和主機12 Sactive字段,如此使得主機11sactive字段只包括屬于主機11(圖3a中所示)的Sactive字段41中的標記,并且主機12sactive字段只包括屬于主機12(圖3a中所示)的Sactive字段41中的標記。交換機300在以主機11sactive字段代替Sactive字段的情況下、將設(shè)置設(shè)備位FIS 40(v)轉(zhuǎn)送至主機11(圖3a中所示),同時在以主機12 Sactive字段代替Sactive字段41的情況下、將設(shè)置設(shè)備位FIS 40(v)轉(zhuǎn)送至主機12(圖3a中所示)。
      圖8a示出了圖6的交換機300對遺留的隊列命令的操作流程圖。
      在空閑狀態(tài)361中,如果從任一主機接收了遺留隊列命令、或者在未決任務(wù)文件中存在未決的遺留隊列命令362,那么交換機300將狀態(tài)改變?yōu)橹鳈C選擇狀態(tài)363。否則,如果從設(shè)備接收了具有設(shè)置了SERV位的設(shè)置設(shè)備位FIS 40(v)或者寄存器FIS 40(ii)372,那么交換機300將狀態(tài)改變?yōu)榘l(fā)送服務(wù)狀態(tài)(send-the-service state)373。否則,交換機保持在空閑狀態(tài)361。
      在主機選擇狀態(tài)363中,交換機300在主機之間判優(yōu),并且選擇其未決命令將隨后被轉(zhuǎn)送到設(shè)備的主機。所述未決的命令包括選擇的主機標記。然后,交換機300將狀態(tài)改變?yōu)榘l(fā)送LQ CMD狀態(tài)364。
      在發(fā)送LQ CMD狀態(tài)364中,交換機300首先將所選擇的LQ主機標記映射至發(fā)送設(shè)備標記,用發(fā)送設(shè)備標記替換選擇的LQ主機標記,然后向設(shè)備轉(zhuǎn)送未決的命令。然后,交換機300將狀態(tài)改變?yōu)榈却O(shè)備響應(yīng)狀態(tài)365。所述發(fā)送設(shè)備標記指的是由交換機300發(fā)送給設(shè)備的標記。
      在等待設(shè)備響應(yīng)狀態(tài)365中,如果接收了設(shè)備響應(yīng),那么交換機300將狀態(tài)改變?yōu)闄z驗設(shè)備響應(yīng)狀態(tài)366。否則,交換機300保持等待設(shè)備響應(yīng)狀態(tài)365。在檢驗設(shè)備響應(yīng)狀態(tài)366中,如果設(shè)備響應(yīng)是在寄存器FIS 40(ii)中設(shè)置了REL位和SERV位的寄存器FIS40(ii),那么交換機300將狀態(tài)改為斷開/重新連接狀態(tài)366b。否則,如果設(shè)備響應(yīng)是設(shè)置了REL位并且復(fù)位SERV位的寄存器FIS40(ii),那么交換機300將狀態(tài)改為斷開狀態(tài)366d。否則,如果設(shè)備響應(yīng)是數(shù)據(jù)FIS 40(vii)或者DMA啟動FIS 40(iii),那么交換機300將狀態(tài)改為執(zhí)行狀態(tài)366f。否則,如果設(shè)備響應(yīng)是設(shè)置了ERR位的寄存器FIS 40(ii),那么交換機300將狀態(tài)改為錯誤狀態(tài)366h。否則,交換機將狀態(tài)改為清除狀態(tài)366j,并且清除所接收的FIS,并且將狀態(tài)改為空閑狀態(tài)361。
      在斷開/重新連接狀態(tài)366b中,交換機300發(fā)送設(shè)置了REL位并且復(fù)位SERV位的寄存器FIS 40(iii),以便選擇主機,然后將狀態(tài)改為發(fā)送服務(wù)CMD狀態(tài)373。在斷開狀態(tài)366d中,交換機300向所選的主機發(fā)送設(shè)置了REL位并且復(fù)位SERV位的寄存器FIS,然后將狀態(tài)改為空閑狀態(tài)361。
      在執(zhí)行狀態(tài)366f中,交換機300等待當前命令的完成,所述當前命令是在發(fā)送LQ CMD狀態(tài)364中被發(fā)送的命令。在成功完成當前命令之后,交換機300將狀態(tài)改為空閑狀態(tài)361。否則,因錯誤而終止當前命令,然后交換機300將狀態(tài)改為錯誤狀態(tài)366h。在錯誤狀態(tài)366h中,交換機300執(zhí)行錯誤處理,并且在完成錯誤處理之后,將狀態(tài)改為空閑狀態(tài)361。
      在發(fā)送服務(wù)CMD狀態(tài)373中,交換機300向設(shè)備發(fā)送服務(wù)CMD,并且將狀態(tài)改為等待設(shè)備標記狀態(tài)374。
      當處于等待設(shè)備標記狀態(tài)374時,如果接收了設(shè)備響應(yīng),那么交換機300將狀態(tài)改為重新映射狀態(tài)375,否則,交換機300保持等待設(shè)備標記狀態(tài)374。在重新映射狀態(tài)375中,交換機300重新映射接收的設(shè)備標記,所述標記是由交換機300從設(shè)備中接收的,以便識別主機和原始主機標記,并且,交換機300利用所述原始主機標記來代替接收設(shè)備標記。如果在識別出的主機任務(wù)文件中存在未決隊列,那么交換機300將狀態(tài)改為保存狀態(tài)376b,否則交換機300將狀態(tài)改為重新連接至主機狀態(tài)376a。在重新連接至主機狀態(tài)376b中,交換機300向識別出的主機(在重新映射狀態(tài)375中識別出的主機)發(fā)送設(shè)置了SERV位的設(shè)置設(shè)備位FIS 40(v),然后將狀態(tài)改為等待主機響應(yīng)狀態(tài)377。
      在等待主機響應(yīng)狀態(tài)377中,如果接收了識別的主機響應(yīng),那么交換機300將狀態(tài)改為檢驗主機響應(yīng)狀態(tài)378,否則,交換機300保持等待主機響應(yīng)狀態(tài)377。在檢驗主機響應(yīng)狀態(tài)378中,如果主機響應(yīng)是服務(wù)命令,那么交換機300將狀態(tài)改為發(fā)送標記至主機狀態(tài)378b,否則,如果主機響應(yīng)是另一個LQ CMD,那么交換機300將狀態(tài)改為設(shè)置未決狀態(tài)378e,不然,交換機300將狀態(tài)改為錯誤2狀態(tài)378d。
      在發(fā)送標記至主機狀態(tài)378b中,交換機300向識別出的主機發(fā)送具有原始主機標記的寄存器FIS,并且將狀態(tài)改為重新連接狀態(tài)379。在設(shè)置未決狀態(tài)378e中,交換機300設(shè)置未決隊列CMD標志以便表明主機已經(jīng)發(fā)送了另一個遺留隊列命令。在保存狀態(tài)376b中,交換機300將識別出的主機的任務(wù)文件存儲在未決任務(wù)文件中,然后向識別出的主機發(fā)送設(shè)置了SERV位并且設(shè)置了REL位的寄存器FIS 40(v)。
      在斷開/重新連接狀態(tài)366b中,將重新連接至主機狀態(tài)376a、保存狀態(tài)376b以及發(fā)送標記至主機狀態(tài)378b、修改FIS或者新的FIS發(fā)送給主機。判優(yōu)和控制電路340生成對應(yīng)于修改的FIS(或者新的FIS)的任務(wù)文件,并且將其發(fā)送到控制任務(wù)文件輸出總線354i上,所述控制任務(wù)文件輸出總線354i與多路復(fù)用-分解器354的輸入端相連。電路340還設(shè)置控制信號354c的值,以便選擇總線354i,并且將其多路分解以作為多路復(fù)用-分解器354的輸出。
      在發(fā)送LQ CMD狀態(tài)364中,將發(fā)送服務(wù)CMD 373、修改的FIS(或者新的FIS)發(fā)送給設(shè)備。判優(yōu)和控制電路340產(chǎn)生對應(yīng)于設(shè)備控制任務(wù)文件輸出總線352i上的修改的FIS或者新的FIS的任務(wù)文件,后者進而又與多路復(fù)用器352的輸入端之一相連,如圖5所示,并且設(shè)置選擇信號352s的值以便選擇總線352i作為多路復(fù)用器352的輸出,后者進而又與設(shè)備任務(wù)文件輸入總線336i相連。
      圖8b示出了交換機300對本地隊列命令(NQ CMD)的操作流程圖。在空閑狀態(tài)381中,可以進行多個判定,如382-386所示。在382處,如果從任一主機接收了本地隊列命令,并且設(shè)備已經(jīng)響應(yīng)先前的NQ CMD,那么交換機300將狀態(tài)改為主機選擇狀態(tài)382a,否則,在383處,如果從設(shè)備接收了復(fù)位了ERR位的寄存器FIS,那么交換機300將狀態(tài)改為NQ斷開狀態(tài)383a。否則,在384處,如果從設(shè)備接收了DMA建立FIS 40(iv),那么交換機300將狀態(tài)改為NQ重新映射狀態(tài)384a。否則,在385處,如果接收了設(shè)置設(shè)備位FIS 40(v),并且在385a處,復(fù)位設(shè)置設(shè)備位FIS中的ERR位,那么交換機將狀態(tài)改為NQ穩(wěn)定狀態(tài)385b,否則,如果設(shè)置了ERR位,那么交換機300將狀態(tài)改為NQ錯誤狀態(tài)386a。如果在385處,設(shè)置設(shè)備位FIS沒有表明完成狀態(tài),在386處,如果接收了設(shè)置了ERR位的設(shè)備寄存器FIS,那么交換機300將狀態(tài)改為NQ錯誤狀態(tài)386a,否則交換機300保持空閑狀態(tài)381。
      在主機選擇狀態(tài)382a中,交換機300在主機之間判優(yōu),并且選擇其未決命令將在發(fā)送NQ CMD狀態(tài)382b中隨后被轉(zhuǎn)送到設(shè)備的主機。然后,所述交換機300將狀態(tài)改為發(fā)送NQ CMD狀態(tài)382b。
      在發(fā)送NQ CMD狀態(tài)382b中,交換機300首先將所選擇的NQ主機標記映射至發(fā)送設(shè)備標記,用發(fā)送設(shè)備標記替換所選擇的NQ主機標記,向設(shè)備轉(zhuǎn)送在發(fā)送NQ CMD狀態(tài)382b中發(fā)送的命令,并且設(shè)置標志“device_not_responded”,并且將狀態(tài)改為空閑狀態(tài)381。所述標志“device_not_responded”表明設(shè)備還沒有響應(yīng)本地隊列命令。
      在NQ斷開狀態(tài)383a中,交換機300令寄存器FIS轉(zhuǎn)送到所選擇的主機,復(fù)位標志“device_not_responded”,然后將狀態(tài)改為空閑狀態(tài)381。在NQ重新映射狀態(tài)384a中,交換機300重新映射接收設(shè)備標記以便識別主機和原始主機標記,并且使用DMA建立FIS中的原始主機標記替換接收設(shè)備標記,并且向識別出的主機發(fā)送DMA建立FIS,并且將狀態(tài)改為NQ重新連接狀態(tài)384b。在NQ重新連接狀態(tài)384b中,識別出的主機被重新連接至設(shè)備,并且將數(shù)據(jù)FIS在重新連接的主機和設(shè)備之間傳輸。在NQ重新連接狀態(tài)384b中,在384c處,交換機300檢驗DMA傳輸計數(shù)是否用盡。如果DMA傳輸計數(shù)沒有用盡,那么交換機300保持重新連接狀態(tài)384b,否則,交換機300將狀態(tài)改為空閑狀態(tài)381。在NQ穩(wěn)定狀態(tài)385b中,交換機300處理成功完成的NQ CMD的狀態(tài),這是由設(shè)備在設(shè)置設(shè)備位FIS 40(v)的Sactive字段41中報告的。
      交換機300從Sactive字段41中生成主機11 sactive字段和主機12 sactive字段,如此使得主機11 sactive字段只包括屬于主機11的Sactive字段41中的標記,并且主機12 sactive字段只包括屬于主機12的Sactive字段41中的標記。交換機300在以主機11 sactive字段代替Sactive字段41的情況下將設(shè)置設(shè)備位FIS轉(zhuǎn)送至主機11,然后在以主機12 sactive字段代替Sactive字段41的情況下將設(shè)置設(shè)備位FIS轉(zhuǎn)送至主機12。所述交換機300然后改為空閑狀態(tài)381。在NQ錯誤狀態(tài)386中,交換機300執(zhí)行錯誤處理,并且在完成錯誤處理之后,將狀態(tài)改為空閑狀態(tài)381。
      在NQ重新映射狀態(tài)384a和NQ穩(wěn)定狀態(tài)385b中,將修改的FIS發(fā)送到主機。判優(yōu)和控制電路340生成對應(yīng)于修改的FIS或者新的FIS的任務(wù)文件,并且在控制任務(wù)文件輸出總線354上發(fā)送,所述控制任務(wù)文件輸出總線354與多路復(fù)用-分解器354的第二輸入端相連,并且設(shè)置控制信號354c上的值以便選擇以及多路分解總線354i至所選擇的主機。
      在發(fā)送NQ CMD狀態(tài)364中,將修改的FIS發(fā)送到設(shè)備。判優(yōu)和控制電路340生成對應(yīng)于修改的FIS的任務(wù)文件,并且在設(shè)備控制任務(wù)文件輸出總線352i上發(fā)送,所述設(shè)備控制任務(wù)文件輸出總線352i與多路復(fù)用器352的輸入端之一相連,并且設(shè)置選擇信號352s上的值以便選擇總線352i作為多路復(fù)用器352的輸出,所述多路復(fù)用器352又與設(shè)備任務(wù)文件輸入總線336i相連。
      在本發(fā)明的一個實施例中,將設(shè)備標記(發(fā)送設(shè)備標記以及接收設(shè)備標記)值分為兩個范圍,主機11范圍以及主機12范圍。在本發(fā)明的一個實施例中,主機11范圍包括從最小主機11標記值到最大主機11標記值的標記,而主機12范圍包括從最小主機12標記值到最大主機12標記值的標記,其中最小主機11標記值是0,并且最大主機11標記值等于主機隊列深度減一。最小主機12標記值等于主機隊列深度,而最大主機12標記值等于2*host_queue_depth-1,并且主機隊列深度是響應(yīng)識別驅(qū)動命令報告給主機11和主機12的值,這些內(nèi)容早先描述過了。
      例如,如果設(shè)備支持32的隊列深度,那么將響應(yīng)識別驅(qū)動命令而報告的主機隊列深度將是16,并且將主機11范圍從0到15來標記,并且將主機12范圍從16到31來標記。在另一個例子中,如果設(shè)備支持31的隊列深度,那么將響應(yīng)識別驅(qū)動命令而報告的主機隊列深度將是15,并且將主機11范圍從0到14來標記,而將主機12范圍從15到30來標記。主機11和主機12采用不同隊列深度的可替換實施例屬于本發(fā)明的范圍。
      參見圖7a,判優(yōu)和控制電路340包括主機判優(yōu)電路343、標記/Sactive映射電路341和控制電路342。由標記/Sactive映射電路341執(zhí)行的功能包括·將主機標記映射到發(fā)送設(shè)備標記,并且在遺留隊列標記的情況下,將映射結(jié)果保存在標記存儲器中,并且保存一列有效隊列標記。
      ·逆映射接收設(shè)備標記以便識別主機并獲得原始主機標記,并且在LQ CMD的情況下,當在完成命令時由控制電路342定向時,無效隊列標記。
      ·將Sactive字段41映射到分別相應(yīng)于主機11和主機12的主機11 Sactive字段和主機12 Sactive字段。
      主機11任務(wù)文件輸出總線316o包括主機11FIS請求318,其包括主機11 FIS請求指示和隊列命令指示。所述主機11 FIS請求指示從譯碼寫入到主機11任務(wù)文件命令或設(shè)備控制寄存器來生成。通過譯碼寫入主機11任務(wù)文件指令寄存器的遺留或者本地隊列命令來生成主機11隊列命令指示。
      主機12任務(wù)文件輸出總線326o包括主機12 FIS請求328,其包括主機FIS請求信號和隊列命令信號。所述主機12 FIS請求信號從譯碼寫入到主機12任務(wù)文件命令或者設(shè)備控制寄存器來生成。通過譯碼寫入主機12任務(wù)文件指令寄存器的遺留或者本地隊列命令來生成主機12隊列命令信號。
      主機判優(yōu)電路343接收主機11FIS請求318、主機12FIS請求328、來自于控制電路342的控制信號343c以及來自于標記/Sactive映射電路341的隊列狀態(tài)信號341q。響應(yīng)來自于控制電路342的控制信號343c,主機判優(yōu)電路343生成充當控制電路342輸入的主機選擇信號343hs。主機選擇信號343hs上的邏輯0表明主機11可以向設(shè)備發(fā)送命令,而邏輯1表明主機12可以向設(shè)備發(fā)送命令。主機判優(yōu)343的操作在表1中描述。
      由控制電路342執(zhí)行的功能包括·生成用于控制多路復(fù)用器351操作的選擇信號351s;·生成設(shè)備控制任務(wù)文件輸出總線352i,該總線與多路復(fù)用器352的輸入端相連,并且生成用于控制所述多路復(fù)用器352操作的選擇傳號352s;·生成控制命令層輸出總線353i,其與多路復(fù)用-分解器353的輸入端相連,并且生成作為多路復(fù)用-分解器353的控制信號的控制信號353c;·生成與多路復(fù)用-分解器354的輸入端相連的控制任務(wù)文件輸出總線354i,以及用于控制所述多路復(fù)用-分解器354操作的控制信號354c;·生成用于主機判優(yōu)電路343的控制信號342c;·生成用于標記/Sactive映射電路341的控制信號341ctl;以及·生成控制信號以便將識別出的主機任務(wù)文件保存在未決任務(wù)文件344中,并且控制多路復(fù)用器354的操作。
      圖7b示出了用于本發(fā)明的實施例之一的標記/Sactive映射電路。所述標記/Sactive映射電路341包括標記存儲器341d、用于表明相應(yīng)LQT是否有效的有效LQT寄存器341a、LQT映射341b、NQT映射341g、NQT反向映射341f、設(shè)備標記多路復(fù)用器341m1、以及主機標記多路復(fù)用器341m2。所述標記/Sactive映射電路341輸入包括設(shè)備標記輸入341j、主機標記輸入341i、Sactive輸入341k、主機隊列深度輸入341qd以及控制總線341ctl。所述標記/Sactive映射電路341生成包括映射的主機標記341dt、檢索的主機標記341ht、主機11 Sactive輸出總線341s1以及主機12 Sactive輸出總線341s2的某些輸出。
      在本地隊列命令的情況下,將所述主機標記值限制在0和host_queue_depth_minus_one之間。利用加法器/減法器來實現(xiàn)映射和逆映射。對應(yīng)于主機11標記的設(shè)備標記與主機11標記相同,而對應(yīng)于主機12標記的設(shè)備標記等于主機12標記值加主機隊列深度。
      映射NQ標記的此操作由NQT映射341g執(zhí)行。所述NQT映射341g接收所選擇的主機標記輸入341i和主機隊列深度341qd,并且將其輸出與設(shè)備標記多路復(fù)用器341m1的輸入端相連。如果所選擇的主機標記輸入341i來自于主機11(信號341h是邏輯0),那么NQT映射的輸出等于所選擇的主機標記輸入341i,否則如果主機標記輸入341i來自于主機12(信號341h是邏輯1),那么NQT映射的輸出等于所選擇的主機標記輸入341i加主機隊列深度。
      NQ標記的逆映射由NQT逆映射341f執(zhí)行。所述NQT逆映射341f接收接收設(shè)備標記輸入341j、主機隊列深度341qd,并且其輸出341int包括二進制值信號,所述信號用于識別與相應(yīng)的原始主機標記值相連的主機(邏輯0表明主機11被識別而邏輯1表明主機12被識別)。所述輸出341int與主機標記多路復(fù)用器341m2的輸入端相連。如果接收設(shè)備標記輸入341j小于主機隊列深度341qd,那么輸出等于與設(shè)備標記輸入端341j相連的邏輯0信號(表明主機11),否則輸出341int等于與接收設(shè)備標記341j相連的邏輯1信號(表明主機12)減去主機隊列深度341qd。
      在遺留隊列命令的情況中,無論主機隊列深度怎樣,主機標記值在0和31之間。如上所述,將從0到host_queue_depth_mmus_one的設(shè)備標記分配給主機11范圍,而將從host_queue_depth到(2*host_queue_depth-1)的設(shè)備標記分配給主機12范圍。標記存儲器單元341d用于存儲對應(yīng)于設(shè)備標記的主機標記值。由于標記存儲器單元341d在對應(yīng)于接收設(shè)備標記的地址處被訪問,所以這樣做減少了與反向映出執(zhí)行的功能相關(guān)的復(fù)雜性。
      標記存儲器341d存儲對應(yīng)于設(shè)備標記的主機標記。在本發(fā)明的一個實施例中,標記存儲器341d具有32個入口,入口0(地址0)存儲對應(yīng)于設(shè)備標記值0的主機標記,入口1(地址1)存儲對應(yīng)于設(shè)備標記值1的主機標記等等。在標記存儲器中不是所有入口都是有效的。所述標記存儲器341d是具有獨立的讀和寫訪問端口的常規(guī)存儲器。所述標記存儲器341d讀訪問端口包括讀地址端口、讀選通端口和讀輸出端口。所述標記存儲器341d寫訪問端口包括寫輸入端口、寫地址端口和寫選通端口。所述標記存儲器341d讀地址端口與接收設(shè)備標記輸入341j相連,讀選通端口與控制信號341rd相連,而讀輸出端口與標記存儲器輸出總線341ilt相連。所述標記存儲器341d寫地址端口與LQT映射341t的輸出相連,寫選通端口與控制信號341wr相連,而寫輸入總線與由串連控制信號341h和選擇的主機標記輸入341i形成的總線相連。有效的LQT入口341a包括每個設(shè)備標記值的valid_lqt_bit。當valid_lqt_bit的值是邏輯1時,這表明使用了相應(yīng)的設(shè)備標記值,而邏輯值0表明沒有使用相應(yīng)的設(shè)備標記值。所述valid_lqt_bus 341v是包括全部valid_lqt_bits的總線。將所述valid_lqt_bus 341v作為輸入提供給LQT映射341b。當控制信號341h處于邏輯0時,LQT映射341b在主機11范圍中找到未使用的第一標記值,并且將其置于LQT映射輸出341lt上。當控制信號341h處于邏輯1時,LQT映射341b在主機12范圍中找到未使用的第一標記值,并且將其置于LQT映射輸出341lt上。LQT映射輸出341t與設(shè)備標記多路復(fù)用器341m1的輸入相連。所述控制信號341n選擇置于設(shè)備標記多路復(fù)用器輸出341dt上的主機標記多路復(fù)用器341m1的輸入。當確認控制信號341wr時,將位于所選擇的主機標記輸入341i和控制信號341h上的值寫入位于對應(yīng)于LQT映射輸出341lt的入口處的標記存儲器341d中,并且將對應(yīng)于LQT映射輸出341lt的valid_lqt_bit設(shè)定為邏輯1。
      通過在具有等于接收設(shè)備標記輸入341j的地址的入口處訪問標記存儲器341d來執(zhí)行LQ標記的逆映射。示出的接收設(shè)備標記輸入341j與標記存儲器341d的讀地址端口相連,并且當確認控制信號341rd時,訪問標記存儲器341d,并且將處于對應(yīng)于接收設(shè)備標記輸入341j的地址處的入口置于輸出上。所述標記存儲器輸出341ilt與主機標記多路復(fù)用器341m2的輸入端相連。所述控制信號341n選擇置于多路復(fù)用器341m2的輸出上的主機標記多路復(fù)用器341m2的輸入。將主機標記多路復(fù)用器341m2的輸出保存在retrieve_tag_register 341e中。所述retrieve_tag_register輸出341ht包括表明哪臺主機是原始主機的信號以及相應(yīng)的主機標記值。
      所述Sactive映射341s接收Sactive輸入341k以及主機隊列深度341qd,并且生成主機11 Sactive輸出總線341s1以及主機12Sactive輸出總線341s2。將經(jīng)過Sactive輸入341k的host_queue_depth_minus_one的位0置于主機11 Sactive輸出總線341s1的相應(yīng)位中,復(fù)位(邏輯0)主機11 Sactive輸出總線341s1的保持位。將經(jīng)過Sactive輸入341k的(2*host_queue_depth-1)的位host_queue_depth置于經(jīng)過主機12Sactive輸出總線341s2的host_queue_depth_minus_one的位0中,復(fù)位(邏輯0)主機12Sactive輸出總線341s2的保持位。
      主機判優(yōu)343的操作在下面的表1中描述。如上所述,主機判優(yōu)343使用循環(huán)優(yōu)先級來選擇可以向設(shè)備發(fā)送命令的主機。最初,將優(yōu)先級任意地分配給主機11。所述判優(yōu)電路知道所述優(yōu)先級并且執(zhí)行判優(yōu)以選擇可以向設(shè)備發(fā)送命令(FIS)的主機。當設(shè)備進入接受另一個命令的狀態(tài)時,通知判優(yōu)電路,以及判優(yōu)電路改變優(yōu)先級到另一臺主機。
      在表1中描述判優(yōu)電路操作的信號如下·H1_fis_req,當置位時表明主機11具有FIS請求·H2_fis_req,當置位時,表明主機12具有FIS請求·H1_Qcmd,當置位時,表明主機11已經(jīng)發(fā)布隊列命令,當復(fù)位時非隊列命令,·H2_Qcmd,當置位時,表明主機12已經(jīng)發(fā)布隊列命令,當復(fù)位時未隊列命令·H1_Qempty,當置位時,表明主機11具有空隊列,當復(fù)位時非空隊列·H1_Qempty,當置位時,表明主機11具有空隊列,當復(fù)位時非空隊列表1.主機判優(yōu)操作H1_fis_ H2_fis_ H1_Qc H2_Qc H1_Qe H2_Qe 主機判優(yōu)動作req req md md mpty mpty1 10 x x 1 1許可主機112 01 x x 1 1許可主機12
      3 1 1 0 0 1 1許可具有優(yōu)先權(quán)的主機4 1 1 0 1 1 1許可主機115 1 1 1 0 1 1許可主機126 1 1 1 1 1 1許可具有優(yōu)先權(quán)的主機7 1 0 x x 0 1許可主機118 0 1 x 0 0 1不發(fā)布許可(3)9 0 1 x 1 0 1許可主機1210 1 1 0 0 0 1許可主機11(1)11 1 1 0 1 0 1許可主機11(1)12 1 1 1 0 0 1許可主機11可替換地,如果是遺留隊列命令,那么就許可主機11,否則,如果是本地隊列命令,則不發(fā)布許可(4)13 1 1 1 1 0 1許可具有優(yōu)先權(quán)的主機14 1 0 0 x 1 0不發(fā)布許可(3)15 1 0 1 x 1 0許可主機1116 0 1 x x 1 0許可主機1217 1 1 0 0 1 0許可主機12(2)18 1 1 0 1 1 0許可主機12可替換地,如果是遺留隊列命令,那么就許可主機12,否則,如果是本地隊列命令,則不發(fā)布許可(4)19 1 1 1 0 1 0許可主機12(2)20 1 1 1 1 1 0許可具有優(yōu)先權(quán)的主機21 1 0 0 x 0 0許可主機11(1)22 1 0 1 x 0 0許可主機1123 0 1 x 0 0 0許可主機12(2)24 0 1 x 1 0 0許可主機1225 1 1 0 0 0 0許可具有優(yōu)先權(quán)的主機26 1 1 0 1 0 0許可主機1227 1 1 1 0 0 0許可主機1128 1 1 1 1 0 0許可具有優(yōu)先權(quán)的主機29 0 0 x x x x不發(fā)布許可注釋
      (1)當主機11具有非空隊列時、它發(fā)布非隊列命令。所述交換機將命令轉(zhuǎn)送到設(shè)備。響應(yīng)非空隊列的非隊列命令的接收,設(shè)備將設(shè)置錯誤(ERR)。具有非空隊列的接收錯誤將致使交換機刷新非空隊列命令,并且向具有非空隊列的主機發(fā)送ERR狀態(tài)。
      (2)當主機11具有非空隊列時、它發(fā)布非隊列命令。所述交換機將命令轉(zhuǎn)送到設(shè)備。響應(yīng)非空隊列的非隊列命令的接收,設(shè)備將設(shè)置錯誤(ERR)。具有非空隊列的接收錯誤將致使交換機刷新非空隊列命令,并且向具有非空隊列的主機發(fā)送ERR狀態(tài)。
      (3)由于發(fā)送非隊列命令的主機具有空隊列,并且另一臺主機具有非空隊列,發(fā)送非隊列命令將致使設(shè)備設(shè)置錯誤并且導(dǎo)致隊列被刷新,因此當發(fā)送具有空隊列的主機,并且當另一臺主機具有非空隊列命令時,保持發(fā)送非隊列命令,直到另一臺主機隊列是空的。
      (4)如上所述,當具有空隊列的主機在另一臺主機具有非空隊列時,發(fā)布非隊列命令時,保持非隊列命令,直到隊列是空的。在該情況下,當具有非空隊列的主機發(fā)送另一個隊列命令時,為了允許隊列為空,需要保持最新接收的隊列命令,直到隊列是空的,并且發(fā)送非隊列命令。在遺留隊列命令的情況中,由于當重新連接設(shè)備時,交換機必須釋放命令,所以實際沒有保持最新接收的遺留隊列命令。然而,此限制不適用于本地隊列命令。
      在上文描述了使用基于循環(huán)優(yōu)先權(quán)的判優(yōu)算法的圖6的有效交換機300。使用不同判優(yōu)算法的可替換實施例屬于本發(fā)明的精神和范圍之內(nèi)的。這種可替換的判優(yōu)算法包括,但不局限于基于靜態(tài)或者動態(tài)加權(quán)(加權(quán)是“分配給主機的帶寬”與“總可用帶寬”的比率)向每臺主機提供帶寬的判優(yōu)算法。這種判優(yōu)算法使用帶寬測定方法,諸如但不限于每條命令的平均傳輸計數(shù)(用戶數(shù)據(jù)的數(shù)目)。
      在4層中,從第一協(xié)議棧的1層直到4層處理接收幀的交換,然后通過第二協(xié)議棧的4層,然后從第二協(xié)議棧的4層下至1層來處理。為了減少與交換機300相關(guān)的電路,以及減少經(jīng)由交換機300的延遲,已經(jīng)依照本發(fā)明的實施例介紹了幾種改變。這些改變將在下面進行更詳細地概述和描述。
      -所述主機協(xié)議棧和設(shè)備協(xié)議棧共享同一數(shù)據(jù)FIS FIFO-防止從4層向另一個4層發(fā)送任務(wù)文件,通過從3層向3層發(fā)送FIS,由此減少經(jīng)由交換機的延遲圖9示出了用于有效交換機500(圖10a)的實施例的SATA 3級端口410。SATA 3級端口410包括PL電路411、LL電路412和TL電路413。所述PL電路411包括模擬前端電路(AFE)411a、物理/鏈路接口電路411e、物理初始化狀態(tài)機(Phy ISM)411b和OOB檢測器411c。示出的所述PL電路411與輸出高速差動發(fā)送信號411tx和輸入差動接收信號411rx相連。示出的所述PL電路411經(jīng)由鏈路發(fā)送總線412t和鏈路接收總線412r與LL電路412相連。所述OOB檢測器411c檢測OOB信號并且在411o上發(fā)送檢測的OOB信號。由Phy ISM411b控制的多路復(fù)用器411b選擇發(fā)送數(shù)據(jù)411t或者用于傳輸?shù)腜hyISM輸出411s。所述Phy ISM 411b控制信號包括信號411i。示出的LL電路412經(jīng)由鏈路發(fā)送數(shù)據(jù)總線412t和鏈路接收數(shù)據(jù)總線412r與PL電路411相連。所述LL電路412提供斷電狀態(tài)以及在信號412p上提供斷電請求。示出的LL電路412經(jīng)由傳輸發(fā)送總線413t、傳輸接收總線413r和傳輸控制/狀態(tài)總線413c與TL電路413相連。TL電路413包括FIS保持寄存器413a和多路復(fù)用器413b。所述TL電路413不包括數(shù)據(jù)FIS FIFO。將數(shù)據(jù)FIS FIFO 415a和相關(guān)聯(lián)的FIFO控制415b移出TL電路413,并且通常被外部地定位于SATA 3級端口410。TL電路的此修改,即,在減少FIFO數(shù)目以及減少與有效交換機相關(guān)聯(lián)的延遲方面,F(xiàn)IFO和FIFO控制物理上向外移出TL電路是關(guān)鍵。示出的SATA 3級端口410經(jīng)由FIFO輸入總線415i和FIFO輸出總線415o與外部數(shù)據(jù)FIS FIFO 415a相連。示出的SATA 3級端口410經(jīng)由FIFO控制總線415c和FIFO狀態(tài)總線415s與外部FIFO控制415b相連。SATA 3級端口410的FIS輸入總線416i和保持FIS輸出總線416o(合起來作為“FIS總線結(jié)構(gòu)”)外部地提供附加輸入和輸出接口。在圖9的實施例中,數(shù)據(jù)FIS FIFO只包括數(shù)據(jù)FIS的負載、數(shù)據(jù)FIS的第一雙字將位于FIS輸入或輸出總線上。FIS總線結(jié)構(gòu)允許在不經(jīng)由4層通過FIS的情況下、在3層的SATA端口之中通過非數(shù)據(jù)FIS和第一發(fā)送的雙字數(shù)據(jù)FIS。外部FIFO體系結(jié)構(gòu)允許在不經(jīng)由4層通過數(shù)據(jù)FIS的負載的情況下、在SATA端口之中通過數(shù)據(jù)FIS的負載。在可替換實施例中,數(shù)據(jù)FIS FIFO包括完整的數(shù)據(jù)FIS,其包括數(shù)據(jù)FIS的第一雙字。所述FIS輸入總線和保持FIS輸出總線通常包括非數(shù)據(jù)FIS。
      圖10a和10b示出了本發(fā)明的有效交換機500的另一個實施例的框圖。有效交換機500的體系結(jié)構(gòu)的特征之一是在不經(jīng)由4層通過數(shù)據(jù)的情況下,使用公用FIFO來在SATA端口之中通過數(shù)據(jù)FIS的負載,由此減少與交換機相關(guān)聯(lián)的延遲以及FIFO的數(shù)目。有效交換機500的另一個特征是FIS總線結(jié)構(gòu),該結(jié)構(gòu)允許在不經(jīng)由4層通過FIS的情況下,在3層的SATA端口之中通過非數(shù)據(jù)FIS和第一個雙字數(shù)據(jù)FIS,由此減少經(jīng)過有效交換機500的延遲。
      參見圖10a,有效交換機500包括SATA 3級主機端口510、SATA3級主機端口520、SATA 3級設(shè)備端口530、數(shù)據(jù)FIS FIFO 555a、FIFO控制555b、數(shù)據(jù)多路復(fù)用器551a、控制多路復(fù)用器551b、數(shù)據(jù)多路復(fù)用器553、主機FIS電路542、設(shè)備FIS電路543以及判優(yōu)和控制電路541。SATA 3級端口510、520和530體系結(jié)構(gòu)與如上所述以及圖9中所示的SATA 3級端口410的體系結(jié)構(gòu)相同。主機FIS電路542包括主機FIS寄存器514a、主機FIS寄存器524a、未決主機FIS寄存器542b和主機FIS多路復(fù)用器542a。示出的主機FIS輸出517o、主機FIS輸出527o和未決主機FIS輸出542p與多路復(fù)用器542a的輸入端相連。示出的主機FIS多路復(fù)用器542a的輸出端與主機FIS輸出總線542o相連。所述設(shè)備FIS電路543包括設(shè)備FIS寄存器534a、設(shè)備FIS多路復(fù)用-分解器543a和設(shè)備FIS多路復(fù)用器543b。示出的設(shè)備FIS輸出端537o、FIS總線543i和子FIS總線543j與設(shè)備FIS多路復(fù)用-分解器543a的輸入端相連。多路復(fù)用-分解器543a的第一輸出端是主機FIS輸入總線516i,而多路復(fù)用-分解器543a的第二輸出端是主機FIS輸入總線526i??刂菩盘?43k控制設(shè)備FIS多路復(fù)用-分解器543a的操作。示出的主機FIS輸出總線542o、FIS總線543m和子FIS總線543n與設(shè)備FIS多路復(fù)用器543b的輸入端相連。示出的設(shè)備FIS多路復(fù)用器輸出端543d與設(shè)備FIS輸入總線536i相連。所述設(shè)備FIS多路復(fù)用器選擇信號543s控制多路復(fù)用器543b的操作。
      參見圖10c,多路復(fù)用-分解器543a的操作是繼之以多路分解的二級多路復(fù)用。在第一級多路復(fù)用處,由控制信號543k表示,選擇設(shè)備FIS輸出總線537o或者FIS總線543i并且通過第二級多路復(fù)用,其中如果它由控制信號543k表示,那么用子FIS總線543j代替第一級多路復(fù)用的部分輸出,并且將第二級多路復(fù)用的結(jié)果多路分解到多路復(fù)用-分解器543a的兩個輸出端。所述控制信號543k包括用于多路復(fù)用和多路分解功能的控制信號。所述多路分解功能將第二級多路復(fù)用的結(jié)果傳到選定的輸出端,并且將多路復(fù)用-分解器543a的另一個輸出端設(shè)置為無效級。多路復(fù)用器543b操作是一個二級多路復(fù)用,在第一級,由控制信號543s表示,選擇主機FIS輸出總線542o或者FIS總線543m,并且將其傳送到第二級多路復(fù)用,其中將其置于輸出端543d上,或者相反由控制信號543s表示,用子FIS總線543n代替第一級多路復(fù)用的部分輸出,然后置于輸出端543d上。
      參見圖10a,數(shù)據(jù)FIS FIFO 555a是雙端口FIFO,包括數(shù)據(jù)FIFO輸入555a(i1)、數(shù)據(jù)FIFO輸出555a(o1)、數(shù)據(jù)FIFO輸入555a(i2)和數(shù)據(jù)FIFO輸出545a(o2)。FIFO控制555b包括FIFO控制輸入555b(i1)、提供數(shù)據(jù)FIFO端口555a的控制和狀態(tài)的FIFO狀態(tài)輸出555b(o1)、控制輸入555b(i2)和提供數(shù)據(jù)FIFO端口555b的控制和狀態(tài)的FIFO狀態(tài)輸出555b(o2)。示出的SATA 3級主機端口510與輸出高速差動發(fā)送信號511tx和輸入差動接收信號511rx相連。示出的主機FIFO輸出總線515o與多路復(fù)用器551a相連。示出的主機FIFO輸入總線515i與數(shù)據(jù)FIFO輸出端口555a(o1)相連。示出的主機FIFO控制總線515c和FIFO狀態(tài)總線515s分別與多路復(fù)用器551b和FIFO狀態(tài)端口555b(o1)相連。
      示出的主機保持FIS輸出總線516o與主機FIS寄存器514a的輸入端相連。示出的多路復(fù)用-分解器543a的輸出端與主機FIS輸入總線516i相連。示出的所述SATA 3級主機端口520與輸出高速差動發(fā)送信號521tx和輸入差動接收信號521rx相連。示出的主機FIFO輸出總線525o與多路復(fù)用器551a相連。示出的主機FIFO輸入總線525i與數(shù)據(jù)FIFO輸出端口555a(o1)相連。示出的主機FIFO控制總線525c和FIFO狀態(tài)總線525s分別與多路復(fù)用器551b和FIFO狀態(tài)端口555b(o1)相連。示出的主機保持FIS輸出總線526o與主機FIS寄存器524a的輸入端相連。示出的主機FIS輸入總線526i與多路復(fù)用-分解器543a的輸出端相連。
      示出的所述SATA 3級設(shè)備端口530與輸出高速差動發(fā)送信號531tx和輸入差動接收信號531rx相連。示出的設(shè)備FIFO輸出總線535o與多路復(fù)用器553相連。示出的設(shè)備FIFO輸入總線535i與數(shù)據(jù)FIFO輸出端口555a(o2)相連。示出的設(shè)備FIFO控制總線535c和設(shè)備FIFO狀態(tài)總線535s分別與FIFO控制端口555b(i2)和FIFO狀態(tài)端口555b(o2)相連。示出的設(shè)備保持FIS輸出總線536o與設(shè)備FIS寄存器534a的輸入端相連。示出的設(shè)備FIS輸入總線536i與設(shè)備FIS多路復(fù)用器輸出端543d相連。
      判優(yōu)和控制電路541接收主機11 FIS輸出總線517o、主機12 FIS輸出總線527o、主機FIS輸出總線542o和設(shè)備FIS輸出總線537o。判優(yōu)和控制電路541生成選擇信號551s來選擇有效主機,所述選擇信號551s是多路復(fù)用器551a和551b的控制信號。判優(yōu)和控制電路541生成控制命令層輸出總線553i以及選擇信號553s,所述控制命令層輸出總線553i與多路復(fù)用器553的輸入端相連,并且所述選擇信號553s是用于多路復(fù)用器553的控制信號。在某些情況下,總線553i的功能將替換來自于設(shè)備的數(shù)據(jù),這將在此后描述。
      判優(yōu)和控制電路541生成主機FIS多路復(fù)用器控制信號542s,用于控制多路復(fù)用器542a的操作以便選擇多路復(fù)用器542a的輸入端之一,并且以便將所選輸入置于輸出端542o上。判優(yōu)和控制電路541生成FIS總線543i和子FIS總線543j,它們與設(shè)備FIS多路復(fù)用-分解器543a的輸入端相連。電路541還生成設(shè)備FIS控制信號543k,用于控制所述多路復(fù)用-分解器543a的操作。判優(yōu)和控制電路541生成與設(shè)備FIS多路復(fù)用器543b的輸入端相連的FIS總線543m、子FIS總線543n,以及控制多路復(fù)用器543b的操作的設(shè)備FIS選擇信號543s。
      如早先所述,圖8a和8b示出了本發(fā)明交換機分別對遺留隊列命令和本地隊列命令(NQ CMD)的操作流程圖。圖8a和8b適用于本發(fā)明交換機500的圖10a和10b的實施例。
      在斷開/重新連接狀態(tài)366b中,將保存狀態(tài)376b、發(fā)送標記到主機狀態(tài)378b、NQ重新映射狀態(tài)384a和NQ穩(wěn)定狀態(tài)385b、修改的FIS發(fā)送到主機。判優(yōu)和控制電路541發(fā)送修改的FIS,并且將其置于子FIS總線543j上,所述子FIS總線543j與設(shè)備FIS多路復(fù)用-分解器543a的輸入端相連。電路541還設(shè)置選擇信號543k上的值,以便用子FIS總線543j替代設(shè)備FIS輸出端537o的一部分,然后多路分解到與主機FIS輸入總線相連的多路復(fù)用-分解器543a的輸出上。
      在重新連接到主機狀態(tài)376a中,將新的FIS發(fā)送到主機。判優(yōu)和控制電路541將新的FIS發(fā)送到FIS總線543i上,所述FIS總線543i與設(shè)備FIS多路復(fù)用-分解器543a的輸入端相連,并且設(shè)置選擇信號543k上的值,以便選擇總線543i,然后多路分解到與主機FIS輸入總線相連的多路分解器543a的輸出上。
      在發(fā)送LQ CMD狀態(tài)364以及發(fā)送NQ CMD狀態(tài)382b中,將修改的FIS發(fā)送到所述設(shè)備。判優(yōu)和控制電路541生成修改的FIS,并且將其置于子FIS總線543n上,所述子FIS總線543n與設(shè)備FIS多路復(fù)用器543b的輸入端相連,并且設(shè)置選擇信號543s上的值以便使用子FIS總線543n替代主機FIS輸出542o的一部分,以作為多路復(fù)用器543b的輸出。多路復(fù)用器543b的輸出與設(shè)備FIS輸入總線536i相連。
      在發(fā)送服務(wù)CMD狀態(tài)373中,將新的FIS發(fā)送到設(shè)備。判優(yōu)和控制電路541將新的FIS發(fā)送到FIS總線543m上,所述FIS總線543m與設(shè)備FIS多路復(fù)用器543b的輸入端相連,并且設(shè)置選擇信號543s上的值,以便選擇作為多路復(fù)用器543b的輸出的總線543m。多路復(fù)用器543b的輸出與設(shè)備FIS輸入總線536i相連。
      參見圖10b,判優(yōu)和控制電路541包括主機判優(yōu)電路544、標記/Sactive映射電路546以及控制電路545。
      標記/Sactive映射電路546與圖7b中所示的相同,并且由標記/Sactive映射電路546執(zhí)行的功能包括·將所選主機隊列標記映射到發(fā)送設(shè)備標記,并且在遺留隊列標記的情況下,將結(jié)果保存在標記存儲器341d中,并且保存一列有效隊列標記。
      ·逆映射接收設(shè)備隊列標記以便識別主機并且獲得原始主機標記,并且在遺留隊列標記的情況下,當在完成命令時由控制電路342定向時,無效隊列標記。
      ·將Sactive字段分別映射到對應(yīng)于主機11和主機12的主機11sactive字段和主機12sactive字段。
      主機11 FIS輸出總線517o包括主機11 FIS請求518,其包括主機11 FIS請求信號和FIS類型。主機12 FIS輸出總線527o包括主機12 FIS請求528,其包括主機12 FIS請求信號和FIS類型。主機判優(yōu)電路544接收主機11 FIS請求518、主機12 FIS請求528、來自于控制電路545的控制信號544c以及來自于標記/Sactive映射電路546的隊列狀態(tài)信號546q。響應(yīng)來自于控制電路545的控制信號544c,主機判優(yōu)電路544生成充當?shù)娇刂齐娐?45的輸入的主機選擇信號544hs。主機判優(yōu)544的操作在上文相對于表1描述了。
      由控制電路545執(zhí)行的功能包括·生成用于控制多路復(fù)用器551a和551b的操作的選擇信號551s·生成控制命令層輸出總線553i以及選擇信號553s,所述控制命令層輸出總線553i與多路復(fù)用器553的輸入端相連,并且所述選擇信號553s是多路復(fù)用器553的控制信號·生成FIS總線543i、以及與設(shè)備FIS多路分解器543a的輸入端相連的子FIS總線以及用于控制多路復(fù)用-分解器543a的操作的設(shè)備控制信號543k·生成FIS總線543m、與設(shè)備FIS多路復(fù)用器543b的輸入端相連的子FIS總線、以及控制多路復(fù)用器543b的操作的設(shè)備FIS多路復(fù)用器選擇信號543s·生成標記/Sactive映射電路546的控制信號·生成主機判優(yōu)544的控制信號圖10b的實施例另外包括交換初始化電路549和來自于SATA端口的斷電狀態(tài)和請求信號。
      示出的SATA 3級端口510的斷電狀態(tài)和請求信號512p與控制電路545相連。示出的SATA 3級端口510的OOB檢測器信號511o與交換初始化電路549相連。示出的SATA 3級端口510的Phy ISM控制信號511i與交換初始化電路549相連。
      示出的SATA 3級端口520的斷電狀態(tài)和請求信號522p與控制電路545相連。示出的SATA 3級端口520的OOB檢測器信號521o與交換初始化電路549相連。示出的SATA 3級端口520的Phy ISM控制信號521i與交換初始化電路549相連。
      示出的SATA 3級端口530的斷電狀態(tài)和請求信號532p與控制電路545相連。示出的SATA 3級端口530的OOB檢測器信號531o與交換初始化電路549相連。示出的SATA 3級端口530的Phy ISM控制信號531i與交換初始化電路549相連。所述交換初始化電路549與圖5的交換初始化電路244相同??梢詫⒂山粨Q初始化電路549執(zhí)行的功能分給SATA端口510、520和530中的SATA PL電路。作為可替換的實施例,即將交換初始化電路549的功能分給SATA端口510、520和530中的SATA PL電路,是落入本發(fā)明的范圍內(nèi)的。
      對于本領(lǐng)域普通技術(shù)人員來說顯而易見的是,可以將本發(fā)明的SATA有效交換機的實施例擴展為SATA至ATA有效交換機。圖11a和11b示出了這種SATA至ATA有效交換機的實施例,其允許由兩臺主機并行訪問經(jīng)由ATA鏈路與交換機相連的存儲單元,其中所述兩臺主機經(jīng)由SATA鏈路與交換機相連。
      圖11a示出了根據(jù)本發(fā)明的SATA至ATA交換機600的實施例。所述交換機600與圖6的交換機300基本相同,但具有以下差異·用SATA 4級至ATA橋630來代替交換機300中的SATA 4級設(shè)備端口330·用ATA鏈路636代替交換機300中的SATA鏈路331tx、331rx。
      SATA 4級至ATA橋630包括SATA命令層634、ATA傳輸層633和ATA接口橋632。示出的ATA接口橋632與ATA鏈路636相連,并且將ATA總線636上的活動轉(zhuǎn)換(橋接)至傳輸層接口633io上的活動,反之亦然。所述SATA命令層634和傳輸層633與圖2b的命令層54和傳輸層53相同。
      圖11a示出了根據(jù)本發(fā)明實施例的SATA至ATA交換機700的另一個實施例。交換機700與圖10a的交換機500基本相同,但具有以下差異·用SATA 3級至ATA橋730來代替交換機500中的SATA 3級設(shè)備端口530·用ATA鏈路736代替交換機500中的SATA鏈路531tx、531rx。
      所述SATA 3層至ATA橋730包括ATA傳輸層733和ATA接口橋732。所述ATA接口橋732與ATA鏈路736相連,并且將ATA總線736上的活動轉(zhuǎn)換(橋接)至傳輸層接口733io上的活動,反之亦然。所述傳輸層733與圖9的傳輸層413相同。
      已經(jīng)使用并行ATA總線描述了圖11a和11b的實施例。本領(lǐng)域中的普通技術(shù)人員顯而易見的是,可以將本發(fā)明擴展為使用其他并行總線。本發(fā)明的范圍除并行ATA總線之外、還包括使用其他并行總線。
      圖12示出了對SATA FIS結(jié)構(gòu)的修改以便提供路由信息。也就是說,依照本發(fā)明的又一個實施例,SATA端口包括路由明確的幀信息結(jié)構(gòu),用于識別哪臺主機是源主機以及哪臺主機是目的地主機。如圖1d所示,SATA FIS結(jié)構(gòu)在FIS的第一雙字(雙字0)中具有少數(shù)保留位,尤其是雙字0的位8至12。通過使用這些保留位之一來表示主機是FIS的起源或是目的地,極大地簡化了交換機中的路由選擇。將此路由選擇位稱為H位(91(i)、91(ii)、91(iii)、91(iv)、91(v)、91(vi)、91(vii)和91(viii)),根據(jù)FIS方向,邏輯值0表明主機11而邏輯值1表明主機12是FIS的起源或者目的地。由此,設(shè)備識別哪臺主機是起源和/或目的地,從而FIS的路由選擇對于交換機來說是透明的,由此減少了交換機的設(shè)計復(fù)雜性,使其造價更為低廉,由此經(jīng)由交換機提供‘路由明確的’路由選擇。
      當交換機正向設(shè)備發(fā)送FIS時,如果FIS來源于主機11,那么交換機將H位復(fù)位為邏輯值0,如果FIS來源于主機12,那么將H位設(shè)置為邏輯值1。所述設(shè)備必須保存H位,并且將其插入被發(fā)送給主機的任意FIS。利用路由明確的FIS結(jié)構(gòu),可以將有效交換機的復(fù)雜性減少為2層交換機??梢孕薷膱D5的2層交換機,以便如同具有路由明確的FIS結(jié)構(gòu)的有效交換機那樣操作。在一個這種修改中,修改交換機200的有效主機選擇電路141,以便檢查來自于設(shè)備的輸入FIS的H位,并且通過基于輸入的FIS的H位生成用于路由選擇的控制信號將輸入FIS的H位路由至適當?shù)闹鳈C。
      已經(jīng)描述了使用雙端口FIFO的本發(fā)明實施例。本領(lǐng)域技術(shù)人員顯而易見的是,可以使用附加電路和單端口FIFO一起來代替雙端口FIFO。此外,在所述實施例中的一些總線、即輸入或者輸出,可以合并成單條雙向輸入/輸出總線。另外,專用于一個功能的總線可以合并成單條總線。
      為了概括,在本發(fā)明的實施例中,兩臺主機、主機1和主機2(諸如圖3a中的主機11和主機12),與存儲單元耦合以便從其中或者向其中讀寫信息,經(jīng)由交換機探求對存儲單元(諸如存儲單元16,圖3a中所示)的同時訪問,所述交換機分別諸如圖6和10a的交換機300和500。這是與現(xiàn)有技術(shù)系統(tǒng)的重要區(qū)別,因為雖然在現(xiàn)有技術(shù)中,兩臺主機能訪問存儲單元,但是它們不能同時訪問同一存儲單元。在現(xiàn)有技術(shù)中,如果主機之一和存儲單元之間的連接由于某種原因而發(fā)生故障,那么另一臺主機可以繼續(xù)訪問存儲單元。然而,在檢測到故障之后切換到另一臺主機,由于系統(tǒng)需要在另一臺主機與存儲單元通信之前被復(fù)位,所以這樣做會產(chǎn)生假信號。
      在其他現(xiàn)有技術(shù)系統(tǒng)中,諸如故障容限系統(tǒng),一臺主機屏蔽另一臺主機,也就是說有效主機執(zhí)行的任何動作都試圖被無效主機模仿。將此原理稱作“心跳”,表明兩臺主機之間的連通性達到了兩臺主機知道彼此存的在并且另一個是可操作的。也就是說,一臺主機意識到另一臺主機的故障,結(jié)果不再檢測“心跳”,那時,已經(jīng)執(zhí)行了檢測的主機接管訪問存儲單元,并且在沒有另一臺主機的情況下繼續(xù)操作。此外,由于所述主機不能夠象本發(fā)明那樣同時訪問存儲單元,所以這種現(xiàn)有技術(shù)系統(tǒng)要求使用雙端口存儲單元,而不能使用單端口存儲單元。
      在企業(yè)系統(tǒng)內(nèi),因為需要多臺主機同時訪問單端口存儲單元,所以非常需要本發(fā)明的實施例。在本發(fā)明中,將命令按照其他類型信息從主機同時發(fā)送到存儲單元。本發(fā)明消除了由從有效至無效主機的轉(zhuǎn)換中所引起的假信號,如通過在上文描述的一些現(xiàn)有技術(shù)系統(tǒng)中所經(jīng)歷的那樣。實際上,在本發(fā)明中,兩臺主機之間的交換依照一種連續(xù)的并且平滑的方式來執(zhí)行。
      硬件基本上遵循多層SATA來構(gòu)造。SATA物理層包括用于發(fā)送和接收高速信號的模擬前端。初始化狀態(tài)機還連同帶外檢測器以及用于連接鏈路層的接口塊被包括在一起。選擇設(shè)備選擇發(fā)送初始化信息還是發(fā)送來自于物理層的數(shù)據(jù)。所述鏈路層與傳輸層通信,其通常包括用于數(shù)據(jù)傳送的FIFO以及用于非數(shù)據(jù)FIS交換的一組寄存器。所述FIFO通常用于存儲數(shù)據(jù)FIS,而寄存器通常用于存儲非數(shù)據(jù)FIS。
      如圖4所示,在現(xiàn)有技術(shù)的一個系統(tǒng)中,一臺主機存在一個物理層,另一臺主機存在另一個物理層,并且設(shè)備或者由交換機使用的存儲單元也存在物理層,其中所述交換機耦合在主機和設(shè)備之間。沒有其他層與主機和/或設(shè)備通信。經(jīng)由所述物理層,由多路復(fù)用器選擇其中一臺主機,以便與設(shè)備進行通信,然后設(shè)備向那個有效主機發(fā)送數(shù)據(jù)。有效主機選擇電路決定或者選擇哪臺主機是連同初始化電路一起最初選擇的。由此,這種現(xiàn)有技術(shù)的交換機只需要一層或者物理層來通信,不需要其他層來通信。然而,如前所述,采用這種現(xiàn)有技術(shù)系統(tǒng)的問題之一在于經(jīng)由交換機發(fā)生延遲。另一個問題在于只有一臺主機可以在任意給定時間與設(shè)備通信。
      本發(fā)明的實施例之一設(shè)法解決經(jīng)由交換機的延遲問題,如圖5所示。由于采用了第二層的SATA鏈路、而不是僅僅使用第一層,所以經(jīng)由交換機的延遲不再是問題。所述交換機實際上是2層交換機,由此,能夠在鏈路層以及物理層內(nèi)通信。但是在被發(fā)送給設(shè)備之前、將來自于主機鏈路層的數(shù)據(jù)多路復(fù)用,將它們存儲在FIFO中以便被緩沖,結(jié)果使經(jīng)由交換機的延遲長于無論在哪種情況下的串行ATA標準所允許的延遲,在現(xiàn)有技術(shù)系統(tǒng)中,這種數(shù)據(jù)往往已經(jīng)因長時延遲而丟失了。然而,在圖5的實施例中,F(xiàn)IFO緩沖防止了任何數(shù)據(jù)丟失,即便經(jīng)由交換機的延遲長于標準的要求。隨后,通過使用多路分解器243(圖5),將來自于設(shè)備的數(shù)據(jù)路由到有效主機。由此,在圖5的實施例中,雖然只有一臺主機在任意給定的時間與裝置通信,但是經(jīng)由交換機200的延遲沒有干擾系統(tǒng)性能,并且與標準的要求一致。
      作為選擇,通過使用FIFO(而不是僅僅1層)來采用1層或者物理層來使經(jīng)由交換機的延遲看上去可以忽略,就像采用在上文描述的附加的2層那樣操作。
      在圖6中,描述了由兩臺主機對設(shè)備的同時訪問。在此使用的同時表示當設(shè)備(諸如存儲單元)沒有處于空閑狀態(tài)時,在任意給定時間接收來自于兩個或更多主機的任何一個的命令。空閑狀態(tài)是設(shè)備沒有處理其他命令的時候。傳統(tǒng)上,同時是通過在給定時間片多路復(fù)用每臺主機來實現(xiàn)的,或者通常將其稱為時分多路復(fù)用(TDM)。然而,因新的時間片或者時隙而突然中斷發(fā)送以服務(wù)于另一臺主機時,由于其中一臺可能位于數(shù)據(jù)傳送中,所以存儲設(shè)備無法正常工作,這樣往往會破壞系統(tǒng)性能并且可能會導(dǎo)致丟失數(shù)據(jù)。
      由此,圖6的實施例采用了基于命令的交換或者多路復(fù)用。也就是說,當正在處理來自于一臺主機的命令時,緩沖來自于另一臺主機的任何命令,并且在完成當前命令等等之后發(fā)送給設(shè)備,由此在兩臺主機的命令之間產(chǎn)生乒乓效應(yīng)。
      為實現(xiàn)基于命令的多路復(fù)用,為兩臺主機以及所述設(shè)備而將任務(wù)文件用于4層。在圖6中,將其作為端口顯示,主機端口和設(shè)備端口全部是4層(或者命令層)端口。判優(yōu)和控制電路340(圖6)監(jiān)控任務(wù)文件10,檢查也許會被發(fā)送的任何命令,然后按優(yōu)先次序列出命令,并且將最高優(yōu)先權(quán)的命令發(fā)送到設(shè)備。當主機端口接收所述命令并且具有優(yōu)先權(quán)時,它將命令發(fā)送至設(shè)備端口。同時,如果從另一臺主機接收了另一條命令,那么將它存儲在任務(wù)文件中,并且發(fā)送給判優(yōu)和控制電路,并且一旦服務(wù)在前命令,就將未決的命令中繼到設(shè)備,并且發(fā)生這種乒乓效應(yīng)。應(yīng)該注意的是,在圖6的實施例中滿足了交換機的定時要求,因為使用包括FIFO的1-4層來實現(xiàn)信息傳輸。另外,可以同時發(fā)送命令,以便允許在兩臺主機和設(shè)備之間同時進行傳輸。
      在此文獻的剩余附圖中提供了圖6的判優(yōu)和控制電路340的更多細節(jié),并且自始至終討論的相同。
      所述設(shè)備響應(yīng)“識別驅(qū)動命令”發(fā)送與它的能力有關(guān)的信息,并且由設(shè)備表示的一些參數(shù)可以通過交換機改變。例如,如果設(shè)備支持命令排隊,那么它具有指示它可以排隊多少命令的隊列深度,然后此信息對于主機來說變得很重要。例如,如果所述隊列深度表示只有32個命令可以由兩臺主機排隊,那么當每臺主機僅僅可以排隊16個命令時,超過此數(shù)目的任何數(shù)目的命令將溢出,并且導(dǎo)致命令丟失。由此,隊列深度信息被改變以表示16而不是32,從而每臺主機僅僅排隊16個命令。
      這樣做的方式實際上是將偵聽來自于設(shè)備的Q DEPTH信息,并且將其值從32改變?yōu)?6。另外,采用了用于映射主機標記以及重新映射設(shè)備標記的隊列標記電路。
      貫穿此文獻,其中使用或者討論了多路復(fù)用-分解器電路,參見兩個或更多信號之間的第一選擇,由此,執(zhí)行多路復(fù)用功能,并且稍后將所選信號路由至有效主機,由此,執(zhí)行多路分解器功能。
      在圖6的實施例中,采用了三個FIFO,一個在每臺主機中而第三個在設(shè)備中。這樣引入延遲。
      在可替代的實施例中,如圖9和10所示,只有一個FIFO被使用,其中將FIFO從傳輸層取出。更確切的說,將FIS接口用于3層,這樣有助于減少設(shè)計復(fù)雜性并且減少因FIFO的延遲。由所有三個端口、主機端口以及設(shè)備端口來共享FIFO。
      在圖11中,用諸如ATA端口的非串行ATA端口來代替1層和2層,由此使用非串行ATA標準來啟動存儲單元的使用,以便使用系統(tǒng)中的低成本存儲單元來改善系統(tǒng)成本。
      在本發(fā)明的又一個實施例中,用路由明確的FIS結(jié)構(gòu)代替FIS結(jié)構(gòu),采用2層交換機從而貫穿各層處理。
      由此,示出了并且討論了四個截然不同的實施例,一個是使用4層交換,一個是降低對不同層(3層)的通信并且引入FIFO來接納這種通信,又一個是使用ATA接口來替換串行ATA,并且第四個是用于交換的路由明確的FIS結(jié)構(gòu),其中所述FIS結(jié)構(gòu)知道到不同主機的信息的路由選擇。
      應(yīng)該注意的是,雖然貫穿此專利文獻,提到了信號的特定極性或諸如邏輯狀態(tài)‘1’或‘0’之類的邏輯狀態(tài)來指示信號的有效或者無效狀態(tài),但是實際上在不脫離本發(fā)明的范圍和精神的情況下可以使用相反的極性。此外,在不脫離本發(fā)明的范圍和精神的情況下還可以利用信號的任何其他類型的已知狀態(tài)。
      正如貫穿此專利文獻所使用的,信號、狀態(tài)、設(shè)備等等名稱的某個字母的大小寫,是為了保持與串行ATA工作組www.serialata.com出版的“Serial ATAHigh Speed Serialized At Attachment”中公開的相應(yīng)信號、狀態(tài)、設(shè)備等等的名稱一致性,其內(nèi)容在此引入作為參考,就好像它們?nèi)吭诖岁U述一樣。
      雖然已經(jīng)按照特定的實施例描述了本發(fā)明,但是可以預(yù)料,本發(fā)明的變化和修改對于本領(lǐng)域技術(shù)人員來說無疑是顯而易見的。因此,打算將以下的權(quán)利要求書解釋為覆蓋所有這種變化以及修改,并且這些變化和修改都落入本發(fā)明的精神和范圍中。將本發(fā)明與現(xiàn)有技術(shù)結(jié)合以開發(fā)出用于執(zhí)行包括本發(fā)明教導(dǎo)的多種功能的設(shè)備和方法,對于本領(lǐng)域技術(shù)人員來說是顯而易見的。這種設(shè)備和方法落入本發(fā)明的范圍。
      權(quán)利要求
      1.一種耦合在多個主機單元和一個設(shè)備之間、用于在其間進行通信的交換機,包括a)耦合到第一主機單元的第一串行高級技術(shù)附件(ATA)端口;b)耦合到第二主機單元的第二串行ATA端口;c)耦合到設(shè)備的第三串行ATA端口;以及d)判優(yōu)和控制電路,用于每當?shù)谝换蛘叩诙鳈C單元中的任一個發(fā)送用于由設(shè)備執(zhí)行的命令時,經(jīng)由交換機來選擇第一主機單元或者第二主機單元之一耦合到所述設(shè)備。
      2.如權(quán)利要求1所述的交換機,其中,所述第一串行ATA端口包括第一主機任務(wù)文件。
      3.如權(quán)利要求1所述的交換機,其中,所述第二串行ATA端口包括第二主機任務(wù)文件。
      4.如權(quán)利要求3所述的交換機,其中,所述第三串行ATA端口包括設(shè)備任務(wù)文件。
      5.如權(quán)利要求3所述的交換機,其中,所述第一、第二和第三端口是4級端口。
      6.如權(quán)利要求1所述的交換機,其中,所述設(shè)備是存儲單元。
      7.如權(quán)利要求1所述的交換機,其中,所述交換機用在企業(yè)系統(tǒng)中。
      8.如權(quán)利要求1所述的交換機,其中,所述判優(yōu)和控制電路令第一和第二主機單元并行訪問設(shè)備。
      9.如權(quán)利要求1所述的交換機,其中,通過該交換機將以數(shù)據(jù)、命令或者建立(setup)形式的信息從設(shè)備傳送發(fā)送到第一或第二主機單元,并且在第一或者第二主機單元接收到它們之前,由交換機修改所述信息,由此使得第一或者第二主機單元接收到修改后的信息而非所述信息。
      10.如權(quán)利要求9所述的交換機,其中,所述信息被稱為‘識別驅(qū)動響應(yīng)’。
      11.如權(quán)利要求9所述的交換機,其中,所述信息被稱為‘標記’。
      12.如權(quán)利要求1所述的交換機,其中,通過該交換機將以數(shù)據(jù)、命令或者建立形式的信息從第一或第二主機單元傳送到設(shè)備,并且在設(shè)備接收到它們之前,由交換機修改所述信息,由此使得設(shè)備接收到修改后的信息而非所述信息。
      13.如權(quán)利要求12所述的交換機,其中,所述信息被稱為‘標記’。
      14.如權(quán)利要求12所述的交換機,其中,所述判優(yōu)和控制電路包括標記/Sactive映射電路,該電路用于將主機標記映射到設(shè)備標記,并且用于逆映射以便識別主機。
      15.如權(quán)利要求1所述的交換機,其中,要么是第一主機要么是第二主機發(fā)送由設(shè)備排隊的遺留隊列命令。
      16.如權(quán)利要求1所述的交換機,其中,要么是第一主機要么是第二主機發(fā)送由設(shè)備執(zhí)行的本地隊列命令。
      17.如權(quán)利要求16所述的交換機,其中,在發(fā)送給設(shè)備之前,修改本地隊列命令中的標記,從而避免將相同的標記用于兩臺主機,并且防止超過最大允許的標記值。
      18.如權(quán)利要求17所述的交換機,其中,在發(fā)送給主機之前,將在FIS中從設(shè)備接收的標記修改為其初始值。
      19.如權(quán)利要求1所述的交換機,其中,第一、第二和第三端口是3級串行ATA端口,并且數(shù)據(jù)FIS FIFO以及相關(guān)聯(lián)的FIFO控制被耦合到第一、第二和第三端口,并且被置于其外部。
      20.一種交換機,包括a)用于連接到第一主機單元的第一串行高級技術(shù)附件(ATA)端口;b)用于連接到第二主機單元的第二串行ATA端口;c)用于連接到設(shè)備的第三串行ATA端口;以及d)判優(yōu)和控制電路,用于當任一主機單元發(fā)送用于由設(shè)備執(zhí)行的命令時,經(jīng)由交換機來選擇第一主機單元或者第二主機單元耦合到待所述設(shè)備,其中,當?shù)谝换蛘叩诙鳈C單元之一經(jīng)由交換機耦合到所述設(shè)備時,第一或者第二主機單元中的另一個向交換機發(fā)送用于由所述設(shè)備執(zhí)行的命令。
      21.如權(quán)利要求20所述的交換機,其中,所述交換機是串行ATA交換機。
      22.如權(quán)利要求20所述的交換機,其中,所述第一串行ATA端口包括第一主機任務(wù)文件。
      23.如權(quán)利要求22所述的交換機,其中,所述第二串行ATA端口包括第二主機任務(wù)文件。
      24.如權(quán)利要求23所述的交換機,其中,所述第三串行ATA端口包括設(shè)備任務(wù)文件。
      25.如權(quán)利要求20所述的交換機,其中,所述設(shè)備是存儲單元。
      26.如權(quán)利要求20所述的交換機,其中,所述交換機用在企業(yè)系統(tǒng)中。
      27.如權(quán)利要求20所述的交換機,其中,所述判優(yōu)和控制電路令第一和第二主機單元并行訪問設(shè)備。
      28.如權(quán)利要求20所述的交換機,其中,通過該交換機將以數(shù)據(jù)、命令或者建立形式的信息從設(shè)備傳送到第一或第二主機單元,并且在第一或者第二主機單元接收到它們之前,由交換機修改所述信息,由此使得第一或者第二主機單元接收到修改后的信息而非所述信息。
      29.如權(quán)利要求28所述的交換機,其中,所述信息被稱為‘標記’。
      30.如權(quán)利要求28所述的交換機,其中,所述信息被稱為‘識別驅(qū)動響應(yīng)’。
      31.如權(quán)利要求20所述的交換機,其中,通過該交換機將以數(shù)據(jù)、命令或者建立形式的信息從第一或第二主機單元傳送到設(shè)備,并且在設(shè)備接收到它們之前,由交換機修改所述信息,由此使得設(shè)備接收到修改后的信息而所述信息。
      32.如權(quán)利要求31所述的交換機,其中,所述信息被稱為‘標記’。
      33.一種耦合在多個主機單元和設(shè)備之間、用于在其間為幀信息選路的交換機,包括a.第一串行高級技術(shù)附件(ATA)端口,包括路由明確的幀信息結(jié)構(gòu)(FIS),耦合到第一主機單元;b.第二串行ATA端口,包括路由明確的FIS,耦合到第二主機單元;c.第三串行ATA端口,包括路由明確的FIS,耦合到設(shè)備;以及d.判優(yōu)和控制電路,用于每當?shù)谝换蛘叩诙鳈C單元中的任一個向設(shè)備發(fā)送FIS時,經(jīng)由交換機選擇第一主機或者第二主機單元耦合到所述設(shè)備,并且其中,第一和第二主機單元以及設(shè)備的FIS識別第一或者第二主機單元中的哪一個是起源和/或目的主機,從而使得FIS的路由選擇對于交換機來說是透明的,由此降低交換機設(shè)計的復(fù)雜度,從而使其造價更低廉。
      34.如權(quán)利要求33所述的交換機,其中,所述設(shè)備是存儲單元。
      35.如權(quán)利要求33所述的交換機,其中,所述交換機用在企業(yè)系統(tǒng)中。
      36.如權(quán)利要求33所述的交換機,其中,所述判優(yōu)和控制電路令第一和第二主機單元并行訪問所述設(shè)備。
      37.如權(quán)利要求33所述的交換機,其中,利用一比特來指示哪一個主機是FIS的起源或者目的地。
      38.如權(quán)利要求33所述的交換機,其中,所述第一、第二和第三端口是2層端口。
      39.如權(quán)利要求33所述的交換機,其中,所述交換機提供‘路由明確的’路由選擇。
      40.如權(quán)利要求33所述的交換機,其中,所述交換機在2層之間切換,并且包括雙端口的先進先出(FIFO)。
      41.一種交換機,包括a.第一串行高級技術(shù)附件(ATA)端口,包括路由明確的幀信息結(jié)構(gòu)(FIS),用于連接到第一主機單元;b.第二串行ATA端口,包括路由明確的FIS,用于連接到第二主機單元;c.第三串行ATA端口,包括路由明確的FIS,用于連接到設(shè)備,所述交換機用于在第一和第二主機單元以及設(shè)備之間為幀信息選路;d.判優(yōu)和控制電路,用于當?shù)谝换蛘叩诙鳈C單元中的任一個向設(shè)備發(fā)送FIS時,經(jīng)由交換機選擇第一主機單元或者第二主機單元耦合到設(shè)備,其中,當?shù)谝换蛘叩诙鳈C單元之一經(jīng)由交換機耦合到設(shè)備時,第一或者第二主機單元中的另一個向交換機發(fā)送FIS,以便選路至所述設(shè)備,并且其中,第一和第二主機單元以及設(shè)備的FIS識別第一或者第二主機單元中的哪一個是起源和/或目的地主機,從而使得FIS的路由選擇對于交換機來說是透明的,由此降低交換機設(shè)計的復(fù)雜度,從而使其造價更低廉。
      42.如權(quán)利要求41所述的交換機,其中,所述交換機是串行ATA交換機。
      43.如權(quán)利要求41所述的交換機,其中,所述設(shè)備是存儲單元。
      44.如權(quán)利要求41所述的交換機,其中,所述交換機用在企業(yè)系統(tǒng)中。
      45.如權(quán)利要求41所述的交換機,其中,所述判優(yōu)和控制電路令第一和第二主機單元并行訪問設(shè)備。
      46.一種交換機,它可以經(jīng)串行高級技術(shù)附件(ATA)鏈路連接到第一主機單元、第二主機單元和設(shè)備,用于在第一和第二主機單元以及設(shè)備之間為幀信息選路,所述交換機包括a.第一串行ATA端口,包括路由明確的幀信息結(jié)構(gòu)(FIS),用于連接到第一主機單元;b.第二串行ATA端口,包括路由明確的FIS,用于連接到第二主機單元;c.第三串行ATA端口,包括路由明確的FIS,用于連接到設(shè)備;d.判優(yōu)和控制電路,用于當?shù)谝换蛘叩诙鳈C單元向設(shè)備發(fā)送FIS時,經(jīng)交換機選擇第一或者第二主機單元之一耦合到所述設(shè)備,其中,當?shù)谝换蛘叩诙鳈C單元之一耦合到設(shè)備時,第一或者第二主機單元中的另一個向交換機發(fā)送FIS,以便選路至所述設(shè)備,并且其中,第一和第二主機單元以及設(shè)備的FIS識別第一或者第二主機單元中的哪一個是起源和/或目的地主機,從而使得FIS的路由選擇對于交換機來說是透明的,由此降低交換機設(shè)計的復(fù)雜度,從而使其造價更低廉。
      47.如權(quán)利要求46所述的交換機,其中,所述交換機是串行ATA交換機。
      48.如權(quán)利要求46所述的交換機,其中,所述設(shè)備是存儲單元。
      49.如權(quán)利要求46所述的交換機,其中,所述交換機用在企業(yè)系統(tǒng)中。
      50.如權(quán)利要求46所述的交換機,其中,所述判優(yōu)和控制電路令第一和第二主機單元并行訪問所述設(shè)備。
      51.一種用于通過串行高級技術(shù)附件(ATA)交換機在多個主機單元和設(shè)備之間進行通信的方法,所述交換機利用串行ATA鏈路耦合到多個主機單元和設(shè)備,并且在其間為幀信息選路,包括a.將第一串行ATA端口耦合至第一主機單元以便連接到交換機,所述第一串行ATA端口包括路由明確的幀信息結(jié)構(gòu)(FIS);b.將第二串行ATA端口耦合至第二主機單元以便連接到交換機,所述第二串行ATA端口包括路由明確的FIS;c.耦合第三串行ATA端口以便連接到設(shè)備,所述第三串行ATA端口包括路由明確的FIS;d.在第一和第二主機單元以及設(shè)備之間進行判優(yōu);e.當?shù)谝换蛘叩诙鳈C單元中的任何一個發(fā)送用于由設(shè)備執(zhí)行的命令時,經(jīng)由交換機選擇第一或者第二主機單元之一耦合到設(shè)備;f.將設(shè)備耦合到第一或者第二主機單元中所選擇的一個;以及g.當?shù)谝换蛘叩诙鳈C單元中所選擇的一個耦合到設(shè)備時,第一或者第二主機單元中的另一個向交換機發(fā)送FIS以便選路至設(shè)備在發(fā)送步驟g.期間,第一和第二主機單元以及設(shè)備的FIS識別第一或者第二主機單元中的哪一個是起源和/或目的地主機,從而使得FIS的路由選擇對于交換機來說是透明的,由此降低交換機設(shè)計的復(fù)雜度,從而使其造價更低廉。
      52.一種耦合在多個主機單元和設(shè)備之間、用于在其間通信的交換機,包括a)耦合到第一主機單元的第一串行高級技術(shù)附件(ATA)端口,所述端口包括第一主機;b)耦合到第二主機單元的第二串行ATA端口;c)耦合到設(shè)備的第三并行ATA端口;以及d)判優(yōu)和控制電路,用于每當任一主機單元發(fā)送用于由設(shè)備執(zhí)行的命令時,經(jīng)由交換機來選擇第一主機單元或者第二主機單元之一耦合到所述設(shè)備。
      53.如權(quán)利要求52所述的交換機,其中,所述第一串行ATA端口包括第一主機任務(wù)文件。
      54.如權(quán)利要求53所述的交換機,其中,所述第二串行ATA端口包括第二主機任務(wù)文件。
      55.如權(quán)利要求54所述的交換機,其中,所述第三并行ATA端口包括設(shè)備任務(wù)文件。
      56.如權(quán)利要求55所述的交換機,其中,所述第一、第二和第三端口是4級端口。
      57.如權(quán)利要求52所述的交換機,其中,所述設(shè)備是存儲單元。
      58.如權(quán)利要求52所述的交換機,其中,所述交換機用在企業(yè)系統(tǒng)中。
      59.如權(quán)利要求52所述的交換機,其中,所述判優(yōu)和控制電路令第一和第二主機單元并行訪問所述設(shè)備。
      60.如權(quán)利要求52所述的交換機,其中,通過該交換機將以數(shù)據(jù)、命令或者建立形式的信息從設(shè)備傳送到第一或第二主機單元,并且在第一或者第二主機單元接收到它們之前,由交換機修改所述信息,由此使得第一或者第二主機單元接收到修改后的信息而非所述信息。
      61.如權(quán)利要求60所述的交換機,其中,所述信息被稱為‘識別驅(qū)動響應(yīng)’。
      62.如權(quán)利要求60所述的交換機,其中,所述信息被稱為‘標記’。
      63.如權(quán)利要求52所述的交換機,其中,,通過該交換機將以數(shù)據(jù)、命令或者建立形式的信息從第一或第二主機單元傳送到設(shè)備,并且在設(shè)備接收到它們之前,由交換機修改所述信息,由此使得設(shè)備接收到修改后的信息而非所述信息。
      64.如權(quán)利要求63所述的交換機,其中,所述信息被稱為‘標記’。
      65.如權(quán)利要求64所述的交換機,其中,所述判優(yōu)和控制電路包括標記/Sactive映射電路,該電路用于將主機標記映射到設(shè)備標記,并且用于逆映射以便識別主機。
      66.如權(quán)利要求52所述的交換機,其中,要么是第一主機要么是第二主機發(fā)送由設(shè)備排隊的遺留隊列命令。
      67.如權(quán)利要求52所述的交換機,其中,要么是第一主機要么是第二主機發(fā)送用于由設(shè)備執(zhí)行的本地隊列命令。
      68.如權(quán)利要求52所述的交換機,其中,第一、第二和第三端口是3級端口,并且數(shù)據(jù)幀信息系統(tǒng)(FIS)先進先出(FIFO)以及相關(guān)聯(lián)的FIFO控制被耦合到第一、第二和第三端口,并且被置于其外部。
      69.一種交換機,包括a.用于連接到第一主機單元的第一串行高級技術(shù)附件(ATA)端口;b.用于連接到第二主機單元的第二串行ATA端口;c.用于連接到設(shè)備的第三并行ATA端口;以及d.判優(yōu)和控制電路,用于當任一主機單元發(fā)送用于由設(shè)備執(zhí)行的命令時,經(jīng)由交換機來選擇第一主機單元或者第二主機單元耦合到所述設(shè)備,其中,當?shù)谝换蛘叩诙鳈C單元之一經(jīng)由交換機耦合到所述設(shè)備時,第一或者第二主機單元中的另一個向交換機發(fā)送用于由設(shè)備執(zhí)行的命令。
      70.如權(quán)利要求69所述的交換機,其中,所述交換機是串行ATA交換機。
      71.如權(quán)利要求69所述的交換機,其中,所述第一串行ATA端口包括第一主機任務(wù)文件。
      72.如權(quán)利要求71所述的交換機,其中,所述第二串行ATA端口包括第二主機任務(wù)文件。
      73.如權(quán)利要求72所述的交換機,其中,所述第三并行ATA端口包括設(shè)備任務(wù)文件。
      74.如權(quán)利要求69所述的交換機,其中,所述設(shè)備是存儲單元。
      75.如權(quán)利要求69所述的交換機,其中,所述交換機用在企業(yè)系統(tǒng)中。
      76.如權(quán)利要求69所述的交換機,其中,所述判優(yōu)電路令第一和第二主機單元并行訪問所述設(shè)備。
      77.如權(quán)利要求69所述的交換機,其中,通過該交換機將以數(shù)據(jù)、命令或者建立形式的信息從設(shè)備傳送到第一或第二主機單元,并且在第一或者第二主機單元接收到它們之前,由交換機修改所述信息,由此使得第一或者第二主機單元接收到修改后的信息而非所述信息。
      78.如權(quán)利要求77所述的交換機,其中,所述信息被稱為‘識別驅(qū)動響應(yīng)’。
      79.如權(quán)利要求77所述的交換機,其中,所述信息被稱為‘標記’。
      80.如權(quán)利要求69所述的交換機,其中,通過該交換機將以數(shù)據(jù)、命令或者建立形式的信息從第一或第二主機單元傳送到設(shè)備,并且在設(shè)備接收到它們之前,由交換機修改所述信息,由此使得設(shè)備接收到修改后的信息而非所述信息。
      81.如權(quán)利要求79所述的交換機,其中,所述信息被稱為‘標記’。
      82.一種交換機,它可以經(jīng)串行高級技術(shù)附件(ATA)鏈路連接到第一主機單元、第二主機單元以及設(shè)備,所述交換機包括a.用于連接到第一主機單元的第一串行ATA端口;b.用于連接到第二主機單元的第二串行ATA端口;c.用于連接到設(shè)備的第三并行ATA端口;以及d.判優(yōu)和控制電路,用于當?shù)谝换蛘叩诙鳈C單元發(fā)送用于由設(shè)備執(zhí)行的命令時,經(jīng)由交換機選擇第一或者第二主機單元之一耦合到所述設(shè)備,其中,當?shù)谝换蛘叩诙鳈C單元之一耦合到所述設(shè)備時,第一或者第二主機單元中的另一個向交換機發(fā)送用于由設(shè)備執(zhí)行的ATA命令。
      83.如權(quán)利要求82所述的交換機,其中,所述交換機是串行ATA交換機。
      84.如權(quán)利要求82所述的交換機,其中,所述第一串行ATA端口包括第一主機任務(wù)文件。
      85.如權(quán)利要求84所述的交換機,其中,所述第二串行ATA端口包括第二主機任務(wù)文件。
      86.如權(quán)利要求85所述的交換機,其中,所述第三并行ATA端口包括設(shè)備任務(wù)文件。
      87.如權(quán)利要求82所述的交換機,其中,所述設(shè)備是存儲單元。
      88.如權(quán)利要求82所述的交換機,其中,所述交換機用在企業(yè)系統(tǒng)中。
      89.如權(quán)利要求82所述的交換機,其中,所述判優(yōu)和控制電路令第一和第二主機單元并行訪問所述設(shè)備。
      90.如權(quán)利要求82所述的交換機,其中,通過該交換機將以數(shù)據(jù)、命令或者建立形式的信息從設(shè)備傳送到第一或第二主機單元,并且在第一或者第二主機單元接收到它們之前,由交換機修改所述信息,由此使得第一或者第二主機單元接收到修改后的信息而非所述信息。
      91.如權(quán)利要求90所述的交換機,其中,所述信息被稱為‘識別驅(qū)動響應(yīng)’。
      92.如權(quán)利要求90所述的交換機,其中,所述信息被稱為‘標記’。
      93.如權(quán)利要求82所述的交換機,其中,通過該交換機將以數(shù)據(jù)、命令或者建立形式的信息從第一或第二主機單元傳送到設(shè)備,并且在設(shè)備接收到它們之前,由交換機修改所述信息,由此使得設(shè)備接收到修改后的信息而非所述信息。
      94.如權(quán)利要求93所述的交換機,其中,所述信息被稱為‘標記’。
      全文摘要
      本發(fā)明的實施例被公開為包括SATA交換機,它允許兩臺主機訪問單端口SATA設(shè)備。進一步公開的是用于降低延遲以及SATA交換機的復(fù)雜度的實施例。
      文檔編號H04L29/04GK1574753SQ200410049310
      公開日2005年2月2日 申請日期2004年6月10日 優(yōu)先權(quán)日2003年6月11日
      發(fā)明者S·內(nèi)馬茲 申請人:硅斯托爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1