本申請(qǐng)要求享有于2014年1月23日遞交的、名稱(chēng)為“Hardware Acceleration For Inline Caches In Dynamic Languages”的美國(guó)臨時(shí)申請(qǐng)No.61/930,808的優(yōu)先權(quán),在此以引用方式將該申請(qǐng)的全部?jī)?nèi)容并入本文。
背景技術(shù):
動(dòng)態(tài)編程語(yǔ)言(例如,JavaScript、Python和Ruby)通常用于在運(yùn)行時(shí)執(zhí)行共同行為,其中其它語(yǔ)言會(huì)在編譯代碼時(shí)執(zhí)行共同行為。動(dòng)態(tài)編程語(yǔ)言增加了軟件程序的靈活性,經(jīng)常由于額外的運(yùn)行時(shí)編譯而使執(zhí)行變慢。內(nèi)聯(lián)高速緩存是頻繁用于通過(guò)根據(jù)共同行為的共同模板生成“快速代碼”來(lái)減小動(dòng)態(tài)語(yǔ)言的代碼執(zhí)行開(kāi)銷(xiāo)的技術(shù)。然而,內(nèi)聯(lián)高速緩存通過(guò)存儲(chǔ)額外的內(nèi)聯(lián)高速緩存的代碼和常數(shù)值,增加了程序的存儲(chǔ)器使用。特別是對(duì)于移動(dòng)設(shè)備來(lái)說(shuō),存儲(chǔ)器是受約束的資源。
技術(shù)實(shí)現(xiàn)要素:
各個(gè)方面集中于用于增加計(jì)算設(shè)備上的動(dòng)態(tài)語(yǔ)言軟件的處理速度的方法和裝置。一個(gè)方面方法可以包括:由處理器初始化針對(duì)動(dòng)態(tài)軟件操作的第一實(shí)例的第一內(nèi)聯(lián)高速緩存;將所述第一內(nèi)聯(lián)高速緩存存儲(chǔ)在被配置為提供用于存儲(chǔ)和取回所述第一內(nèi)聯(lián)高速緩存的快速存取的存儲(chǔ)器中;在協(xié)處理器中接收所述動(dòng)態(tài)軟件操作的第二實(shí)例;由所述協(xié)處理器確定所述動(dòng)態(tài)軟件操作的所述第一實(shí)例與所述動(dòng)態(tài)軟件操作的所述第二實(shí)例是否相同;響應(yīng)于確定所述動(dòng)態(tài)軟件操作的所述第一實(shí)例與所述動(dòng)態(tài)軟件操作的所述第二實(shí)例相同,由所述協(xié)處理器使用來(lái)自所述存儲(chǔ)器的所述第一內(nèi)聯(lián)高速緩存來(lái)執(zhí)行所述動(dòng)態(tài)軟件操作的所述第二實(shí)例;以及由所述協(xié)處理器將執(zhí)行所述動(dòng)態(tài)軟件操作的所述第二實(shí)例的結(jié)果返回給所述處理器。
在一個(gè)方面中,確定所述動(dòng)態(tài)軟件操作的所述第一實(shí)例與所述動(dòng)態(tài)軟 件操作的所述第二實(shí)例是否相同可以包括:將與所述動(dòng)態(tài)軟件操作的所述第一實(shí)例相關(guān)的第一對(duì)象實(shí)現(xiàn)和與所述動(dòng)態(tài)軟件操作的所述第二實(shí)例相關(guān)的第二對(duì)象實(shí)現(xiàn)進(jìn)行比較;以及確定所述第一對(duì)象實(shí)現(xiàn)與所述第二對(duì)象實(shí)現(xiàn)是否相同。
一個(gè)方面方法還可以包括:響應(yīng)于確定所述動(dòng)態(tài)軟件操作的所述第一實(shí)例與所述動(dòng)態(tài)軟件操作的所述第二實(shí)例不同,初始化針對(duì)所述動(dòng)態(tài)軟件操作的所述第二實(shí)例的、包括所述第一內(nèi)聯(lián)高速緩存的第二內(nèi)聯(lián)高速緩存,所述第二內(nèi)聯(lián)高速緩存被配置為替換所初始化的第一內(nèi)聯(lián)高速緩存;將所述第二內(nèi)聯(lián)高速緩存存儲(chǔ)在被配置為提供用于存儲(chǔ)和取回所述第二內(nèi)聯(lián)高速緩存的快速存取的所述存儲(chǔ)器中;以及響應(yīng)于確定所述動(dòng)態(tài)軟件操作的所述第一實(shí)例與所述動(dòng)態(tài)軟件操作的所述第二實(shí)例不同,由所述協(xié)處理器使用來(lái)自所述存儲(chǔ)器的所述第二內(nèi)聯(lián)高速緩存來(lái)執(zhí)行所述動(dòng)態(tài)軟件操作的所述第二實(shí)例。
一個(gè)方面方法還可以包括:確定針對(duì)所述動(dòng)態(tài)軟件操作的所述第一實(shí)例是否存在所述第一內(nèi)聯(lián)高速緩存,其中,由所述處理器初始化針對(duì)所述動(dòng)態(tài)軟件操作的所述第一實(shí)例的所述第一內(nèi)聯(lián)高速緩存可以包括:響應(yīng)于確定不存在針對(duì)所述動(dòng)態(tài)軟件操作的所述第一實(shí)例的所述第一內(nèi)聯(lián)高速緩存,由所述處理器初始化針對(duì)所述動(dòng)態(tài)軟件操作的所述第一實(shí)例的所述第一內(nèi)聯(lián)高速緩存。
在一個(gè)方面中,由所述處理器初始化針對(duì)所述動(dòng)態(tài)軟件操作的所述第一實(shí)例的所述第一內(nèi)聯(lián)高速緩存可以包括:遍歷針對(duì)所述動(dòng)態(tài)軟件操作的對(duì)象實(shí)現(xiàn),直到識(shí)別與所述動(dòng)態(tài)軟件操作的所述第一實(shí)例相關(guān)的所述對(duì)象實(shí)現(xiàn)的數(shù)據(jù)為止;執(zhí)行所述動(dòng)態(tài)軟件操作的所述第一實(shí)例的所述動(dòng)態(tài)軟件操作;以及返回所述動(dòng)態(tài)軟件操作的所述第一實(shí)例的結(jié)果。
在一個(gè)方面中,由所述協(xié)處理器將執(zhí)行所述動(dòng)態(tài)軟件操作的所述第二實(shí)例的所述結(jié)果返回給所述處理器可以包括:將所述結(jié)果直接返回給所述處理器。
在一個(gè)方面方法中,由所述協(xié)處理器將執(zhí)行所述動(dòng)態(tài)軟件操作的所述第二實(shí)例的所述結(jié)果返回可以包括:將所述結(jié)果通過(guò)所述處理器和所述協(xié)處理器可存取的數(shù)據(jù)高速緩存間接返回給所述處理器。
在一個(gè)方面中,將所述第一內(nèi)聯(lián)高速緩存存儲(chǔ)在被配置為提供用于存儲(chǔ)和取回所述第一內(nèi)聯(lián)高速緩存的快速存取的所述存儲(chǔ)器中可以包括:在設(shè)置在連接到處理器管線(xiàn)的內(nèi)聯(lián)高速緩存管線(xiàn)上的所述存儲(chǔ)器處從設(shè)置在所述處理器管線(xiàn)上的所述處理器接收所述第一內(nèi)聯(lián)高速緩存,在所述協(xié)處理器處接收所述動(dòng)態(tài)軟件操作的所述第二實(shí)例可以包括:在設(shè)置在連接到所述處理器管線(xiàn)的所述內(nèi)聯(lián)高速緩存管線(xiàn)上的所述協(xié)處理器處從設(shè)置在所述處理器管線(xiàn)上的所述處理器接收所述動(dòng)態(tài)軟件操作的所述第二實(shí)例,以及由所述協(xié)處理器將執(zhí)行所述動(dòng)態(tài)軟件操作的所述第二實(shí)例的所述結(jié)果返回可以包括:將執(zhí)行所述動(dòng)態(tài)軟件操作的所述第二實(shí)例的所述結(jié)果從設(shè)置在所述內(nèi)聯(lián)高速緩存管線(xiàn)上的所述協(xié)處理器發(fā)送給設(shè)置在連接到所述內(nèi)聯(lián)高速緩存管線(xiàn)的所述處理器管線(xiàn)上的所述處理器。
一個(gè)方面方法可以包括:由編譯器生成針對(duì)所述協(xié)處理器的可執(zhí)行操作;以及指示所述處理器以使得所述協(xié)處理器執(zhí)行所生成的可執(zhí)行操作以執(zhí)行操作,所述操作可以包括:由處理器初始化針對(duì)所述動(dòng)態(tài)軟件操作的所述第一實(shí)例的所述第一內(nèi)聯(lián)高速緩存;將所述第一內(nèi)聯(lián)高速緩存存儲(chǔ)在被配置為提供用于存儲(chǔ)和取回所述第一內(nèi)聯(lián)高速緩存的快速存取的所述存儲(chǔ)器中;在協(xié)處理器中接收所述動(dòng)態(tài)軟件操作的所述第二實(shí)例;確定所述動(dòng)態(tài)軟件操作的所述第一實(shí)例與所述動(dòng)態(tài)軟件操作的所述第二實(shí)例是否相同;響應(yīng)于確定所述動(dòng)態(tài)軟件操作的所述第一實(shí)例與所述動(dòng)態(tài)軟件操作的所述第二實(shí)例相同,由所述協(xié)處理器使用來(lái)自所述存儲(chǔ)器的所述第一內(nèi)聯(lián)高速緩存來(lái)執(zhí)行所述動(dòng)態(tài)軟件操作的所述第二實(shí)例;以及由所述協(xié)處理器將執(zhí)行所述動(dòng)態(tài)軟件操作的所述第二實(shí)例的所述結(jié)果返回。
一個(gè)方面包括一種計(jì)算設(shè)備,所述計(jì)算設(shè)備具有彼此通信地連接的處理器、存儲(chǔ)器和協(xié)處理器,并且所述處理器和所述協(xié)處理器被配置有處理器可執(zhí)行指令以執(zhí)行上面所描述的方面方法中的一個(gè)或多個(gè)方面方法的操作。
一個(gè)方面包括一種其上存儲(chǔ)有處理器可執(zhí)行軟件指令的非暫時(shí)性處理器可讀介質(zhì),所述處理器可執(zhí)行軟件指令使得處理器和協(xié)處理器執(zhí)行上面所描述的方面方法中的一個(gè)或多個(gè)方面方法的操作。
一個(gè)方面包括一種計(jì)算設(shè)備,所述計(jì)算設(shè)備具有用于執(zhí)行上面所描述 的方面方法中的一個(gè)或多個(gè)方面方法的功能的單元。
附圖說(shuō)明
附圖(其被并入本文并構(gòu)成本說(shuō)明書(shū)的一部分)示出了本發(fā)明的示例性方面,并且與上面給出的一般性描述以及下面給出的具體描述一起用于說(shuō)明本發(fā)明的特征。
圖1是示出了根據(jù)一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備的組件框圖,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的內(nèi)聯(lián)高速緩存硬件加速器和內(nèi)聯(lián)高速緩存存儲(chǔ)器。
圖2是示出了根據(jù)另一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備的組件框圖,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的內(nèi)聯(lián)高速緩存硬件加速器和內(nèi)聯(lián)高速緩存存儲(chǔ)器。
圖3是示出了根據(jù)一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備的組件框圖,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的協(xié)處理器和內(nèi)聯(lián)高速緩存存儲(chǔ)器。
圖4是示出了根據(jù)一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備的組件框圖,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的協(xié)處理器和內(nèi)聯(lián)高速緩存存儲(chǔ)器。
圖5是示出了根據(jù)另一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備的組件框圖,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的功能單元和內(nèi)聯(lián)高速緩存存儲(chǔ)器。
圖6是示出了根據(jù)一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備的組件框圖,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的內(nèi)聯(lián)高速緩存存儲(chǔ)器。
圖7是示出了用于使用動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速來(lái)利用內(nèi)聯(lián)高速緩存代碼和常數(shù)初始化的方面方法的過(guò)程流程圖。
圖8是示出了用于由處理器使用針對(duì)動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的內(nèi)聯(lián)高速緩存代碼和常數(shù)的方面方法的過(guò)程流程圖。
圖9是示出了用于由功能單元使用針對(duì)動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的內(nèi)聯(lián)高速緩存代碼和常數(shù)的方面方法的過(guò)程流程圖。
圖10是示出了適合于與各個(gè)方面一起使用的示例性移動(dòng)計(jì)算設(shè)備的組件框圖。
圖11是示出了適合于與各個(gè)方面一起使用的示例性計(jì)算設(shè)備的組件框圖。
圖12是示出了適合于與各個(gè)方面一起使用的示例性服務(wù)器設(shè)備的組件框圖。
具體實(shí)施方式
將參考附圖來(lái)詳細(xì)描述各個(gè)方面。只要有可能,貫穿附圖將使用相同的附圖標(biāo)記來(lái)指代相同或相似的部件。對(duì)特定例子和實(shí)現(xiàn)方式的引用是出于說(shuō)明的目的,并非旨在限制本發(fā)明或權(quán)利要求書(shū)的范圍。
本文中使用詞語(yǔ)“示例性”表示“用作例子、實(shí)例或說(shuō)明”。本文中描述為“示例性”的任何實(shí)現(xiàn)方式不一定解釋為比其它實(shí)現(xiàn)方式優(yōu)選或有利。
術(shù)語(yǔ)“計(jì)算設(shè)備”在本文中可互換使用,以指代以下各項(xiàng)中的任何一個(gè)或全部:蜂窩電話(huà)、智能電話(huà)、個(gè)人或移動(dòng)多媒體播放器、個(gè)人數(shù)據(jù)助理(PDA)、膝上型計(jì)算機(jī)、平板計(jì)算機(jī)、平板手機(jī)、智能本、超極本、掌上計(jì)算機(jī)、無(wú)線(xiàn)電子郵件接收機(jī)、多媒體互聯(lián)網(wǎng)使能蜂窩電話(huà)、無(wú)線(xiàn)游戲控制器、臺(tái)式計(jì)算機(jī)、服務(wù)器、以及包括存儲(chǔ)器和可編程處理器的類(lèi)似的個(gè)人或商用電子設(shè)備。
術(shù)語(yǔ)“片上系統(tǒng)”(SoC)和“集成電路”(IC)在本文中可互換使用,以指代一組互連的電子電路,通常(但不唯一地)包括一個(gè)或多個(gè)硬件內(nèi)核、存儲(chǔ)器單元和通信接口。硬件內(nèi)核可以包括各種不同類(lèi)型的處理器,例如通用處理器、中央處理單元(CPU)、數(shù)字信號(hào)處理器(DSP)、圖形處理單元(GPU)、加速處理單元(APU)、輔助處理器、單核處理器以及多核處理器。硬件內(nèi)核還可以包含其它硬件和硬件組合,例如現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、專(zhuān)用集成電路(ASIC)、其它可編程邏輯器件、分立門(mén)控邏輯器件、晶體管邏輯器件、性能監(jiān)控硬件、看門(mén)狗(watchdog)硬件以及時(shí)間基準(zhǔn)。集成電路可以被配置為使得集成電路的組件駐留在單片半導(dǎo)體材料(例如,硅)上。這種配置還可以被稱(chēng)為IC組件在單芯片上。
內(nèi)聯(lián)高速緩存是用于加速對(duì)諸如JavaScript、PHP、Python和Ruby之 類(lèi)的語(yǔ)言的動(dòng)態(tài)編譯的技術(shù)。編譯器(例如,靜態(tài)編譯器、運(yùn)行時(shí)編譯器或者動(dòng)態(tài)編譯器)可以識(shí)別呈現(xiàn)共同行為的字節(jié)碼模式,并且可以使用代碼模板來(lái)生成可執(zhí)行代碼。所生成的代碼可以利用一些對(duì)象信息來(lái)參數(shù)化并存儲(chǔ)在內(nèi)聯(lián)高速緩存中。編譯器可以設(shè)置保護(hù)以檢查對(duì)象是否與所生成的代碼匹配,從內(nèi)聯(lián)高速緩存中取回代碼并調(diào)用代碼。內(nèi)聯(lián)高速緩存代碼可以緩解對(duì)重復(fù)生成相同序列的需求。
然而,內(nèi)聯(lián)高速緩存帶來(lái)了一組不同的性能問(wèn)題。在常規(guī)的計(jì)算設(shè)備(或計(jì)算系統(tǒng))中,內(nèi)聯(lián)高速緩存項(xiàng)目仍然由處理器執(zhí)行并存儲(chǔ)在存儲(chǔ)器中。此外,當(dāng)相同的內(nèi)聯(lián)高速緩存項(xiàng)目在使用恰當(dāng)?shù)膮?shù)時(shí)可以提供正確的結(jié)果時(shí),共同任務(wù)中的許多共同任務(wù)會(huì)針對(duì)各個(gè)對(duì)象生成內(nèi)聯(lián)高速緩存項(xiàng)目。因此,內(nèi)聯(lián)高速緩存技術(shù)會(huì)使處理器、存儲(chǔ)器和/或管線(xiàn)雜亂并用盡計(jì)算和功率資源。
各個(gè)方面包括用于增加計(jì)算設(shè)備上的動(dòng)態(tài)語(yǔ)言軟件的處理速度的方法、設(shè)備和非暫時(shí)性處理器可讀存儲(chǔ)介質(zhì)。用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速可以使用專(zhuān)用資源來(lái)管理用于共同任務(wù)的內(nèi)聯(lián)高速緩存項(xiàng)目,并且解除計(jì)算設(shè)備的常規(guī)組件(例如,應(yīng)用處理器、管線(xiàn)和存儲(chǔ)器)的負(fù)擔(dān)。具體而言,內(nèi)聯(lián)高速緩存硬件加速器可以包括至少某種專(zhuān)用存儲(chǔ)器和某種專(zhuān)用處理。專(zhuān)用存儲(chǔ)器可以實(shí)現(xiàn)為單獨(dú)的存儲(chǔ)器、實(shí)現(xiàn)為數(shù)據(jù)高速緩存的一部分、或者實(shí)現(xiàn)為系統(tǒng)存儲(chǔ)器的一部分。專(zhuān)用處理可以實(shí)現(xiàn)為對(duì)現(xiàn)有處理器執(zhí)行管線(xiàn)的擴(kuò)展、實(shí)現(xiàn)為處理器功能單元、實(shí)現(xiàn)為通過(guò)現(xiàn)有協(xié)處理器接口與內(nèi)核處理器進(jìn)行通信的協(xié)處理器、或者實(shí)現(xiàn)為通過(guò)專(zhuān)有接口與處理器進(jìn)行通信的單獨(dú)單元。用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速可以與共同的內(nèi)聯(lián)高速緩存一起實(shí)現(xiàn),使得某些任務(wù)專(zhuān)用于硬件加速,而其它任務(wù)(可能不那么共同的任務(wù))可以繼續(xù)由計(jì)算設(shè)備的常規(guī)組件來(lái)管理。
用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的組件可以是單獨(dú)的但連接到計(jì)算設(shè)備的常規(guī)組件。例如,計(jì)算設(shè)備可以包含用于在各個(gè)其它組件(例如,處理器和數(shù)據(jù)高速緩存)之間發(fā)送信號(hào)的處理器管線(xiàn)。用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的組件可以通過(guò)內(nèi)聯(lián)高速緩存管線(xiàn)彼此連接并連接到處理器管線(xiàn),其中內(nèi)聯(lián)高速緩存管線(xiàn)可以允許用于動(dòng)態(tài)語(yǔ)言 中的內(nèi)聯(lián)高速緩存的硬件加速的組件彼此發(fā)送信號(hào)并向計(jì)算設(shè)備的常規(guī)組件發(fā)送信號(hào)。這種布置可以允許用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速在不阻礙常規(guī)組件的操作的情況下進(jìn)行操作,直到與常規(guī)組件的通信是必需的為止。用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的組件可以經(jīng)由所連接的管線(xiàn)來(lái)直接地與常規(guī)組件中的某些常規(guī)組件進(jìn)行通信,或者通過(guò)其它常規(guī)組件來(lái)間接地與常規(guī)組件中的某些常規(guī)組件進(jìn)行通信。
圖1示出了根據(jù)一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的內(nèi)聯(lián)高速緩存硬件加速器和內(nèi)聯(lián)高速緩存存儲(chǔ)器。計(jì)算設(shè)備可以包括處理器10,寄存器或存儲(chǔ)器12(例如,累加器,或者用于存儲(chǔ)堆?;蚣拇嫫鞫?,數(shù)據(jù)高速緩存14,內(nèi)聯(lián)高速緩存硬件加速器16,內(nèi)聯(lián)高速緩存存儲(chǔ)器18,處理器管線(xiàn)20a、20b、20c,以及內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b。處理器10可以是如上面所描述的各種不同類(lèi)型的處理器中的一個(gè)或多個(gè)處理器。處理器10可以被配置為執(zhí)行來(lái)自軟件程序的經(jīng)編譯的和/或經(jīng)解釋的可執(zhí)行操作。在一個(gè)方面中,軟件程序可以以動(dòng)態(tài)編程語(yǔ)言編寫(xiě),并且可執(zhí)行操作可以在運(yùn)行時(shí)編譯或解釋。處理器10還可以被配置為執(zhí)行指令集以管理計(jì)算設(shè)備的其它組件并與這些組件交互,以便執(zhí)行動(dòng)態(tài)編程語(yǔ)言軟件程序的部分。
存儲(chǔ)器12可以被配置為存儲(chǔ)計(jì)算設(shè)備的各種狀態(tài)的狀態(tài)值。存儲(chǔ)在存儲(chǔ)器12中的狀態(tài)值可由處理器10存取以用于讀和寫(xiě)操作。數(shù)據(jù)高速緩存14可以被配置為存儲(chǔ)與由處理器10執(zhí)行的可執(zhí)行操作相關(guān)的數(shù)據(jù)。存儲(chǔ)在數(shù)據(jù)高速緩存14中的數(shù)據(jù)可以輸入到處理器10以執(zhí)行可執(zhí)行操作,或者由于所執(zhí)行的操作而由處理器10輸出并存儲(chǔ)用于稍后使用或用于由計(jì)算設(shè)備的其它組件存取。處理器10、存儲(chǔ)器12和數(shù)據(jù)高速緩存14可以通過(guò)處理器管線(xiàn)20a、20b、20c彼此連接。處理器管線(xiàn)20a、20b、20c可以被配置為:在連接到管線(xiàn)的組件之間發(fā)送表示可執(zhí)行操作、計(jì)算設(shè)備狀態(tài)、以及軟件程序數(shù)據(jù)的信號(hào)。
內(nèi)聯(lián)高速緩存硬件加速器16可以被配置為增加處理來(lái)自動(dòng)態(tài)編程語(yǔ)言軟件程序的可執(zhí)行操作(或者“動(dòng)態(tài)軟件操作”)的速度。下面進(jìn)一步詳細(xì)討論對(duì)內(nèi)聯(lián)高速緩存硬件加速器16的配置。內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以被配置為提供用于存儲(chǔ)和取回?cái)?shù)據(jù)的快速存取,并且可以被配置為至少初 始地存儲(chǔ)與由處理器10執(zhí)行的動(dòng)態(tài)軟件操作的實(shí)例相關(guān)聯(lián)的常數(shù)值。常數(shù)值可以與用于執(zhí)行動(dòng)態(tài)軟件操作的對(duì)象的特定實(shí)例相關(guān)聯(lián),使得常數(shù)值可以被重新調(diào)用,以用于將來(lái)執(zhí)行動(dòng)態(tài)軟件操作的對(duì)象的相同實(shí)例。在一個(gè)方面中,動(dòng)態(tài)軟件操作可以包括一個(gè)操作或一組操作,并且因此對(duì)單個(gè)操作或多個(gè)操作的引用并非旨在圍繞可執(zhí)行操作的數(shù)量來(lái)限制權(quán)利要求的范圍,除非權(quán)利要求中明確地記載。
內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以專(zhuān)用于該特定目的,并且因此可以是相對(duì)小并快速的存儲(chǔ)器,這是因?yàn)榇鎯?chǔ)常數(shù)可能不需要許多空間,并且提供對(duì)內(nèi)聯(lián)高速緩存存儲(chǔ)器18的快速存取以用于讀和寫(xiě)操作可以有助于增加動(dòng)態(tài)軟件操作的處理速度。對(duì)內(nèi)聯(lián)高速緩存存儲(chǔ)器18的存取可以受限于內(nèi)聯(lián)高速緩存硬件加速器16。在一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以被包括為內(nèi)聯(lián)高速緩存硬件加速器16的一部分。內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b可以將內(nèi)聯(lián)高速緩存硬件加速器16和內(nèi)聯(lián)高速緩存存儲(chǔ)器18連接到處理器10、存儲(chǔ)器12和數(shù)據(jù)高速緩存14。內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b可以直接連接到計(jì)算設(shè)備的其它組件,或者可以連接到處理器管線(xiàn)20a、20b、20c。內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b可以被配置為發(fā)送表示以下各項(xiàng)的信號(hào):用于執(zhí)行動(dòng)態(tài)軟件操作的數(shù)據(jù)、計(jì)算設(shè)備狀態(tài)和/或從執(zhí)行動(dòng)態(tài)軟件得到的數(shù)據(jù)(包括存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器18上的常數(shù)值)。
圖2示出了根據(jù)一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的內(nèi)聯(lián)高速緩存硬件加速器和內(nèi)聯(lián)高速緩存存儲(chǔ)器。與圖1中所示出的計(jì)算設(shè)備類(lèi)似,該計(jì)算設(shè)備可以包括處理器10,寄存器或存儲(chǔ)器12,數(shù)據(jù)高速緩存14,內(nèi)聯(lián)高速緩存硬件加速器16,內(nèi)聯(lián)高速緩存存儲(chǔ)器18,處理器管線(xiàn)20a、20b、20c,以及內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b。在一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以與內(nèi)聯(lián)高速緩存硬件加速器16分離。在各個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以是獨(dú)立的存儲(chǔ)器、集成到高速緩存層級(jí)中的存儲(chǔ)器、或者計(jì)算設(shè)備的系統(tǒng)存儲(chǔ)器的一部分。計(jì)算設(shè)備還可以包括內(nèi)聯(lián)高速緩存管線(xiàn)22c,其被進(jìn)一步配置為連接內(nèi)聯(lián)高速緩存硬件加速器16和內(nèi)聯(lián)高速緩存存儲(chǔ)器18。內(nèi)聯(lián)高速緩存存儲(chǔ)器18可由內(nèi)聯(lián)高速緩存硬件加速器16存取,并且可由其它組件(例如,處理器10)通過(guò)內(nèi)聯(lián)高速緩存硬件加速器16存取。
圖3示出了根據(jù)一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的協(xié)處理器和內(nèi)聯(lián)高速緩存存儲(chǔ)器。與圖1中所示出的計(jì)算設(shè)備類(lèi)似,該計(jì)算設(shè)備可以包括處理器10,寄存器或存儲(chǔ)器12,數(shù)據(jù)高速緩存14,內(nèi)聯(lián)高速緩存存儲(chǔ)器18,處理器管線(xiàn)20a、20b、20c,以及內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b。在一個(gè)方面中,內(nèi)聯(lián)高速緩存硬件加速器可以是被配置為執(zhí)行動(dòng)態(tài)軟件操作的協(xié)處理器30。類(lèi)似于處理器10,協(xié)處理器30可以是如上面所描述的各種不同類(lèi)型的處理器中的一個(gè)或多個(gè)處理器。在一個(gè)方面中,協(xié)處理器30可以是被編程為執(zhí)行一個(gè)或多個(gè)動(dòng)態(tài)軟件操作的可編程邏輯器件。在一個(gè)方面中,可編程協(xié)處理器30可以被重新編程為執(zhí)行不同的動(dòng)態(tài)軟件操作。在另一個(gè)方面中,計(jì)算設(shè)備可以包括多個(gè)協(xié)處理器30,其中每個(gè)協(xié)處理器被配置為執(zhí)行特定的動(dòng)態(tài)軟件操作。動(dòng)態(tài)軟件操作可以是常規(guī)的可執(zhí)行操作,并且基于計(jì)算設(shè)備的常規(guī)動(dòng)態(tài)軟件操作,可以提供一個(gè)或多個(gè)協(xié)處理器30以包括在計(jì)算設(shè)備中。在一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以被包括為協(xié)處理器30的一部分和/或?qū)S糜趨f(xié)處理器30。在另一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以是跨越多個(gè)協(xié)處理器30共享的一個(gè)或多個(gè)內(nèi)聯(lián)高速緩存存儲(chǔ)器18。在一個(gè)方面中,協(xié)處理器30可以實(shí)現(xiàn)為處理器管線(xiàn)20a、20b、20c的功能擴(kuò)展,并且被配置有指令以對(duì)內(nèi)聯(lián)高速緩存存儲(chǔ)器18進(jìn)行初始化、執(zhí)行存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器18中的代碼、以及針對(duì)存在用于動(dòng)態(tài)軟件操作的第一實(shí)例的代碼來(lái)查詢(xún)內(nèi)聯(lián)高速緩存存儲(chǔ)器18。在一個(gè)方面中,協(xié)處理器30可以實(shí)現(xiàn)為使用標(biāo)準(zhǔn)協(xié)處理器接口與處理器10進(jìn)行通信的獨(dú)立單元。這種通信可以包括:傳輸初始值,發(fā)起計(jì)算,以及傳輸輸出值。在另一個(gè)方面中,協(xié)處理器30可以實(shí)現(xiàn)為使用增強(qiáng)的接口與處理器10進(jìn)行通信的獨(dú)立單元,從而允許處理器10向協(xié)處理器30提供更多的信息(例如,對(duì)象映射)。
如下面進(jìn)一步詳細(xì)描述的,處理器10可以將與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)的數(shù)據(jù)傳遞給協(xié)處理器30。協(xié)處理器30可以確定是否存在與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)的任何內(nèi)聯(lián)高速緩存數(shù)據(jù)。當(dāng)協(xié)處理器30確定動(dòng)態(tài)軟件操作的實(shí)例還未初始化(即,動(dòng)態(tài)軟件操作是“未初始化的”)或者該實(shí)例是動(dòng)態(tài)軟件操作的第一實(shí)例時(shí),協(xié)處理器30可以向處理器10發(fā)送信號(hào),指示 協(xié)處理器30不能夠?qū)?dòng)態(tài)軟件操作的實(shí)例進(jìn)行處理。協(xié)處理器30可以通過(guò)將存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器18中的數(shù)據(jù)與從處理器10接收到的數(shù)據(jù)進(jìn)行比較,來(lái)確定動(dòng)態(tài)軟件操作的實(shí)例是未初始化的。當(dāng)內(nèi)聯(lián)高速緩存存儲(chǔ)器18中不存在針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的數(shù)據(jù)時(shí),協(xié)處理器30可以確定該實(shí)例是未初始化的。處理器10可以對(duì)動(dòng)態(tài)軟件操作的實(shí)例進(jìn)行初始化,并將實(shí)例的結(jié)果作為常數(shù)值存儲(chǔ)到內(nèi)聯(lián)高速緩存存儲(chǔ)器18。
當(dāng)內(nèi)聯(lián)高速緩存存儲(chǔ)器18中存在針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的數(shù)據(jù)時(shí),協(xié)處理器30可以確定實(shí)例是初始化的。協(xié)處理器30然后可以確定存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器18中的針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的數(shù)據(jù)是否是針對(duì)該實(shí)例的正確數(shù)據(jù)。協(xié)處理器30可以通過(guò)將存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器18中的數(shù)據(jù)與從處理器10接收到的數(shù)據(jù)進(jìn)行比較,來(lái)確定所存儲(chǔ)的數(shù)據(jù)不是針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的正確數(shù)據(jù)。當(dāng)所存儲(chǔ)的針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的數(shù)據(jù)與處理器10所提供的數(shù)據(jù)不匹配時(shí),協(xié)處理器30可以確定所存儲(chǔ)的針對(duì)動(dòng)態(tài)軟件操作的數(shù)據(jù)不是正確的數(shù)據(jù),并且因此可以向處理器10發(fā)送信號(hào),指示協(xié)處理器30不能夠?qū)?dòng)態(tài)軟件操作的實(shí)例進(jìn)行處理。處理器10然后可以對(duì)動(dòng)態(tài)軟件操作的該實(shí)例進(jìn)行初始化,并將該實(shí)例的結(jié)果作為另一個(gè)常數(shù)值存儲(chǔ)到內(nèi)聯(lián)高速緩存存儲(chǔ)器18。
由于針對(duì)動(dòng)態(tài)軟件操作的對(duì)象實(shí)現(xiàn)(例如,對(duì)象映射)的變化,所存儲(chǔ)的針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的數(shù)據(jù)可能與從處理器10接收到的數(shù)據(jù)不匹配。這種變化可以將對(duì)象的實(shí)例與不同的值相關(guān)聯(lián),從而引起針對(duì)對(duì)象的實(shí)例或動(dòng)態(tài)軟件操作的實(shí)例的函數(shù)的不同結(jié)果。類(lèi)似于上面的未初始化的實(shí)例,動(dòng)態(tài)軟件操作的實(shí)例可能由于這種變化而未初始化。
當(dāng)內(nèi)聯(lián)高速緩存存儲(chǔ)器18中存在針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的數(shù)據(jù)并且該數(shù)據(jù)是正確的數(shù)據(jù)時(shí),協(xié)處理器30可以將針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的常數(shù)值返回給處理器10。在一個(gè)方面中,上面對(duì)動(dòng)態(tài)軟件操作的實(shí)例的初始化可以包括:處理器10照常運(yùn)行動(dòng)態(tài)軟件操作的實(shí)例以實(shí)現(xiàn)其結(jié)果。一些動(dòng)態(tài)軟件操作是共同的,并且動(dòng)態(tài)軟件操作的不同實(shí)例被重復(fù)地調(diào)用。在許多情況下,動(dòng)態(tài)軟件操作的相同實(shí)例被重復(fù)地調(diào)用。協(xié)處理器30可以被配置為:通過(guò)向動(dòng)態(tài)軟件操作的初始化的實(shí)例提供預(yù)定的或預(yù)先計(jì)算的結(jié)果(其存儲(chǔ)在專(zhuān)用于存儲(chǔ)結(jié)果的存儲(chǔ)器(即,內(nèi)聯(lián)高速緩存存儲(chǔ)器18)中), 來(lái)增加動(dòng)態(tài)軟件操作的速度。
圖4示出了根據(jù)一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的協(xié)處理器和內(nèi)聯(lián)高速緩存存儲(chǔ)器。與圖3中所示出的計(jì)算設(shè)備類(lèi)似,該計(jì)算設(shè)備可以包括處理器10,寄存器或存儲(chǔ)器12,數(shù)據(jù)高速緩存14,內(nèi)聯(lián)高速緩存存儲(chǔ)器18,處理器管線(xiàn)20a、20b、20c,內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b,以及協(xié)處理器30。在一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以與協(xié)處理器30分離。計(jì)算設(shè)備還可以包括內(nèi)聯(lián)高速緩存管線(xiàn)22c,其被進(jìn)一步配置為連接協(xié)處理器30和內(nèi)聯(lián)高速緩存存儲(chǔ)器18,類(lèi)似于圖2中。內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以由協(xié)處理器30存取,并且可由其它組件(例如,處理器10)通過(guò)協(xié)處理器30存取。在一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以專(zhuān)用于協(xié)處理器30。在另一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以是跨越多個(gè)協(xié)處理器30共享的一個(gè)或多個(gè)內(nèi)聯(lián)高速緩存存儲(chǔ)器18。不管圖4中所示出的計(jì)算設(shè)備與圖3中所示出的計(jì)算設(shè)備的結(jié)構(gòu)上的不同,這些計(jì)算設(shè)備的操作和它們的組件基本上類(lèi)似。
在包括協(xié)處理器30的方面中,處理器10可以被配置為與協(xié)處理器30進(jìn)行通信,并且可能不需要對(duì)處理器的指令集架構(gòu)的更改。在一個(gè)方面中,與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)聯(lián)的數(shù)據(jù)可以從處理器10明確地傳遞給協(xié)處理器30。在另一個(gè)方面中,協(xié)處理器30可以能夠與存儲(chǔ)器12和數(shù)據(jù)高速緩存14進(jìn)行直接通信。這種直接通信可以允許協(xié)處理器30通過(guò)存儲(chǔ)器12和數(shù)據(jù)高速緩存14的方式從處理器10隱含地接收與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)聯(lián)的該數(shù)據(jù)。處理器10對(duì)協(xié)處理器30的函數(shù)調(diào)用可以包括阻塞(blocking)類(lèi)型的調(diào)用,其中一次僅可以處理一個(gè)調(diào)用。處理器10對(duì)協(xié)處理器30的函數(shù)調(diào)用可以包括非阻塞(non-blocking)或異步類(lèi)型的調(diào)用,這可以允許內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b、22c中并發(fā)進(jìn)行多個(gè)調(diào)用。類(lèi)似地,處理器10對(duì)協(xié)處理器30的函數(shù)調(diào)用可以是并行類(lèi)型的調(diào)用,這可以允許內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b、22c中同時(shí)進(jìn)行多個(gè)調(diào)用。
圖5示出了根據(jù)一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的功能單元和內(nèi)聯(lián)高速緩存存儲(chǔ)器。與圖2類(lèi)似,該計(jì)算設(shè)備可以包括處理器10,寄存器或 存儲(chǔ)器12,數(shù)據(jù)高速緩存14,內(nèi)聯(lián)高速緩存存儲(chǔ)器18,處理器管線(xiàn)20a、20b、20c,以及內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b。在一個(gè)方面中,內(nèi)聯(lián)高速緩存硬件加速器可以是被配置為執(zhí)行動(dòng)態(tài)軟件操作的功能單元50。功能單元50可以是被配置為執(zhí)行特定功能或計(jì)算的電路。例如,功能單元50可以是加法器或乘法器??梢越M合一個(gè)或多個(gè)功能單元50,以實(shí)現(xiàn)特定的功能或計(jì)算。多個(gè)功能單元50或功能單元50的群組可以被配置為實(shí)現(xiàn)各種不同的動(dòng)態(tài)軟件操作。功能單元50可以是處理器10的集成組件。在一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以與功能單元50分離。計(jì)算設(shè)備還可以包括內(nèi)聯(lián)高速緩存管線(xiàn),其被進(jìn)一步配置為連接功能單元50和內(nèi)聯(lián)高速緩存存儲(chǔ)器18。內(nèi)聯(lián)高速緩存存儲(chǔ)器18可由功能單元50存取,并且可由其它組件(例如,處理器10)通過(guò)功能單元50存取。在一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以專(zhuān)用于功能單元50。在另一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以是跨越多個(gè)功能單元50共享的一個(gè)或多個(gè)內(nèi)聯(lián)高速緩存存儲(chǔ)器18。
如下面進(jìn)一步詳細(xì)描述的,處理器10可以確定動(dòng)態(tài)軟件操作的實(shí)例是初始化的還是未初始化的,與上面描述中的協(xié)處理器如何做出該確定類(lèi)似。當(dāng)動(dòng)態(tài)軟件操作的實(shí)例是未初始化的時(shí),處理器10可以執(zhí)行動(dòng)態(tài)軟件操作的實(shí)例來(lái)確定結(jié)果。處理器10可以將所執(zhí)行的動(dòng)態(tài)軟件操作的實(shí)例的結(jié)果存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器18上,使得動(dòng)態(tài)軟件操作的實(shí)例可以被初始化。當(dāng)處理器10確定動(dòng)態(tài)軟件操作的實(shí)例是初始化的時(shí),處理器10可以將與動(dòng)態(tài)軟件操作的初始化的實(shí)例相關(guān)的數(shù)據(jù)傳遞給一個(gè)或多個(gè)所選擇的功能單元50。處理器10所選擇的功能單元50可以被專(zhuān)門(mén)配置為執(zhí)行由處理器10接收的動(dòng)態(tài)軟件操作。處理器10可以將動(dòng)態(tài)軟件操作與適當(dāng)?shù)墓δ軉卧?0相匹配,并將適當(dāng)?shù)臄?shù)據(jù)傳遞給所選擇的功能單元50。功能單元50可以使用來(lái)自處理器10的數(shù)據(jù)來(lái)操作,以確定與存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器18上的動(dòng)態(tài)軟件操作的實(shí)例相關(guān)的內(nèi)聯(lián)高速緩存數(shù)據(jù)。功能單元50可以使用來(lái)自處理器10的數(shù)據(jù)并執(zhí)行動(dòng)態(tài)軟件操作(其中功能單元被配置為實(shí)現(xiàn)該動(dòng)態(tài)軟件操作)。動(dòng)態(tài)軟件操作的初始化的實(shí)例的結(jié)果可以是存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器18上的常數(shù)值,并且可以傳遞給處理器10以完成執(zhí)行動(dòng)態(tài)軟件操作的實(shí)例。
在包括功能單元50的方面中,處理器10可能會(huì)或者可能不會(huì)被配置為與功能單元50進(jìn)行通信,并且可能會(huì)或者可能不會(huì)需要對(duì)處理器的指令集架構(gòu)的更改。在一個(gè)方面中,與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)聯(lián)的數(shù)據(jù)可以從處理器10明確地傳遞給功能單元50。在另一個(gè)方面中,功能單元50可以能夠與存儲(chǔ)器12和數(shù)據(jù)高速緩存14進(jìn)行直接通信。這種直接通信可以允許功能單元50通過(guò)存儲(chǔ)器12和數(shù)據(jù)高速緩存14的方式從處理器10隱含地接收與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)聯(lián)的數(shù)據(jù)。處理器10對(duì)功能單元50的函數(shù)調(diào)用可以包括阻塞類(lèi)型的調(diào)用,其中一次僅可以處理一個(gè)調(diào)用。處理器10對(duì)功能單元50的功能調(diào)用可以包括非阻塞或異步類(lèi)型的調(diào)用,這可以允許內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b中并發(fā)進(jìn)行多個(gè)調(diào)用。類(lèi)似地,處理器10對(duì)功能單元50的函數(shù)調(diào)用可以是并行類(lèi)型的調(diào)用,這可以允許內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b中同時(shí)進(jìn)行多個(gè)調(diào)用。
圖6示出了根據(jù)一個(gè)方面的用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速的計(jì)算設(shè)備,其中該計(jì)算設(shè)備具有附接到處理器管線(xiàn)的內(nèi)聯(lián)高速緩存存儲(chǔ)器。與圖1中所示出的計(jì)算設(shè)備類(lèi)似,該計(jì)算設(shè)備可以包括處理器10,寄存器或存儲(chǔ)器12,數(shù)據(jù)高速緩存14,內(nèi)聯(lián)高速緩存存儲(chǔ)器18,處理器管線(xiàn)20a、20b、20c,以及內(nèi)聯(lián)高速緩存管線(xiàn)22a。在一個(gè)方面中,內(nèi)聯(lián)高速緩存硬件加速器可以是被配置為存儲(chǔ)動(dòng)態(tài)軟件操作的實(shí)例的結(jié)果的內(nèi)聯(lián)高速緩存存儲(chǔ)器18。在一個(gè)方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器18可以是動(dòng)態(tài)軟件操作的多個(gè)實(shí)例所共享的一個(gè)或多個(gè)內(nèi)聯(lián)高速緩存存儲(chǔ)器18、均專(zhuān)用于存儲(chǔ)相同的動(dòng)態(tài)軟件操作的多個(gè)實(shí)例的一個(gè)或多個(gè)內(nèi)聯(lián)高速緩存存儲(chǔ)器18、或者專(zhuān)用于存儲(chǔ)所有動(dòng)態(tài)軟件操作的所有實(shí)例的一個(gè)內(nèi)聯(lián)高速緩存存儲(chǔ)器18。
如下面進(jìn)一步詳細(xì)描述的,處理器10可以確定動(dòng)態(tài)軟件操作的實(shí)例是初始化的還是未初始化的,與上面所描述的協(xié)處理器如何做出該確定類(lèi)似。當(dāng)動(dòng)態(tài)軟件操作的實(shí)例是未初始化的時(shí),處理器10可以執(zhí)行動(dòng)態(tài)軟件操作的實(shí)例來(lái)確定結(jié)果。處理器10可以將所執(zhí)行的動(dòng)態(tài)軟件操作的實(shí)例的結(jié)果存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器18上,使得動(dòng)態(tài)軟件操作的實(shí)例可以被初始化。當(dāng)處理器10確定動(dòng)態(tài)軟件操作的實(shí)例是初始化的時(shí),處理器10可以取回存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器18上的針對(duì)動(dòng)態(tài)軟件操作的初始化的實(shí)例的數(shù) 據(jù),而不必完全執(zhí)行操作(如果操作未初始化,則需要完全執(zhí)行操作)。
在前述的方面計(jì)算設(shè)備中的每個(gè)計(jì)算設(shè)備中,可以以各種組合來(lái)配置組件(包括處理器10,寄存器或存儲(chǔ)器12,數(shù)據(jù)高速緩存14,內(nèi)聯(lián)高速緩存硬件加速器16,內(nèi)聯(lián)高速緩存存儲(chǔ)器18,處理器管線(xiàn)20a、20b、20c,內(nèi)聯(lián)高速緩存管線(xiàn)22a、22b、22c,以及協(xié)處理器30和功能單元50)。組件中的一些或所有組件可以包括單獨(dú)的或組合的組件。類(lèi)似地,組件中的一些或所有組件可以被包括為SoC或一個(gè)或多個(gè)集成電路的一部分。
圖7示出了使用用于動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的硬件加速來(lái)進(jìn)行內(nèi)聯(lián)高速緩存代碼和常數(shù)初始化的方面方法700。計(jì)算設(shè)備及其組件(包括處理器、寄存器或用于寄存器堆的存儲(chǔ)器、數(shù)據(jù)高速緩存、內(nèi)聯(lián)高速緩存硬件加速器、內(nèi)聯(lián)高速緩存存儲(chǔ)器、處理器管線(xiàn)、內(nèi)聯(lián)高速緩存管線(xiàn)、協(xié)處理器以及功能單元)可以執(zhí)行方法700。在框702中,計(jì)算設(shè)備可以運(yùn)行動(dòng)態(tài)語(yǔ)言可執(zhí)行程序。在一個(gè)方面中,動(dòng)態(tài)語(yǔ)言可執(zhí)行程序可以在web瀏覽器、web應(yīng)用或獨(dú)立應(yīng)用中運(yùn)行。在框704中,計(jì)算設(shè)備可以實(shí)現(xiàn)對(duì)象的函數(shù)或動(dòng)態(tài)軟件操作的實(shí)例。共同的動(dòng)態(tài)軟件操作(例如,加載數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、調(diào)用某些函數(shù)、以及對(duì)數(shù)據(jù)執(zhí)行二進(jìn)制操作)可以是被包括用于硬件加速的動(dòng)態(tài)軟件操作類(lèi)型。在框706中,編譯器(例如,靜態(tài)編譯器、運(yùn)行時(shí)編譯器或動(dòng)態(tài)編譯器)可以生成可執(zhí)行指令以供處理器指示處理器或協(xié)處理器與其進(jìn)行交互,并運(yùn)行用于動(dòng)態(tài)軟件操作的實(shí)例的內(nèi)聯(lián)高速緩存硬件加速器。這些指令可以使得處理器或協(xié)處理器直接或通過(guò)內(nèi)聯(lián)高速緩存硬件加速器來(lái)從內(nèi)聯(lián)高速緩存存儲(chǔ)器讀取或向內(nèi)聯(lián)高速緩存存儲(chǔ)器寫(xiě)入,并使得內(nèi)聯(lián)高速緩存硬件加速器如下面所描述的運(yùn)行。
在確定框708中,計(jì)算設(shè)備可以確定計(jì)算設(shè)備是否先前運(yùn)行了對(duì)象的函數(shù)或動(dòng)態(tài)軟件操作的實(shí)例。在一個(gè)方面中,計(jì)算設(shè)備可以通過(guò)針對(duì)所存儲(chǔ)的與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)的數(shù)據(jù)來(lái)檢查內(nèi)聯(lián)高速緩存存儲(chǔ)器,來(lái)完成該確定。內(nèi)聯(lián)高速緩存存儲(chǔ)器上經(jīng)確定的存在與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)的數(shù)據(jù)可以向計(jì)算設(shè)備表明動(dòng)態(tài)軟件操作的實(shí)例可能是初始化的。然而,在沒(méi)有下面所討論的進(jìn)一步確定的情況下,關(guān)于動(dòng)態(tài)軟件操作是初始化的確定可能不是確定的。例如,與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)的數(shù)據(jù)可以被存儲(chǔ)并且因此可以表明動(dòng)態(tài)軟件操作的先前實(shí)例是初始化的但是數(shù)據(jù)可能不 是當(dāng)前的。
當(dāng)計(jì)算設(shè)備確定動(dòng)態(tài)軟件操作的實(shí)例先前被運(yùn)行(即,確定框708=“是”)時(shí),在確定框710中,計(jì)算設(shè)備可以確定動(dòng)態(tài)軟件操作的實(shí)例的對(duì)象實(shí)現(xiàn)是否已改變。確定動(dòng)態(tài)軟件操作的實(shí)例的對(duì)象實(shí)現(xiàn)是否已改變可以向計(jì)算設(shè)備指示存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器中的針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的數(shù)據(jù)是否是當(dāng)前數(shù)據(jù)。當(dāng)計(jì)算設(shè)備確定動(dòng)態(tài)軟件操作的實(shí)例的對(duì)象實(shí)現(xiàn)未改變(即,確定框710=“否”)時(shí),在框712中,計(jì)算設(shè)備可以查找存儲(chǔ)在內(nèi)聯(lián)高速緩存存儲(chǔ)器上的動(dòng)態(tài)軟件操作的實(shí)例的值。確定在內(nèi)聯(lián)高速緩存存儲(chǔ)器中存在針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的數(shù)據(jù)并且該數(shù)據(jù)是當(dāng)前的可以一起向計(jì)算設(shè)備表明動(dòng)態(tài)軟件操作的實(shí)例是初始化的。在框722中,計(jì)算設(shè)備可以對(duì)來(lái)自?xún)?nèi)聯(lián)高速緩存存儲(chǔ)器的、由處理器作為動(dòng)態(tài)軟件操作的一部分而請(qǐng)求的數(shù)據(jù)執(zhí)行任何操作。在框724中,計(jì)算設(shè)備可以將與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)的數(shù)據(jù)返回給處理器。數(shù)據(jù)可以直接返回給處理器或通過(guò)用于寄存器堆的存儲(chǔ)器和/或數(shù)據(jù)高速緩存間接返回給處理器。
當(dāng)計(jì)算設(shè)備確定動(dòng)態(tài)軟件操作的實(shí)例先前未運(yùn)行(即,確定框708=“否”)時(shí),或者當(dāng)計(jì)算設(shè)備確定動(dòng)態(tài)軟件操作的實(shí)例的對(duì)象實(shí)現(xiàn)已改變(即,確定框710=“是”)時(shí),在框714中,計(jì)算設(shè)備可以在操作的對(duì)象實(shí)現(xiàn)中查找操作的相關(guān)字段。對(duì)于處理器來(lái)說(shuō),逐項(xiàng)遍歷對(duì)象實(shí)現(xiàn)直到處理器找到與操作的對(duì)象值相關(guān)聯(lián)的適當(dāng)字段可能是常見(jiàn)的。該過(guò)程會(huì)是消耗時(shí)間和資源的,并且對(duì)適當(dāng)值的內(nèi)聯(lián)高速緩存有助于避免針對(duì)動(dòng)態(tài)軟件操作的將來(lái)實(shí)例重復(fù)該步驟。硬件加速通過(guò)從處理器取得硬件高速緩存中所涉及的處理中的一些處理并將其分配給內(nèi)聯(lián)硬件加速器,或者通過(guò)簡(jiǎn)化對(duì)內(nèi)聯(lián)高速緩存的數(shù)據(jù)的存儲(chǔ)和取回來(lái)促進(jìn)該努力。
在確定框716中,計(jì)算設(shè)備可以確定針對(duì)動(dòng)態(tài)軟件操作的實(shí)例是否存在內(nèi)聯(lián)高速緩存數(shù)據(jù)。這是有可能的,因?yàn)閯?dòng)態(tài)軟件操作的先前實(shí)例可能已初始化,但是動(dòng)態(tài)操作的實(shí)例的當(dāng)前數(shù)據(jù)可能與先前初始化的實(shí)例的數(shù)據(jù)不匹配。當(dāng)計(jì)算設(shè)備確定針對(duì)動(dòng)態(tài)軟件操作的實(shí)例不存在內(nèi)聯(lián)高速緩存數(shù)據(jù)(即,確定框716=“否”)時(shí),在框718中,計(jì)算設(shè)備可以創(chuàng)建或初始化針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的內(nèi)聯(lián)高速緩存數(shù)據(jù)。計(jì)算設(shè)備可以繼續(xù)到框722,以對(duì)由處理器作為動(dòng)態(tài)軟件操作的實(shí)例的一部分而請(qǐng)求的數(shù)據(jù)執(zhí)行任 何操作,并且可以執(zhí)行框724的操作以返回實(shí)例的結(jié)果。
當(dāng)計(jì)算設(shè)備確定針對(duì)動(dòng)態(tài)軟件操作的實(shí)例存在內(nèi)聯(lián)高速緩存數(shù)據(jù)(即,確定框716=“是”)時(shí),在框720中,計(jì)算設(shè)備可以創(chuàng)建或初始化針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的內(nèi)聯(lián)高速緩存數(shù)據(jù),包括針對(duì)先前實(shí)例的內(nèi)聯(lián)高速緩存數(shù)據(jù)。例如,當(dāng)動(dòng)態(tài)軟件操作的第一實(shí)例與動(dòng)態(tài)軟件操作的第二實(shí)例不同時(shí),計(jì)算設(shè)備可以初始化包括第一內(nèi)聯(lián)高速緩存的第二內(nèi)聯(lián)高速緩存,其被配置為替代經(jīng)初始化的第一內(nèi)聯(lián)高速緩存。計(jì)算設(shè)備可以繼續(xù)到框722,以對(duì)由處理器作為動(dòng)態(tài)軟件操作的實(shí)例的一部分而請(qǐng)求的數(shù)據(jù)執(zhí)行任何操作,并且可以執(zhí)行框724的操作以返回實(shí)例的結(jié)果。
在各個(gè)方面中,內(nèi)聯(lián)高速緩存可以具有多個(gè)分配和替換策略。例如,在框718和720中,計(jì)算設(shè)備可能不會(huì)針對(duì)動(dòng)態(tài)軟件操作的每個(gè)實(shí)例初始化內(nèi)聯(lián)高速緩存數(shù)據(jù)。例如,可以?xún)H在動(dòng)態(tài)軟件操作的第二次執(zhí)行之后初始化內(nèi)聯(lián)高速緩存數(shù)據(jù)。其它指定的標(biāo)準(zhǔn)可以確定針對(duì)動(dòng)態(tài)軟件操作何時(shí)可以初始化內(nèi)聯(lián)高速緩存數(shù)據(jù),例如根據(jù)各種度量的執(zhí)行頻率、圍繞時(shí)間和/或資源的執(zhí)行復(fù)雜度和/或成本、或者運(yùn)行的程序或應(yīng)用的操作。在一個(gè)方面中,出于各種原因,初始化的內(nèi)聯(lián)高速緩存數(shù)據(jù)可以被移除或撤銷(xiāo)初始化(uninitialized)。例如,通過(guò)常規(guī)策略(例如最近最少使用、最少頻繁使用、先進(jìn)先出、后進(jìn)先出、以及壽命),可以利用操作將內(nèi)聯(lián)高速緩存數(shù)據(jù)從內(nèi)聯(lián)高速緩存明確地驅(qū)逐。其它標(biāo)準(zhǔn)(例如,最不復(fù)雜和/或最不昂貴或者最多內(nèi)聯(lián)高速緩存使用)也可以是移除內(nèi)聯(lián)高速緩存數(shù)據(jù)的因素。在一些方面中,內(nèi)聯(lián)高速緩存存儲(chǔ)器的性能或空間可用性可以確定內(nèi)聯(lián)高速緩存數(shù)據(jù)何時(shí)可以被考慮移除。用于初始化或撤銷(xiāo)初始化的一些標(biāo)準(zhǔn)在確定是否要初始化或撤銷(xiāo)初始化動(dòng)態(tài)軟件操作的內(nèi)聯(lián)高速緩存數(shù)據(jù)時(shí)可以考慮當(dāng)前和/或歷史數(shù)據(jù)。被移除的內(nèi)聯(lián)高速緩存數(shù)據(jù)可以根據(jù)所描述的標(biāo)準(zhǔn)中的任何標(biāo)準(zhǔn)再次初始化,這可能需要滿(mǎn)足其它的、比要初始化的內(nèi)聯(lián)高速緩存數(shù)據(jù)潛在更嚴(yán)格的標(biāo)準(zhǔn),或者可以在至少某個(gè)時(shí)段內(nèi)或在某個(gè)事件發(fā)生之前防止初始化。例如,可以防止被移除的內(nèi)聯(lián)高速緩存數(shù)據(jù)再次初始化,直到程序的下一次運(yùn)行為止,或者直到重置內(nèi)聯(lián)高速緩存(如在重啟計(jì)算設(shè)備時(shí))為止。
圖8示出了用于由處理器使用針對(duì)動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的內(nèi)聯(lián) 高速緩存代碼和常數(shù)的方面方法800。計(jì)算設(shè)備及其組件(包括處理器、寄存器或用于寄存器堆的存儲(chǔ)器、數(shù)據(jù)高速緩存、內(nèi)聯(lián)高速緩存硬件加速器、內(nèi)聯(lián)高速緩存存儲(chǔ)器、處理器管線(xiàn)、內(nèi)聯(lián)高速緩存管線(xiàn)、協(xié)處理器以及功能單元)可以執(zhí)行方法800。在框802中,計(jì)算設(shè)備可以接收對(duì)對(duì)象的實(shí)例或者動(dòng)態(tài)軟件操作的實(shí)例的函數(shù)調(diào)用。在確定框804中,計(jì)算設(shè)備可以確定接收到的數(shù)據(jù)是否是對(duì)象而不是例如小的整數(shù)。當(dāng)計(jì)算設(shè)備確定接收到的數(shù)據(jù)不是對(duì)象(即,確定框804=“否”)時(shí),在框816中,計(jì)算設(shè)備可以將對(duì)函數(shù)調(diào)用的控制返回給處理器。
當(dāng)計(jì)算設(shè)備確定接收到的數(shù)據(jù)是對(duì)象(即,確定框804=“是”)時(shí),在框806中,計(jì)算設(shè)備可以加載動(dòng)態(tài)軟件操作的實(shí)例的當(dāng)前對(duì)象實(shí)現(xiàn)。在框808中,計(jì)算設(shè)備可以加載動(dòng)態(tài)軟件操作的實(shí)例的預(yù)期對(duì)象實(shí)現(xiàn)。預(yù)期對(duì)象實(shí)現(xiàn)可以是用于初始化動(dòng)態(tài)軟件操作的先前實(shí)例的對(duì)象實(shí)現(xiàn)。在確定框810中,計(jì)算設(shè)備可以確定當(dāng)前對(duì)象實(shí)現(xiàn)和預(yù)期對(duì)象實(shí)現(xiàn)是否是相同的對(duì)象實(shí)現(xiàn)??梢酝ㄟ^(guò)將當(dāng)前對(duì)象的編碼與在生成內(nèi)聯(lián)高速緩存中的代碼時(shí)與內(nèi)聯(lián)高速緩存一起存儲(chǔ)的對(duì)象的編碼進(jìn)行比較,來(lái)做出該確定。這種編碼可以是對(duì)象原型的地址,或者是對(duì)象字段的編碼,或者可以唯一地標(biāo)識(shí)對(duì)象的結(jié)構(gòu)的任何其它機(jī)制。在動(dòng)態(tài)軟件操作的實(shí)例的初始化之后對(duì)象實(shí)現(xiàn)有可能改變,并且結(jié)果可能是來(lái)自動(dòng)態(tài)軟件操作的當(dāng)前實(shí)例的對(duì)象實(shí)現(xiàn)的數(shù)據(jù)可能不再與來(lái)自先前實(shí)例的數(shù)據(jù)匹配。返回基于動(dòng)態(tài)軟件操作的先前實(shí)例的錯(cuò)誤數(shù)據(jù)會(huì)造成動(dòng)態(tài)軟件的執(zhí)行中的錯(cuò)誤。當(dāng)計(jì)算設(shè)備確定當(dāng)前對(duì)象實(shí)現(xiàn)和預(yù)期對(duì)象實(shí)現(xiàn)不同(即,確定框810=“否”)時(shí),在框816中,計(jì)算設(shè)備可以將函數(shù)調(diào)用的控制返回給處理器。
當(dāng)計(jì)算設(shè)備確定當(dāng)前對(duì)象實(shí)現(xiàn)和預(yù)期對(duì)象實(shí)現(xiàn)相同(即,確定框810=“是”)時(shí),在框812中,計(jì)算設(shè)備可以取回內(nèi)聯(lián)高速緩存數(shù)據(jù)。在框814中,計(jì)算設(shè)備可以將與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)的數(shù)據(jù)返回給處理器。數(shù)據(jù)可以直接返回給處理器或通過(guò)用于寄存器堆的存儲(chǔ)器和/或數(shù)據(jù)高速緩存間接返回給處理器。
圖9示出了用于由功能單元使用針對(duì)動(dòng)態(tài)語(yǔ)言中的內(nèi)聯(lián)高速緩存的內(nèi)聯(lián)高速緩存代碼和常數(shù)的方面方法900。計(jì)算設(shè)備及其組件(包括處理器、寄存器或用于寄存器堆的存儲(chǔ)器、數(shù)據(jù)高速緩存、內(nèi)聯(lián)高速緩存硬件加速 器、內(nèi)聯(lián)高速緩存存儲(chǔ)器、處理器管線(xiàn)、內(nèi)聯(lián)高速緩存管線(xiàn)、協(xié)處理器以及功能單元)可以執(zhí)行方法900。在框902中,計(jì)算設(shè)備可以加載對(duì)象類(lèi)型。對(duì)象類(lèi)型可以向計(jì)算設(shè)備指示正在運(yùn)行什么動(dòng)態(tài)軟件操作。在框904中,計(jì)算設(shè)備可以加載對(duì)象標(biāo)識(shí)符。對(duì)象標(biāo)識(shí)符可以向計(jì)算設(shè)備指示動(dòng)態(tài)軟件操作的特定實(shí)例正在運(yùn)行,包括例如輸入值。使用來(lái)自實(shí)例的信息,在框906中,計(jì)算設(shè)備可以加載針對(duì)動(dòng)態(tài)軟件操作的實(shí)例的內(nèi)聯(lián)高速緩存數(shù)據(jù)。在框908中,計(jì)算設(shè)備可以對(duì)實(shí)例的數(shù)據(jù)執(zhí)行動(dòng)態(tài)軟件操作。計(jì)算設(shè)備可以使用對(duì)象類(lèi)型、對(duì)象標(biāo)識(shí)符和內(nèi)聯(lián)高速緩存數(shù)據(jù)作為參數(shù),來(lái)執(zhí)行動(dòng)態(tài)軟件操作。在框910中,計(jì)算設(shè)備可以將與動(dòng)態(tài)軟件操作的實(shí)例相關(guān)的數(shù)據(jù)返回給處理器。數(shù)據(jù)可以直接返回給處理器或通過(guò)用于寄存器堆的存儲(chǔ)器和/或數(shù)據(jù)高速緩存間接返回給處理器。
圖10示出了適合于與各個(gè)方面一起使用的示例性移動(dòng)計(jì)算設(shè)備。移動(dòng)計(jì)算設(shè)備1000可以包括處理器1002,其耦合到觸摸屏控制器1004和內(nèi)部存儲(chǔ)器1006。處理器1002可以是被指定用于通用或特定處理任務(wù)的一個(gè)或多個(gè)多核集成電路。內(nèi)部存儲(chǔ)器1006可以是易失性或非易失性存儲(chǔ)器,并且還可以是安全的和/或加密的存儲(chǔ)器、或者不安全和/或未加密的存儲(chǔ)器、或者其任意組合。觸摸屏控制器1004和處理器1002還可以耦合到觸摸屏面板1012,例如電阻感測(cè)觸摸屏、電容感測(cè)觸摸屏、紅外線(xiàn)感測(cè)觸摸屏等等。另外,移動(dòng)計(jì)算設(shè)備1000的顯示器不必具有觸摸屏功能。
移動(dòng)計(jì)算設(shè)備1000可以具有用于發(fā)送和接收通信的一個(gè)或多個(gè)無(wú)線(xiàn)信號(hào)收發(fā)機(jī)1008(例如,Peanut、藍(lán)牙、Zigbee、Wi-Fi、RF無(wú)線(xiàn))和天線(xiàn)1010,無(wú)線(xiàn)信號(hào)收發(fā)機(jī)1008和天線(xiàn)1010彼此耦合和/或耦合到處理器1002。收發(fā)機(jī)1008和天線(xiàn)1010可以與上面提到的電路一起使用,以實(shí)現(xiàn)各種無(wú)線(xiàn)傳輸協(xié)議棧和接口。移動(dòng)計(jì)算設(shè)備1000可以包括蜂窩網(wǎng)絡(luò)無(wú)線(xiàn)調(diào)制解調(diào)器芯片1016,其實(shí)現(xiàn)經(jīng)由蜂窩網(wǎng)絡(luò)的通信并且耦合到處理器。
移動(dòng)計(jì)算設(shè)備1000可以包括耦合到處理器1002的外圍設(shè)備連接接口1018。外圍設(shè)備連接接口1018可以被單獨(dú)配置為接受一種類(lèi)型的連接,或者可以被配置為接受各種類(lèi)型的物理和通信連接、共同或?qū)S羞B接,例如USB、FireWire、Thunderbolt或PCIe。外圍設(shè)備連接接口1018還可以耦合到類(lèi)似配置的外圍設(shè)備連接端口(未示出)。
移動(dòng)計(jì)算設(shè)備1000還可以包括揚(yáng)聲器1014以用于提供音頻輸出。移動(dòng)計(jì)算設(shè)備1000還可以包括由塑料、金屬或者各材料的組合構(gòu)成的殼體1020,以用于包含本文所討論的組件中的所有或一些組件。移動(dòng)計(jì)算設(shè)備1000可以包括耦合到處理器1002的電源1022,例如一次性或可再充電電池??稍俪潆婋姵剡€可以耦合到外圍設(shè)備連接端口,以從移動(dòng)設(shè)備1000外部的源接收充電電流。移動(dòng)計(jì)算設(shè)備1000還可以包括物理按鈕1024,以用于接收用戶(hù)輸入。移動(dòng)計(jì)算設(shè)備1000還可以包括電源按鈕1026,以用于開(kāi)啟和關(guān)閉移動(dòng)設(shè)備1000。
上面描述的各個(gè)方面還可以在各種其它類(lèi)型的計(jì)算設(shè)備內(nèi)實(shí)現(xiàn),例如圖11中所示出的膝上型計(jì)算設(shè)備1100。許多膝上型計(jì)算機(jī)包括觸摸板觸摸表面1117,其充當(dāng)計(jì)算機(jī)的指向設(shè)備,并且因此可以接收拖動(dòng)、滾動(dòng)和輕拂(flick)手勢(shì),類(lèi)似于在裝備有觸摸屏顯示器以及上面所描述的計(jì)算設(shè)備上實(shí)現(xiàn)的那些手勢(shì)。膝上型計(jì)算設(shè)備1100通常會(huì)包括處理器1111,其耦合到易失性存儲(chǔ)器1112和大容量非易失性存儲(chǔ)器,例如閃存的硬盤(pán)驅(qū)動(dòng)器1113。另外,計(jì)算設(shè)備1100可以具有用于發(fā)送和接收電磁輻射的一個(gè)或多個(gè)天線(xiàn)1108,其中天線(xiàn)1108可以連接到與處理器1111耦合的無(wú)線(xiàn)數(shù)據(jù)鏈路和/或蜂窩電話(huà)收發(fā)機(jī)1116。計(jì)算設(shè)備1100還可以包括耦合到處理器1111的軟盤(pán)驅(qū)動(dòng)器1114和壓縮盤(pán)(CD)驅(qū)動(dòng)器1115。在筆記本配置中,計(jì)算設(shè)備殼體包括均耦合到處理器1111的觸摸板1117、鍵盤(pán)1118和顯示器1119。計(jì)算設(shè)備的其它配置可以包括如公知的耦合到處理器(例如,經(jīng)由USB輸入)的計(jì)算機(jī)鼠標(biāo)或軌跡球,這些還可以結(jié)合各個(gè)方面一起使用。臺(tái)式計(jì)算機(jī)在各種配置中可以類(lèi)似地包括這些計(jì)算設(shè)備組件,包括將組件分離或組合成一個(gè)或多個(gè)分離的但可連接的部件。
各個(gè)實(shí)施例還可以在各種商業(yè)可用的服務(wù)器設(shè)備中的任何服務(wù)器設(shè)備上實(shí)現(xiàn),例如圖12中所示出的服務(wù)器1200。這種服務(wù)器1200通常包括處理器1201,其耦合到易失性存儲(chǔ)器1202和大容量非易失性存儲(chǔ)器,例如硬盤(pán)驅(qū)動(dòng)器1204。服務(wù)器1200還可以包括耦合到處理器1201的軟盤(pán)驅(qū)動(dòng)器、壓縮盤(pán)(CD)或DVD盤(pán)驅(qū)動(dòng)器1206。服務(wù)器1200還可以包括耦合到處理器1201的網(wǎng)絡(luò)接入端口1203,以用于與網(wǎng)絡(luò)1205(例如耦合到其它廣播系統(tǒng)計(jì)算機(jī)和服務(wù)器的局域網(wǎng)、互聯(lián)網(wǎng)、公共交換電話(huà)網(wǎng)和/或蜂窩數(shù)據(jù)網(wǎng) 絡(luò)(例如,CDMA、TDMA、GSM、PCS、3G、4G、LTE或者任何其它類(lèi)型的蜂窩數(shù)據(jù)網(wǎng)絡(luò)))建立網(wǎng)絡(luò)接口連接。
提供前述的方法描述和過(guò)程流程圖僅作為說(shuō)明性的例子,并非旨在要求或暗示必須用所給出的次序來(lái)執(zhí)行各個(gè)方面的操作。如本領(lǐng)域技術(shù)人員將意識(shí)到的,可以用任何次序來(lái)執(zhí)行前述方面中的操作的次序。諸如“此后”、“然后”、“接下來(lái)”之類(lèi)的詞語(yǔ)并非旨在對(duì)操作的次序進(jìn)行限制;這些詞語(yǔ)僅用于引導(dǎo)讀者貫穿對(duì)方法的描述。此外,以單數(shù)形式對(duì)權(quán)利要求要素的任何引用,例如使用冠詞“一”、“一個(gè)”或“所述”不應(yīng)解釋為將要素限制為單數(shù)。
結(jié)合各個(gè)方面所描述的各種說(shuō)明性的邏輯框、模塊、電路和算法操作可以實(shí)現(xiàn)為電子硬件、計(jì)算機(jī)軟件或者二者的組合。為了清楚地示出硬件和軟件的這種可互換性,上面已經(jīng)對(duì)各種說(shuō)明性的組件、框、模塊、電路和操作圍繞其功能進(jìn)行了一般性描述。至于這種功能是實(shí)現(xiàn)為硬件還是軟件,這取決于特定的應(yīng)用和施加在整體系統(tǒng)上的設(shè)計(jì)約束。技術(shù)人員可以針對(duì)每個(gè)特定應(yīng)用以不同的方式來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)決策不應(yīng)當(dāng)解釋為致使偏離本發(fā)明的范圍。
利用被設(shè)計(jì)為執(zhí)行本文所描述的功能的通用處理器、數(shù)字信號(hào)處理器(DSP)、專(zhuān)用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)或者其它可編程邏輯器件、分立門(mén)或晶體管邏輯器件、分立硬件組件或者其任意組合,可以實(shí)現(xiàn)或執(zhí)行用于實(shí)現(xiàn)結(jié)合本文公開(kāi)的各方面所描述的各種說(shuō)明性的邏輯單元、邏輯框、模塊和電路的硬件。通用處理器可以是微處理器,但在替代方案中,該處理器也可以是任何常規(guī)的處理器、控制器、微控制器或狀態(tài)機(jī)。處理器還可以實(shí)現(xiàn)為計(jì)算設(shè)備的組合,例如,DSP和微處理器的組合、多個(gè)微處理器、一個(gè)或多個(gè)微處理器與DSP內(nèi)核的結(jié)合,或者任何其它此種配置。替代地,可以由特定于給定功能的電路來(lái)執(zhí)行一些步驟或方法。
在一個(gè)或多個(gè)方面中,所描述的功能可以在硬件、軟件、固件或其任意組合中實(shí)現(xiàn)。如果在軟件中實(shí)現(xiàn),則所述功能可以作為一條或多條指令、操作或代碼存儲(chǔ)在非暫時(shí)性計(jì)算機(jī)可讀介質(zhì)或者非暫時(shí)性處理器可讀介質(zhì)上。本文所公開(kāi)的方法或算法的操作可以體現(xiàn)在包括處理器可執(zhí)行指令或 操作的處理器可執(zhí)行軟件模塊中,該處理器可執(zhí)行軟件模塊可以駐留在非暫時(shí)性計(jì)算機(jī)可讀或處理器可讀存儲(chǔ)介質(zhì)上。非暫時(shí)性計(jì)算機(jī)可讀或處理器可讀存儲(chǔ)介質(zhì)可以是可由計(jì)算機(jī)或處理器存取的任何存儲(chǔ)介質(zhì)。通過(guò)舉例而非限制性的方式,這種非暫時(shí)性計(jì)算機(jī)可讀或處理器可讀介質(zhì)可以包括RAM、ROM、EEPROM、FLASH存儲(chǔ)器、CD-ROM或其它光盤(pán)存儲(chǔ)、磁盤(pán)存儲(chǔ)或其它磁存儲(chǔ)設(shè)備,或者可用于存儲(chǔ)具有指令、操作或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并且可由計(jì)算機(jī)存取的任何其它介質(zhì)。如本文所使用的,磁盤(pán)(disk)和光盤(pán)(disc)包括壓縮光盤(pán)(CD)、激光光盤(pán)、光盤(pán)、數(shù)字多功能光盤(pán)(DVD)、軟盤(pán)和藍(lán)光光盤(pán),其中磁盤(pán)通常磁性地復(fù)制數(shù)據(jù),而光盤(pán)利用激光來(lái)光學(xué)地復(fù)制數(shù)據(jù)。上面各項(xiàng)的組合也包括在非暫時(shí)性計(jì)算機(jī)可讀和處理器可讀介質(zhì)的范圍內(nèi)。此外,方法或算法的操作可以作為代碼、指令和/或操作的一個(gè)或任意組合或集合駐留在可以并入計(jì)算機(jī)程序產(chǎn)品中的非暫時(shí)性處理器可讀介質(zhì)和/或計(jì)算機(jī)可讀介質(zhì)上。
提供對(duì)所公開(kāi)的方面的以上描述是為了使得任何本領(lǐng)域技術(shù)人員能夠?qū)嵤┗蚴褂帽景l(fā)明。對(duì)這些方面的各種修改對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,并且在不偏離本發(fā)明的精神或范圍的情況下,本文所定義的總體原理可以應(yīng)用于其它方面。因此,本發(fā)明并非旨在受限于本文所示出的方面,而是旨在被給予與所附權(quán)利要求以及本文所公開(kāi)的原理和新穎性特征相一致的最廣的范圍。