專利名稱:應(yīng)用于端口倍增器的多級端口擴(kuò)展的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例大體上涉及端口倍增器裝置,尤其涉及經(jīng)由多擴(kuò)展級的端口倍增器裝置。版權(quán)聲明及許可本專利文件所揭露的部分內(nèi)容包含版權(quán)保護(hù)的內(nèi)容,此版權(quán)所有者并不反對任何用于知識產(chǎn)權(quán)局所呈現(xiàn)的專利文件及專利揭露內(nèi)容的重復(fù)制造,但是除此之外所進(jìn)行的使用皆保留所有版權(quán)的權(quán)利。此版權(quán)注意事項(xiàng)應(yīng)用于描述如下方的所有資料及其對應(yīng)的圖式,而且,所有描述于下方的任何軟件內(nèi)容的版權(quán)皆屬為Silicon Image公司所擁有。
背景技術(shù):
端口倍增器允許很多儲(chǔ)存裝置連接于主機(jī)裝置的單一端口。依據(jù)串行高級技術(shù)附連(Serial Advanced Technology Attachment, SATA)標(biāo)準(zhǔn),主機(jī)裝置的一端口可被擴(kuò)展以支持最大連接數(shù)量為十五。所參照的SATA標(biāo)準(zhǔn)可根據(jù)于2009年5月29日所發(fā)行的SATA修訂3. O規(guī)范(SATA Revision 3. Ospecification)及其先前的版本或其衍生版本。根據(jù)SATA端口倍增器規(guī)范,僅允許單級擴(kuò)展,且端口倍增器不可以被連接于較高級端口倍增器。因此,根據(jù)此標(biāo)準(zhǔn)則不可能使用此端口倍增器并通過部署較低級裝置來實(shí)現(xiàn)一般的集線式(hub-style)系統(tǒng)。因此,所有端口倍增器擴(kuò)展皆被假定為通過單級擴(kuò)展上的單一端口倍增器實(shí)現(xiàn),當(dāng)根端口(root port)被占據(jù)時(shí),則無任何擴(kuò)展的可能性。此外,傳統(tǒng)端口倍增器具有固定身份,且所指派裝置端口之?dāng)?shù)量亦為固定,即基于其身份固定儲(chǔ)存空間數(shù)量(如前所述無擴(kuò)展的可能)。舉例而言,傳統(tǒng)的一至三端口倍增器總是一至三端口擴(kuò)展器,且當(dāng)連接時(shí)將總是占據(jù)主機(jī)裝置的三個(gè)端口,不會(huì)更多也不會(huì)更少。而且,主機(jī)端口具有此一至三(I 3)裝置后則被制止再增加任何額外的擴(kuò)展。雖然此SATA端口倍增器規(guī)范允許高達(dá)十五個(gè)連接,然而不同實(shí)際上的限制導(dǎo)致仍然只能使用可用擴(kuò)展連接之一小部分。端口倍增器裝置的制造成本亦會(huì)隨著包含更多端口而增加??赡芨匾牟糠菰谟谄湫詢r(jià)比,假設(shè)單端口倍增器連接至主機(jī)將仍然具有同樣帶寬量(例如三Gbits/s或六Gbits/s)。因此,實(shí)際上的限制大體上令端口擴(kuò)展被限于具有一至二裝置、一至四裝置、一至五裝置或一至八裝置任一種的端口倍增器。結(jié)果,主機(jī)裝置可能可以支持多于實(shí)際實(shí)施中所能達(dá)到的之儲(chǔ)存能力。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例大體上涉及端口倍增,尤其涉及精油透過多級擴(kuò)展的端口倍增。在一實(shí)施例中,一種方法應(yīng)用于系統(tǒng)中,此系統(tǒng)支持串行高級技術(shù)附連(SATA)端口倍增,該方法包含動(dòng)態(tài)標(biāo)識端口倍增器裝置的下游端口并基于標(biāo)識確定端口倍增器所支持的下游端口連接的數(shù)量。該方法還包含端口倍增器向連接于端口倍增器的上游端口的裝置報(bào)告其身份,此身份基于所確定的此端口倍增器所支持的下游端口連接數(shù)量,其中每一端口連接允許至儲(chǔ)存裝置的下游連接。該方法還包含接收基于所報(bào)告的身份動(dòng)態(tài)分配之儲(chǔ)存地址空間,此儲(chǔ)存地址空間在由此端口倍增器裝置所支持的下游端口連接中分配(高達(dá)根據(jù)所指定的標(biāo)準(zhǔn)增加裝置端口至一最大數(shù)量,例如每一主機(jī)/控制端口具有十五個(gè)裝置端口)。于一些實(shí)施例中,所述動(dòng)態(tài)分配的儲(chǔ)存地址空間可基于用于端口倍增器裝置的JBOD (Just a Bunch of Disks,簡單磁盤串)擴(kuò)展方法,其規(guī)定頂級上游裝置對儲(chǔ)存地址空間的直接訪問被給予端口倍增器。當(dāng)端口倍增器直接連接至頂級上游裝置或根上游裝置時(shí),則報(bào)告至此頂級上游裝置,其中頂級上游裝置為主機(jī)裝置,且此主機(jī)裝置根據(jù)SATA標(biāo)準(zhǔn)分配地址空間。于一些實(shí)施例中,響應(yīng)于檢測到下游端口連接的變化而執(zhí)行確定并報(bào)告此端口倍增器身份。所檢測的改變可為切斷一儲(chǔ)存裝置或是增加一儲(chǔ)存裝置。于一些實(shí)施例中,檢測于下游端口連接處的改變包含接收連接至此端口倍增器裝置的下游端口倍增器的身份的指示,其中此下游端口倍增器的身份則因?yàn)橄掠味丝谶B接處的改變而與先前所接收之身份不同。
于一些實(shí)施例中,響應(yīng)于所檢測被用于下游端口的新的端口連接,端口倍增器可令已存在的下游端口連接的地址空間指派不改變,并將新的地址空間指派給新的下游端口連接。于一實(shí)施例中,端口倍增器包含上游端口以連接于主機(jī)裝置,且多個(gè)下游端口連接至若干下游裝置。此端口倍增器則經(jīng)由上游端口向主機(jī)裝置報(bào)告此端口倍增器的身份,其中所述身份是動(dòng)態(tài)的且基于此端口倍增器所支持的端口連接的數(shù)量。端口倍增器還包含端口配置模塊用以確定此端口倍增器所支持的端口連接數(shù)量,此端口連接數(shù)量基于連接于此下游端口的每一下游裝置的裝置數(shù)量,并且基于每一下游裝置的數(shù)量,分配儲(chǔ)存地址空間至連接于此下游端口的每一下游裝置中。附圖
簡述以下描述包括對附圖的討論,這些附圖具有通過本發(fā)明的實(shí)施例的實(shí)現(xiàn)的示例的方式給出的例示。這些附圖應(yīng)被理解成作為示例,而不是作為限制。如此處所使用的,對一個(gè)或多個(gè)“實(shí)施例”的引用應(yīng)被理解成描述本發(fā)明的至少一個(gè)實(shí)現(xiàn)中所包括的特定特征、結(jié)構(gòu)、或特性。因此,此處出現(xiàn)的諸如“在一個(gè)實(shí)施例中”或“在替換實(shí)施例中”之類的短語描述本發(fā)明的各種實(shí)施例和實(shí)現(xiàn),并且不一定全部指代同一實(shí)施例。然而,它們也不一定是相互排他的。圖I是具有連接至主機(jī)裝置的不同的端口倍增器級的系統(tǒng)的實(shí)施例的框圖。圖2是示出連接至主機(jī)裝置的不同的端口倍增器級的地址分配的系統(tǒng)的實(shí)施例的框圖。圖3是具有端口配置引擎的端口倍增器的實(shí)施例的框圖。圖4顯示確定動(dòng)態(tài)端口倍增器身份的實(shí)施例的流程圖。以下是對某些細(xì)節(jié)和實(shí)現(xiàn)的描述,包括對可描繪部分或全部下述實(shí)施例的附圖的描述,以及對此處呈現(xiàn)的發(fā)明概念的其它潛在實(shí)施例或?qū)崿F(xiàn)的討論。以下提供了對本發(fā)明各實(shí)施例的概覽,隨后是參考附圖的更詳細(xì)的描述。
具體實(shí)施方式
如本文所述,通過端口倍增器提供端口擴(kuò)展,其中端口倍增器基于所支持的下游(downstream)端口連接數(shù)量得以動(dòng)態(tài)確定其身份并報(bào)告。在此可了解“下游”系指的是在主機(jī)裝置下游的裝置,該主機(jī)裝置為頂級(top-level)裝置或根裝置,用以分配儲(chǔ)存空間并管理這些儲(chǔ)存內(nèi)容。“上游”可理解為數(shù)據(jù)路徑的反向(即指向主機(jī)裝置)。在此描述的動(dòng)態(tài)裝置可彼此連接以提供多級端口倍增,增加至指定的連接總數(shù)。于一實(shí)施例中,根據(jù)SATA標(biāo)準(zhǔn),在任何配置的端口倍增器中所支持的連接總數(shù)為十五。動(dòng)態(tài)端口倍增器確定其身份并將之報(bào)告至上游裝置。對于直接連接至主機(jī)裝置的端口倍增器,此主機(jī)裝置為上游裝置。對于直接連接至其他端口倍增器的端口倍增器,上游裝置則為該上游端口倍增器。每一裝置,不論其數(shù)據(jù)路徑的級位于哪里,都基于確定自其端口的下游存在多少端口連接來確定其身份,并將這些身份報(bào)告上游。上游端口倍增器接著使用這些信息來確定其身份,并諸如此類推直至最頂級的端口倍增器直接報(bào)告至主機(jī)裝置為止。因?yàn)槎丝诒对銎鲃?dòng)態(tài)確定并報(bào)告其身份,所支持的下游端口連接數(shù)量則可被動(dòng)態(tài)地改變。為了分配儲(chǔ)存空間,最頂級端口倍增器基于其所報(bào)告的身份接收儲(chǔ)存空間分配, 并接著基于每一端口所報(bào)告其有多少下游端口連接的報(bào)告向下游傳播地址分配。每一端口倍增器向上游聲明需要主機(jī)控制器支持多少設(shè)備端口,其中主機(jī)控制器包含連接于其下游端口的下游裝置端口連接。任一下游端口倍增器同樣地分配儲(chǔ)存空間至其下游端口連接中。圖I為具有連接于主機(jī)裝置的不同端口倍增器級的系統(tǒng)的實(shí)施例的框圖。系統(tǒng)100表示具有基于動(dòng)態(tài)端口倍增器的端口擴(kuò)展功能的儲(chǔ)存子系統(tǒng)。系統(tǒng)100包含計(jì)算裝置(例如SATA控制器),用以分配并管理系統(tǒng)中的儲(chǔ)存地址端口。該計(jì)算系統(tǒng)可為服務(wù)器或個(gè)人計(jì)算機(jī)。主機(jī)裝置110可為計(jì)算系統(tǒng)或計(jì)算系統(tǒng)的一部分。主機(jī)裝置110可為SATA盤控制器或包含SATA盤控制器,此SATA盤控制器將計(jì)算系統(tǒng)和其操作系統(tǒng)及其他組件連接至硬件或物理儲(chǔ)存器。主機(jī)裝置110包含端口 112,端口 112為主機(jī)裝置110的下游端口,并可視主機(jī)裝置110為信息存取(讀取及/或?qū)懭?至系統(tǒng)100中的儲(chǔ)存裝置的數(shù)據(jù)路徑中的頂級裝置。需理解的是,主機(jī)裝置110可包含額外的端口(圖未示)。請先概略地參照系統(tǒng)100的結(jié)構(gòu),應(yīng)可理解此特定配置并不須為一實(shí)際實(shí)施的配置。此配置的某些方面(例如具有連接的端口倍增器但不與儲(chǔ)存裝置相關(guān)聯(lián))實(shí)際上會(huì)被考量成不適當(dāng)?shù)南到y(tǒng)設(shè)計(jì)。但是,此配置的重點(diǎn)并不是要討論適當(dāng)?shù)南到y(tǒng)設(shè)計(jì),而是在于描述本發(fā)明的實(shí)施例的操作的目的。因此,系統(tǒng)100的配置應(yīng)單純地從學(xué)術(shù)觀點(diǎn)方向來考量理論系統(tǒng)可如何作用。此外(或選擇性地),系統(tǒng)100可視為實(shí)際系統(tǒng)的即時(shí)快照,此實(shí)際系統(tǒng)具有某些動(dòng)態(tài)方面,例如儲(chǔ)存裝置的暫時(shí)移除,或是端口倍增器的增加,用以在之后包含更多儲(chǔ)存裝置,或一些其他描述。請參照簡潔描述的此結(jié)構(gòu),端口倍增器120被連接(直接連接,因?yàn)椴⑽赐ㄟ^其他的端口倍增器連接)于主機(jī)裝置110。因此,端口倍增器120為系統(tǒng)100中的最頂級端口倍增器(或根端口倍增器)。端口倍增器120則向上游連接至主機(jī)裝置110。端口倍增器120依序具有三下游端口 124、126及128,并分別連接至端口倍增器140、端口倍增器130及儲(chǔ)存裝置150。未示出端口倍增器140具有任何關(guān)聯(lián)的下游裝置。端口倍增器130包含三下游端口 134、136及138,其中兩個(gè)(134及136)連接到下游裝置。更具體地,端口 134連接于儲(chǔ)存裝置170,且端口 136連接于端口倍增器160。端口倍增器160再依序下游連接至儲(chǔ)存裝置180及190。更具體的說明,端口倍增器120包含上游端口 121,其上游連接于主機(jī)裝置110的下游端口 112。下游端口 122連接至端口倍增器140的上游端口 141,下游端口 124則連接至端口倍增器130的上游端口 131,且下游端口 128連接至儲(chǔ)存裝置150。端口配置引擎(模塊)122表示用以管理端口倍增器120的配置的一個(gè)或多個(gè)組件。管理端口倍增器的配置指的是執(zhí)行關(guān)于確定這些端口倍增器的身份(即其下游端口連接配置)的操作,并報(bào)告所確定的身份、分配儲(chǔ)存空間,再執(zhí)行關(guān)于下游裝置的配置及管理等操作,例如用于盤輸入/輸出(I/O)而交換數(shù)據(jù)。端口配置引擎122確定與端口倍增器120有關(guān)的裝置身份(ID)。該裝置身份為端口倍增器向上游報(bào)告的身份。該裝置身份是動(dòng)態(tài)的且基于其下游連接了哪些(如果有的話)。為了確定裝置身份,于一實(shí)施例中,端口配置引擎122發(fā)送請求至所有下游端口用 以確定連接于這些端口的裝置的身份。端口倍增器140(自端口 124)可報(bào)告其身份為‘I 2’(一至二裝置),而儲(chǔ)存裝置150 (自端口 128)可報(bào)告身份或裝置數(shù)量為‘1’,且端口倍增器130 (自端口 126)可報(bào)告其身份為‘I :5’。端口倍增器120的裝置身份可藉由使所有連接于下游端口的裝置的身份相加來確定。因此,端口倍增器120具有2+1+5=8的裝置身份,并將之報(bào)告上游。于一實(shí)施例中,可稱之為端口倍增器120 “支持”八個(gè)下游端口連接。藉由任一給定的端口倍增器所潛在支持的最大連接數(shù)量是管理端口擴(kuò)展標(biāo)準(zhǔn)所標(biāo)識的最大數(shù)量。如上所述,端口倍增器對于端口連接存在支持裝置連接。應(yīng)可理解于實(shí)際操作中,將端口倍增器120與儲(chǔ)存裝置150交換是不同于端口倍增器120與端口倍增器130交換。舉例而言,信息交換的實(shí)際格式可不同,且當(dāng)端口倍增器指示其一至多(N)個(gè)身份時(shí),儲(chǔ)存裝置可報(bào)告其可涵蓋多少驅(qū)動(dòng)。然而,最終結(jié)果為端口倍增器120基于詢問下游確定端口倍增器120的身份為八(即一至八倍增器)用于適當(dāng)?shù)膬?chǔ)存空間分配。在以上關(guān)于端口倍增器120的討論中,假定端口倍增器130知道其身份并可作適當(dāng)?shù)捻憫?yīng)。然而,于一實(shí)施例中,詢問會(huì)觸發(fā)端口倍增器來確定其身份,因此,響應(yīng)于端口倍增器120的詢問,端口倍增器130可依序要求其端口確定其身份。詢問的級聯(lián)可持續(xù)下降至最低級端口倍增器(系統(tǒng)100中的端口倍增器160),以動(dòng)態(tài)地發(fā)現(xiàn)整體儲(chǔ)存子系統(tǒng)的結(jié)構(gòu)。于另一實(shí)施例中,詢問可不觸發(fā)端口倍增器來發(fā)現(xiàn)其身份。于如此實(shí)施方式中,端口倍增器可周期性地發(fā)現(xiàn)他們的身份,或是僅僅響應(yīng)于檢測到下游改變(例如移除下游裝置或增加下游裝置)。于一實(shí)施例中,下游裝置可向上游推動(dòng)身份,而非等待請求或詢問。因此,可由端口倍增器使用不同方法來發(fā)現(xiàn)其裝置身份。所有端口倍增器皆可利用類似技術(shù)來確定他們的身份。端口倍增器140通過端口配置引擎142或者響應(yīng)于端口倍增器120的詢問、響應(yīng)于標(biāo)識下游連接改變的觸發(fā)或者依照日程表確定其裝置身份為‘I :2’。端口倍增器130通過端口配置引擎132確定其裝置身份為‘I :5’,儲(chǔ)存裝置170可向端口倍增器130報(bào)告身份為‘I’。端口倍增器160經(jīng)由上游端口 161連接至端口倍增器130的下游端口 136。端口倍增器160經(jīng)由端口配置引擎162確定其具有裝置身份為‘I :2’。端口 164連接于儲(chǔ)存裝置180,此儲(chǔ)存裝置180具有裝置數(shù)為1,且端口 166連接于儲(chǔ)存裝置190,此儲(chǔ)存裝置190同樣具有裝置數(shù)為I。因此,被連接至端口倍增器160的下游端口的裝置數(shù)的總數(shù)為‘2’。端口倍增器160僅在下游連接于儲(chǔ)存裝置而非其他端口倍增器,因而給予端口倍增器160身份為‘I :2’。端口倍增器160向上游報(bào)告其身份至端口倍增器130。利用另一種方法理解系統(tǒng)100可通過于此系統(tǒng)的不同快照的描述達(dá)成,并假定此系統(tǒng)及其連接依階段方式建構(gòu)。首先,考慮端口倍增器120連接于主機(jī)裝置110,且端口倍增器120并無下任何下游連接。端口倍增器120可向主機(jī)裝置110報(bào)告身份為I :3。儲(chǔ)存地址分配可對端口 124為地址‘0’,對端口 126為‘I’,并對端口 128為‘2’。假定端口倍增器140接著連接至端口倍增器120,但并無額外的連接,則于系統(tǒng)100中,端口倍增器120的端口 124不再為單一端口。而是連接于端口倍增器140,該端口倍增器140具有身份為I :2(因?yàn)槠渚哂斜┞抖丝?144及146)。因此,端口倍增器120則具 有裝置身份I :4。此外,儲(chǔ)存地址分配可被改變,舉例而言,藉由分配地址‘0’至端口倍增器140之端口 144,并分別維持端口 126及端口 128的地址‘I’及‘2’,并且將地址‘3’分配給端口 146。其他分配是可行的,包括全部地址都重新指派。如果端口倍增器130接著被連接,則同樣的改變會(huì)發(fā)生。端口倍增器120報(bào)告一裝置身份I :6,端口 126的地址I會(huì)被重新指派給新的端口,新的地址可再被指派至新的可用端口(因此,將再多分配兩個(gè)地址)。盡管如上參考系統(tǒng)100的實(shí)施例進(jìn)行描述,然而應(yīng)理解本文描述的技術(shù)不限于圖I的示例。一般而言,描述動(dòng)態(tài)端口倍增器。此動(dòng)態(tài)端口倍增器基于下游端口連接而動(dòng)態(tài)地確定其身份。于一實(shí)施例中,提供可由標(biāo)準(zhǔn)控制的SATA端口擴(kuò)展,例如可在www_sata_io_org獲得的標(biāo)準(zhǔn),其中使用下劃線替換句點(diǎn)以避免不期望的超級鏈接。如上所述,端口倍增器的身份可被動(dòng)態(tài)地確定。如上所建議,于一實(shí)施例中,端口倍增器響應(yīng)于自其主機(jī)裝置的請求確定其身份。為了使敘述更清楚,系統(tǒng)中的最級主機(jī)裝置是計(jì)算系統(tǒng)的控制器或計(jì)算系統(tǒng)本身,儲(chǔ)存子系統(tǒng)連接至該計(jì)算機(jī)系。然而,于一實(shí)施例中,該子系統(tǒng)下的每一端口倍增器將與其連接的上游裝置考量為“主機(jī)裝置”。因此,自上游的請求可被理解為自其主機(jī)裝置的請求。一般而言,端口倍增器對于直接連接至其下游裝置端口的每一裝置而言皆可被考量為主機(jī)裝置。于一實(shí)施例中,端口倍增器響應(yīng)于裝置連接于系統(tǒng)或從系統(tǒng)切斷來確定其身份。響應(yīng)于端口連接的改變,將信號向上游發(fā)送到主存新增連接或切斷的裝置的裝置。端口連接的改變可導(dǎo)致被連接/斷開的裝置的主機(jī)(及其他主機(jī)直到子系統(tǒng)的頂級)的存儲(chǔ)分配改變。于一實(shí)施例中,僅對新連接或切斷的裝置的存儲(chǔ)器分配進(jìn)行改變,并對其連接保持不變的裝置,存儲(chǔ)空間分配保持不變。響應(yīng)于下游連接的改變,端口倍增器可確定其身份(其可被改變),并向上游報(bào)告表示所有暴露的裝置端口的身份。這個(gè)改變可持續(xù)向上游傳播。于一實(shí)施例中,會(huì)因?yàn)槌^最大裝置數(shù),而不允許額外儲(chǔ)存裝置的連接,在這種情況下新裝置將不會(huì)再被分配到任何儲(chǔ)存空間。因此,當(dāng)此新裝置可被物理連接時(shí),它并不會(huì)被連接于此系統(tǒng)中以取得儲(chǔ)存。否則,儲(chǔ)存空間可針對這些改變(不論是移除或增加裝置端口)被適當(dāng)?shù)卣{(diào)整。圖2為顯示于對于連接至主機(jī)裝置的不同端口倍增器級的地址分配的系統(tǒng)的實(shí)施例的框圖。于一實(shí)施例中,系統(tǒng)200為根據(jù)圖I的系統(tǒng)100的系統(tǒng)的范例。因此,動(dòng)態(tài)確定其裝置身份可如上所述地執(zhí)行。系統(tǒng)200中所額外表示的是用于每一儲(chǔ)存裝置的登記身份以及儲(chǔ)存空間的分配。于一實(shí)施例中,當(dāng)端口倍增器的身份改變時(shí),分配至此端口倍增器的儲(chǔ)存空間量就會(huì)對應(yīng)調(diào)整。系統(tǒng)200示出在特定時(shí)間點(diǎn)看到的系統(tǒng)200的靜態(tài)視圖。以下會(huì)提供系統(tǒng)配置的改變?nèi)绾斡绊懰疽晥D的解釋。主機(jī)裝置210表示計(jì)算系統(tǒng)的一或多個(gè)構(gòu)件,此計(jì)算系統(tǒng)連接于系統(tǒng)200之儲(chǔ)存子系統(tǒng)。所示之主機(jī)裝置210包含控制器214,其為盤控制器用以管理此系統(tǒng)中的儲(chǔ)存。于一實(shí)施例中,控制器214可為主機(jī)裝置210,地址空間220表示可被分配給系統(tǒng)200中不同儲(chǔ)存裝置的儲(chǔ)存。為了簡化說明,所示之每一地址空間(221-227)是用于單一驅(qū)動(dòng)的空間。須理解的是,于實(shí)際實(shí)施中,不同尺寸的地址空間可被分配至不同儲(chǔ)存裝置中。每一儲(chǔ)存裝置不需要是相同尺寸或是占據(jù)相同數(shù)量的儲(chǔ)存空間??墒褂萌魏卫趯?shí)現(xiàn)此特定系統(tǒng)的結(jié)構(gòu)的方式處理儲(chǔ)存的分配。·
主機(jī)裝置210包含下游端口 212,此下游端口 212連接于端口倍增器230的上游端口 232。根據(jù)任何描述于此的實(shí)施例,端口倍增器230為一動(dòng)態(tài)端口倍增器?;谙惹坝懻摚瑧?yīng)可理解端口倍增器230的裝置身份為‘3’。依照如上所解釋的簡化范例,端口倍增器230基于其端口連接數(shù)分配到三個(gè)地址空間220 (具體地說,即為221、222及224)。端口倍增器220可接著基于每一端口被連接了什么將儲(chǔ)存配給其下游端口中。如圖所示,端口倍增器230分配地址空間221至儲(chǔ)存裝置240。地址空間222及224被分配至端口倍增器250。于一實(shí)施例中,裝置間(例如端口倍增器230及250)的通信和數(shù)據(jù)請求可參照所相關(guān)的特定偏移的地址空間來實(shí)行,所述特定偏移的地址空間為不同于由主機(jī)裝置210所分配的特定地址空間。因此,于一實(shí)施例中,所分配的儲(chǔ)存地址空間可用于映射裝置間使用的儲(chǔ)存空間參考及主機(jī)裝置210的儲(chǔ)存空間220。端口倍增器250分配其被指派的儲(chǔ)存空間至儲(chǔ)存裝置260及270中。如系統(tǒng)200所示,不需要儲(chǔ)存空間必須持續(xù)被指派至特定裝置中。于一實(shí)施例中,每一儲(chǔ)存裝置被登記于系統(tǒng)中并給予一身份(以REG ID所表示)。儲(chǔ)存裝置240被登記為系統(tǒng)中的儲(chǔ)存裝置O,而儲(chǔ)存裝置260及270分別為裝置I及2。就如同不需要持續(xù)分配地址空間,不特別要求基于儲(chǔ)存裝置身份依序分配地址空間。于一實(shí)施例中,儲(chǔ)存裝置身份依序從較高級端口倍增器至較低級端口倍增器被指派,并從較低級身份端口至較高級身份端口。然而,如此之指派并非必需。根據(jù)這一指派方案,儲(chǔ)存裝置240接收登記身份‘0’用以連接至端口倍增器230。儲(chǔ)存裝置260及儲(chǔ)存裝置270皆連接于端口倍增器250,并基于其所連接的端口被指派登記身份。假定端口 254具有低于端口 256的身份,則儲(chǔ)存裝置260被指派登記身份為‘1’,而儲(chǔ)存裝置270被指派登機(jī)身份為‘2’。于系統(tǒng)200中動(dòng)態(tài)變化的情況下,每一端口倍增器被此改變所影響而確定其身份,且地址空間分配可被更新。舉例而言,假定此端口倍增器250具有其他端口(圖未示)而為一至三倍增器。如果外加的儲(chǔ)存裝置(圖未示)被連接至此外加端口,則端口倍增器250可將其身份由‘2’更新為‘3’,并接著報(bào)告給端口倍增器230。端口倍增器230則更新其身份為‘4’,主機(jī)裝置210可分配額外的儲(chǔ)存空間(例如223、225、226…其中之一),讓端口倍增器230分配至端口 236。于一實(shí)施例中,多個(gè)儲(chǔ)存空間分配會(huì)響應(yīng)于其他裝置的增加而被改變。因此,動(dòng)態(tài)改變端口倍增器的裝置身份可被用以確定有多少存儲(chǔ)器空間要被分配至此端口倍增器。以此方式,被分配至端口倍增器的儲(chǔ)存空間量可基于此端口倍增器所支持的連接數(shù)量所改變。于相反的范例中,可考量將端口倍增器250 ( 一至二之端口倍增器)更換一至二端口倍增器(使得于系統(tǒng)中移除暴露的裝置端口)。于一實(shí)施例中,于系統(tǒng)200中的存儲(chǔ)器空間分配除了此被改變的端口連接之外未被改變。因此,對于此被移除的端口的存儲(chǔ)器空間的分配可輕易地被移除,同時(shí)其他空間的分配依舊未受到影響?;蛘?,裝置端口的移除可造成系統(tǒng)200中的儲(chǔ)存空間的重新分配,而這些儲(chǔ)存裝置可被指派至一不同的存儲(chǔ)器空間。存儲(chǔ)器位置的分配可受到系統(tǒng)中用于指派儲(chǔ)存空間的方法的影響。舉例而言,于一實(shí)施例中,儲(chǔ)存地址空間系依據(jù)于簡單磁盤串(Just a Bunch of Disk, JBOD)所分配。依據(jù)JBOD,每一端口倍增器基于地址空間分配被準(zhǔn)許直接存取頂級裝置(主機(jī)裝置210)的儲(chǔ) 存地址空間。因此,端口倍增器可被給予直接存取所分配的存儲(chǔ)器空間,并利用簡單磁盤串(JBOD)來交換通信。圖3為具有端口配置引擎的端口倍增器的實(shí)施例的框圖。端口倍增器310是根據(jù)在此所述的任一實(shí)施例的端口倍增器的范例。端口倍增器310包含端口 U0,其為用以連接端口倍增器及主機(jī)裝置的端口。在此,如此之端口被稱為上游端口。主機(jī)裝置可為端口倍增器,其位于儲(chǔ)存子系統(tǒng)的較高級,或者其本身即可為主機(jī)控制裝置。端口 DO至DN表示這些端口 端口倍增器310通過它們連接于位于此儲(chǔ)存子系統(tǒng)中較低級的端口倍增器及/或儲(chǔ)存裝置。在此,這些端口被稱為下游端口。端口倍增器310包含硬件構(gòu)件,例如實(shí)體端口以連接于其他裝置。另外,邏輯312表示硬件邏輯,其可使端口倍增器310用以實(shí)行操作(例如確定其身份)。這些操作可包含傳送及接收請求、執(zhí)行計(jì)算或是執(zhí)行關(guān)于其執(zhí)行的其他功能。存儲(chǔ)器314表示用于編碼及變量的硬件儲(chǔ)存,且可包含臨時(shí)儲(chǔ)存(例如隨機(jī)存取存儲(chǔ)器(randomaccess memory, RAM))、寄存器(registers)、或是非易失性儲(chǔ)存(例如快閃(flash)、非易失性隨機(jī)存取存儲(chǔ)器(NVRAM)、一次編程存儲(chǔ)器(OTP)、或是只讀存儲(chǔ)器(read-onlymemory, ROM))。端口倍增器310亦可包含相關(guān)其操作的軟件構(gòu)件。所述的軟件構(gòu)件可被實(shí)現(xiàn)為直到裝置操作的固件。端口倍增器310包含端口配置引擎320,其代表一或多個(gè)構(gòu)件以執(zhí)行關(guān)于端口倍增器及儲(chǔ)存子系統(tǒng)的配置之操作。更特別的是,端口配置引擎320包含連接識別器322、報(bào)告模塊324以及地址指派模塊326。連接識別器322表示用以使端口倍增器310確定是否有裝置被連接于端口 DO至端口 DN中的機(jī)構(gòu)。不同已知的電路可用以檢測端口連接,在此則不再詳細(xì)描述。此外,端口連接可藉由輪詢一端口、或利用通信線路中斷、或是其他機(jī)構(gòu)來確定。于一實(shí)施例中,裝置被配置成結(jié)合連接或切斷與此端口倍增器310的連接來與端口倍增器310通信。因此,可藉由從連接或切斷裝置的通信來檢測連接。此外(或另一種選擇),連接識別器322 (或端口倍增器310的另一構(gòu)件)可詢問此連接裝置以確定其裝置數(shù)量歸因于每一連接。報(bào)告模塊324使端口倍增器310向上游主機(jī)裝置傳達(dá)其所確定的身份。這個(gè)報(bào)告可以基于定義端口倍增器310如何及何時(shí)實(shí)行通信的通信協(xié)議來執(zhí)行。因此,于一實(shí)施例中,報(bào)告單元324可包含或存取一協(xié)定棧用以向上游通信。地址指派模塊326使端口倍增器310將儲(chǔ)存空間分配至其端口連接。于一實(shí)施例中,端口配置引擎320系視每一下行路線端口連接為具有特定裝置數(shù)量值或儲(chǔ)存總量值,并基于這些數(shù)值指派地址空間。以此方式,端口配置引擎320則不需要知道任何關(guān)于連接于這些下游端口之結(jié)構(gòu),只需知道有多少儲(chǔ)存空間可以指派即可。所有對于此端口的儲(chǔ)存存取請求皆可基于對端口的指派在端口倍增器310處進(jìn)行管理。圖4顯示確定動(dòng)態(tài)端口倍增器身份的實(shí)施例的流程圖。所示于此的流程圖提供不同流程步驟動(dòng)作順序之范例。盡管所顯示之流程步驟為一特定序列或順序,然,除非有其他具體描述,否則這些動(dòng)作之順序皆可被調(diào)整修改。因此,所顯示之實(shí)施方式應(yīng)僅被理解為一范例,這些流程步驟可以一不同的順序來實(shí)行,且其中一些動(dòng)作系可并行來實(shí)行的。此外,一或更多動(dòng)作于本發(fā)明中之不同的實(shí)施例中系可被刪除省略的;因此,并非于每一種實(shí)施方式中都需要應(yīng)用到所述之所有動(dòng)作,其他的步驟流程亦為可行。于一實(shí)施例中,動(dòng)態(tài)端口倍增器接收從上游端口所發(fā)出對其身份的詢問(步驟 402)。于其他實(shí)施例中,端口倍增器可不響應(yīng)于詢問就確定其身份,且無需接收正在請求的詢問就可報(bào)告其身份。端口倍增器確定其身份(步驟404),至少部分需基于連接于此端口倍增器下游端口的裝置確定該身份。因此,如果端口倍增器之任何一端口為擴(kuò)展下游端口,則此端口倍增器需要去確定每一端口連接了什么以確定其身份。 于一實(shí)施例中,此端口倍增器選擇一端口并詢問對應(yīng)于此端口的裝置連接(步驟406)。亦可使用其他的方法,舉例而言,于一系統(tǒng)中使用標(biāo)識端口何時(shí)被裝置所連接的機(jī)構(gòu),此端口倍增器可僅詢問具有連接裝置的端口來取代需要對所有端口連接進(jìn)行確認(rèn)的作法。同樣地,應(yīng)可理解的是,詢問和確定特定端口的連接身份可分別地透過對另一端口的詢問來實(shí)行,以取代需要依序?qū)λ卸丝谶M(jìn)行詢問的作法。對于每一端口而言,端口倍增器可標(biāo)識對于此端口的裝置連接(步驟408)。于一實(shí)施例中,此端口倍增器確定是否特定端口的身份為動(dòng)態(tài)裝置身份(步驟410)。于一實(shí)施例中,動(dòng)態(tài)裝置身份可藉由指定的標(biāo)識符、位或位組所標(biāo)識。如果沒有裝置被連接,則對此端口的貢獻(xiàn)則僅有端口倍增器本身之端口連接數(shù)量(步驟412)。如果此端口連接一裝置,但是此裝置不具有動(dòng)態(tài)身份,則此裝置可被視為具有靜態(tài)身份,且將所報(bào)告的裝置身份值加入至端口倍增器的端口連接數(shù)量(步驟414)。如果數(shù)值為靜態(tài),則不可能有超過此靜態(tài)數(shù)值的更多級擴(kuò)展。如果此端口具有連接裝置,該連接裝置具有動(dòng)態(tài)身份,則此裝置可確定其動(dòng)態(tài)裝置身份并報(bào)告至端口倍增器(步驟416)。需理解的是,具有動(dòng)態(tài)身份的裝置為另一端口倍增器,其可于之后透過其下游端口再由步驟402開始重復(fù)此流程步驟以確定其身份。一旦得知其身份,將會(huì)報(bào)告此身份,且此動(dòng)態(tài)裝置身份會(huì)加至端口連接數(shù)量(步驟414)。如果被詢問的端口為最后的端口(步驟418),則端口倍增器響應(yīng)于該詢問計(jì)算其動(dòng)態(tài)身份并向上游報(bào)告其身份(或如同一些其他報(bào)告步驟之一部分)(步驟422)。如果此端口不為最后的端口(步驟418),端口倍增器會(huì)選擇下一個(gè)端口,直到每一端口的最大數(shù)(例如透過從最低身份至最高身份依序詢問這些端口,或是利用一些其他選擇機(jī)構(gòu))(步驟420)。對于下一個(gè)端口,端口倍增器接著重復(fù)對所選擇的端口進(jìn)行裝置連接的詢問(步驟406),直至無多余的端口可被詢問為止。
于一實(shí)施例中,裝置身份的詢問及端口連接可被使用于同一系統(tǒng)中。因此,于一實(shí)施例中,端口倍增器檢測其下游端口連接的變化(步驟424),并且確定其身份以響應(yīng)所檢測到的改變(步驟404)。于如此實(shí)施方式中,被選擇以詢問的端口(步驟406-418)可僅為所檢測到改變的端口,或是詢問所有的端口亦可。于一實(shí)施方式中,其僅對檢測到改變的端口進(jìn)行詢問,則對應(yīng)于步驟流程圖中此端口可為唯一被詢問的端口,也因此可為最后的端口(步驟 418)。在此所描述之不同操作或是功能可被視為或定義為軟件編碼、指令、配置及(或)數(shù)據(jù)。所述內(nèi)容可直接執(zhí)行(‘對象’或‘可執(zhí)行’形式)、源代碼、或不同編碼(‘差量(delta)’編碼或‘補(bǔ)丁(patch)’編碼)。敘述于此之實(shí)施例中之軟件內(nèi)容可藉由其中存儲(chǔ)內(nèi)容的制品所提供、或是藉由通信接口操作此通信接口傳送數(shù)據(jù)的方法所提供。機(jī)器或計(jì)算機(jī)可讀取儲(chǔ)存介質(zhì)可讓機(jī)器實(shí)行所敘述的功能或操作,并包含藉由機(jī)器(例如計(jì)算裝置、電子系統(tǒng)等等)以可存取形式來儲(chǔ)存信息的任何機(jī)構(gòu),諸如可記錄或不可記錄媒體(例如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁盤儲(chǔ)存媒體、光學(xué)儲(chǔ)存媒體、快閃存儲(chǔ)器裝置等等)。通信接口包含任何接合至任一硬線媒體、無線媒體、光學(xué)媒體等等以與另一裝置通信的機(jī)構(gòu),例如存儲(chǔ)器總線接口、處理器總線接口、以太網(wǎng)連接、盤控制器等等。所述 通信接口可藉由提供配置參數(shù)所建構(gòu),及(或)傳送信號以準(zhǔn)備此通信接口來提供數(shù)據(jù)信號以敘述此軟件內(nèi)容。此通信接口可藉由一或多個(gè)命令或信號傳送至此通信接口以進(jìn)行存取。敘述于此之不同構(gòu)件可用以執(zhí)行所述操作或功能的手段。敘述于此的每一構(gòu)件包含軟件、硬體或其結(jié)合,這些構(gòu)件可如同軟件模塊、硬件模塊、專用硬件(例如專用硬件(application specific hardware)、專用集成電路(applicationspecific integratedcircuits, ASICs)、數(shù)字信號處理器(digital signal processors, DSPs)等等)、嵌入式控制器、硬接線電路等等方式所實(shí)行。除描述于此之外,可在不背離本發(fā)明的范圍的情況下,對所公開的實(shí)施例和實(shí)現(xiàn)進(jìn)行各種修改。因此本文中的圖示和示例應(yīng)被理解為說明性的,而非限制含義。本發(fā)明的范圍僅由所附權(quán)利要求限定。
權(quán)利要求
1.在支持串行高級技術(shù)附連(SerialAdvanced Technology Attachment, SATA)端口倍增的系統(tǒng)中的方法,包含 利用端口倍增器裝置動(dòng)態(tài)標(biāo)識連接于所述端口倍增器裝置的下游端口的裝置; 基于所述標(biāo)識確定所述端口倍增器裝置所支持的下游端口連接的數(shù)量; 將所述端口倍增器裝置的身份報(bào)告至連接于所述端口倍增器裝置的上游端口的裝置,所述身份基于所確定的所述端口倍增器裝置所支持的下游端口連接數(shù)量,其中每一端口連接允許至儲(chǔ)存裝置的下游連接;及 基于所報(bào)告的身份接收動(dòng)態(tài)儲(chǔ)存地址空間分配,且所述儲(chǔ)存地址空間被分配于所述端口倍增器裝置所支持的下游端口連接中。
2.如權(quán)利要求I所述的方法,其特征在于,接收動(dòng)態(tài)儲(chǔ)存地址空間分配包含 基于簡單磁盤串(Just a Bunch of Disks, JBOD)擴(kuò)展方法接收儲(chǔ)存地址空間分配,其中直接存取頂級上游裝置的儲(chǔ)存地址空間被授予端口倍增器。
3.如權(quán)利要求I所述的方法,其特征在于,報(bào)告至連接于端口倍增器裝置的上游端口的裝置包含 報(bào)告至頂級上游裝置,其中所述頂級上游裝置為主機(jī)裝置,所述主機(jī)裝置依據(jù)SATA標(biāo)準(zhǔn)分配地址空間。
4.如權(quán)利要求I所述的方法,其特征在于,報(bào)告所述端口倍增器裝置的身份包含 檢測下游端口連接的改變; 響應(yīng)于檢測下游端口連接的改變而確定所述端口倍增器裝置的身份;及 響應(yīng)于檢測下游端口連接的改變報(bào)告所述端口倍增器被確定的身份。
5.如權(quán)利要求4所述的方法,其特征在于,檢測下游端口連接的改變包含檢測切斷儲(chǔ)存裝置或增加儲(chǔ)存裝置之一。
6.如權(quán)利要求4所述的方法,其特征在于,該檢測下游端口連接的改變包含 接收連接于所述端口倍增器裝置的下游端口倍增器的身份的指示,其中所述下游端口倍增器的身份因?yàn)橄掠味丝谶B接的改變而不同于先前所接收的身份。
7.如權(quán)利要求I所述的方法,其特征在于,接收被分配于所述端口倍增器裝置所支持的多個(gè)下游端口連接中的儲(chǔ)存地址空間分配包含 檢測被用于端口倍增器裝置的新下游端口連接;及 令已存在的下游端口連接的地址空間指派不改變,并指派新的地址空間至所述新下游端口連接。
8.一種制品,包含計(jì)算機(jī)可讀儲(chǔ)存媒體,具有指令儲(chǔ)存于其中,當(dāng)所述指令被執(zhí)行時(shí),可導(dǎo)致裝置執(zhí)行操作,包含 利用端口倍增器裝置動(dòng)態(tài)標(biāo)識連接于所述端口倍增器裝置的下游端口的裝置; 基于所述標(biāo)識確定所述端口倍增器裝置所支持的下游端口連接的數(shù)量; 將所述端口倍增器裝置的身份報(bào)告至連接于所述端口倍增器裝置的上游端口的裝置,所述身份基于所確定的所述端口倍增器裝置所支持的下游端口連接數(shù)量,其中每一端口連接允許至儲(chǔ)存裝置的下游連接;及 基于所報(bào)告的身份接收動(dòng)態(tài)儲(chǔ)存地址空間分配,且所述儲(chǔ)存地址空間被分配于所述端口倍增器裝置所支持的下游端口連接中。
9.如權(quán)利要求8所述的制品,其特征在于,提供用于接收動(dòng)態(tài)儲(chǔ)存地址空間分配的指令的內(nèi)容包含提供用于以下指令的內(nèi)容 基于簡單磁盤串(Just a Bunch of Disks, JBOD)擴(kuò)展方法接收儲(chǔ)存地址空間分配,其中直接存取頂級上游裝置的儲(chǔ)存地址空間被授予端口倍增器。
10.如權(quán)利要求8所述的制品,其特征在于,提供用于報(bào)告至連接于端口倍增器裝置的上游端口的裝置的指令的內(nèi)容包含提供用于以下指令的內(nèi)容 報(bào)告至頂級上游裝置,其中所述頂級上游裝置為主機(jī)裝置,所述主機(jī)裝置依據(jù)SATA標(biāo)準(zhǔn)分配地址空間。
11.如權(quán)利要求8所述的制品,其特征在于,提供用于報(bào)告所述端口倍增器裝置的身份的指令的內(nèi)容包含提供用于以下指令的內(nèi)容 檢測下游端口連接的改變; 響應(yīng)于檢測下游端口連接的改變而確定所述端口倍增器裝置的身份;及 響應(yīng)于檢測下游端口連接的改變報(bào)告所述端口倍增器被確定的身份。
12.如權(quán)利要求11所述的的制品,其特征在于,提供用于檢測下游端口連接的改變的指令的內(nèi)容包含提供用于以下指令的內(nèi)容檢測切斷儲(chǔ)存裝置或增加儲(chǔ)存裝置之一。
13.如權(quán)利要求11所述的的制品,其特征在于,提供用于該檢測下游端口連接的改變的指令的內(nèi)容包含提供用于以下指令的內(nèi)容 接收連接于所述端口倍增器裝置的下游端口倍增器的身份的指示,其中所述下游端口倍增器的身份因?yàn)橄掠味丝谶B接的改變而不同于先前所接收的身份。
14.如權(quán)利要求8所述的的制品,其特征在于,提供用于接收被分配于所述端口倍增器裝置所支持的多個(gè)下游端口連接中的儲(chǔ)存地址空間分配的指令的內(nèi)容包含提供用于以下指令的內(nèi)容 檢測被用于端口倍增器裝置的新下游端口連接;及 令已存在的下游端口連接的地址空間指派不改變,并指派新的地址空間至所述新下游端口連接。
15.一種端口倍增器裝置,包含 連接至主機(jī)裝置的上游端口,報(bào)告所述端口倍增器的身份至所述主機(jī)裝置,其中所述身份是動(dòng)態(tài)的且基于所述端口倍增器所支持的端口連接數(shù)量; 多個(gè)下游端口,允許至多個(gè)下游裝置的連接;及 端口配置模塊,基于連接至下游端口的每個(gè)下游裝置的裝置數(shù)量確定所述端口倍增器所支持的端口連接數(shù)量,并基于連接于每一下游端口的下游裝置的裝置數(shù)量以分配儲(chǔ)存地址空間至每一下游端口; 其中每一下游裝置的裝置數(shù)量表示與下游裝置相關(guān)聯(lián)的裝置端口的數(shù)量;及 其中所述端口配置模塊通過動(dòng)態(tài)標(biāo)識下游端口及所述下游端口的裝置數(shù)量來確定端口連接數(shù)量。
16.如權(quán)利要求15所述的端口倍增器,其特征在于,所述端口倍增器經(jīng)由上游端口向頂級上游裝置報(bào)告,其中所述頂級上游裝置為主機(jī)裝置,所述主機(jī)裝置根據(jù)串行高級技術(shù)附連(Serial Advanced Technology Attachment, SATA)標(biāo)準(zhǔn)分配地址空間。
17.如權(quán)利要求15所述的端口倍增器,其特征在于,所述端口配置模塊用以檢測下游端口連接的改變; 響應(yīng)于檢測下游端口連接的改變而確定所述端口倍增器裝置的身份;及 響應(yīng)于檢測下游端口連接的改變經(jīng)由上游端口報(bào)告所述端口倍增器被確定的身份。
18.如權(quán)利要求17所述的端口倍增器,其特征在于,該端口配置模塊更包含用以 檢測切斷儲(chǔ)存裝置或增加儲(chǔ)存裝置之一。
19.如權(quán)利要求17所述的端口倍增器,其特征在于,該端口配置模塊更用以 接收連接于所述端口倍增器裝置的下游端口倍增器的身份的指示,其中所述下游端口倍增器的身份因?yàn)閷ο掠味丝诒对銎鞯膬?chǔ)存裝置的連接的改變而不同于先前所接收的身份。
全文摘要
一種端口倍增器基于其所支持的下游端口連接數(shù)量動(dòng)態(tài)確定并報(bào)告其身份。所支持的下游端口連接數(shù)量可動(dòng)態(tài)地改變。端口倍增器標(biāo)識所連接于其下游端口的裝置,這些裝置可為儲(chǔ)存裝置或是其他端口倍增器?;谙掠味丝诘目倲?shù),端口倍增器將其身份向上游報(bào)告。此上游報(bào)告可至另一端口倍增器,或是當(dāng)直接連接于主機(jī)裝置時(shí)可至此主機(jī)裝置。端口倍增器基于其報(bào)告身份從上游接收儲(chǔ)存地址空間分配,并分配這些儲(chǔ)存地址空間至其下游端口。
文檔編號G06F13/14GK102893267SQ201180023429
公開日2013年1月23日 申請日期2011年4月27日 優(yōu)先權(quán)日2010年5月12日
發(fā)明者C·麥克斯威爾, 吳圭澤 申請人:晶像股份有限公司