專利名稱:用于處理器的高關(guān)聯(lián)性高速緩存的第二次機(jī)會(huì)取代機(jī)制的制作方法
技術(shù)領(lǐng)域:
本發(fā)明所揭示系關(guān)于微處理器緩存(cache),更詳言之,系關(guān)于緩存數(shù)據(jù)取代機(jī) 制。
背景技術(shù):
由于計(jì)算機(jī)系統(tǒng)之主存儲(chǔ)器設(shè)計(jì)系以密度為主要考慮而非速度,因此,微處理器 設(shè)計(jì)者使他們的設(shè)計(jì)具有額外之緩存,以減少該微處理器對(duì)直接存取主存儲(chǔ)器之需求。緩 存系一種具有較主存儲(chǔ)器更快之存取速度之小內(nèi)存。緩存?zhèn)鹘y(tǒng)上系由快速之內(nèi)存單元所構(gòu) 成,如靜態(tài)隨機(jī)存取內(nèi)存(SRAM),相較于使用作主存儲(chǔ)器之該內(nèi)存(傳統(tǒng)上系動(dòng)態(tài)隨機(jī)存 取內(nèi)存(DRAM)或同步動(dòng)態(tài)隨機(jī)存取內(nèi)存(SDRAM))具有較快之存取時(shí)間和頻寬。先進(jìn)之微處理器傳統(tǒng)上包含芯片上(on-chip)高速緩存。于許多案例中,微處理 器包含芯片上階層式(hierarchical)緩存結(jié)構(gòu),階層式緩存結(jié)構(gòu)可能包含層次1 (Li)、層 次2(L2)和于某些案例中具有之層次3 (L3)高速緩存。傳統(tǒng)緩存階層可以使用小且快速之 Ll緩存,該Ll緩存可用以儲(chǔ)存該最頻繁使用之緩存線(cache line)。該L2緩存可以系較 大且可能較慢之緩存,用以儲(chǔ)存被頻繁存取但不適合于Ll之緩存線。該L3緩存可較該L2 緩存更大且被用以儲(chǔ)存被頻繁存取但不適合于L2之緩存線。具有如上所述之緩存階層可 以藉由減少延遲(latency)來(lái)改善處理器效能,其中該延遲系關(guān)聯(lián)于內(nèi)存被處理器核心所 存取。于傳統(tǒng)緩存設(shè)計(jì)中,任何給定之?dāng)?shù)據(jù)塊(block of data)僅可被置放于一些小數(shù) 目之實(shí)體位置的其中之一,稱作集合(一般稱作集合關(guān)聯(lián)緩存(set associative cache))0 每一個(gè)集合中之該最大塊數(shù)系與該緩存的關(guān)聯(lián)性(associativity)。一旦給定集合系被存 滿(full),每一次新的數(shù)據(jù)必須被納入該集合時(shí),則已存在之項(xiàng)目必須被該新的數(shù)據(jù)所溢 寫(overwritten)或取代。某些形式之算法必須被用以決定于取代之過程中那一個(gè)已存 在之項(xiàng)目將被溢寫。取代演算中的一種形式系為該最近最少使用(least recently used, LRU)算法。于該LRU算法中,每一個(gè)集合中所有之項(xiàng)目之時(shí)間順序均被追蹤,并且如該名 稱所暗示,該最近最少使用之項(xiàng)目系被取代。這個(gè)算法于該關(guān)聯(lián)性很小的情況下可以運(yùn) 作得很好。對(duì)于較高之關(guān)聯(lián)性,持續(xù)追蹤該LRU位置系變得復(fù)雜且該排序信息(ordering information)需要相當(dāng)數(shù)量之儲(chǔ)存空間。
發(fā)明內(nèi)容
許多用于處理器高速緩存系統(tǒng)的高關(guān)聯(lián)性高速緩存的第二次機(jī)會(huì)取代機(jī)制之實(shí) 施例系被揭露。于一個(gè)實(shí)施例中,該高速緩存系統(tǒng)包含連接至塊取代控制器之高速緩存。該 高速緩存可包含多個(gè)集合,每一個(gè)集合均包含多個(gè)塊儲(chǔ)存位置。該塊取代控制器可以用以 維護(hù)對(duì)應(yīng)于該高速緩存中每一個(gè)集合的個(gè)別計(jì)數(shù)值(separate count value)。對(duì)應(yīng)于給定 集合的該計(jì)數(shù)值指向該給定集合內(nèi)儲(chǔ)存取代數(shù)據(jù)的合適之塊儲(chǔ)存位置或塊儲(chǔ)存位置群組 (group)。該塊取代控制器可針對(duì)該塊儲(chǔ)存位置的至少一些中之每一個(gè)維護(hù)相關(guān)聯(lián)之最近存取位,該最近存取位指示是否該對(duì)應(yīng)之塊儲(chǔ)存位置最近被存取。此外,該塊取代控制器可 以根據(jù)是否對(duì)應(yīng)于合適之塊儲(chǔ)存位置的特定最近存取位指示該合適之塊儲(chǔ)存位置最近被 存取,而將該取代數(shù)據(jù)儲(chǔ)存于該合適之塊儲(chǔ)存位置中被該個(gè)別計(jì)數(shù)值所指向之一者內(nèi)。于一個(gè)具體實(shí)現(xiàn)中,該塊取代控制器可儲(chǔ)存該取代數(shù)據(jù)于被該個(gè)別計(jì)數(shù)值所指向 之合適之塊儲(chǔ)存位置內(nèi),以響應(yīng)對(duì)應(yīng)于該儲(chǔ)存位置的該特定最近存取位,其中該特定最近 存取位指出該儲(chǔ)存位置最近未被存取。于另一個(gè)具體實(shí)現(xiàn)中,該塊取代控制器可禁止儲(chǔ)存該取代信號(hào)于被該個(gè)別計(jì)數(shù)值 所指向之合適之塊儲(chǔ)存位置內(nèi),以響應(yīng)對(duì)應(yīng)于該合適之儲(chǔ)存位置的該特定最近存取位,其 中該特定最近存取位指出該合適之塊儲(chǔ)存位置最近被存取。
藉由參考附加圖示使所屬技術(shù)領(lǐng)域中具有通常知識(shí)者對(duì)本發(fā)明可有較佳的了解, 且明了其許多特色與優(yōu)點(diǎn)。圖1系包含多核心處理節(jié)點(diǎn)之計(jì)算機(jī)系統(tǒng)之一個(gè)實(shí)施例之塊圖;圖2系圖標(biāo)圖1之高速緩存的實(shí)施例中較詳細(xì)態(tài)樣之塊圖;圖3系描述圖2之該高速緩存的一個(gè)實(shí)施例中該操作之流程圖;圖4系圖標(biāo)圖1之高速緩存的另一個(gè)實(shí)施例中較詳細(xì)態(tài)樣之塊圖;圖5系描述圖4之該高速緩存的一個(gè)實(shí)施例中該操作之流程圖;雖然本發(fā)明可容易作各種之修飾和替代形式,但是在此系由圖式中之范例顯示及 詳細(xì)說(shuō)明本發(fā)明之特定實(shí)施例。然而,應(yīng)暸解到此處特定實(shí)施例之圖式及詳細(xì)說(shuō)明并不欲 用來(lái)限制本發(fā)明為所揭示之特定形式,反之,本發(fā)明將涵蓋所有落于如所附申請(qǐng)專利范圍 內(nèi)所界定之本發(fā)明之精神和范圍內(nèi)之修飾、等效和替代內(nèi)容。請(qǐng)注意該字句”may”系以寬 松之意義被貫穿地使用于本發(fā)明(也就是,有可能的、可以的),而不是強(qiáng)制之意義(也就 是,必須)。
具體實(shí)施例方式現(xiàn)在轉(zhuǎn)到圖1,計(jì)算機(jī)系統(tǒng)10之一個(gè)實(shí)施例之塊圖系被圖示于圖1。于該圖 標(biāo)之實(shí)施例中,該計(jì)算機(jī)系統(tǒng)10包含連接至內(nèi)存14和周邊裝置13A-13B之處理節(jié)點(diǎn) 12 (processing node) 0該節(jié)點(diǎn)12包含連接至節(jié)點(diǎn)控制器20之處理器核心15A-15B、多 個(gè)HyperTransportTM (HT)接口電路24A-24C以及共享之層次3 (shared L3)高速緩存60, 其中,該節(jié)點(diǎn)控制器20系進(jìn)一步連接至內(nèi)存控制器22。該HT電路24C系連接至該周邊裝 置13A,該周邊裝置13A又以菊環(huán)式組構(gòu)(daisy-chainconfiguration)連接至該周邊裝置 13B,于本實(shí)施例中系使用HT接口。該剩下之HT電路24A-24B可經(jīng)由其它HT接口(未顯 示)而被連接至其它類似之處理節(jié)點(diǎn)(未顯示)。該內(nèi)存控制器22系連接至該內(nèi)存14。于 一個(gè)實(shí)施例中,節(jié)點(diǎn)12可系單一個(gè)集成電路芯片(integrated circuitchip),該集成電路 芯片包括顯示于圖1中之該電路系統(tǒng)(circuitry)。也就是說(shuō),節(jié)點(diǎn)12可為芯片多重處理 器(chip multiprocessor, CMP)。任何層次之整合的(integrated)或離散的(discrete) 組件均可被使用。此處提到處理節(jié)點(diǎn)12可包含許多其它為了簡(jiǎn)化而省略之電路。于許多實(shí)施例中,節(jié)點(diǎn)控制器20也可包含許多種內(nèi)連接(interconnection)電路(未顯示),其中該內(nèi)連接電路系用于將處理器核心15A和15B彼此內(nèi)連接、內(nèi)連接至其它 節(jié)點(diǎn)、以及內(nèi)連接至內(nèi)存。節(jié)點(diǎn)控制器20也可包含選擇和控制許多節(jié)點(diǎn)特性之功能,如該 節(jié)點(diǎn)之該最大和最小操作頻率,以及例如該節(jié)點(diǎn)之最大和最小電源供應(yīng)電壓。該節(jié)點(diǎn)控制 器20 —般可用以于該處理器核心15A-15B、該內(nèi)存控制器22以及該HT電路24A-24C之間 進(jìn)行路由通訊(route communications),視該通訊形式和該通訊之地址...等而定。于一 個(gè)實(shí)施例中,該節(jié)點(diǎn)控制器20可以包含系統(tǒng)要求儲(chǔ)列(system request queue, SRQ ;未顯 示),其中該節(jié)點(diǎn)控制器20系將接收之通訊(received communications)寫入該系統(tǒng)要求 儲(chǔ)列。該節(jié)點(diǎn)控制器20可排程來(lái)自該SRQ之通訊以路由該通訊至該處理核心15A-15B、該 HT電路24A-24C以及該內(nèi)存控制器22之間之一個(gè)目標(biāo)或數(shù)個(gè)目標(biāo)。一般而言,該處理器核心15A-15B可利用通往該節(jié)點(diǎn)控制器20之該接口與該計(jì) 算機(jī)系統(tǒng)10之其它組件(例如周邊裝置13A-13B、其它處理器核心(未顯示)、該內(nèi)存控 制器22...等)通訊。該接口可被設(shè)計(jì)以任何想要之型態(tài)。于一些實(shí)施例中,緩存一致通 訊可對(duì)于該接口而被定義。于一個(gè)實(shí)施例中,于該節(jié)點(diǎn)控制器20和該處理器核心15A-15B 之間的該接口上之通訊系為封包之形式,類似用于該HT接口上者。于其它實(shí)施例中,任 何想要之通訊方式均可被使用(例如,總線接口上之交換(transaction),不同形式之封 包...等)。于其它實(shí)施例中,該處理器核心15A-15B可共享通往該節(jié)點(diǎn)控制器20之接口 (例如,共享之總線接口)。一般而言,來(lái)自于該處理器核心15A-15B之該通訊可包含要求 (request),諸如讀取操作(讀取內(nèi)存位置或該處理器核心外部之緩存器)、寫入操作(寫 入內(nèi)存位置或外部之緩存器)、響應(yīng)探測(cè)(response toprobe)(對(duì)于緩存一致實(shí)施例)、中 斷確認(rèn)(interrupt acknowledgement)以及系統(tǒng)管理訊息...等。如以上所述,該內(nèi)存14可包含任何適合之內(nèi)存裝置。例如,該內(nèi)存14可包括該動(dòng) 態(tài)隨機(jī)存取內(nèi)存(DRAM)家族(諸如RAMBUSDRAM (RDRAM)、同步 DRAM (synchronous DRAM, SDRAM)和雙倍數(shù)據(jù)傳送率SDRAM (double data rate SDRAM))中一個(gè)或多個(gè)隨機(jī)存取內(nèi)存 (RAM)。內(nèi)存14可被稱作為計(jì)算機(jī)可讀取媒體(computer readablemedium),其中該可讀取 媒體可儲(chǔ)存程序指令(program instruction)。該內(nèi)存控制器22可包括與該內(nèi)存14介接之 控制電路系統(tǒng)。此外,該內(nèi)存控制器22可包含要求儲(chǔ)列,該要求儲(chǔ)列系用以排隊(duì)(queuing) 內(nèi)存要求...等。該HT電路24A-24C可包括多種緩沖器(buffer)及用以自HT連結(jié)(HT 1 ink) 接收封包和在HT連結(jié)上傳送封包之控制電路。該HT接口包括用以傳送封包之單向 連結(jié)(unidirectional link)。每一個(gè)HT電路24A-24C均可被連接至兩個(gè)這樣的 連結(jié)(一個(gè)用于傳送而一個(gè)用于接收)。給定之HT接口可以被操作于緩存一致型 態(tài)(cache coherentfashion)(例如,介于處理節(jié)點(diǎn)之間)或被操作于非一致型態(tài) (non-coherentfashion)(例如,通往/來(lái)自周邊裝置16A-16B)。于該圖標(biāo)之實(shí)施例中,該 HT電路24A-24B系并未被使用,而該HT電路24C系經(jīng)由非一致性連結(jié)被連接至該周邊裝置 16A-16B。此處提到,雖然該目前之實(shí)施例使用該HT接口作為節(jié)點(diǎn)之間和節(jié)點(diǎn)與周邊裝置 之間的通訊,但其它實(shí)施例可使用任何想要之接口或任何一種通訊接口。舉例而言,其它以 封包為基礎(chǔ)之接口可被使用,總線接口可被使用,許多標(biāo)準(zhǔn)周邊接口可被使用(例如,周邊 組件內(nèi)連接(peripheral component interconnect,PCI)禾口 PCI express…等)。
該周邊裝置13A-13B可為任何形式之周邊裝置。例如,該周邊裝置13A-13B可包 含與另一個(gè)計(jì)算機(jī)系統(tǒng)通訊之裝置,其中該裝置系連接至該另一個(gè)計(jì)算機(jī)系統(tǒng)(例如,網(wǎng) 絡(luò)適配卡、整合于計(jì)算機(jī)系統(tǒng)主電路板上類似網(wǎng)絡(luò)適配卡之電路系統(tǒng),或調(diào)制解調(diào)器)。再 者,該周邊裝置13A-13B可包含視訊加速器(video accelerator)、聲卡(audio card)、 硬式或軟式磁盤驅(qū)動(dòng)器或磁盤控制器、小型計(jì)算機(jī)系統(tǒng)接口(SmalIComputer Systems Interface, SCSI)轉(zhuǎn)接器、電話通訊卡(tel印hony card)、聲效卡(sound card)以及多種 數(shù)據(jù)擷取卡(data acquisition card)諸如通用接口總線(GPIB)或場(chǎng)總線適配卡(field bus interface card)。此處提到該名稱”周邊裝置”系意指包含輸入/輸出(I/O)裝置。一般而言,處理器核心15A-15B可包含被設(shè)計(jì)用以執(zhí)行指令之電路系統(tǒng),該指令 系定義于給定之指令集合結(jié)構(gòu)(instruction setarchitecture)中。也就是說(shuō),該處理器 核心電路系統(tǒng)可用以取得(fetch)、譯碼(decode)、執(zhí)行(execute)以及儲(chǔ)存(store)該指 令之結(jié)果,該指令系定義于該指令集合結(jié)構(gòu)中。例如,于一個(gè)實(shí)施例中,處理器核心15A-15B 可以該X86結(jié)構(gòu)來(lái)實(shí)現(xiàn)。該處理器核心15A-15B可包括任何想要之組構(gòu),包含超管路 (superpipelined)、超純量(superscalar)或兩者之結(jié)合。其它組構(gòu)可包含純量(scalar)、 管路(pipelined)、非管路(non-pipelined)...等。許多實(shí)施例可使用亂序預(yù)測(cè)執(zhí)行(out of order speculative execution)或順序執(zhí)行(in order execution)。該處理器核心可 包含用于一個(gè)或多個(gè)指令或其它功能之微編碼(microcoding),以與以上任何一種架構(gòu)相 結(jié)合。許多實(shí)施例可以實(shí)現(xiàn)許多其它設(shè)計(jì)特征,諸如緩存、變換后備緩沖區(qū)(translation look-aside buffer, TLB)...等。因此,于該圖示之實(shí)施例中,除了被兩個(gè)處理器核心所共 享之該L3緩存60之外,處理器核心15A包含Ll緩存系統(tǒng)16A、L2緩存系統(tǒng)17A和TLB 18A。 同樣地,處理器核心15B包含Ll緩存系統(tǒng)16B、L2緩存系統(tǒng)17B和變換后備緩沖區(qū)18B。該 Ll和L2緩存各自可代表任何于微處理器中發(fā)現(xiàn)之Ll和L2緩存。另外,該處理節(jié)點(diǎn)12包 含共享之L3緩存60,其中該L3緩存60系L3緩存次系統(tǒng)30 (cache subsystem)之一部份。 于該圖示之實(shí)施例中,該L3緩存次系統(tǒng)30包含緩存控制器單元21 (如所示,系節(jié)點(diǎn)控制器 20之一部份)和該L3緩存60。緩存控制器21可用以控制被指向該L3緩存60之要求。如以下將詳加描述者,一個(gè)或多個(gè)該緩存和(或)TLB結(jié)構(gòu)可實(shí)現(xiàn)取代機(jī)制,其中 取代控制器可維護(hù)數(shù)據(jù)儲(chǔ)存陣列中每一個(gè)塊儲(chǔ)存位置的最近被存取/被使用位(recently accessed/used bit)。另外,該取代控制器可維護(hù)計(jì)數(shù)值以依次地指向每一個(gè)塊儲(chǔ)存位置。 當(dāng)每一個(gè)合適之儲(chǔ)存位置均被查看以決定是否儲(chǔ)存取代數(shù)據(jù),該最近被存取/被使用(RU) 位可指示是否該對(duì)應(yīng)之塊儲(chǔ)存位置最近被存取過。因此,該塊取代控制器可根據(jù)是否該RU 位指示該位置最近被存取過,而將該取代數(shù)據(jù)儲(chǔ)存于該計(jì)數(shù)值所指向之該塊儲(chǔ)存位置。亦應(yīng)注意的是,雖然圖1中所示之該計(jì)算機(jī)系統(tǒng)10包含一個(gè)處理節(jié)點(diǎn)12,但其它 實(shí)施例可實(shí)現(xiàn)任意數(shù)目之處理節(jié)點(diǎn)。類似地,于許多實(shí)施例中,處理節(jié)點(diǎn)(如節(jié)點(diǎn)12)可 包含任意數(shù)目之處理器核心。許多該計(jì)算機(jī)系統(tǒng)10之實(shí)施例也可以于每一個(gè)節(jié)點(diǎn)12上包 含不同數(shù)目之HT接口和不同數(shù)目之周邊裝置16(系連接至該節(jié)點(diǎn))...等。請(qǐng)參照?qǐng)D2,系顯示圖1中高速緩存系統(tǒng)實(shí)施例更詳細(xì)之態(tài)樣之塊圖。該高速緩存 系統(tǒng)200 (有時(shí)又被稱作高速緩存)包含卷標(biāo)控制262 (tagcontrol)、塊取代控制器266、最 近最少使用(LRU)儲(chǔ)存陣列264、卷標(biāo)儲(chǔ)存陣列263和數(shù)據(jù)儲(chǔ)存陣列265。該卷標(biāo)儲(chǔ)存陣列263可用以儲(chǔ)存一些地址位(如卷標(biāo))于多個(gè)位置中的每一個(gè),該地址位系儲(chǔ)存于該數(shù)據(jù)儲(chǔ)存陣列265內(nèi)之?dāng)?shù)據(jù)的緩存線之地址位。于一個(gè)實(shí)施例中,該 標(biāo)簽控制262可以用以搜尋該卷標(biāo)儲(chǔ)存陣列263進(jìn)而決定是否被要求之緩存線系出現(xiàn)在 該數(shù)據(jù)儲(chǔ)存陣列265。例如,標(biāo)簽控制262可決定是否有一個(gè)或多個(gè)關(guān)聯(lián)于讀取要求之地 址位(address bit)系與儲(chǔ)存于該卷標(biāo)儲(chǔ)存陣列263之內(nèi)之任何地址卷標(biāo)(address tag) 匹配。如果該卷標(biāo)控制262與被要求之地址匹配,則該卷標(biāo)控制262可回復(fù)命中指示(hit indication)給該緩存控制器21,而如果在該卷標(biāo)陣列263中沒有發(fā)現(xiàn)匹配者則回復(fù)落空 指不(missindication)。于該圖標(biāo)實(shí)施例中,該數(shù)據(jù)儲(chǔ)存陣列265包含多個(gè)塊儲(chǔ)存位置(如269)。如 圖所示,數(shù)據(jù)儲(chǔ)存陣列265具有編號(hào)由0至m-1之m列(row),以及編號(hào)由0至n_l之η 行(column)。于此實(shí)施例中,該數(shù)據(jù)儲(chǔ)存陣列265實(shí)現(xiàn)了包含η路關(guān)聯(lián)性(η ways of associativity)之集合關(guān)聯(lián)高速緩存(set associative cache memory) 0 該路(way)系 由該行所代表,而該集合由該列所代表。例如,如果該高速緩存系16路之集合關(guān)聯(lián)緩存,則 η將是16,而每一個(gè)集合將包含16個(gè)提供儲(chǔ)存數(shù)據(jù)塊之塊儲(chǔ)存位置。傳統(tǒng)上,數(shù)據(jù)塊可為 緩存線。該集合的數(shù)目可視該高速緩存的尺寸而定。該LRU儲(chǔ)存陣列264包含多個(gè)儲(chǔ)存位置。于圖標(biāo)之實(shí)施例中,該LRU儲(chǔ)存陣列264 包含相當(dāng)于該數(shù)據(jù)儲(chǔ)存陣列265中該列和行之列和行,其中該列系代表該集合。于該LRU 儲(chǔ)存陣列264中標(biāo)記為”ru”之該儲(chǔ)存位置中,該塊取代控制器266可維護(hù)該數(shù)據(jù)儲(chǔ)存陣列 265中每一個(gè)塊儲(chǔ)存位置的最近被存取/被使用(RU)位。每一個(gè)RU位均指示是否該數(shù)據(jù) 儲(chǔ)存陣列中該對(duì)應(yīng)之位置最近被存取。如同此處所使用,被存取/被使用系指操作,在該操 作中,該數(shù)據(jù)儲(chǔ)存陣列內(nèi)之塊儲(chǔ)存位置系由于對(duì)該塊儲(chǔ)存位置中該數(shù)據(jù)的緩存要求而被讀 取或?qū)懭牖蚴潜淮嫒 3?RU位之外,該塊取代控制器266可以于該LRU儲(chǔ)存陣列264中每一個(gè)列之內(nèi) 維護(hù)計(jì)數(shù)值。例如,如圖2所示,每一個(gè)列中該參考編號(hào)C0、Cl、C2和C3代表四位計(jì)數(shù)值。 該計(jì)數(shù)值代表指針(pointer),指向數(shù)據(jù)儲(chǔ)存陣列265中該對(duì)應(yīng)之列內(nèi)個(gè)別之塊儲(chǔ)存位置, 其中該計(jì)數(shù)值可實(shí)現(xiàn)16路之集合關(guān)聯(lián)緩存。因此,所示之該計(jì)數(shù)值系四位數(shù)值。如果該路 數(shù)(the number of way)不同,則該計(jì)數(shù)值可具有不同之位數(shù)。于該圖示實(shí)施例中,對(duì)應(yīng)于 給定集合的該計(jì)數(shù)值亦代表指標(biāo),指向該LRU儲(chǔ)存陣列264中該相關(guān)聯(lián)之RU位。應(yīng)注意的是在一個(gè)實(shí)施例中,當(dāng)RU位系空的(clear),則可指示塊儲(chǔ)存位置最近 系未被存取。也就是說(shuō),當(dāng)該RU位系位于邏輯0數(shù)值。同樣地,當(dāng)RU位系被設(shè)定的(set), 則可指示塊儲(chǔ)存位置最近系被存取。也就是說(shuō),當(dāng)該RU位系位于邏輯1數(shù)值。然而,同樣可 預(yù)期該邏輯數(shù)值可被顛倒(reversed)以致于RU位可指示出塊儲(chǔ)存位置最近系未被存取, 當(dāng)RU位系被設(shè)定的或位于邏輯1數(shù)值;而RU位可指示出塊儲(chǔ)存位置最近系被存取,當(dāng)RU 位系空的或位于邏輯0數(shù)值。如下所詳述并同時(shí)參照?qǐng)D3之?dāng)⑹觯瑝K取代控制器266可以用以儲(chǔ)存取代數(shù)據(jù)于 數(shù)據(jù)儲(chǔ)存陣列265內(nèi),如果該計(jì)數(shù)值指向具有指示該塊儲(chǔ)存位置最近系未被存取之對(duì)應(yīng)RU 位之塊儲(chǔ)存位置。另外,如同此實(shí)施例中所使用之最近被存取(recently accessed)系指 自從該計(jì)數(shù)值最后一次指向此塊儲(chǔ)存位置的”被存取/被使用”。應(yīng)注意的是,該取代機(jī)制可被使用于任何形式之緩存,該緩存系使用取代算法。例 如,上述該高速緩存系統(tǒng)200可為L(zhǎng)l緩存、L2緩存或L3緩存的代表。再者,也有其它型式之高速緩存于處理器的微結(jié)構(gòu)(micro-architecture)內(nèi)。例如,許多處理器使用習(xí)知之儲(chǔ) 存(如變換后備緩沖區(qū)(TLB))以儲(chǔ)存虛擬或線性地址至實(shí)體地址轉(zhuǎn)換。這些形式之儲(chǔ)存 也可以大部分相同于傳統(tǒng)緩存的方式使用取代算法。如此,可預(yù)期上述該取代機(jī)制也可被 使用于這些形式之緩存。圖3系描述圖2中該高速緩存系統(tǒng)200之該實(shí)施例之該運(yùn)作之流程圖。共同參照 圖2和圖3,于塊300內(nèi),于一個(gè)實(shí)施例中,該塊取代控制器266造成所有RU位指示最近未 被存取。此情況可藉由例如重置(reset),來(lái)完成。為響應(yīng)緩存存取請(qǐng)求(諸如對(duì)給定之 塊儲(chǔ)存位置的讀取要求)(例如塊305),塊取代控制器266設(shè)定對(duì)應(yīng)于該被存取之塊儲(chǔ)存 位置的該RU位(塊310)。此操作可于每一次塊儲(chǔ)存位置被存取時(shí)發(fā)生。當(dāng)該數(shù)據(jù)儲(chǔ)存陣列265系存滿有效之?dāng)?shù)據(jù),任何額外之?dāng)?shù)據(jù)填入都將有數(shù)據(jù)被取 代。因此,為響應(yīng)取代要求(塊315),塊取代控制器266檢查對(duì)應(yīng)于該塊儲(chǔ)存位置的該RU 位,其中該塊儲(chǔ)存位置系被該集合中之該計(jì)數(shù)值所指出,而該集合系被該要求之該地址所 指示(塊320)。如果該RU位系空的(于此例中),指示出該位置最近系未被存取(塊325), 該塊取代控制器266取代該塊儲(chǔ)存位置中該數(shù)據(jù),其中該塊儲(chǔ)存位置系被該集合中之該計(jì) 數(shù)值所指出,而該集合系被該要求之該地址所指示(塊330),并且該塊取代控制器266設(shè)定 該對(duì)應(yīng)之RU位(指示最近系被存取)。操作則如上述之塊305來(lái)進(jìn)行?;仡^參照塊325,如果該RU位系被設(shè)定的(is set),指示該位置最近系被存取,則 該塊取代控制器266清空(clear)目前被該計(jì)數(shù)值所指向之該RU位(指示最近系未被存 取),并且增加該計(jì)數(shù)值以指向該集合中該下一個(gè)合適之塊儲(chǔ)存位置(塊340)。該塊取代 控制器266可接著檢查該下一個(gè)RU位,以查看是否該下一個(gè)RU位系空的或被設(shè)定的。如 上所述,如果該RU位系被設(shè)定的,指示該下一個(gè)位置最近系被存取,則該塊取代控制器266 清空目前被該計(jì)數(shù)值所指向之該RU位(指示最近未被存取),并增加該計(jì)數(shù)值以指向該集 合中該下一個(gè)塊儲(chǔ)存位置。此操作將持續(xù)直到該塊取代控制器發(fā)現(xiàn)RU位系空的,于此案例 中操作將如以上塊330中所述般被進(jìn)行。因此,雖然不太可能,但所有該RU位可能于一個(gè) 取代周期內(nèi)被清空。上述該等實(shí)施例對(duì)可以于該計(jì)數(shù)器依次的傳遞之間被存取之任何塊提供被取代 前的第二次機(jī)會(huì)。請(qǐng)參照?qǐng)D4,所示為圖標(biāo)出高速緩存系統(tǒng)400之另一個(gè)實(shí)施例之更詳細(xì)態(tài)樣之塊 圖。高速緩存系統(tǒng)400類似于圖2之高速緩存200,但是具有一些操作上的差異。詳而言 之,視該實(shí)現(xiàn)之方式而定,不必要對(duì)于該數(shù)據(jù)儲(chǔ)存陣列265中每一個(gè)塊儲(chǔ)存位置均維護(hù)RU 位。如下所述,該總計(jì)之最近使用信息(包含該計(jì)數(shù)器和RU位兩者)系維持在每個(gè)塊儲(chǔ)存 位置一個(gè)位。于圖4所示之實(shí)施例中,該高速緩存系統(tǒng)400 (有時(shí)系被稱作高速緩存)包含卷標(biāo) 控制262、塊取代控制器466、最近最少使用(LRU)儲(chǔ)存陣列464、卷標(biāo)儲(chǔ)存陣列263以及數(shù) 據(jù)儲(chǔ)存陣列265。如圖4所示,該數(shù)據(jù)儲(chǔ)存陣列265包含多個(gè)塊儲(chǔ)存位置(如269),并且 實(shí)現(xiàn)包括某路數(shù)關(guān)聯(lián)性之集合關(guān)聯(lián)緩存。因此,該LRU儲(chǔ)存陣列464也包含多個(gè)儲(chǔ)存位置。 于一個(gè)實(shí)施例中,該塊取代控制器466可針對(duì)該數(shù)據(jù)儲(chǔ)存陣列265中每一個(gè)集合維護(hù)計(jì)數(shù) 值。如此,該LRU儲(chǔ)存陣列464也包含對(duì)應(yīng)于該數(shù)據(jù)儲(chǔ)存陣列265中該列和該行之列和行, 其中該列代表該集合。于一個(gè)實(shí)施例中,該塊取代控制器466可將每一個(gè)計(jì)數(shù)值儲(chǔ)存于該LRU儲(chǔ)存陣列464之列內(nèi)。例如,如圖4所示,每一個(gè)列中之該參考編號(hào)C0、C1、C2和C3系 代表四位計(jì)數(shù)值。該計(jì)數(shù)值代表指向該數(shù)據(jù)儲(chǔ)存陣列265內(nèi)之個(gè)別塊儲(chǔ)存位置的指針。然而,與圖2所示之該實(shí)施例相比,圖4中該塊取代控制器466僅針對(duì)該數(shù)據(jù)儲(chǔ)存 陣列265中一部份該塊儲(chǔ)存位置維護(hù)最近被存取/被使用(RU)位。于該圖示之實(shí)施例中, 為了減少LRU陣列464內(nèi)之LRU信息所需之儲(chǔ)存,該計(jì)數(shù)值系儲(chǔ)存于該等RU位間。因此, RU位之該數(shù)目可為n_log2n,其中η系關(guān)聯(lián)性之路數(shù)(number of ways ofassociativity)。 例如,于16路之緩存中,將有12個(gè)RU位和四位之計(jì)數(shù)值。于此案例中,最近已被該指針忽 略之該RU位可被看作系邏輯0,所以這些位不需要儲(chǔ)存。另外,根據(jù)RU位與該計(jì)數(shù)器之相 對(duì)位置(position)而不是根據(jù)絕對(duì)之路數(shù)(absolute way number)來(lái)儲(chǔ)存該RU位系有用 的。例如,該塊取代控制器466可儲(chǔ)存LRU陣列464內(nèi)之該計(jì)數(shù)值,以致于該第一 RU位儲(chǔ) 存位置(在對(duì)應(yīng)于任何的塊儲(chǔ)存位置的該計(jì)數(shù)值儲(chǔ)存之后)系被該計(jì)數(shù)值所指向。因此, 例如如果該計(jì)數(shù)值系6,儲(chǔ)存于行4之該RU位將對(duì)應(yīng)于路數(shù)6之塊儲(chǔ)存位置,而不是如圖 2所示之實(shí)施例中該RU位所對(duì)應(yīng)之路數(shù)4。如以上與圖4中所描述者,每次該計(jì)數(shù)值增加,則LRU儲(chǔ)存陣列464中特定列內(nèi)之 該RU位系被向左移位(shifted left) —個(gè)位位置。因?yàn)樵揜U位中任何一個(gè)或全部均有 可能于取代要求當(dāng)時(shí)成為那一個(gè)被左移之位,所以似乎需要一個(gè)移位器(shifter),該移位 器具有和每一個(gè)列之該RU位數(shù)目一樣多之路數(shù)。然而,該移位器所需要之尺寸可藉由數(shù)字 因子”k”來(lái)減少,藉由在增加該計(jì)數(shù)器之前等待該最初k個(gè)RU位被設(shè)定并且僅以k之倍數(shù) 增加。于此案例中,被用于任何給定之取代之該路(way)將不必要系該計(jì)數(shù)值所指向之該 路,但可為自該計(jì)數(shù)值到計(jì)數(shù)值+k-Ι之該路中任何一個(gè),該路之RU位指示最近未被存取/ 被使用。例如,于該圖示實(shí)施例中,該計(jì)數(shù)值可以4之倍數(shù)(k = 4)增加。于此案例中,該 計(jì)數(shù)值中該2個(gè)最低有效位(least significant bit)將總是邏輯0,所以該2個(gè)最低有 效位不需要儲(chǔ)存。此方式所節(jié)省之該儲(chǔ)存空間可以被用以儲(chǔ)存額外之RU位。因此,于此例 中,每個(gè)集合中該16位LRU儲(chǔ)存將被分配為兩位計(jì)數(shù)值加上14個(gè)RU位。于一個(gè)實(shí)施例中,每一個(gè)RU位均指示是否該數(shù)據(jù)儲(chǔ)存陣列265中對(duì)應(yīng)之塊儲(chǔ)存位 置最近被存取。如同此處所使用,被存取/被使用系指操作,在該操作中,該數(shù)據(jù)儲(chǔ)存陣列 內(nèi)之塊儲(chǔ)存位置系由于對(duì)該塊儲(chǔ)存位置中該數(shù)據(jù)的緩存要求而被讀取或?qū)懭牖蚴潜淮嫒 ?yīng)注意的是在一個(gè)實(shí)施例中,當(dāng)RU位系空的,該RU位可指示塊儲(chǔ)存位置最近系未 被存取。也就是說(shuō),當(dāng)該RU位系位于邏輯0數(shù)值。同樣地,當(dāng)RU位系被設(shè)定的,該RU位可 指示塊儲(chǔ)存位置最近系被存取。也就是說(shuō),當(dāng)該RU位系位于邏輯1數(shù)值。然而,同樣可預(yù) 期該邏輯數(shù)值可被顛倒以致于RU位可指示出塊儲(chǔ)存位置最近系未被存取,當(dāng)RU位系被設(shè) 定的或位于邏輯1數(shù)值;而RU位可指示出塊儲(chǔ)存位置最近系被存取,當(dāng)RU位系空的或位于 邏輯0數(shù)值。圖5系描述圖4中所示之該實(shí)施例之操作細(xì)節(jié)之流程圖,如同該先前段落所修改 者。共同參照?qǐng)D4和圖5,于圖5之塊500中,該塊取代控制器466造成所有RU位指示最近 未被存取。此情況可藉由例如重置,來(lái)完成。為響應(yīng)緩存存取請(qǐng)求(諸如對(duì)給定之塊儲(chǔ)存 位置的讀取要求),例如(塊505),塊取代控制器466設(shè)定對(duì)應(yīng)于該被存取之塊儲(chǔ)存位置的 該RU位,如果于該要求時(shí)存在這樣的位(塊510)。此操作可于每一次塊儲(chǔ)存位置被存取時(shí) 發(fā)生。
當(dāng)該數(shù)據(jù)儲(chǔ)存陣列265系存滿有效之?dāng)?shù)據(jù),任何額外之?dāng)?shù)據(jù)填入都將有數(shù)據(jù)被取 代。因此,為響應(yīng)取代要求(塊515),塊取代控制器466檢查對(duì)應(yīng)于該塊儲(chǔ)存位置的該RU 位以及對(duì)該集合的該下面三個(gè)RU位,其中該塊儲(chǔ)存位置系被該集合中之該計(jì)數(shù)值所指向, 而該集合系被該要求之該地址所指示(塊520)。如果此四個(gè)RU位中任何一個(gè)系空的,指示 該位置系未被存取(塊525),則該塊取代控制器466取代該塊儲(chǔ)存位置中該數(shù)據(jù),其中該塊 儲(chǔ)存位置對(duì)應(yīng)于四個(gè)RU位中該第一個(gè)空的RU位(塊530),并且該塊取代控制器466設(shè)定 此位以指示最近系被存取。操作則如上述之塊505來(lái)進(jìn)行?;仡^參照塊525,如果該四個(gè)被檢驗(yàn)之RU位全部均被設(shè)定,指示該等位置最近系 被存取,則該塊取代控制器466將所有對(duì)于該列之該RU位往左移位四個(gè)位位置,于右手端 填0 (zero-f i 11)(指示最近未被存取),并且將計(jì)數(shù)值增加4以指向該接下來(lái)包含該集合中 四個(gè)塊儲(chǔ)存位置的合適群組(塊540)。該塊取代控制器466可接著檢查該接下來(lái)具有四個(gè) RU位之群組,以查看是否其中任何一個(gè)系空的。如上所述,如果該四個(gè)RU位全部系被設(shè)定 的,指示該等位置最近系被存取,則該塊取代控制器466將所有對(duì)于該列之該RU位往左移 位四個(gè)位位置,并填0 (指示最近未被存取),并且將計(jì)數(shù)值增加4以指向該接下來(lái)包含該集 合中四個(gè)塊儲(chǔ)存位置的合適群組。此操作將持續(xù)直到該塊取代控制器發(fā)現(xiàn)RU位系空的,于 此案例中操作將如以上塊530中所述般被進(jìn)行。因此,雖然不太可能,但所有該RU位可能 于一個(gè)取代周期內(nèi)被清空。應(yīng)注意的是,于另一實(shí)施例中,每當(dāng)該第一組四個(gè)位(first four bit)被發(fā)現(xiàn)系 被設(shè)定,則該塊取代控制器466可用以移位/清空(shift/clear)該對(duì)于給定之列之四個(gè) RU位,而無(wú)須等待該下一個(gè)取代要求。于此案例中,當(dāng)取代要求到達(dá)時(shí),已經(jīng)確認(rèn)第一組四 個(gè)群組中至少一個(gè)RU位系空的。應(yīng)注意的是,雖然于一些實(shí)施例中未顯示,但有效之位/信息可被儲(chǔ)存于該卷標(biāo) 陣列263或個(gè)別之儲(chǔ)存陣列。如此,具有無(wú)效數(shù)據(jù)的塊儲(chǔ)存位置可以在具有有效之?dāng)?shù)據(jù)前 一直被用以儲(chǔ)存取代之?dāng)?shù)據(jù)(!^placement data)。因此,當(dāng)接收到緩存要求時(shí),當(dāng)正在決定 儲(chǔ)存取代數(shù)據(jù)至那一個(gè)位置時(shí),該有效之信息可優(yōu)先于該RU信息而被檢查。復(fù)應(yīng)注意的是,雖然上述實(shí)施例中包含具有多重處理器核心之節(jié)點(diǎn),可預(yù)期的是 關(guān)聯(lián)于緩存系統(tǒng)200和400之該功能可被用于任何形式之處理器,包含單一核心處理器。另 外,雖然該實(shí)施例已經(jīng)以硬件的關(guān)點(diǎn)被描述,但可預(yù)期的是該實(shí)施例可被實(shí)現(xiàn)于硬件、軟件 或軟件之結(jié)合。于以軟件實(shí)現(xiàn)之實(shí)施例中,該程序指令可被儲(chǔ)存于例如圖1之內(nèi)存14內(nèi), 并如所期望的被15A和15B所執(zhí)行。然而,可預(yù)期的是該程序指令可被儲(chǔ)存于任何形式之 儲(chǔ)存媒體中。雖然該以上之實(shí)施例已被盡可能地詳細(xì)描述,但以上所揭露的內(nèi)容一旦理解后, 許多的變化及修改對(duì)于該技術(shù)領(lǐng)域中熟習(xí)技術(shù)者將變得很明顯。接下來(lái)的申請(qǐng)專利范圍打 算以涵蓋所有這種變化與修改之方式來(lái)加以解讀。產(chǎn)業(yè)利用性 本發(fā)明一般可應(yīng)用于微處理器。
權(quán)利要求
一種高速緩存系統(tǒng)(200),包括高速緩存(269、16A、17A、18A),包含多個(gè)集合,每一個(gè)集合均具有多個(gè)塊儲(chǔ)存位置;以及塊取代控制器(266),連接至該高速緩存并且用以維護(hù)對(duì)應(yīng)于該高速緩存中每一個(gè)集合的個(gè)別計(jì)數(shù)值,其中,對(duì)應(yīng)于給定集合的該個(gè)別計(jì)數(shù)值指向該給定集合內(nèi)儲(chǔ)存取代數(shù)據(jù)的合適的塊儲(chǔ)存位置;其中,該塊取代控制器進(jìn)一步用以針對(duì)至少一些該塊儲(chǔ)存位置的每一個(gè)維護(hù)相關(guān)聯(lián)的最近存取位,該最近存取位指示該對(duì)應(yīng)的塊儲(chǔ)存位置是否最近被存?。灰约捌渲?,該塊取代控制器進(jìn)一步用以根據(jù)對(duì)應(yīng)于該合適的塊儲(chǔ)存位置的該最近存取位中特定的一個(gè)是否指示該合適的塊儲(chǔ)存位置最近被存取,而將該取代數(shù)據(jù)儲(chǔ)存于被該個(gè)別計(jì)數(shù)值所指向的該合適的塊儲(chǔ)存位置內(nèi)。
2.如權(quán)利要求1所述的高速緩存系統(tǒng),其中,該塊取代控制器用以響應(yīng)于對(duì)應(yīng)于該合 適的塊儲(chǔ)存位置的該最近存取位中該的一個(gè)指示該合適的塊儲(chǔ)存位置最近未被存取,而將 該取代數(shù)據(jù)儲(chǔ)存于被該個(gè)別計(jì)數(shù)值所指向的該合適的塊儲(chǔ)存位置內(nèi)。
3.如權(quán)利要求1所述的高速緩存系統(tǒng),其中,該塊取代控制器進(jìn)一步用以響應(yīng)于存取 該合適的塊儲(chǔ)存位置的緩存存取請(qǐng)求,來(lái)造成對(duì)應(yīng)于該合適的塊儲(chǔ)存位置的該最近存取位 中該特定的一個(gè)指示該合適的塊儲(chǔ)存位置最近被存取。
4.如權(quán)利要求1所述的高速緩存系統(tǒng),其中,該塊取代控制器進(jìn)一步用以響應(yīng)于對(duì)應(yīng) 于該合適的塊儲(chǔ)存位置的該最近存取位中該特定的一個(gè)指示出該合適的塊儲(chǔ)存位置最近 被存取,而禁止將該取代數(shù)據(jù)儲(chǔ)存于被該個(gè)別計(jì)數(shù)值所指向的該合適的塊儲(chǔ)存位置內(nèi)。
5.如權(quán)利要求1所述的高速緩存系統(tǒng),其中,該塊取代控制器用以響應(yīng)于指向該對(duì)應(yīng) 的合適的塊儲(chǔ)存位置的對(duì)應(yīng)的個(gè)別計(jì)數(shù)值,以及該給定的最近存取位指示該對(duì)應(yīng)的合適的 塊儲(chǔ)存位置最近被存取,而造成給定的最近存取位指示相關(guān)聯(lián)的合適的塊儲(chǔ)存位置最近未 被存取。
6. 一種方法,包括提供高速緩存(269、16A、17A、18A),該高速緩存包含多個(gè)集合,每一個(gè)集合均包含多個(gè) 塊儲(chǔ)存位置;以及維護(hù)個(gè)別計(jì)數(shù)值,該個(gè)別計(jì)數(shù)值對(duì)應(yīng)于該高速緩存中每一個(gè)集合,其中,對(duì)應(yīng)于給定集 合的該個(gè)別計(jì)數(shù)值指向該給定集合內(nèi)儲(chǔ)存取代數(shù)據(jù)的合適的塊儲(chǔ)存位置;針對(duì)至少一些該塊儲(chǔ)存位置中的每一個(gè)維護(hù)相關(guān)聯(lián)的最近存取位,該最近存取位指示 該對(duì)應(yīng)的塊儲(chǔ)存位置是否最近被存??;以及根據(jù)對(duì)應(yīng)于該合適的塊儲(chǔ)存位置的該最近存取位中特定的一個(gè)是否指示該合適的塊 儲(chǔ)存位置最近被存取,而將該取代數(shù)據(jù)儲(chǔ)存于被該個(gè)別計(jì)數(shù)值所指向的該合適的塊儲(chǔ)存位 置內(nèi)。
7.如權(quán)利要求6所述的方法,還包括響應(yīng)于對(duì)應(yīng)于該合適的塊儲(chǔ)存位置的該最近存取 位中該特定的一個(gè)指示該合適的塊儲(chǔ)存位置最近未被存取,而將該取代數(shù)據(jù)儲(chǔ)存于被該個(gè) 別計(jì)數(shù)值所指向的該合適的塊儲(chǔ)存位置內(nèi)。
8.如權(quán)利要求7所述的方法,還包括響應(yīng)于存取該合適的塊儲(chǔ)存位置的緩存存取請(qǐng) 求,來(lái)造成該對(duì)應(yīng)于該合適的塊儲(chǔ)存位置的該最近存取位中該特定的一個(gè)指示該合適的塊儲(chǔ)存位置最近被存取。
9.如權(quán)利要求7所述的方法,還包括響應(yīng)于對(duì)應(yīng)于該合適的塊儲(chǔ)存位置的該最近存取 位中該特定的一個(gè)指示該合適的塊儲(chǔ)存位置最近被存取,而禁止將該取代數(shù)據(jù)儲(chǔ)存于被該 個(gè)別計(jì)數(shù)值所指向的該合適的塊儲(chǔ)存位置內(nèi)。
10.如權(quán)利要求8所述的方法,還包括響應(yīng)于指向該對(duì)應(yīng)的合適的塊儲(chǔ)存位置的對(duì)應(yīng) 的個(gè)別計(jì)數(shù)值,以及該給定的最近存取位指示該對(duì)應(yīng)的合適的塊儲(chǔ)存位置最近被存取,而 造成給定的最近存取位指示相關(guān)聯(lián)的合適的塊儲(chǔ)存位置最近未被存取。
全文摘要
本發(fā)明揭露一種高速緩存系統(tǒng),其包含高速緩存(269、16A、17A、18A)和塊取代控制器(266)。該高速緩存可以包含多個(gè)集合,每一個(gè)集合均包含多個(gè)塊儲(chǔ)存位置。該塊取代控制器可以維護(hù)對(duì)應(yīng)于該高速緩存中每一個(gè)集合的個(gè)別計(jì)數(shù)值。該個(gè)別計(jì)數(shù)值指向該給定集合內(nèi)儲(chǔ)存取代數(shù)據(jù)的合適塊儲(chǔ)存位置。該塊取代控制器可針對(duì)該塊儲(chǔ)存位置中至少一些中之每一個(gè)維護(hù)相關(guān)聯(lián)之最近存取位,該最近存取位指示是否該對(duì)應(yīng)之塊儲(chǔ)存位置最近被存取。此外,該塊取代控制器可以根據(jù)是否有特定之最近存取位指示該合適之塊儲(chǔ)存位置最近被存取,而儲(chǔ)存該取代數(shù)據(jù)于被該個(gè)別計(jì)數(shù)值所指向之該合適之塊儲(chǔ)存位置內(nèi)。
文檔編號(hào)G06F12/12GK101918925SQ200880111266
公開日2010年12月15日 申請(qǐng)日期2008年9月4日 優(yōu)先權(quán)日2007年9月4日
發(fā)明者J·D·威廉姆斯 申請(qǐng)人:先進(jìn)微裝置公司