專利名稱:改進數據傳送的控制器設備和方法
技術領域:
本發(fā)明涉及諸如串行ATA(SATA)主控制器的控制器。更具體地,本發(fā)明涉及減小主機和主存儲器的數據傳送任務從而減少主機和控制器之間的接口上的數據傳送量的增強型控制器。
背景技術:
在計算機和計算機體系結構領域中,數據存儲部件和它們的接口在制造上和操作上變得更加復雜,從而造成數據傳送率和存儲率的提高。諸如計算機硬盤的部件和諸如光盤讀/寫(CD-RW)驅動器的驅動器之間的數據傳送率按照比主計算機的存儲器的周期時間(時鐘脈沖速度)的提高更大的比例增大。例如,采用稱為高級技術附加裝置(ATA),也稱為集成驅動電子設備(IDE),的盤驅動接口標準的數據存儲部件目前具有至少每秒2.4吉位(Gb/s)的傳送率。已進化到稱為串行ATA(SATA或S-ATA)標準的ATA標準的特征在于部件本身集成有部件控制器。
各部件間的數據傳送典型地涉及從第一部件向主存儲器傳送數據,并且然后從該主存儲器向第二部件傳送數據。通過和控制器,例如主控制器,進行接口(一般經由例如IDE電纜的接口電纜),數據存儲部件和主計算機連接。諸如ATA控制器或SATA控制器的控制器通過總線,例如PCI總線或PCI快速總線(express bus),和主計算機以及它的存儲器接口。PCI總線是根據外設部件互連(PCI)總線標準制造和操作的接口總線。
在以上面提到的相對高的數據傳送率從數據存儲部件存取數據對主機、主存儲器、以及把該主機連接到控制器的總線施加負載。此外,其它部件和它們的接口,例如通用串行總線(USB)和固件接口,在和主機以及主存儲器連接的總線上競爭數據傳送時間。
因此,希望具有一種改進型的控制器設備和方法,其通過卸載通常要求主機、主存儲器以及主機和該控制器間的總線參與的任務來減少在數據傳送操作期間主機、主存儲器以及主機和該控制器之間的總線的使用。
發(fā)明內容
本發(fā)明用一種在計算機系統(tǒng)內的數據存儲部件間傳送數據的增強型控制器設備來體現(xiàn)。該增強型控制器設備包括用于使該控制器和多個數據存儲部件,例如硬盤部件和CD-RW部件,連接的部件接口邏輯,并且包括用于使該控制器通過諸如PCI總線的總線和主機或主計算機連接的主機接口邏輯。該主機包括若干其它部件,例如與其連接的主存儲器。在數據存儲部件間的常規(guī)數據傳送中,來自源部件的數據由該控制器讀并且經總線從該控制器傳送到主機和/或主存儲器部件。接著,數據從該主存儲器部件和/或該主機經總線傳送到該控制器,然后從該控制器寫到目的地部件上。這樣,在常規(guī)數據傳送中,數據在主機和控制器之間的總線上傳送數次,并且暫時地占用主機的計算資源以及主存儲器的存儲資源。依據本發(fā)明的各實施例,該控制器包括能使數據直接從源數據存儲部件傳送到至少一個的目的地數據存儲部件的切換電路,即,傳送的數據不必經總線從控制器傳送到主機和/或主存儲器。該切換電路包括適當的緩沖電路和多路復用電路,以便經源部件接口和源部件接口邏輯把數據直接從源部件經由目的地部件接口邏輯和目的地部件接口傳送到目的地部件。該多路復用電路允許該緩沖電路從數據存儲部件或者按常規(guī)方式從主總線接收數據。依據本發(fā)明的一些替代實施例,該增強型控制器還包括用來檢驗數據傳送完整性的數據檢驗邏輯。依據本發(fā)明的各實施例,該增強型控制器在大多數數據傳送操作期間大大減輕主機、主存儲器、以及主機和該控制器間的總線的數據傳送責任。此外,依據本發(fā)明的各實施例,數據傳送所需的時間被減少并且各數據傳送部件消耗較少的功。
圖1是在諸如PCI總線的總線和多個數據存儲部件之間接口的常規(guī)ATA主控制器的簡化示意圖;圖2是在二個外部部件間的拷貝操作期間常規(guī)控制器的作為時間函數的總線使用的簡化圖;圖3是在諸如PCI總線的總線和多個數據存儲部件之間接口的常規(guī)SATA主控制器的簡化示意圖;圖4是依據本發(fā)明的各實施例的例如SATA主控制器的控制器的簡化示意圖;圖5是采用圖4的控制器情況下在二個外部部件間的拷貝操作期間的總線使用簡化圖;圖6是依據本發(fā)明的一替代實施例,諸如其中帶有數據檢驗邏輯的SATA主控制器的控制器的簡化示意圖;以及圖7是依據本發(fā)明的一替代實施例,例如經由諸如PCI開關的總線開關與主機進行接口的SATA主控制器的多個控制器的簡化示意圖。
具體實施例方式
在下面的說明中,相同的參照數字表示相同的部件,以便通過各圖的說明加強對本發(fā)明的理解。而且,盡管下面討論具體的特征、配置和方案,應理解這些只是出于說明目的進行的。本領域技術人員會理解,在不背離本發(fā)明的精神和范圍下其它步驟、配置和方案是有用的。
現(xiàn)參照圖1,圖中示出一個常規(guī)海量存儲控制器10例如主控制器(HC)的簡化示意圖。常規(guī)地,該也稱為主機總線適配器(HBA)的控制器10物理上位于一塊插到母板上的PCI中槽的計算機電路板上。替代地,作為一個集成電路(IC)制造控制器10或控制器10的一部分,或者把控制器10集成到一塊也包含(內部地)PCI總線的計算機芯片上。
控制器10經總線接口或總線14與主機或主計算機12連接??偩€14的一種類型是PCI總線,這是一種具有根據外設部件互連(PCI)總線標準的規(guī)程的總線。典型地,總線14經由位于連接的各端上的適當接口邏輯或者控制邏輯與主計算機12連接。當獨立標識時,這些邏輯有時稱為輸入控制器或接口控制器。但是,在本討論中,把這些邏輯稱為接口邏輯或控制邏輯以避免和控制器10混淆。
例如,總線14連接在作為主計算機12的一部分的第一接口邏輯16和作為控制器10的一部分的主機接口邏輯18之間。每個接口邏輯含有適當的控制邏輯,以允許主計算機12和控制器10經由總線14彼此正確地通信。另外,典型地,主計算機12內含有的第一接口邏輯16包括適當的控制邏輯允許主計算機12通過適當的主存儲器總線24和存儲器接口邏輯26或者通過某其它適用的接口配置與其它系統(tǒng)部件例如主存儲器部件22接口。
多個數據存儲部件和控制器10連接。例如,都采用稱為高級技術附加裝置(ATA),也稱為集成驅動電子設備(IDE)的盤驅動接口標準的可讀/可寫硬盤32和可讀/可寫光盤(CD-RW)34通過諸如菊花鏈式IDE電纜的接口36以及適當部件接口邏輯38與控制器10連接。應理解,存在其它適用的把各數據存儲部件和控制器10連接的方案。通常,接口36允許控制器10把數據從數據存儲部件32、34之一傳送到主存儲器22(經主機22)或者把數據從主存儲器22傳送到數據存儲部件32、34之一。
在從第一部件到第二部件的常規(guī)數據傳送操作中,從第一或源部件,例如硬盤驅動器32,經控制器10和主機12把數據集或數據文件讀到主存儲器22中。接著,通過主機12和控制器10把該數據集從主存儲器22寫到第二或目的地部件,例如CD-RW驅動器34。從略微詳細的角度看,數據傳送操作分成多次數據傳送,其中每次數據傳送典型地傳送不多于64千字節(jié)的數據。通常,在位級上,數據傳送涉及使用含有多個物理區(qū)域描述符(PRD)的物理區(qū)域描述符表。
一旦主機注意到部件之一請求拷貝操作,主機建立PRD。典型地,每個PRD含有八個字節(jié)二個各為4字節(jié)的雙字(Dword)。每個PRD的第一雙字包含存儲器區(qū)域物理基地址。在每個PRD的第二雙字中,前二個字節(jié)被保留。但是,該保留字段的最高有效位例如利用邏輯1指示是否達到該表的結尾。每個PRD中的第二雙字的后二個字節(jié)包含用于PRD字節(jié)計數的字段。該字節(jié)計數字段指示從該存儲器區(qū)域物理基地址開始要傳送多少字節(jié)。如果字節(jié)計數為零,則傳送64升字節(jié)。例如對于600兆字節(jié)的從硬盤到CD-RW的拷貝操作,利用多個PRD表或者利用用新內容重新循環(huán)的同一個PRD表把該拷貝操作劃分成大約10,000個PRD。
為了檢驗數據傳送無差錯地進行,通?;刈x傳送的數據。在一種常規(guī)方法中,從源部件(例如硬盤驅動器32)向主機12回讀原始數據,從目的地部件(例如CD-RW驅動器34)向主機12回讀拷貝的數據,并且由主機12例如利用一個識別二個數據集之間的差別的常規(guī)程序來比較二者。在另一種常規(guī)數據檢驗方法中,主機12取拷貝數據集的數字簽名或指紋并且使它和來自源數據集的預先計算的數字簽名比較。在此方式下,只從目的地部件對主機12回讀拷貝的數據集。例如,在拷貝源數據集之前,諸如MD5算法的算法預先計算稱為源數據集的“消息摘要”的數字簽名。拷貝操作后,從目的地部件把拷貝的數據集回讀到主機12,并且典型地位于主機12內的MD5算法計算該拷貝的數據集的數字簽名并且比較拷貝數據集的數字簽名和源數據集的數字簽名。
但是,在這二種方法中,必須把至少一個數據集通過總線14回讀到主存儲器22中,主機12可以主存儲器22訪問數據并且進行數據檢驗處理。這樣,對于常規(guī)數據傳送操作和檢驗,三次或四次傳送全部數據集,其中每次數據集傳送占用例如總線14、主存儲器22和主機12等計算資源。
現(xiàn)參照圖2并繼續(xù)參照圖1,圖2簡化示出在二個外部部件的數據傳送操作期間,在常規(guī)主控制器(例如控制器10)和主計算機(例如主機12)之間連接的總線14的作為時間的函數的使用情況。例如,為了在硬盤32和CD-RW 34之間傳送數據,主機12從源部件,例如硬盤驅動器32,接收數據傳送請求。一旦接收該數據傳送請求,主機12進行用于在總線14上進行數據讀傳送的初始設定(用42表示),包括例如前面討論的建立PRD表。出于示意的目的,本文只示出和說明二個用于數據讀操作的PRD表和二個用于數據寫操作的PRD表。
在初始設定42后,控制器10訪問第一PRD表(概括地用44表示)以得到關于要讀的數據的字節(jié)計數和存儲器地址(以及其它信息)。經接口36從硬盤32(即源部件)把數據集的數據的第一緩沖數據部分46讀到控制器10,并且接著經總線14、主機12和主存儲器總線24讀到主存儲器22。概括地用箭頭48示出在總線14上的對數據的第一緩沖部分46的讀操作。
控制器10接著訪問下一個PRD表(概括地用52表示),并且該數據集的下一個緩沖部分,例如第二緩沖部分54從硬盤32讀到控制器10,然后經總線14、主機12、主存儲器總線24讀到主存儲器22。概括地用箭頭56示出在總線14上的對數據的第二緩沖部分54的數據讀。按該剛說明的方式,控制器14接著訪問相繼的PRD表(未示出)并且進行相繼的數據讀(未示出),直至從硬盤32把該數據集中的所有數據讀到主存儲器22。
在從硬盤32把該數據集讀到主存儲器22后,控制器10在總線14上發(fā)布中斷(用58表示)。接著,主機12進行用于數據寫操作的設定(用62表示),其中包括建立PRD表。接著控制器10訪問寫PRD表中的第一表(概括地用64表示),并從主存儲器22經由主存儲器總線24、主機12和總線14把事先已讀到主存儲器22中的數據的第一緩沖部分(用66表示)從主存儲器22寫到控制器10,接著該第一緩沖部分經部件接口36寫到目的地部件(例如CD-RW 34)。概括地用箭頭68表示數據集的第一緩沖部分66的數據寫操作。
接著控制器10訪問下一個PRD表(概括地用72表示),并且事先已從硬盤32讀到主存儲器22的該數據集的下一個緩沖部分(用74表示)從主存儲器22寫到控制器10(經主存儲器總線24、主機12和總線14),然后經部件接口36寫到目的地部件(例如CD-RW 34)。概括地用箭頭76示出這種數據寫操作。在把該數據集中的所有數據寫到目的地部件后,控制器10對主機12發(fā)出一個中斷(用78表示)。
現(xiàn)參照圖3,圖中簡化示出另一種常規(guī)控制器80,例如與按照串行高級技術附加裝置(SATA或S-ATA)盤驅動接口標準制造和操作的數據存儲部件接口的主控制器,其中SATA標準是從ATA標準進化的。這種控制器80,即SATA主控制器,在主機12(經總線14)和多個數據存儲部件例如硬盤32和CD-RW 34之間接口??刂破?0包括允許控制器80和總線14接口的接口邏輯或控制邏輯82。
控制器80還包括允許每個數據存儲部件直接和控制器80接口而不是通過例如圖1中示出的菊花鏈式方案接口的獨立的部件接口邏輯或控制邏輯。即,控制器80包括第一部件接口邏輯84,后者允許第一部件例如硬盤32經第一接口85與控制器80直接連接。此外,控制器80包括第二部件接口邏輯86,其允許第二部件例如CD-RW 34經第二接口87與控制器80直接連接。第一和第二接口中的每一個例如是IDE電纜或其它適當接口。
控制器80包括一對存儲緩沖器92、93。這些存儲緩沖器例如包括一些通過暫時存儲正在傳送的數據來平滑通過控制器80的數據傳送的先進先出存儲器(FIFO)。例如,第一存儲緩沖器92包括連接在主機接口邏輯82和第一部件接口邏輯84之間的第一FIFO 95,以便平滑從硬盤32到主機12的數據傳送。此外,第一存儲緩沖器92包括連接在主機接口邏輯82和第一部件接口邏輯84之間的第二FIFO 96,以便平滑從主機12到硬盤32的數據傳送,例如正從主存儲器22寫到硬盤32的數據。類似地,第二存儲緩沖器93包括連接在主機接口邏輯82和第二部件接口邏輯86之間的第三FIFO 97和第四FIFO 98,以平滑主機12和CD-RW 34之間的數據傳送。
此外,典型地,控制器80包括流控制硬件(未示出)以便防止二個緩沖器裝填的數據超過某個水平。即,該流控制硬件在存儲緩沖器目的地側清空該緩沖器中存儲的一些數據之前阻止存儲緩沖器的源側發(fā)送附加數據。在此方式下,不丟失正在傳送的數據。
在圖3中示出的常規(guī)方案中,二個部件32、34可同時對或從控制器80傳送數據。但是,控制器80仍必須進行和圖1示出方案里的控制器10相同的數據傳送步驟,包括設定用于從源部件向主存儲器22傳送數據的PRD表的步驟,以及設定用于從主存儲器22向目的地部件傳送數據的PRD表的步驟。
對于至或從主存儲器22的數據傳送,控制器80包括支持直接存儲器存取(DMA)傳送的硬件。在DMA傳送下,在無主機12的介入的情況下數據直接和主存儲器22交互。例如,從源部件傳送的數據將由控制器80讀并且然后經主機接口邏輯16、主存儲器總線24和存儲器接口邏輯26從控制器80傳送到主存儲器22。類似地,從主存儲器22傳送的數據將經存儲器接口邏輯26、主存儲器總線24和主機接口邏輯16傳送到控制器80。接著該數據會從控制器80寫到目的地部件。
從操作觀點上看,DMA傳送涉及控制器80向總線仲裁器(未示出)請求和得到許可以成為控制器80和主機12之間的總線14的總線主控器。典型地,總線仲裁器不是控制器80的一部分,例如,總線仲裁器是主機12的一部分。一旦總線仲裁器賦予控制器80作為總線14的總線主控器的許可,控制器80直接與主存儲器22(即無主機12的介入)進行交互,以便管理數據存儲部件之間的數據傳送。
如本文中前面討論那樣,許多常規(guī)數據傳送操作涉及主機和控制器之間的總線上的若干次數據傳送,并且涉及周期地占用主機和主存儲器。對這些計算資源的占用負面地影響競爭部件以及它們的接口,例如通用串行總線(USB)和固件接口,使用這些資源的能力。
依據本發(fā)明的各實施例,控制器包括一種增強型的配置,其可在大多數數據傳送操作期間大大減輕總線、主機和主存儲器的數據傳送責任。另外,數據傳送所需的時間被縮短而且數據傳送部件消耗較少的能功率。依據本發(fā)明的各實施例,該增強型控制器繞過控制器和主機(從而主存儲器)之間的總線,把來自源部件的數據直接引導到目的地部件。備選地,該增強型控制器還在不占用諸如主機、主存儲器、以及控制器和主機間的總線等計算資源的情況下進行數據檢驗操作。
現(xiàn)參照圖4,圖中示出依據本發(fā)明的各實施例的控制器100的簡化示意圖。依據本發(fā)明的各實施例,控制器100或者控制器100的一部分物理上位于一塊插到母板上的PCI槽中的計算機電路板上。依據本發(fā)明的替代實施例,按集成電路制造控制器100或控制器100的一部分。
控制器100包括主機接口邏輯或控制邏輯102,第一部件接口邏輯104,第二接口邏輯106和切換電路108。主機接口邏輯102允許控制器100經總線14,例如PCI總線,與主機12(圖1和3中示出)接口。如前面討論那樣,主機典型地與包括主存儲器部件22(圖1和3中示出)的其它系統(tǒng)部件接口。
第一部件接口邏輯104允許控制器100經接口85(其為IDE電纜或其它適當接口)與第一部件例如硬盤32接口。第二部件接口邏輯106允許控制器100經接口87(其為IDE電纜或其它適當接口)與第二部件例如CD-RW 34接口。
切換電路108連接在主機接口邏輯102和部件接口邏輯,即第一部件接口邏輯104和第二部件接口邏輯106之間。如下面更加詳細地討論那樣,依據本發(fā)明的各實施例,切換電路108允許數據存儲部件之間的數據傳送保持在控制器100內,而不必涉及主機、主存儲器、以及主機和控制器100之間的總線14的計算資源。
切換電路108的第一部分包括第一存儲緩沖器112以及連接在主機接口邏輯102和第一部件接口邏輯104之間的第一多路復用電路114。切換電路108的另一部分包括第二存儲緩沖器116以及連接在主機接口邏輯102和第二部件接口邏輯106之間的第二多路復用電路118。
第一存儲緩沖器112暫時存儲經第一部件接口邏輯104和接口85向和從第一部件(例如硬盤32)傳送的數據。第一存儲緩沖器112包括至少一個暫時存儲從第一部件32讀取的數據的緩沖部件(例如,第一FIFO存儲器122),以及至少一個暫時存儲要向第一部件32寫的數據的緩沖部件(例如,第二FIFO存儲器124)。
類似地,第二存儲緩沖器116暫時存儲經第二部件接口邏輯106和接口87向和從第二部(例如CD-RW 34)傳送的數據。第二存儲緩沖器116包括至少一個暫時存儲從第二部件34讀取的數據的緩沖部件(例如第三FIFO存儲器126),以及至少一個暫時存儲要向第二部件34寫的數據的緩沖部件(例如第四FIFO存儲器128)。
第一多路復用電路114包括一個電路,該電路允許用于存儲要寫到第一部件的數據的存儲器部件(即第二FIFO存儲器124)經主機接口邏輯102從總線14或經第三FIFO存儲器126從第二部件34接收數據。類似地,第二多路復用電路118包括一個電路,該電路允許用于存儲要寫到第二部件的數據的存儲器部件(即第四FIFO存儲器128)經主機接口邏輯102從總線14或經第一FIFO存儲器122從第一部件32接收數據。依據本發(fā)明,第一復用電路114和第二復用電路118是任何適用的、能夠可控地允許從多于一個源接收數據的電路。
切換電路108包括適當的用控制電路(未示出),其用于通知第一和第二存儲緩沖器112、116以及第一和第二多路復用電路114、118,從源部件讀的數據是要例如以常規(guī)方式經總線14傳送到主機(和主存儲器)還是要經對應的存儲緩沖器直接傳送到目的地部件。切換電路108內的該控制電路還使能或者禁止第一和第二多路復用電路114、118從主機和從源部件的存儲緩沖器接收數據的能力。
依據本發(fā)明的各實施例,主機通知切換電路中的控制電路數據是從源部件直接傳送到目的地部件還是經主機和主存儲器再傳送到目的地部件。例如,主機在該切換電路中設定一個寄存器控制位以指示要傳送的數據是從源部件直接寫到目的地部件。在多路復用電路中設定適當的控制位以禁止該多路復用電路從主機接收數據的能力并且使能該多路復用電路從源部件的存儲緩沖器接收數據的能力。否則,如果不設定寄存器控制位,則按常規(guī)方式傳送數據,即從源部件到主存儲器然后從主存儲器到目的地部件。
現(xiàn)參照圖5并繼續(xù)參照圖4,圖5簡化示出在源部件(例如硬盤32)和目的地部件(例如CD-RW 34)之間的數據傳送操作期間,依據本發(fā)明的實施例連接在主機和控制器100間的總線14的使用作為時間的函數。最初,一旦接收來自源部件的數據傳送請求,主機進行初始設定(用132概括表示)。該設定包括建立適當的PRD表。
例如,依據本發(fā)明的各實施例,主機同時建立一個或多個用于從源部件讀出要傳送的數據的PRD表以及一個或多個用于對目的地部件寫入要傳送的數據的PRD表。另外,如上面討論那樣,主機設定適當的寄存器位以通知切換電路108該用于傳送的數據要直接從源部件經適當的讀緩沖器傳送到適當的多路復用電路輸入端,并經適當的寫緩沖器傳送到目的地部件。在此方式下,切換電路108會使從源部件讀出的數據繞過總線14(以及主機接口邏輯102)并且替代地被引導到目的地部件寫路徑中的多路復用電路(例如多路復用電路118)的輸入端。而且,目的地部件寫路徑中的多路復用電路會知道從源部件的寫路徑中的存儲緩沖器(例如第一FIFO 122)而不是從總線14接收數據。
一旦主機進行初始設定132并且建立適當的PRD表,控制器100訪問第一PRD表(概括地用134表示)以得到字節(jié)計數。注意,依據本發(fā)明的實施例,控制器100不需要知道存儲器地址,因為要傳送的數據不寫到主存儲器的存儲單元上。由于PRD表位于主機12或主存儲器22中(例如參見圖1和3),控制器100經總線14訪問PRD表。一旦為了字節(jié)計數控制器100訪問第一PRD表,要傳送數據的第一部分(概括地用136表示)從源部件(例如硬盤32)經接口85和接口邏輯104讀到控制器100。
數據的第一部分136暫時存儲在源部件的適當存儲緩沖器(例如第一FIFO存儲器122)中。至此,控制器100典型地應訪問第一寫PRD表。但是,控制器100只需要字節(jié)計數,該字節(jié)計數在第一寫PRD表中應和在第一讀PRD表中相同。從而,依據本發(fā)明的各實施例,為了字節(jié)計數控制器100可以再次訪問第一讀PRD表。這樣,不必建立第一寫PRD表。在此方式下,減少必須建立的PRD表(即寫PRD表)的數量,從而簡化控制器100所需的總處理。一旦控制器100再次從第一讀PRD表訪問字節(jié)計數(概括地用138表示),經適當的多路復用電路(本例中為第二多路復用電路118)把數據的第一部分136直接傳送到目的地部件的適當存儲緩沖器(本例中為第四FIFO存儲器128)中。
如本文前面討論那樣,主機已設定適當的控制寄存器位以使控制器100知道數據的第一部分136要繞過主機接口邏輯102并且經目的地部件多路復用電路從源部件存儲緩沖器直接傳送到目的地部件存儲緩沖器。此外,目的地部件多路復用電路從該控制寄存器位的設定知道要從源部件存儲緩沖器而不是從主機接口邏輯102接收的數據。從該目的地部件多路復用電路,數據的第一部分136經第二部件接口邏輯106和接口87寫到目的地部件(例如CD-RW 34)。用箭頭142概括地示出將數據的第一部分136寫到目的地部件的寫操作。
控制器100接著訪問下一個讀PRD表(概括地用144表示)以用于字節(jié)計數。一旦控制器100得到該字節(jié)計數,從硬盤32(即源部件)經接口85和部件接口邏輯104向控制器100讀要傳送數據的第二或下一個部分(概括地用146表示)。同樣,數據的第二部分146暫時存儲在第一FIFO存儲器122中。接著,控制器100訪問下一個寫PRD表(概括地用148表示),并且從第一FIFO存儲器122經第二多路復用電路118把數據的第二部分146直接傳送到第四FIFO存儲器128。然后,經第二部件接口邏輯106和接口87把數據的第二部分146寫到CD-RW 34(目的地部件)。概括地用箭頭152表示將第二數據部分146寫入CD-RW 34的寫操作。
類似地,控制器100接著訪問相繼的讀PRD表和寫PRD表(未示出),并且進行相繼的數據讀和數據寫(未示出)直至數據集中的所有數據都從硬盤32讀到CD-RW 34。在整個數據集已從硬盤32讀并且已寫到CD-RW 34后,控制器100在總線14上發(fā)出一個中斷(用154表示)。
如可以圖5中看出那樣,在從源部件(例如硬盤驅動器32)向目的地部件(例如CD-RW 34)傳送數據期間,僅對初始傳送請求(初始設定132的一部分)、控制器100訪問PRD表、以及控制器100發(fā)出中斷154而使用主機和控制器100之間的總線14。與部件間常規(guī)數據傳送例如圖2所示的傳送期間的總線使用相比,這種總線使用是有利的。
如本文前面對常規(guī)數據傳送操作討論的那樣,一旦從源部件向目的地部件傳送數據,通過采用某類型的數據檢驗操作來檢驗數據傳送的完整性。例如,取得拷貝的數據集的數字簽名如消息摘要,并且和原始數據集的(典型地)預先計算的數字簽名比較。一般地,數據檢驗指令集或算法(例如MD5算法)通常駐留在主存儲器中,并且主機進行數據檢驗處理以得到拷貝的數據集的數字簽名而且比較該數字簽名和原始數據集的預先計算的簽名。但是,如本文前面討論那樣,此方式下的檢驗除了主機進行數據檢驗所需的計算資源之外,還涉及至少一次在總線上從控制器向主機(并且有時向主存儲器)完整傳送整個數據集。
因此,依據本發(fā)明的替代實施例,把控制器100配置成包含數據檢驗電路。通過包含數據檢驗電路,控制器100甚至更多地減輕主機、主存儲器以及主機和控制器100間的總線14的責任,即,和數據傳送操作的數據檢驗部分相關的數據傳送和處理責任。
現(xiàn)參照圖6,圖中簡化示出依據本發(fā)明的一個替代實施例的控制器100。該替代實施例中的控制器100的配置類似于圖4所示控制器100的配置,但是,在該替代實施例中,該控制器還包括適當的數據檢驗邏輯或電路(用156表示)。依據本發(fā)明的實施例,數據檢驗電路156包括必要的硬件和/或軟件以完成任何適當的數據檢驗操作,例如,諸如常規(guī)MD2或MD5算法的任何適合的消息摘要算法,或者諸如常規(guī)CRC-32或CRC-64電路的任何適合的循環(huán)冗余檢驗(CRC)電路。
取決于數據檢驗技術,與電路實現(xiàn)關聯(lián)的尺寸和復雜性可決定哪種數據檢驗操作最適于包括作為控制器100的一部分。例如,實現(xiàn)某些消息摘要算法可能要求對現(xiàn)有控制器電路添加相對大的電路。類似地,采用某些冗余技術,例如CRC-32,可能要求控制器100的處理量相對大。但是,應理解,依據本發(fā)明的各實施例,控制器100中包括任何適用的數據檢驗技術。
如圖6中所示,控制器100例如包括CRC-64數據檢驗電路156。在控制器100中把數據檢驗電路156實現(xiàn)成經操作可與主機接口邏輯102通信。另外,在控制器100中把數據檢驗電路156配置成使該數據檢驗電路156的輸入與暫時存儲從第一或第二部件讀出的數據的緩沖器部件的輸出連接。即,當第一部件32是源部件時暫時存儲從第一部件(例如硬盤32)讀出的數據的第一FIFO存儲器122的輸出是數據檢驗電路156的輸入之一。數據檢驗電路156的另一個輸入是第三FIFO存儲器126的輸出,當第二部件(例如CD-RW 34)是源部件時第三FIFO存儲器暫時存儲從該第二部件34讀出的數據。
在操作上,數據檢驗電路156接收正在從源部件的存儲緩沖器的輸出端傳送到目的地部件的多路復用電路的輸入端的數據。當數據檢驗電路156接收該正在傳送的數據時,數據檢驗電路156積累滾動的(running)數據檢驗信息,例如CRC-64值,直至整個數據集已傳送到目的地部件的存儲緩沖器。一旦傳送了整個數據集,數據檢驗電路156已在其中存儲了必需的數據檢驗信息,然后主機例如可以按常規(guī)方式讀該信息。
如果主機已經具有用于原始數據集的數據檢驗信息,則主機讀由數據檢驗電路156為拷貝的數據積累的數據檢驗信息并且將該信息和先前已存在的用于原始數據集的數據檢驗信息進行比較。如果主機不具有用于原始數據集的檢驗信息,則隨原始數據集拷貝到目的地部件,數據檢驗電路156積累滾動的檢驗信息,例如如前面說明那樣,接著,一旦整個數據集全都傳送到目的地部件,數據檢驗電路156可以從把拷貝的數據集從目的地部件傳送到數據檢驗電路156的相繼的傳送積累滾動數據檢驗信息。然后,主機可讀該來自拷貝的數據集的數據檢驗信息并且把它和從原始數據集,即從源部件向目的地部件的原始的數據傳送,積累的數據檢驗信息進行比較。
依據本發(fā)明的各實施例,在該剛說明的方式下,隨著數據集直接從源部件傳送到目的地部件而進行數據檢驗。與采用數據檢驗的常規(guī)方案不同,依據本發(fā)明的各實施例,不必為了數據檢驗計算而通過總線14將整個數據集從控制器100讀到主機。替代地,通過控制器100中的數據檢驗電路156進行數據檢驗。只從控制器100向總線14傳送最終數據檢驗結果。這樣,在此方式下,對于數據檢驗目的,主機、主存儲器和總線14的使用與常規(guī)方案相比減少。
現(xiàn)參照圖7,其中簡化示出依據本發(fā)明的另一替代實施例的多個控制器。依據本發(fā)明的實施例,數據傳送不受和同一個控制器連接的部件的限制??梢园褦祿暮鸵粋€控制器接口的源部件傳送到和一個不同的控制器接口的目的地部件上。
依據本發(fā)明的替代實施例的多控制器方案160例如包括諸如SATA主控制器的第一控制器162、諸如SATA主控制器的第二控制器164以及諸如總線開關或PCI開關的硬件開關166。第一控制器162連接著多個部件,例如,諸如硬盤的第一部件172和諸如CD-RW的第二部件174。類似地,第二控制器164連接著多個部件,例如,諸如硬盤的第三部件176和諸如CD-RW的第四部件178。這些部件通過適當的接口與各自的控制器連接,例如如前面對本發(fā)明的其它實施例討論那樣。盡管多控制器方案160示出和開關166連接的二個控制器,本發(fā)明的實施例包括其中通過適當的接口多于二個的控制器與開關166連接的方案。
和本發(fā)明的前面的其中單個控制器通過諸如PCI總線的總線直接和主機12接口的各實施例不同,依據本發(fā)明的該替代實施例,控制器162、164和硬件開關166連接。每個控制器通過適當接口,假如PCI直達連接(express connection)與開關166連接。開關166通過適當接口,例如總線14與主機12連接,總線14如上面討論那樣可以是PCI總線。
在操作中,在部件之一向主機12請求數據傳送期間,進行(例如由主機12)檢測以判定源部件和目的地部件是否和同一控制器連接。這種形式的檢測能力可以是操作系統(tǒng)的一部分,例如如下面更詳細討論那樣,或者可以是適當的驅動軟件的一部分。
如果源部件和目的地部件連接到同一個控制器,則根據上面討論的本發(fā)明的實施例或者按常規(guī)方式進行數據傳送。如果源部件和目的地部件不連接到同一個控制器,則主機12中的以及控制器162、164中的控制邏輯管理經開關166與一個控制器連接的源部件以及與另一個控制器連接的目的地部件之間的數據傳送。每個控制器內的數據傳送由各個控制器內含有的切換電路和接口邏輯管理,例如如前面對本發(fā)明的其它實施例討論那樣。
例如,在從第一部件172向第四部件178傳送數據集的過程中,例如如前面對本發(fā)明的各實施例討論那樣,從第一(源)部件172向第一控制器162傳送數據。但是,由于目的地部件與另一個控制器連接,數據經第一控制器162和開關166之間的接口向開關166傳送,并且接著經開關166和第二控制器164之間的接口從開關166向第二控制器164傳送數據。然后例如如前面對本發(fā)明的各實施例討論那樣,數據從第二控制器164向第四(目的地)部件178傳送。
這樣,即使在與不同控制器連接的部件間傳送數據,依據本發(fā)明的實施例,在各控制器和總線開關166之間的連接上發(fā)生數據傳送。為某些工作,例如最初的數據傳送請求(設置的一部分)、控制器對PRD表的訪問、以及控制器發(fā)出的中斷,使用開關166和主機12之間的總線14。但是,類似本發(fā)明的其它實施例,在本發(fā)明的此替代實施例中,主總線14、主機12以及主存儲器(未示出)不用于傳送數據。
依據本發(fā)明的各實施例,本文中說明的改進數據傳送和可由主機和/或控制器采用的各種其它特征以及標準是兼容的。例如,許多控制器配置成按照所謂的SATA II標準來操作。在此標準中,存在允許數據存儲部件優(yōu)化諸如DMA傳送的數據傳送的可選特性。這些特性中的一些可以和上面說明的本發(fā)明數據傳送方法接口,但其它特性不能。依據本發(fā)明的實施例,把主機配置成在執(zhí)行本文所說明的本發(fā)明的數據傳送方法之前禁止任何可能負面影響本發(fā)明的數據傳送方法的可選特性,并且一旦完成該數據傳送方法后使能這些可選特性。這些被禁止的特性例如包括稱為“DMA設定幀信息結構(FIS)中的非零緩沖器偏置”的特性,該特性允許從數據集中非開頭的位置進行數據傳送并在以后的操作中傳送該數據集的開頭。由于該特性可能破壞本發(fā)明的數據傳送,因此在進行依據本發(fā)明的各實施例的數據傳送方法之前禁止該特性。另一種被禁止的特性例如是稱為本機命令隊列(NCQ)的特性,其允許多次部分數據傳送。
對于不干擾本發(fā)明數據傳送方法的可選特性,在進行本發(fā)明數據傳送方法的同時仍可使能這些特性。這些保持使能的特性包括例如稱為“保證按序數據傳送”的特性,該特性通過返回無序送數據來停止數據存儲部件進行優(yōu)化。
對于本機命令隊列(NCQ),依據本發(fā)明的一替代實施例,對現(xiàn)有開關電路108添加附加電路和控制邏輯,以便和依據本發(fā)明的各實施例的數據傳送操作一起來適應NCQ操作。該附加電路和控制邏輯允許控制器100檢測和識別多個源部件和目的地部件,以為要存儲的附加數據提供適當的緩沖存儲,并且從該多個部件中選擇數據傳送中要使用哪些源部件和目的地部件。該控制邏輯還設置適當的標志和控制位以在使能NCQ操作的同時控制數據傳送。以這種方式,在不禁止NCQ特性的情況下進行依據本發(fā)明的實施例的數據傳送。
最后,依據本發(fā)明的各實施例,用于上面說明的改進數據傳送方法的各指令駐留在主機、主存儲器或其它可由主機訪問的適當位置。例如,這些指令是駐留在主存儲器的一部分中的獨立實用程序,其容易由主機的操作系統(tǒng)訪問。替代地,這些指令是主操作系統(tǒng)的一部分。
例如,修改主操作系統(tǒng)的現(xiàn)有拷貝命令,以便含有用于依據本發(fā)明的各實施例的改進的數據傳送方法的指令組。在此方式下,作為執(zhí)行拷貝命令的一部分,主機會自動判定是否可以按照本發(fā)明的實施例進行數據傳送,即,不必把數據傳送到主機和主存儲器。主機會判定源部件和目的地部件是連接到同一個控制器還是連接到例如如前面討論那樣通過總線開關適當鏈接在一起的不同控制器上。若是這樣,該拷貝命令可對控制器(組)提供必要指令以進行依據本發(fā)明的各實施例的數據傳送。如果不是這樣,該拷貝命令指示控制器(組)按常規(guī)方式進行數據傳送。
本領域技術人員清楚,在不背離由附后權利要求書以及其所有等同物定義的本發(fā)明的精神和范圍下,可對本文說明的本發(fā)明的各實施例做出許多改變和替代。例如,依據本發(fā)明的實施例,可以通過同一個控制器或者通過在控制器和主機間連接的總線同時從一個源部件向多個目的地部件讀數據。
權利要求
1.一種控制器(100),用于在計算機系統(tǒng)內控制從第一部件向至少一個第二部件的數據傳送,該控制器包括主機接口邏輯(102),用于經第一總線使該控制器與主計算機接口,其中該主計算機具有一個經第二總線和它接口的主存儲器;第一部件接口邏輯(104),用于經第一部件總線使該控制器與該第一部件接口,其中該第一部件接口邏輯經該第一總線從該第一部件讀數據;第二部件接口邏輯(106),用于經第二部件總線使該控制器與該第二部件接口,其中該第二部件接口邏輯經該第二總線對該第二部件寫數據;第一緩沖器(112),其連接在該第一部件接口邏輯和該主機接口邏輯之間,用于控制其間的數據傳送;第二緩沖器(116),其連接在該第二部件接口邏輯和該主機接口邏輯之間,用于控制第二部件接口邏輯和主機接口邏輯間的數據傳送;第一多路復用電路(114),其連接在該第一緩沖器和該主機接口邏輯之間并且連接在該第一緩沖器和該第二緩沖器之間,其中,該第一多路復用電路在數據不通過該主機接口邏輯以及不通過該第一總線、該主計算機、該第二總線和該主存儲器中的至少一個的情況下控制從該第二緩沖器到該第一緩沖器的數據傳送;以及第二多路復用電路(118),其連接在該第二緩沖器和該主機接口邏輯之間并且連接在該第二緩沖器和該第一緩沖器之間,其中,該第二多路復用電路在被傳送的數據不通過該主機接口邏輯以及不通過該第一總線、該主計算機、該第二總線和該主存儲器中的至少一個的情況下控制從該第一緩沖器到該第二緩沖器的數據傳送。
2.如權利要求1所述的控制器,其中,從第一部件到第二部件的數據傳送包括從第一部件向第二部件拷貝至少一個數據集。
3.如權利要求1所述的控制器,還包括與第一緩沖器以及第二緩沖器連接的數據檢驗邏輯,其中,該數據檢驗邏輯被配置成在被傳送的數據不通過主機接口邏輯以及不通過第一總線、主計算機、第二總線和主存儲器中的至少一個的情況下對在第一部件和第二部件之間傳送的數據進行至少一個數據檢驗操作。
4.如權利要求1所述的控制器,其中,主計算機包括用來執(zhí)行至少一個串行高級技術附加裝置(SATA)II優(yōu)化特性的邏輯,并且其中,當主計算機禁止該至少一個SATA II優(yōu)化特性時,該控制器在被傳送的數據不通過主機接口邏輯并且不通過第一總線、主計算機、第二總線和主存儲器中的至少一個的情況下控制第一部件和第二部件之間的數據傳送。
5.如權利要求1所述的控制器,其中,主計算機包括用來執(zhí)行本機命令隊列(NCQ)的邏輯,并且其中,該控制器還包括本機命令隊列邏輯,其用于當使能本機命令隊列時,在被傳送的數據不通過第一總線、主計算機、第二總線和主存儲器中的至少一個的情況下控制第一和第二部件間的數據傳送。
6.如權利要求1所述的控制器,其中,該控制器還包括第一控制器和至少一個第二控制器;其中,該第一控制器經第一控制器接口與總線開關接口;其中,該至少一個第二控制器經對應的第二控制器接口與該總線開關接口;其中,該總線開關經第一總線按如下方式與主計算機接口,即,主計算機經第一總線、總線開關和對應的控制器接口與第一控制器以及至少一個第二控制器接口;并且其中,第一控制器、總線開關和至少一個第二控制器在被傳送的數據不通過第一總線、主計算機、第二總線和主存儲器中的至少一個的情況下控制第一控制器和第二控制器之間的數據傳送。
7.如權利要求1所述的控制器,其中,第一緩沖器還包括第一先進先出(FIFO)緩沖器部件,其連接在第一部件邏輯接口和主機接口邏輯之間并且連接在第一部件接口邏輯和第二多路復用電路之間,以及第二FIFO緩沖器部件,其連接在第一多路復用電路和第一部件接口邏輯之間。
8.如權利要求1所述的控制器,其中,第二緩沖器還包括第三FIFO緩沖器部件,其連接在第二部件接口邏輯和主機接口邏輯之間并且連接在第二部件接口邏輯和第一多路復用電路之間,以及第四FIFO緩沖器部件,其連接在第二多路復用電路和第二部件接口邏輯之間。
9.如權利要求1所述的控制器,其中,第一總線、第一部件總線和第二部件總線中的至少一個還包括PCI總線。
10.如權利要求1所述的控制器,其中,該控制器的至少一部分是作為集成電路(IC)制造的。
全文摘要
一種用于在計算機系統(tǒng)內的數據存儲部件間傳送數據的控制器設備,包括用于使該控制器和多個數據存儲部件連接的部件接口邏輯,用于使該控制器通過總線和主機或主計算機連接的主機接口邏輯。該主機包括例如與其連接的主存儲器。該控制器包括能把數據直接從源數據存儲部件傳送到至少一個的目的地數據存儲部件的切換電路,即,被傳送的數據不從該控制器經總線傳到主機和/或主存儲器。該切換電路包括適當的緩沖電路和多路復用電路,以在大多數數據傳送操作中大大減輕主機、主存儲器以及主機和該控制器間的總線對數據傳送的責任的方式下把數據從源部件直接傳送到目的地部件。此外,該控制器減少數據傳送所需的時間并使數據傳送部件消耗較少的能量。
文檔編號G06F13/38GK1737781SQ200510004578
公開日2006年2月22日 申請日期2005年1月18日 優(yōu)先權日2004年8月19日
發(fā)明者艾倫·J·格林博格 申請人:艾格瑞系統(tǒng)有限公司