TWI620125B - 用以控制部分二進制轉譯系統中之轉換的指令及邏輯 - Google Patents

用以控制部分二進制轉譯系統中之轉換的指令及邏輯 Download PDF

Info

Publication number
TWI620125B
TWI620125B TW101135614A TW101135614A TWI620125B TW I620125 B TWI620125 B TW I620125B TW 101135614 A TW101135614 A TW 101135614A TW 101135614 A TW101135614 A TW 101135614A TW I620125 B TWI620125 B TW I620125B
Authority
TW
Taiwan
Prior art keywords
page
instruction
code page
transcoded
original code
Prior art date
Application number
TW101135614A
Other languages
English (en)
Other versions
TW201322132A (zh
Inventor
保羅 卡波瑞歐里
馬汀 迪克森
布瑞特 托爾
毛亞 艾爾歐圖姆
歐瑪 夏伊克
Original Assignee
英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾股份有限公司 filed Critical 英特爾股份有限公司
Publication of TW201322132A publication Critical patent/TW201322132A/zh
Application granted granted Critical
Publication of TWI620125B publication Critical patent/TWI620125B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

用於熱門碼頁(例如,經常執行碼頁)的處理器特定動態二進制轉譯之碼的動態最佳化係可藉由一運行時間轉譯層來被提供。一方法可被提供以使用一iTLB來對映原始碼頁及經轉譯碼頁。該方法可包含自一原始碼頁提取一指令,決定該被提取指令是否為一新碼頁的一第一指令,以及該碼頁是否不宜用。若兩決定均回傳是,該方法可進一步包含自一經轉譯碼頁提取一下一指令。若任一決定回傳否,該方法可進一步包含解碼該指令且自該原始碼頁提取下一指令。

Description

用以控制部分二進制轉譯系統中之轉換的指令及邏輯 發明領域
本揭示內容係屬於處理邏輯、微處理器以及相關聯之指令集架構領域,該指令集架構當被處理器或其他處理邏輯所執行時,會執行邏輯性、數學性或其他功能性操作。
發明背景
電腦程式係一般地以針對一特定電腦處理器架構的一特有指令集而被編譯成可執行。此對電腦處理器販售商、獨立軟體販售商(ISVs)及電腦作業系統販售商(OSVs)來說造成了問題,因為每當處理器的新世代被引進,這些販售商必須花費許多工程資源以及金錢資源來幫助支援舊電腦程式在新電腦處理器上運行。
在現代電腦中,經編譯碼係典型地藉由位在處理器前端的解碼器而被解碼成微碼(microcode)。使舊軟體可在新處理器上運行的一現存方式為動態二進制轉譯,其係將二進制碼由針對一指令集的原始微碼轉譯成針對另一指令集的經轉譯微碼。因為原始微碼係典型地使用在處理器前端中的一轉譯後備緩衝器(TLB)而被儲存及被查找,現存之動態二進制轉譯技術係在原先TLB之外創造了一額外TLB,且係使用一被加至一原先指令指標的經轉譯指令指標(IP)以從原先微碼轉換至經轉譯微碼。然而,前端中之額 外查找表必須針對每一次提取被徹底地搜索,且其具有區域、電力及時間之疑慮。再者,額外查找表必須被正確地配置大小,且因此具有可擴充性問題,二進制轉譯的更多機會係被發現。其亦帶來關於項目的配置及取代、上下文交換上的特性等之架構複雜性。據此,技術領域中係具有控制由原始微碼至經轉譯微碼之轉換執行的需求。
依據本發明之一實施例,係特地提出一種方法,其包含:自一原始碼頁提取一指令;決定該被提取指令是否為一新碼頁的一第一指令,以及該原始碼頁是否不宜用;若該被提取指令係一新碼頁的一第一指令且該原始碼頁係不宜用,則自一經轉譯碼頁提取一下一指令;以及若該被提取指令不是一新碼頁的一第一指令或該原始碼頁並非不宜用,則解碼該指令並自該原始碼頁提取該下一指令。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧快取
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形/視訊卡
114‧‧‧加速圖形埠互連體
116‧‧‧記憶體控制器集線器
118‧‧‧高頻寬記憶體路徑
120‧‧‧記憶體
140‧‧‧資料處理系統
141‧‧‧匯流排
142‧‧‧執行單元
143‧‧‧緊縮指令集
144‧‧‧解碼器
145‧‧‧暫存器檔案
146‧‧‧SDRAM控制
147‧‧‧SRAM控制
148‧‧‧叢發快閃介面
149‧‧‧PCMCIA/CF卡控制
150‧‧‧LCD控制
151‧‧‧DMA控制
152‧‧‧替代匯流排主介面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接器
155‧‧‧UART
156‧‧‧USB
157‧‧‧藍芽UART
158‧‧‧I/O擴充介面
159‧‧‧處理核心
160‧‧‧資料處理系統
161‧‧‧SIMD協同處理器
162‧‧‧執行單元
163‧‧‧指令集
164‧‧‧暫存器檔案集合
165、165B‧‧‧解碼器
166‧‧‧主處理器
167‧‧‧快取
168‧‧‧I/O系統
169‧‧‧無線介面
200‧‧‧處理器
201‧‧‧前端
202‧‧‧快速排程器
203‧‧‧亂序引擎
204‧‧‧慢速/一般浮點排程器
206‧‧‧簡單浮點排程器
208‧‧‧整數暫存器檔案/旁路網路
210‧‧‧浮點暫存器檔案/旁路網路
211‧‧‧執行方塊
212、214‧‧‧位址產生單元
216、218‧‧‧快速ALU
220‧‧‧慢速ALU
222‧‧‧浮點ALU
224‧‧‧浮點移動單元
310‧‧‧緊縮位元組
320‧‧‧緊縮字
330‧‧‧緊縮雙字
341‧‧‧半緊縮
342‧‧‧單緊縮
343‧‧‧雙緊縮
344‧‧‧無符號緊縮位元組表示
345‧‧‧帶符號緊縮位元組表示
346‧‧‧無符號緊縮字表示
347‧‧‧帶符號緊縮字表示
348‧‧‧無符號緊縮雙字表示
349‧‧‧帶符號緊縮雙字表示
360‧‧‧操作編碼(操作碼)格式
361~363‧‧‧欄
364~366‧‧‧運算元識別符
370‧‧‧操作編碼(操作碼)格式
371~373、378‧‧‧欄
374~376‧‧‧運算元識別符
380‧‧‧操作編碼(操作碼)格式
381~384、387~389‧‧‧欄
385、386、390‧‧‧運算元識別符
470‧‧‧指令轉譯後備緩衝器(iTLB)
472‧‧‧第一行
474‧‧‧第二行
476‧‧‧第三行
478‧‧‧第四行
480、482、484、486、488‧‧‧列
400‧‧‧碼頁布置
402‧‧‧碼頁的第一部分
404‧‧‧碼頁的第二部分
406、408、410‧‧‧碼頁
412、414‧‧‧NOP
416‧‧‧經轉譯碼頁
418‧‧‧連續頁
420‧‧‧跳越指令
422、424、426‧‧‧提取
430‧‧‧狀態機
450‧‧‧微架構
452‧‧‧系統記憶體
454‧‧‧客軟體
456‧‧‧二進制轉譯軟體
458‧‧‧iTLB
460‧‧‧共同設計處理器
462‧‧‧熱點偵測器
464‧‧‧新特性
500‧‧‧流程圖
502、504、506‧‧‧方塊
600‧‧‧流程圖
602、604、606、608‧‧‧方塊
實施例係以範例方式予以例示,而並非係附隨圖式的圖中之限制。
圖1A係依據一實施例之一系統的一方塊圖;圖1B係依據一實施例之一系統的一方塊圖;圖1C係依據一實施例之一系統的一方塊圖;圖2係依據一實施例之一處理器的一方塊圖;圖3A係例示依據一實施例之緊縮(packed)資料型態;圖3B係例示依據一實施例之緊縮資料型態; 圖3C係例示依據一實施例之緊縮資料型態;圖3D係例示依據一實施例之指令編碼;圖3E係例示依據一實施例之指令編碼;圖3F係例示依據一實施例之指令編碼;圖4A係例示依據一實施例之針對一微架構之一部分二進制轉譯系統之一指令轉譯後備緩衝器;圖4B係例示依據一實施例之針對一微架構之一部分二進制轉譯系統之記憶體中的碼頁布置;圖4C係例示依據一實施例之狀態機;圖4D係例示依據一實施例之針對一微架構之一動態二進制轉譯系統的元件;圖5係例示依據一實施例之欲被執行之操作的一流程圖;圖6係例示依據一實施例之欲被執行之操作的另一流程圖。
以下敘述係描述用以控制在一處理器、電腦系統或其他處理裝置之內,或與該處理器、電腦系統或其他處理裝置相關聯之一部分二進制轉譯系統中之轉換的一指令及處理邏輯。在以下的敘述中,許多特定細節,諸如處理邏輯、處理器類型,微架構狀況、事件、賦能機制及諸多同類細節係為了提供本發明實施例之更詳盡的理解而被陳述。然而技術領域中具有通常知識者將能夠領會,本發明係可在如是特定細節之外被實施。此外,一些習知結構、 電路及類似敘述並未被詳細呈現於此,以避免不必要地混淆遮掩本發明之實施例。
雖然以下實施例係參照一處理器而敘述,其他實施例亦可應用至其他類型的積體電路及邏輯裝置。類似技術及本發明實施例的教示係可被應用至可由更高的管線通量及經改善效能獲益之其他類型的電路或半導體元件。本發明實施例的教示係可被應用至執行資料調處的任何處理器或機器。然而,本發明並不被限於執行512位元、256位元、128位元、64位元、32位元或16位元資料調處之處理器或機器,而係可被應用至其中執行資料之調處或管理的任何處理器或機器。此外,以下敘述係提供範例,且附隨圖式係為了例示之目的而顯示不同範例。然而,此等範例不應被解釋成限制意義,因其等僅係欲用以提供本發明實施例之範例,而非提供本發明實施例之所有可能實施的詳盡清單。
雖然以下範例係描述執行單元及邏輯電路的上下文中的指令處理及分配,本發明的其他實施例係可藉由儲存於一機器可讀且有形之媒體上的資料或指令之方式而完成,該等資料或指令當被一機器執行時會致使該機器執行與本發明之至少一實施例相符的功能。在一實施例中,與本發明實施例相關聯之功能係以機器可執行指令而被體現。該等指令可被用以致使一以該等指令被程控之一般目的或特殊目的之處理器去執行本發明之步驟。本發明實施例可被提供為電腦程式產品或軟體,該等電腦程式產品或 軟體可包含一具有指令儲存於其上的機器或電腦可讀媒體,該等指令可被用以程控一電腦(或其他電子裝置)以執行依據本發明實施例之一或多個操作。替代地,本發明實施例之步驟係可藉由包含用以執行該等步驟的固定功能邏輯的特定硬體構件來執行,或是藉由經程控電腦構件及固定功能硬體構件的任意組合來執行。
用以程控邏輯以執行本發明實施例的指令可被儲存於系統中的記憶體內,諸如DRAM、快取、快閃記憶體或其他儲存器。再者,該等指令可經由網路或其他電腦可讀媒介的方式而被分配。因此一機器可讀媒體可包含以可由機器(例如,一電腦)所讀取的形式儲存或傳輸資訊之任何機構,但不限於軟式磁片、光學碟片、光碟、唯讀光碟記憶體(CD-ROMs)及磁光碟片、唯讀記憶體(ROMs)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電子可抹除可程式化唯讀記憶體(EEPROM)、磁卡或光學卡、快閃記憶體或經由電氣、光學、聲學或其他形式的傳播信號(例如載波、紅外線信號、數位信號或其他)而透過網路傳輸資訊中所使用的一有形機器可讀儲存器。據此,電腦可讀媒體包含適於以可由機器(例如,一電腦)所讀取的形式儲存或傳輸電子指令或資訊之任何類型的有形機器可讀媒體。
設計可貫穿不同階段,從創作到模擬到製造。表示一設計的資料係可以一數量的複數方式來表示該設計。首先,如同在模擬中較有用的,硬體係可使用一硬體描述 語言或其他功能描述語言而被表示。此外,一具有邏輯及/或電晶體閘極的電路層級模型係可在設計過程的某些階段被生產。再者,大多數的設計在某階段係達到硬體模型中資料表示不同裝置實體置換之一層級。在傳統半導體製造技術被使用的情形中,表示硬體模型的資料可為指明不同遮罩層上不同特徵的存在或缺乏之資料,該等遮罩層係用作用以生產積體電路的遮罩。在設計的任何表示中,資料係可被儲存於任何形式的一機器可讀媒體中。一記憶體或一磁性或光學儲存器,諸如一碟片,係可為用以儲存被傳輸資訊的機器儲存媒體,該資訊係經由被調變或被產生以傳輸該資訊之光波或電波而被傳輸。當一指示或載有程式碼或設計的電載波被傳輸時,到電氣信號的複製、緩衝或再傳輸被執行的範圍,係有一個新的複製動作。因此,一通訊提供者或一網路提供者可至少暫時地儲存一項目於一有形機器可讀媒體上,諸如被編碼在一載波內的資訊,而體現本發明實施例的技術。
在現代處理器中,一數量的不同執行單元係被用以處理及執行不同的程式碼及指令。並非所有指令均係均等地被創造,有些係較快完成,其他的則可能要一數量的時鐘週期來完成。指令產出通量越快,處理器的整體效能就越好。因此,使越多指令執行得盡可能地快將會是有利的。然而,係有些指令具有較高複雜性,且在執行時間及處理器資源方面需要更多。例如,有浮點指令、讀取/儲存操作、資料移動及其他等。
由於越來越多電腦系統被使用於網路、文字及多媒體應用中,額外處理器支援已隨著時間而被引進。於一實施例中,一指令集可與一或多個電腦架構相關聯,包含資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處置,及外部輸入及輸出(I/O)。
於一實施例中,指令集架構(ISA)可藉由一或多個微架構來實施,其包含用以實施一或多個指令集的處理器邏輯及電路。據此,具有不同微架構的多個處理器可分享至少一共通指令集的一部份。例如,英特爾® Pentium 4處理器、英特爾® CoreTM處理器,以及來自加州森尼韋爾的超微半導體公司(AMD)的處理器實施x86指令集的幾近相同版本(具有某些增加了新版本的延伸),但具有不同的內部設計。類似地,由其他處理器研發公司,諸如安謀國際科技股份有限公司(ARM)、MIPS或其等之被授權人或採用者,所設計的處理器係可分享至少一共通指令集的一部份,但可包含不同的處理器設計。例如,相同之ISA的暫存器架構可以不同方式以不同微架構使用新的或習知的技術而被實施,包含專用實體暫存器、使用一暫存器重新命名機制的一或多個動態配置實體暫存器(例如,暫存器別名表(RAT)、重新排序緩衝器(ROB)的使用)以及一引退暫存器檔案。於一實施例中,暫存器可包含可或不可由一軟體程式器定址的一或多個暫存器、暫存器架構、暫存器檔案或其他暫存器集合。
於一實施例中,一指令可包含一或多種指令格 式。於一實施例中,一指令格式可指示不同的欄(位元數、位元位置及其他等)以在其他事情之外指明欲被執行的操作以及其上欲執行操作的運算元。有些指令格式可被進一步藉由指令樣板(或子格式)而被打破定義。例如,一給定指令格式之指令樣板可被定義以具有指令格式欄的不同子集,及/或被定義以具有一被不同地解釋的給定欄。於一實施例中,一指令係使用一指令格式被表達(且若被定義,則係以該指令格式的指令樣板中之一給定者),且指明或指示操作以及於其上將操作該操作的運算元。
科學性、財務性、自動向量化通用、RMS(辨識(recognition)、探勘(mining)及合成(synthesis))以及視覺及多媒體應用(例如,2D/3D圖像、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊處理)可能需要使相同操作被執行於大量的資料項目上。於一實施例中,單一指令多重資料(SIMD)係意指致使一處理器在多個資料元件上執行一操作的一種指令。SIMD技術可被使用於可邏輯性地切割一暫存器中的位元為一數量之固定大小或可變大小之資料元件的處理器中,該等資料元件各表示一分離的值。例如,於一實施例中,一個64位元的暫存器中的位元可被組織為一包含4個分離之16位元資料元件的來源運算元,其等各表示一分離的16位元值。此類型的資料可被稱為「緊縮」資料類型或「向量」資料類型,此資料類型的運算元則稱作緊縮資料運算元或向量運算元。於一實施例中,一緊縮資料項目或向量可為儲存在一單一暫存器內之多個緊縮資料元件 的一序列,一緊縮資料運算元或一向量運算元則可為一SIMD指令(或「緊縮資料指令」或一「向量指令」)的一來源或目的地運算元。於一實施例中,一SIMD指令指明欲被執行於兩來源向量運算元上以產生一目的地向量運算元(亦稱作一結果向量運算元)的一單一向量運算,該目的地向量運算元為相同或不同大小,具有相同或不同數量的資料元件,以及係為相同或不同資料元件順序。
SIMD技術,諸如由具有一指令集之英特爾®CoreTM處理器所利用者,該指令集包含x86、MMXTM、資料流SIMD延伸(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令,以及由ARM處理器所利用者,ARM處理器諸如具有一指令集之ARM Cortex®家族之處理器,該指令集包含向量浮點(VFP)及/或NEON指令,以及由MIPS處理器所利用者,諸如由中國科學院計算技術研究所(ICT)所開發之Loongson家族之處理器,係促成了在應用效能之顯著改善(CoreTM及MMXTM係加州聖塔克拉拉的英特爾公司的註冊商標或商標)。
於一實施例中,目的地及來源暫存器/資料係用以表示對應資料或操作的來源及目的地之一般術語。於一些實施例中,其等可藉由暫存器、記憶體或除了該等被描述者外之具有其他名字或功能的其他儲存區域來實施。例如,在一實施例中,「DEST1」可為一暫時儲存暫存器或其他儲存區域,而「SRC1」及「SRC2」則可為一第一及第二來源儲存暫存器或其他儲存區域,等等。於其他實施例中, SRC及DEST儲存區域的兩個或更多者可對應到同一個儲存區域(例如,一SIMD暫存器)內的不同資料儲存元件。於一實施例中,來源暫存器的其中一者亦可作用為一目的地暫存器,例如藉由將執行於第一及第二來源資料上之操作的結果寫回至作為目的地暫存器之該等兩個來源暫存器中之一者。
圖1A係依據本發明之一實施例之形成有一處理器的示範電腦系統的一方塊圖,該處理器包含用以執行一指令的執行單元。依據本發明,諸如在此所述之實施例中,系統100包含一構件,諸如一處理器102,該處理器利用包含用以執行用於處理資料之演算法之邏輯的執行單元。系統100係代表基於可自加州聖塔克拉拉的英特爾公司所得之PENTIUM®III、PENTIUM®4、XeonTM、Itanium®、XScaleTM及/或StrongARMTM微處理器的處理系統,雖然其他系統(包含具有其他微處理器的電腦、工程工作站、機頂盒及類似者)亦可被使用。於一實施例中,實例系統100可執行可自華盛頓州雷德蒙德的微軟公司所得之WINDOWSTM作業系統的一版本,雖然其他作業系統(例如UNIX及Linux)、嵌入式軟體及/或圖形化使用者介面亦可被使用。因此,本發明實施例並不被限於硬體電路及軟體的任何特定組合。
實施例並不被限於電腦系統。本發明的替代實施例可被使用於其他裝置,諸如手持裝置及嵌入式應用。手持裝置的一些範例包含手機、網際網路協定裝置、數位相 機、個人數位助理(PDA)及手持PCs。嵌入式應用可包含一微控制器、一數位信號處理器(DSP)、位於一晶片上之系統、網路電腦(NetPC)、機頂盒、網路集線器、廣域網路(WAN)交換器或可依據至少一實施例執行一或更多指令的任何其他系統。
圖1A係依據本發明之一實施例之形成有一處理器102的一電腦系統100的一方塊圖,該處理器102包含用於執行用以執行至少一指令的一演算法的一或更多執行單元108。一實施例可被敘述在一單一處理器桌面或伺服器系統之上下文中,但替代實施例可被包含在一多處理器系統中。系統100係一「集線(hub)」系統架構之範例。電腦系統100包含一用以處理資料信號的處理器102。處理器102可為一複雜指令集電腦(CISC)微處理器、一精簡指令集計算(RISC)微處理器、一極長指令(VLIW)微處理器、一實作複數指令集之組合的處理器或任何其他處理裝置,諸如一數位信號處理器,舉例而言。處理器102係被耦接至一處理器匯流排110,該處理器匯流排110可在處理器102及系統100中的其他構件之間傳輸資料信號。系統100的該等元件係執行對熟習此技術領域之人而言為習知之其等之一般功能。
於一實施例中,處理器102包含一第一層級(L1)內部快取記憶體104。取決於架構,該處理器可包含一單一內部快取或多層級之內部快取。替代地,於其他實施例中,快取記憶體可存在於處理器102外部。其餘實施例亦可取決於特定實作及需要而包含內部與外部快取兩者之組合。暫 存器檔案106可儲存不同類型的資料於不同暫存器中,該等暫存器包含整數暫存器、浮點暫存器、狀態暫存器及指令指標暫存器。
包含用以執行整數及浮點運算之邏輯的執行單元108亦存在於處理器102中。處理器102亦包含一儲存了用於某些巨集指令之微碼的微碼(ucode)ROM。針對一實施例,執行單元108係包含用以處理一緊縮指令集109之邏輯。藉由將緊縮指令集109包含在一一般目的處理器102之指令集中,以及用以執行指令的相關電路,則由許多多媒體應用所使用的運算亦可在一一般目的處理器102中使用緊縮資料而被執行。因此,藉由使用一處理器的資料匯流排的完整寬度來於緊縮資料上執行運算,許多多媒體應用可被加速且更有效率地執行。此將可排除橫跨處理器的資料匯流排傳輸小單位資料以於一資料元件上一次執行一或更多運算之需要。
一執行單元108的替代實施例係可被使用於微控制器、嵌入式處理器、圖形裝置、DSPs及其他類型的邏輯電路中。系統100包含一記憶體120。記憶體120可為一動態隨機存取記憶體(DRAM)裝置、一靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置或其他類型的記憶體裝置。記憶體120可儲存指令及/或可被處理器102執行之由資料信號所表示的資料。
一系統邏輯晶片116係被耦接至處理器匯流排110及記憶體120。例示實施例中之系統邏輯晶片116係一記 憶體控制器集線器(MCH)。處理器102可經由處理器匯流排110與MCH 116溝通。MCH 116為指令及資料儲存,以及為圖形指令、資料及文字的儲存提供了到記憶體120之一高頻寬記憶體路徑118。MCH 116係用以在處理器102、記憶體120及系統中的其他構件之間導引資料信號,以及用以在處理器匯流排110、記憶體120及系統I/O 122之間橋接資料信號。在一些實施例中,系統邏輯晶片116可提供供耦接至一圖形控制器112的一圖形埠。MCH 116係透過一記憶體介面118而被耦接至記憶體120。圖形卡112係透過一加速圖形埠(AGP)互連體114而被耦接至MCH 116。
系統100使用一專屬集線器介面匯流排122來將MCH 116耦接至I/O控制器集線器(ICH)130。ICH 130透過一本地I/O匯流排而提供至一些I/O裝置的直接連結。本地I/O匯流排係用以將週邊連結至記憶體120、晶片組及處理器102的一高速I/O匯流排。一些範例為音訊控制器、韌體集線器(快閃BIOS)128、無線收發器126、資料儲存器124、含有使用者輸入及鍵盤介面的舊有I/O控制器、一串列擴充埠諸如通用串列匯流排(USB),以及一網路控制器134。資料儲存裝置124可包含一硬碟驅動器、一軟碟驅動器、一CD-ROM裝置、一快閃記憶體裝置或其他大容量儲存裝置。
對一系統的其他實施例而言,依據一實施例的一指令可與位於一晶片上的一系統一起被使用。位於一晶片上的一系統的一實施例包含一處理器及一記憶體。用於如是系統之記憶體係一快閃記憶體。快閃記憶體可與處理器 及其他系統構件位於相同晶粒上。此外,其他邏輯方塊諸如一記憶體控制器或圖形控制器亦可位於在一晶片上的一系統上。
圖1B係例示實施本發明之一實施例的法則的一資料處理系統140。將可被技術領域中具有通常知識者所輕易理解的是,在不背離本發明實施例範疇的情況下,此處所述實施例係可以替代處理系統來被使用。
依據一實施例,電腦系統140包含可執行至少一指令的一處理核心159。針對一實施例,處理核心159代表任何類型架構的一處理單元,包含但不限於一CISC、RISC或VLIW類型架構。處理核心159亦可適用於一或更多處理技術中的製造,並且藉由以足夠細節被表示於一機器可讀媒體上,其將可適用於促進該製造。
處理核心159包含一執行單元142、(複數)暫存器檔案145的一集合,以及一解碼器144。處理核心159亦包含額外電路(未表示),其對於本發明實施例的理解並非必須。執行單元142係用於執行由處理核心159所接收的指令。除了執行典型的處理器指令,執行單元142可執行緊縮指令集143中的指令,以在緊縮資料格式上執行操作。緊縮指令集143包含用於執行本發明實施例及其他緊縮指令的指令。執行單元142係藉由一內部匯流排而被耦接至暫存器檔案145。暫存器檔案145係代表用於儲存資訊之處理器核心159上的一儲存區域,該資訊包含資料。如同前已述者,將可被理解的是用於儲存緊縮資料的儲存區域並不具關鍵性。 執行單元142係被耦接至解碼器144。解碼器144係用於將處理核心159所接收之指令解碼成控制信號及/或微碼入口點。回應於此等控制信號及/或微碼入口點,執行單元142係執行適當操作。於一實施例中,解碼器係用於解譯指令的操作碼,該操作碼將會指示應在指令內所指示的對應資料上執行何種操作。
處理核心159係與匯流排141耦接以和不同的其他系統裝置溝通,該等系統裝置可包含但不限於,例如同步動態隨機存取記憶體(SDRAM)控制146、靜態隨機存取記憶體(SRAM)控制147、叢發快閃記憶體介面148、個人電腦儲存卡國際聯盟(PCMCIA)/壓縮快閃(CF)卡控制149、液晶顯示器(LCD)控制150、直接記憶體存取(DMA)控制器151,以及替代匯流排主介面152。於一實施例中,資料處理系統140亦可包含一用以經由一I/O匯流排153來與不同I/O裝置溝通的I/O橋接器154。如是I/O裝置可包含但不限於,例如通用非同步接收器/發射器(UART)155、通用序列匯流排(USB)156、藍芽無線UART 157及I/O擴充介面158。
資料處理系統140的一實施例提供移動、網路及/或無線通訊,以及一可執行包含字串比較操作之SIMD操作的處理核心159。處理核心159可被以以下所述者程控:各種音訊、視訊、影像及通訊演算法,包含離散變換,諸如華須-哈德瑪變換、傅立葉變換(FFT)、離散餘弦變換(DCT)及其等之反變換;壓縮/解壓縮技術諸如色彩空間變換、視訊編碼動作估測或視訊解碼動作補償;以及調變/解調 (MODEM)函數諸如脈衝碼調變(PCM)。
圖1C係例示可執行SIMD字串比較操作的一資料處理系統的又一替代實施例。依據一替代實施例,資料處理系統160可包含一主處理器166、一SIMD協同處理器161、一快取記憶體167以及一輸入/輸出系統168。輸入/輸出系統168可選擇性地被耦接至一無線介面169。依據一實施例,SIMD協同處理器161係可執行包含指令之操作。處理核心170可適用於一或更多處理技術中的製造,並且藉由以足夠細節被表示於一機器可讀媒體上,其將可適用於促進包含處理核心170之資料處理系統160的全部或部分製造。
針對一實施例,SIMD協同處理器161包含一執行單元162及(複數)暫存器檔案164的一集合。主處理器165包含一解碼器165以辨識指令集163的指令,包含依據一實施例之指令,以供執行單元162執行。針對替代實施例,SIMD協同處理器161亦包含解碼器165B的至少一部份,以解碼指令集163的指令。處理核心170亦包含額外電路(未表示),其對於本發明實施例的理解並非必須。
於操作中,主處理器166執行資料處理指令之串流,其係控制一般類型的資料處理操作,包含與快取記憶體167以及輸入/輸出系統168的互動。嵌入在該資料處理指令串流內的係SIMD協同處理器指令。主處理器166的解碼器165辨識此等SIMD協同處理器指令為應被一附加SIMD協同處理器161所執行的一類型。據此,主處理器166發出 此等SIMD協同處理器指令(或是表示SIMD協同處理器指令的控制信號)在協同處理器匯流排172上,從該處其等係被任何附加SIMD協同處理器所接收。於此情形中,SIMD協同處理器161會接受且執行任何為此所設計之接收到的SIMD協同處理器指令。
資料可透過無線介面169被接收,以由SIMD協同處理器指令處理。舉例而言,語音通訊可以一數位信號形式被接收,其可被SIMD協同處理器指令處理以重新產生該等語音通訊之數位音訊取樣代表。再舉例而言,經壓縮音訊及/或視訊可以一數位位元串流形式被接收,其可被SIMD協同處理器指令處理以重新產生數位音訊取樣及/或動作視訊訊框。針對處理核心170之一實施例,主處理器166及一SIMD協同處理器161係整合成一單一處理核心170,其包含一執行單元162、一(複數)暫存器檔案集合164以及一解碼器165,該解碼器用以辨識指令集163之指令,包含依據一實施例之指令。
圖2係依據本發明之一實施例之一處理器200之微架構的一方塊圖,該處理器200包含用以執行指令之邏輯電路。在一些實施例中,依據一實施例之一指令可被實作以在資料元件上操作,該等資料元件具有位元組、字、雙字、四倍字及其他之大小,以及資料類型,諸如單或雙精度整數及浮點資料型態。於一實施例中,依序前端201係處理器200之提取欲被執行的指令且準備其等以在之後被使用於處理器管線中之部分。依序前端201可包含數個單元。 於一實施例中,指令預提取器226自記憶體提取指令並將其等饋送給一指令解碼器228,其結果解碼或解析該等指令。例如於一實施例中,解碼器將一接收到之指令解碼成機器可執行之一或更多稱作「微指令」或「微操作」(亦稱為微op或uop)的操作。於其他實施例中,解碼器將指令剖析成一操作碼及對應資料與控制欄,其等係由微架構所使用以執行依據一實施例之操作。於一實施例中,追蹤快取230拿取經解碼之複數uop,並將其等組合成用於執行之在uop佇列234中之程式依序序列或追蹤。當追蹤快取230遇到一複雜指令時,微碼ROM 232提供所需之複數uop以完成操作。
一些指令係轉換成一單一微op,而其他則需要數個微op來完成完整操作。於一實施例中,若需要四個以上的微op來完成一指令,解碼器228則存取微碼ROM 232來作該指令。針對一實施例,一指令可被解碼成一小數量的微op以在指令解碼器228處理。於另一實施例中,一指令可被儲存在微碼ROM 232內,將需要一數量的微op來完成操作。追蹤快取230係意指一入口點可程式邏輯陣列(PLA),其用以決定一正確微指令指標,以讀取微碼序列來完成來自微碼ROM 232之依據一實施例的一或更多指令。在微碼ROM 232結束針對一指令定序複數微op之動作後,機器之前端201繼續自追蹤快取230提取複數微op。
亂序執行引擎203係指令被準備以用於執行之處。亂序執行邏輯具有一數量之緩衝器以平緩及重排指令流來最佳化效能,指令係落下至管線且被排程以供執行。 分配器邏輯係配置每個uop為了執行所需之機器緩衝器及資源。暫存器重新命名邏輯係將邏輯暫存器重新命名到一暫存器檔案中之項目上。分配器亦針對每個uop在二uop佇列中之一者中配置一項目在指令排程器之前,該二uop佇列之一者係用於記憶體操作,一者則係用於非記憶體操作,該等指令排程器係:記憶體排程器、快速排程器202、慢速/一般浮點排程器204以及簡單浮點排程器206。uop排程器202、204及206係基於複數uop所需以完成操作之其等的相依輸入暫存器運算元來源之就緒以及執行資源的可用性而決定何時一uop係準備好要執行。一實施例之快速排程器202係可在每半個主時鐘週期上排程,而其他排程器每個主處理器時鐘週期係僅可排程一次。該等排程器係針對調度埠來仲裁以排程複數uop供執行。
暫存器檔案208及210係座落於排程器202、204、206以及執行單元212、214、216、218、220、222、224之間,於執行方塊211中。有分離之暫存器檔案208及210,分別用於整數及浮點操作。一實施例之每個暫存器檔案208、210亦包含一旁路網路,其可略過或遞送尚未被寫入暫存器檔案的剛完成結果至複數之新的相依uop。整數暫存器檔案208及浮點暫存器檔案210亦可與其他者交流資料。針對一實施例,整數暫存器208係被劃分為兩個分離的暫存器檔案,一暫存器檔案用於資料之低階32位元,一第二暫存器檔案用於資料之高階32位元。一實施例之浮點暫存器210係具有128位元寬之項目,因為浮點指令典型地係具有寬度64 到128位元之運算元。
執行方塊211包含於其處指令實際地被執行之執行單元212、214、216、218、220、222、224。此一區段包含暫存器檔案208、210,其等儲存微指令所需以執行之整數及浮點資料運算元值。一實施例之處理器200係包含一數量之執行單元:位址產生單元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮點ALU 222、浮點移動單元224。針對一實施例,浮點執行方塊222、224係執行浮點、MMX、SIMD及SSE或其他操作。一實施例之浮點ALU 222包含一64位元除64位元之浮點除法器,以執行除法、平方根及餘數微op。針對本發明之實施例,涉及一浮點值的指令可以浮點硬體來被處置。於一實施例中,ALU操作係跑到高速ALU執行單元216、218。一實施例之快速ALU 216、218係可以半個時鐘週期的有效潛時來執行快速操作。針對一實施例,大多數複雜整數操作係跑到慢速ALU 220,因慢速ALU 220包含用於長潛時類型操作之整數執行硬體,諸如乘法器,移位、旗標邏輯及分支處理。記憶體載入/儲存操作係由AGU 212、214來執行。針對一實施例,整數ALU 216、218、220係被描述在於64位元資料運算元上執行整數操作之上下文中。於替代實施例中,ALU 216、218、220可被實作以支援包含16、32、128、256、其他等多種資料位元。類似地,浮點單元222、224可被實作以支援具有不同寬度之位元的運算元之一範圍。針對一實施例,浮點單元222、224可操作於連同SIMD及多媒體指令 之128位元寬的緊縮資料運算元上。
於一實施例中,在親代讀取結束執行之前,uop排程器202、204、206調度相依操作。由於複數uop係在處理器200中推測地被排程且執行,處理器200亦包含用以處置記憶體未中(miss)的邏輯。若有一資料讀取在資料快取中未中,將可能會有將暫時性地非正確資料交給排程器之管線中的飛行中相依操作。一重演機構係追蹤且重新執行使用非正確資料的指令。僅有相依操作需要被重新進行,該等獨立者係被允許完成。一處理器之一實施例的排程器及重演機構亦被設計以抓取用於字串比較操作的指令序列。
用語「暫存器」可意指被使用作為指令的一部份以辨識運算元之機載處理器儲存位置。換言之,暫存器可為那些可自處理器的外部而使用者(以一程度設計師的角度而言)。然而,一實施例的暫存器不應被限制在一特定類型電路之涵義。反而,一實施例的一暫存器係可儲存及提供資料,以及執行此處所述之功能。此處所述的暫存器可藉由一處理器內的電路使用任何數量之不同技術而被實作,諸如專用實體暫存器、使用暫存器重新命名技術的動態配置實體暫存器、專用與動態配置實體暫存器的組合及其他等。於一實施例中,整數暫存器係儲存三十二位元整數資料。一實施例的暫存器檔案亦可包含用於緊縮資料的八個多媒體SIMD暫存器。針對以下的討論,該等暫存器係被理解為被設計用以保持緊縮資料的資料暫存器,諸如在來自加州聖塔克拉拉的英特爾公司之被賦予MMX技術能 力的微處理器中的64位元寬MMXTM暫存器(在某些情形中亦被稱作「mm」暫存器)。可用於整數及浮點形式兩者之此等MMX暫存器係可與伴隨SIMD及SSE指令之緊縮資料元件一同操作。類似地,相關於SSE2、SSE3、SSE4或之後(一般性地稱作「SSEx」)技術的128位元寬XMM暫存器亦可被使用以保持如是緊縮資料運算元。於一實施例中,在儲存緊縮資料及整數資料時,暫存器不需區別此兩種資料類型。於一實施例中,整數及浮點係均被包含在相同暫存器檔案中,或不同暫存器檔案中。再者,於一實施例中,浮點及整數資料可被儲存於不同暫存器或相同暫存器中。
在以下圖式的實例中,一數量之資料運算元係被敘述。圖3A係例示依據本發明之一實施例之多媒體暫存器中的多種緊縮資料類型表示。圖3A係例示針對用於128位原寬之運算元的一緊縮位元組310、一緊縮字320、一緊縮雙字(dword)330的資料類型。此實例之緊縮位元組格式310係128位元長,且包含十六個緊縮位元組資料元件。一位元組在此處係被定義為8位元之資料。用於各個位元組資料元件的資訊針對位元組0係被儲存在位元7到位元0,針對位元組1係在位元15到位元8,針對位元組2係在位元23到位元16,…等等,而最後針對位元組15係在位元120到位元127。因此,暫存器中的所有可用位元係被使用。此儲存配置係增加處理器的儲存效率。又,以十六個資料元件被存取之方式,一操作現在可平行地在十六個資料元件上被執行。
通常,一資料元件係一儲存在一單一暫存器或記 憶體位置的個別部份,而其他資料元件具有相同長度。在有關於SSEx技術的緊縮資料序列中,儲存在一XMM暫存器中的資料元件數量係128位元除以一個個別資料元件的位元長度。類似地,在有關於MMX及SSE技術的緊縮資料序列中,儲存在一MMX暫存器中的資料元件數量係64位元除以一個個別資料元件的位元長度。雖然例示於圖3A中的資料類型係128位元長,本發明之實施例亦可與64位元寬或其他大小的運算元一同操作。此實例之緊縮字格式320係128位元長,且包含八個緊縮字資料元件。每個緊縮字包含十六位元的資訊。圖3A的緊縮雙字格式330係128位元長,且包含四個緊縮雙字資料元件。每個緊縮雙字資料元件包含三十二位元的資訊。一緊縮四倍字係128位元長,且包含兩個緊縮四倍字資料元件。
圖3B係例示替代之暫存器內資料儲存格式。每個緊縮資料可包含一個以上的獨立資料元件。三種緊縮資料格式係被例示;半緊縮341、單緊縮342以及雙緊縮343。半緊縮341、單緊縮342及雙緊縮343之一實施例係包含定點資料元件。針對一替代實施例,一或更多半緊縮341、單緊縮342及雙緊縮343可包含浮點資料元件。半緊縮341的一替代實施例係一百二十八位元長,包含八個16位元資料元件。單緊縮342的一實施例係一百二十八位元長,且包含四個32位元資料元件。雙緊縮343的一實施例係一百二十八位元長,且包含兩個64位元資料元件。將會被理解的是,如是緊縮資料格式可被進一步延伸至其他暫存器長度,例 如,至96位元、160位元、192位元、224位元、256位元或更多。
圖3C係例示依據本發明之一實施例之多媒體暫存器中之多種帶符號(signed)及無符號(unsigned)緊縮資料型態表示。無符號緊縮位元組表示344係例示一SIMD暫存器中之一無符號緊縮位元組儲存。用於各個位元組資料元件的資訊針對位元組零係被儲存在位元七到位元零,針對位元組一係在位元十五到位元八,針對位元組二係在位元二十三到位元十六,而最後針對位元組十五係在位元一百二十到位元一百二十七。因此,暫存器中的所有可用位元係被使用。此儲存配置係增加處理器的儲存效率。又,以十六個資料元件被存取之方式,一操作現在可以平行方式在十六個資料元件上被執行。帶符號緊縮位元組表示345係例示一帶符號緊縮位元組儲存。注意到每個位元組資料元件的第八位元係符號指示符。無符號緊縮字表示346係例示字七到字零係如何被儲存於一SIMD暫存器中。帶符號緊縮字表示347係類似於無符號緊縮字暫存器中表示346。注意到每個字資料元件的第十六位元係符號指示符。無符號緊縮雙字表示348展現雙字資料元件係如何被儲存。帶符號緊縮雙字表示349係類似於無符號緊縮雙字暫存器中表示348。注意到必需符號位元係每個雙字資料元件的第三十二位元。
圖3D係一操作編碼(操作碼)格式360之一實施例的敘述,該格式具有三十二或更多位元,以及與可在全球 資訊網(www)上於intel.com/design/litcentr自加州聖塔克拉拉的英特爾公司所得之「IA-32英特爾架構軟體開發者指南第2卷:指令集參考」中所述的操作碼格式之一類型相對應之暫存器/記憶體運算元定址模式。於一實施例中,一指令可藉由一或更多欄361及362被編碼。每個指令至多到兩個運算元位置可被識別,包含至多到兩個來源運算元識別符364及365。針對一實施例,目的地運算元識別符366係與來源運算元識別符364相同,而於其他實施例中係相異。針對一替代實施例,目的地運算元識別符366係與來源運算元識別符365相同,而於其他實施例中係相異。於一實施例中,由來源運算元識別符364及365所識別之來源運算元中之一者係被字串比較操作的結果所覆寫,而於其他實施例中識別符364係對應至一來源暫存器元件,且識別符365係對應至一目的地暫存器元件。針對一實施例,運算元識別符364及365可被用以識別32位元或64位元來源及目的地運算元。
圖3E係另一替代操作編碼(操作碼)格式370的敘述,其具有四十或更多位元。操作碼格式370係與操作碼格式360相對應,且包含一選用前綴位元組378。依據一實施例之一指令係可藉由一或更多欄378、371及372被編碼。每個指令至多到兩個運算元位置係可藉由來源運算元識別符374及375,以及藉由前綴位元組378被識別。針對一實施例,前綴位元組378可被用以識別32位元或64位元之來源及目的地運算元。針對一實施例,目的地運算元識別符376係與來源運算元識別符374相同,而於其他實施例中係相異。 針對一替代實施例,目的地運算元識別符376係與來源運算元識別符375相同,而於其他實施例中係相異。於一實施例中,一指令係在由運算元識別符374及375所識別之一或更多運算元上操作,且由運算元識別符374及375所識別之一或更多運算元係被該指令的結果所覆寫,而於其他實施例中,由運算元識別符374及375所識別之運算元係被寫入至其他暫存器中的其他資料元件。操作碼格式360及370允許暫存器到暫存器、記憶體到暫存器、暫存器被記憶體、暫存器被暫存器、暫存器被立即值、暫存器到記憶體之藉由MOD欄363及373以及藉由選用之尺度-索引-基底及位移位元組所部分指明之定址方式。
接著轉向圖3F,於一些替代實施例中,64位元單一指令多重資料(SIMD)算術操作係可透過一協同處理器資料處理(CDP)指令來被執行。操作編碼(操作碼)格式380描述一如是CDP指令,其具有CDP操作碼欄382及389。CDP指令的類型,針對替代實施例,操作係可藉由一或更多欄383、384、387及388而被編碼。每個指令至多到三個運算元位置係可被識別,包含至多到兩個來源運算元識別符385及390,以及一目的地運算元識別符386。協同處理器的一實施例係可在8、16、32及64位元值上操作。針對一實施例,一指令係在整數資料元件上被執行。於一些實施例中,一指令係可使用條件欄381而被條件式地執行。針對一些實施例,來源資料大小可藉由欄383而被編碼。於一些實施例中,零(Z)、負數(N)、進位(C)及溢位(V)偵測係可在SIMD 欄上被作出。針對一些指令,飽和(saturation)類型係可藉由欄384被編碼。
圖4A係例示依據一實施例之針對一微架構之一部分二進制轉譯系統之一指令轉譯後備緩衝器(iTLB)470。iTLB 470可包含一第一行472以儲存一位元(T位元)、一第二行474以儲存虛擬位址、一第三行476以儲存對映到虛擬位址的實體位址,以及一第四行478以儲存另一位元(D位元)。T位元可指示由實體位址所指向之一下層(underlying)碼頁是否係一包含原始碼的原始碼頁(例如,原始地經編譯之軟體指令或是一包含經轉譯碼的經轉譯碼頁(例如,被一轉譯器或碼最佳化器所最佳化))。於一實施例中,T=0可意味下層碼頁係一原始碼頁,T=1可意味下層碼頁係一經轉譯碼頁。D位元可指示由實體位址所指向之一指令是否不宜用。舉例而言,D=0可意味該指令並非不宜用,且D=1可指示該指令不宜用。
iTLB 470,舉例而言,可例示在一列480中一虛擬位址「0x1000」係可對映至一實體位址「0x40600」。列480的T位元及D位元可指示在實體位址「0x40600」的指令可為原始碼頁,且並非不宜用。在iTLB 470之列482中,一虛擬位址「0x2000」係可對映至一實體位址「0x40800」。列482的T位元可指示實體位址「0x40800」可為一原始碼頁,但列482的D位元可指示被儲存在此實體位址的指令可能不宜用。在iTLB 470之列484中,一虛擬位址「0x3000」係可對映至一實體位址「0x41000」。列484的T位元及D位 元可指示實體位址「0x41000」可為一原始碼頁,且並非不宜用。在iTLB 470之列486中,一虛擬位址「0x2000」係可對映至一實體位址「0x41600」。列486的T位元可指示實體位址「0x41600」可為一經轉譯碼頁。在iTLB 470之列488中,一虛擬位址「0x3000」係可對映至一實體位址「0x41800」。列488的T位元可指示實體位址「0x41800」可為一經轉譯碼頁。針對列486及488,D位元對任何經轉譯碼頁可不具意義,故為空白。
如iTLB 470中所例示,針對一由一虛擬位址所指向之不宜用指令,一經轉譯碼頁係可被配置以儲存對應之經轉譯指令。因此,虛擬位址「0x2000」可對映至一可儲存一被標示為不宜用之指令的實體位址「0x40800」,以及另一可儲存一對應之經轉譯指令的實體位址「0x41600」。
於一實施例中,經轉譯碼頁可包含未經轉譯指令在經轉譯指令之前及/或之後,以保持經轉譯指令在與原始碼頁平行之上下文中。
圖4B係例示依據一實施例之針對一微架構之一部分二進制轉譯系統之記憶體中的碼頁布置400。如前所述,一前端解碼器可接收經編譯碼的每個指令,解碼該指令且將複數uop排佇列。此等指令的一些或全部係可被儲存於碼頁中。一iTLB(例如,iTLB 470)可被用以快取對映虛擬位址至實體位址之頁表項目。碼頁可被開或關一處理器晶片於記憶體及/或快取階層的不同層級中(可能地包含第一層級指令快取)。依據一實施例之部分二進制轉譯係可針 對二進制碼之經常執行部分來產生處理器特定之經最佳化碼。如圖4B中所示,碼頁之布置400可包含碼頁的一第一部分402及碼頁的一第二部分404。碼頁的第一部分402係可儲存原始碼(例如,原始地經編譯之軟體指令)。碼頁的第一部分402可包含複數碼頁,舉例而言,碼頁406、408及410。碼頁之第一部分中的每個碼頁係可被標籤(例如,在iTLB中,諸如iTLB 470)以識別該碼頁是否已被一轉譯器所轉譯。碼頁的第二部分404係可藉由一轉譯器(例如,一碼最佳化器)被使用以儲存用於在與原始碼頁平行之上下文中之經轉譯碼的碼頁。於一實施例中,經轉譯碼頁可大於原始碼頁,舉例而言,如圖4B中所示,原始碼頁408的前四行係被轉譯成經轉譯碼頁416及418。於不同實施例中,碼頁的第一及第二部分402及404可位於一普通快取中,或來自不同快取。
並非原始碼頁408的全部碼均被轉譯器所轉譯,因此,如圖4B中所示,原始碼頁408的第三及第四行(以虛線表示)係可被識別作為原始碼的一經常執行部分,且可被轉譯。對應之經轉譯碼可被指示作為經轉譯碼頁416及418中的虛線。經轉譯碼頁416的前面兩行實線係可自原始碼頁408被複製。
當原始碼頁408被轉譯,兩個獨特uop 412及414係可被置入經轉譯碼頁416。第一獨特uop 412可被置放作為經轉譯碼頁416的第一個指令。第二獨特uop 414可被置放作為經轉譯碼部分的第一個指令。於一實施例中,該等 獨特uop之各者可為一獨特地可識別之NOP(例如,一個兩位元組獨特碼),且NOP可被解碼器所擠壓(squashed)-其不需被執行。
經轉譯碼頁可包含一跳越指令在經轉譯碼的結尾。舉例而言,針對經轉譯碼之連續頁418可具有一跳越指令420在經轉譯碼的結尾。跳越指令420可為一新指令,jOriginalCode。當一跳越指令被遇到,碼的執行可自經轉譯碼頁跳越回原始碼頁。即,欲被一解碼器所擷取的下一個指令係可為來自原始碼頁408之原始碼頁408的第五行的第一個指令。
於另一實施例中,如iTLB 470的列484及488所指示者,在欲被轉譯的原始碼部分之後之原始碼頁的剩餘部分係亦可被複製至經轉譯碼頁,且被附加在經轉譯碼部分之後。亦即,舉例而言,原始碼頁408的第五行係可被複製且被附加在連續頁418中,在經轉譯碼後。於此實施例中,跳越指令420係可被置於被複製至連續頁418之原始碼的第五行之後。因此,於此特定實施例中,在連續頁418的經轉譯碼可被提取且被解碼後,欲被解碼器所擷取的下一個指令係可為被複製至連續頁418之原始碼頁408的第五行。回到原始碼之轉換動作係可被延遲,直到原始碼頁408的第五行可自連續頁418被提取且被執行。
於一實施例中,如圖4A中所示,兩個位元係可被新增至iTLB 470:一用以指示內容(其係原始碼頁(T=0)或經轉譯碼頁(T=1))的標籤位元,以及一用以指示碼頁是否 不宜用(針對不宜用者D=1,且針對並非不宜用者D=0)的資料位元。因此,碼頁的第一部分402中的所有碼頁係可具有T=0,且碼頁的第二部分404中的所有碼頁係可具有T=1。當一頁面被轉譯,原始頁(T=0)係可被標記為不宜用(D=1)。舉例而言,碼頁的第一部分402的碼頁408係可被轉譯可且被標記為不宜用(D=1),而碼頁406及410係未被轉譯且被標記為並非不宜用(D=0)。
圖4C係例示依據一實施例之一狀態機430。當一提取422被執行時,一指令係可自一具有T為0(T==0)之原始碼頁被提取。若該提取不是一跨頁面提取(例如,提取一新碼頁的第一個指令),或該碼頁沒有被標記為不宜用(D不為0),被提取指令係可被解碼,且另一提取422係可針對來自原始碼頁的一下一指令被執行。
當針對一具有T為0之碼頁的一跨頁面提取被執行,且一不宜用頁面(D為1)係由iTLB 470被回傳時,iTLB 470可使用T=1被再次查找。亦即,狀態機430係可自提取422轉換至提取424,以自與原始碼頁平行之上下文中的一經轉譯碼頁擷取一下一指令。當自T=0轉換到T=1時,由提取424所提取的第一個指令必須為一獨特地可識別之NOP。若未找到,解碼器係可發信號一重新提取(例如,清除信號)到前端提取單元,其恢復以T=0進行提取(跳越回到提取422)。此將可防止自原始碼進入一經轉譯區域中間(可能地進入一指令的中間)之不被預期跳越的可能性。於一實施例中,轉譯軟體(例如,一轉譯器)可負責確保表示此獨特NOP之位 元型樣係僅出現在經轉譯碼中的合法入口點(例如,經轉譯碼頁的第一個指令412,或經轉譯經常執行碼的第一個指令414)。
當提取424辨認第一個指令係為一獨特識別符NOP時,狀態機可轉換至提取426。提取426可針對經轉譯碼頁中的所有碼而被執行。自一經轉譯碼頁離開回到一原始(T=0)碼頁係可藉由新跳越指令,jOriginalCode來被完成。因此,只要jOriginalCode指令未被遇到,提取426係可被重複。於一實施例中,jOriginalCode係可使用一前綴在已存在之分支指令的一指令而被編碼。
圖4A中所示的iTLB 470可例示一用於圖4B中所示碼頁的範例iTLB,於該等碼頁中實體碼頁406及410未被轉譯而實體碼頁408係被轉譯。如圖4B中所示,在碼轉譯(例如,最佳化)之前,程式可在虛擬位址「0x1000」開始執行,此係可對映到實體位址「0x40600」。隨著程式前進,虛擬位址可增加。當程式到達虛擬位址「0x2000」,實體位址係可被對映至實體位址「0x40800」。
在碼轉譯之後,程式可依然在虛擬位址「0x1000」開始執行,其依然對映至「0x40600」。隨著程式進行,虛擬位址可增加。當程式到達虛擬位址「0x2000」,被儲存於此位址之(複數)指令可被標記為不宜用,故依據一實施例之一微處理器可開始使用T=1。現在,虛擬位址「0x2000」可對映至實體位址「0x41600」。隨著前進,經轉譯碼中的虛擬位址可增加。當程式到達虛擬位址「0x3000」,程式可依 然執行經轉譯碼(例如,其依然在T=1模式),故虛擬位址可對映至41800。隨著程式前進,虛擬位址可進一步增加。假設經轉譯碼在虛擬位址「0x3888」包含指令「JOriginal 3000」,那麼當程式執行到在虛擬位址「0x3888」的指令時,微處理器可同時地將虛擬位址設為「0x3000」且將T設定回0。現在程式可在T=0的虛擬位址「0x3000」開始執行,其可被對映至實體頁面「0x41000」,如圖4A中所示。
於一實施例中,碼頁的第一及第二部分402及404係可為兩個頁表。使用頁表來識別經轉譯碼或再最佳化碼係可簡化前端硬體。使用頁表亦可允許原始碼維持為可讀且可執行。如前所述,原始碼可依然存在於T=0之其原始上下文空間中,而經轉譯碼係可存在於一T=1的平行上下文中。於一實施例中,部分二進制轉譯係可在一碼頁粒度被執行,例如4KB。
於一實施例中,原始實體碼頁係可被標記為不可寫入,以處理自身修改或交互修改碼的可能性。再者,已被轉譯的原始碼頁被標記為不宜用(D=1)之事實係可被利用以發信號二進制轉譯運行時間,表示其需要使經轉譯碼快取無效。例如,寫入到一頁面標記D=1的一DMA引擎係可允許DMA進行(這樣交易係不會被中止及重新開始)且通知轉譯運行時間:先前轉譯已不可用。
於一實施例中,轉譯器可將碼頁儲存進入其中之一平行上下文係可提供用於經最佳化(經轉譯)碼之虛擬位址空間。此係可允許經轉譯碼為靜態地大於原始碼,而不 需為了一合適之未經使用區域來搜索原始虛擬位址空間。舉例而言,如圖4B中所示,經轉譯碼頁416及連續頁418中的經轉譯碼(總共六行虛線)係可大於原始碼頁408中的原始碼(兩行虛線)。
依據一實施例之iTLB係可提供一機制,藉該機制處理器可辨識一碼區塊已被最佳化,且自動地轉換控制至經轉譯碼,以及自經轉譯碼轉換控制。由iTLB所提供的轉換控制係可藉由不憑藉設陷(trapping)一運行軟體層而改善效能,且係可以一最小增加區域及電源來被完成。
圖4D係例示依據一實施例之針對一微架構之一經硬體及軟體共同設計之動態二進制轉譯系統的元件。如圖4D中所示,軟體可包含一系統記憶體452,其可包含客軟體454、二進制轉譯軟體456以及iTLB 458。二進制轉譯軟體456及iTLB 458可為依據本發明之一微架構450的軟體元件。微架構450可進一步包含一共同設計處理器460,其可包含一熱點偵測器462及新特性464。於一實施例中,客軟體454可使用一特定指令集而被編譯,且可為一OS或任何其他執行在OS上的軟體(包含執行在由一虛擬機器管理器所管理之一虛擬機器上的另一OS)。
熱點偵測器462可包含一偵測原始碼中之熱點的效能監測單元(PMU)。新特性464可包含由新世代的處理器所提供之特性,舉例而言,新特性可包含更寬的暫存器(諸如256位元、512位元或1024位元或其他等),以及其他特性(例如,用於進入及離開經轉譯碼的電路、用於確保轉譯一 致性的電路、用於記憶體歧異的電路、用於原子性(atomicity)支援的電路、用於運行時間監測ucode的電路)。微架構450的二進制轉譯軟體456可包含用於分析原始碼之熱點的邏輯、用於識別原始碼之經常執行部分的邏輯、一將經識別之原始碼經常執行部分轉譯到經轉譯碼到由下層處理器所提供之指令的轉譯器,以及一用以執行(包含於其等之間轉換)原始碼及經轉譯碼的運行時間。
圖5係例示依據一實施例之欲被執行之操作的一流程圖500。於方塊502,原始碼係可被儲存於(複數)原始碼頁中。每個原始碼頁係可被標籤,舉例而言,藉由將一標籤位元設為T=0,以識別其係作為一原始碼頁。於方塊504,若一碼頁被轉譯,該碼頁係可被標記。於一實施例中,如前所述者,被轉譯之碼頁可藉由將一資料位元設為D=1而被標記,以指示該頁面係不宜用。於方塊506,(複數)轉譯碼頁係可被配置在一與原始碼頁平行之上下文中,以儲存對應之(複數)經轉譯碼頁。經轉譯碼頁可包含用以識別經轉譯碼之頁面入口及碼入口的獨特識別符(例如,經轉譯碼頁416中之NOP 412及414)。於一實施例中,由流程圖500所例示的一或更多步驟係可藉由一實作動態部分二進制轉譯之微架構的轉譯軟體(例如,一碼最佳化器)來被執行。
圖6係例示依據一實施例之欲被執行之操作的另一流程圖。於方塊602,一指令可自一原始碼頁被提取。於一實施例中,原始碼頁係可藉由一標籤位元T來被標籤,且T=0可指示該碼頁係一原始碼頁。於方塊604,可決定被提 取指令是否為一新碼頁的一第一指令(例如,跨頁面),以及該新碼頁是否不宜用。於方塊606,若被提取指令係一新碼頁的一第一指令且該新碼頁係不宜用,一下一指令可自一經轉譯碼頁被提取。舉例而言,如圖4C之狀態機所示者,若一由一提取422所提取的指令指示跨頁面到一不宜用頁面,一提取424係可接著被執行,且提取/執行可在經轉譯碼頁中繼續。若提取424回傳一NOP,提取/執行可針對經轉譯碼頁而繼續,直到一跳越指令(例如,jOriginalCode)可被遇到。若提取424回傳除了NOP之外的一指令,提取/執行可轉換回到原始碼頁。於方塊608,若被提取指令不是一新碼頁的一第一指令,或該碼頁不是一不宜用碼頁,則下一個指令係可自原始碼頁被提取。於一實施例中,由流程圖600所例示的一或更多步驟係可藉由一實作動態部分二進制轉譯之微架構的運行時間軟體來被執行。
本發明之實施例可藉由一運行時間轉譯層來提供碼的動態最佳化,以用於針對熱門碼頁(例如,經常執行碼頁)的一處理器特定動態二進制轉譯。一實施例可提供一方法,用以使用一iTLB來對映原始碼頁及經轉譯碼頁。該方法可包含自一原始碼頁提取一指令,決定該被提取指令是否為一新碼頁的一第一指令以及該碼頁是否不宜用。若該被提取指令係一新碼頁的一第一指令且該碼頁係不宜用,該方法可進一步包含自一經轉譯碼頁提取一下一指令。若該被提取指令不是一新碼頁的一第一指令或該碼頁並非不宜用,該方法可進一步包含解碼該指令且自該原始 碼頁提取下一指令。
此處所揭示之機制的實施例係可以硬體、軟體、韌體或如是實作方式的一組合來被實作。本發明實施例可被實作為電腦程式或執行在包含至少一處理器之可程式化系統上的程式碼、一儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置及至少一輸出裝置。
程式碼可被應用至輸入指令,以執行此處所述之功能並產生輸出資訊。輸出資訊可以習知方式被應用至一或更多輸出裝置。為了此應用之目的,一處理系統係包含具有一處理器的任何系統,諸如舉例而言:一數位信號處理器(DSP)、一微控制器、一應用特定積體電路(ASIC)或一微處理器。
程式碼可被實作在一高階程序或物件導向程式語言中,俾與一處理系統通訊。程式碼亦可被實作在組合或機器語言中,若有需求的話。事實上,此處所述機制並不被限於任何特定程式語言的範圍內。在任何情況中,該語言可為一經編譯或經解譯語言。
至少一實施例的一或更多方面可藉由儲存在一機器可讀媒體上的代表指令來被實作,該等代表指令係代表在處理器內的不同邏輯,其等當被一機器所讀取時,會致使該機器製造用以執行此處所述技術之邏輯。被稱為「IP核心」的如是代表係可被儲存在一有形機器可讀媒體上,且被供應至不同顧客或製造設備以載入到真正製作該邏輯或處理器之製造機器中。
如是機器可讀儲存媒體可包含但不限於由一機器或裝置所製造或形成之非過渡、有形配置的物品,其包含儲存媒體諸如硬碟,任何其他類型的碟片包含軟碟、光學碟片、光碟唯讀記憶體(CD-ROMs)、可抹寫式光碟(CD-RWs)及磁光碟片,半導體裝置諸如唯讀記憶體(ROMs),隨機存取記憶體(RAMs)諸如動態隨機存取記憶體(DRAMs),靜態隨機存取記憶體(SRAMs),可抹除可程式化唯讀記憶體(EPROMs),快閃記憶體,電子可抹除可程式化唯讀記憶體(EEPROMs),磁性或光學卡,或適合用於儲存電子指令之任何其他類型的媒體。
據此,本發明實施例包含非過渡性有形機器可讀媒體,其包含指令或包含設計資料,諸如硬體描述語言(HDL),其定義此處所述之結構、電路、裝置、處理器及/或系統特性。如是實施例亦可被參照作為程式產品。
是以,用於執行一或更多依據至少一實施例之指令的技術係被揭露。雖然某些示範實施例已被敘述且顯示在附隨圖式中,應被了解的是,如是實施例僅為例示性且並不限制廣泛的發明,且本發明並不被限於所顯示及敘述之特定構成及配置,因為技術領域中具有通常知識者在研讀此揭露範圍後,不同的其他修改可發生。在成長很迅速且進一步進展並不容易被預知之諸如此之技術領域中,在不背離本揭露範圍的原則或附隨申請專利範圍的範圍下被揭露的實施例可在配置及細節上被輕易地修改,藉由允用技術性進展來被製造。

Claims (27)

  1. 一種方法,其包含:自碼頁提取指令;參照指令轉譯後備緩衝器(iTLB)來決定任何特定的碼頁是否為原始的;以及對於自原始碼頁提取的每個指令:決定該被提取指令是否為原始碼的新碼頁的第一指令;參照該iTLB來決定該原始碼頁是否不宜用於經轉譯碼頁;當該被提取指令係新碼頁的第一指令且該原始碼頁係不宜用,則自該經轉譯碼頁提取下一指令;以及當該被提取指令不是新碼頁的第一指令或該原始碼頁並非不宜用,則解碼該指令並自該原始碼頁提取該下一指令。
  2. 如申請專利範圍第1項之方法,其中該原始碼頁及該經轉譯碼頁係藉由該指令轉譯後備緩衝器(iTLB)來被對映。
  3. 如申請專利範圍第2項之方法,其中該經轉譯碼頁係被儲存在與該原始碼頁的上下文平行之上下文中。
  4. 如申請專利範圍第2項之方法,其中該iTLB具有用於各個碼頁的標籤位元,其係用以指示碼頁係原始碼頁或經轉譯碼頁。
  5. 如申請專利範圍第4項之方法,其中該iTLB具有 用於各個原始碼頁的資料位元,其係用以指示原始碼頁是否不宜用,以及其中該資料位元和該標籤位元係作為單獨的位元儲存在該iTLB中。
  6. 如申請專利範圍第1項之方法,其中各個經轉譯碼頁係包含位於頁面入口的第一獨特識別符,以及位於經轉譯碼的部份的入口點的第二獨特識別符。
  7. 如申請專利範圍第6項之方法,其中該等第一及第二獨特識別符係將被解碼器所擠壓(squashed)的NOP指令。
  8. 如申請專利範圍第7項之方法,其更進一步包含:決定自該經轉譯碼頁被提取的該下一指令是否為NOP指令;當自該經轉譯碼頁被提取的該下一指令被決定是NOP指令,則繼續自該經轉譯碼頁提取指令,直到轉換回到該原始碼頁的跳越指令;以及當自該經轉譯碼頁被提取的該下一指令被決定不是NOP指令,則恢復自該原始碼頁提取。
  9. 如申請專利範圍第1項之方法,其中該原始碼頁及該經轉譯碼頁均被儲存在頁表中。
  10. 一種處理器,其包含:用以於碼頁中儲存指令的電路;用以自該碼頁提取指令的邏輯;用以藉由參照指令轉譯後備緩衝器(iTLB)來決定任何特定的碼頁是否為原始的之邏輯;以及 邏輯,其用以對於自原始碼頁提取的每個指令:決定該被提取指令是否為原始碼的新碼頁的第一指令;參照該iTLB來決定該原始碼頁是否不宜用於經轉譯碼頁;當決定該被提取指令係新碼頁的第一指令且該原始碼頁係不宜用時,則自該經轉譯碼頁提取下一指令;以及當決定該被提取指令不是新碼頁的第一指令或該原始碼頁並非不宜用時,則解碼該指令並自該原始碼頁提取該下一指令。
  11. 如申請專利範圍第10項之處理器,其中該原始碼頁及該經轉譯碼頁係藉由指令轉譯後備緩衝器(iTLB)來被對映。
  12. 如申請專利範圍第11項之處理器,其中該經轉譯碼頁係被儲存在與該原始碼頁的上下文平行之上下文中。
  13. 如申請專利範圍第11項之處理器,其中該iTLB具有用於各個碼頁的標籤位元,其係用以指示碼頁係原始碼頁或經轉譯碼頁。
  14. 如申請專利範圍第13項之處理器,其中該iTLB具有用於各個原始碼頁的資料位元,其係用以指示原始碼頁是否不宜用,以及其中該資料位元和該標籤位元係作為單獨的位元儲存在該iTLB中。
  15. 如申請專利範圍第10項之處理器,其中各個經轉 譯碼頁係包含位於頁面入口的第一獨特識別符,以及位於經轉譯碼的部份的入口點的第二獨特識別符。
  16. 如申請專利範圍第15項之處理器,其中該等第一及第二獨特識別符係將被解碼器所擠壓的NOP指令。
  17. 如申請專利範圍第16項之處理器,其進一步包含:用以決定自該經轉譯碼頁被提取的該下一指令是否為NOP指令的邏輯;當自該經轉譯碼頁被提取的該下一指令被決定是NOP指令,用以繼續自該經轉譯碼頁提取指令直到轉換回到該原始碼頁的跳越指令的邏輯;以及當自該經轉譯碼頁被提取的該下一指令被決定不是NOP指令,用以恢復自該原始碼頁提取的邏輯。
  18. 如申請專利範圍第10項之處理器,其中該原始碼頁及該經轉譯碼頁均被儲存在頁表中。
  19. 一種系統,其包含:儲存器,用以儲存複數指令;以及處理器,用以執行該等指令以執行包含下列步驟的方法:自碼頁提取指令;參照指令轉譯後備緩衝器(iTLB)來決定任何特定的碼頁是否為原始的;以及對於自原始碼頁提取的每個指令:決定該被提取指令是否為原始碼的新碼頁的 第一指令;參照該iTLB來決定該原始碼頁是否不宜用於經轉譯碼頁;當該被提取指令係新碼頁的第一指令且該原始碼頁係不宜用,則自該經轉譯碼頁提取下一指令;以及當該被提取指令不是新碼頁的第一指令或該原始碼頁並非不宜用,則解碼該指令並自該原始碼頁提取該下一指令。
  20. 如申請專利範圍第19項之系統,其中該原始碼頁及該經轉譯碼頁係藉由指令轉譯後備緩衝器(iTLB)來被對映。
  21. 如申請專利範圍第20項之系統,其中該經轉譯碼頁係被儲存在與該原始碼頁的上下文平行之上下文中。
  22. 如申請專利範圍第20項之系統,其中該iTLB具有用於各個碼頁的標籤位元,其係用以指示碼頁係原始碼頁或經轉譯碼頁。
  23. 如申請專利範圍第22項之系統,其中該iTLB具有用於各個原始碼頁的資料位元,其係用以指示原始碼頁是否不宜用,以及其中該資料位元和該標籤位元係作為單獨的位元儲存在該iTLB中。
  24. 如申請專利範圍第19項之系統,其中各個經轉譯碼頁係包含位於頁面入口的第一獨特識別符,以及位於經轉譯碼的部份的入口點的第二獨特識別符。
  25. 如申請專利範圍第24項之系統,其中該等第一及 第二獨特識別符係將被解碼器所擠壓的NOP指令。
  26. 如申請專利範圍第25項之系統,其中該方法更進一步包含:決定自該經轉譯碼頁被提取的該下一指令是否為NOP指令;當自該經轉譯碼頁被提取的該下一指令被決定是NOP指令,則繼續自該經轉譯碼頁提取指令,直到轉換回到該原始碼頁的跳越指令;以及當自該經轉譯碼頁被提取的該下一指令被決定不是NOP指令,則恢復自該原始碼頁提取。
  27. 如申請專利範圍第19項之系統,其中該原始碼頁及該經轉譯碼頁均被儲存在頁表中。
TW101135614A 2011-09-30 2012-09-27 用以控制部分二進制轉譯系統中之轉換的指令及邏輯 TWI620125B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
PCT/US2011/054355 WO2013048460A1 (en) 2011-09-30 2011-09-30 Instruction and logic to control transfer in a partial binary translation system
??PCT/US11/54355 2011-09-30

Publications (2)

Publication Number Publication Date
TW201322132A TW201322132A (zh) 2013-06-01
TWI620125B true TWI620125B (zh) 2018-04-01

Family

ID=47996192

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101135614A TWI620125B (zh) 2011-09-30 2012-09-27 用以控制部分二進制轉譯系統中之轉換的指令及邏輯

Country Status (3)

Country Link
US (1) US9652234B2 (zh)
TW (1) TWI620125B (zh)
WO (1) WO2013048460A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
WO2013048468A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US9032381B2 (en) 2012-06-29 2015-05-12 Intel Corporation State recovery methods and apparatus for computing platforms
CN105518622B (zh) 2013-09-26 2019-08-27 英特尔公司 验证动态二进制转换器中转换的来宾代码的方法和设备
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9652268B2 (en) * 2014-03-28 2017-05-16 Intel Corporation Instruction and logic for support of code modification
WO2016004185A1 (en) * 2014-07-02 2016-01-07 OptCTS, Inc. Data recovery utilizing optimized code table signaling
DE102016203283A1 (de) * 2016-02-29 2017-08-31 Robert Bosch Gmbh Verfahren zum Betreiben eines Mikroprozessors
CN106873944A (zh) * 2016-12-23 2017-06-20 北京北大众志微系统科技有限责任公司 在动态二进制翻译系统中处理间接转移指令的方法和装置
CN111142940B (zh) * 2019-12-23 2023-06-30 成都海光微电子技术有限公司 处理器与软件的适配方法、装置、处理器、芯片和设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6678815B1 (en) * 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
US20040122800A1 (en) * 2002-12-23 2004-06-24 Nair Sreekumar R. Method and apparatus for hardware assisted control redirection of original computer code to transformed code
US20050086451A1 (en) * 1999-01-28 2005-04-21 Ati International Srl Table look-up for control of instruction execution
US20060282839A1 (en) * 2005-06-13 2006-12-14 Hankins Richard A Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers
US20110153307A1 (en) * 2009-12-23 2011-06-23 Sebastian Winkel Transitioning From Source Instruction Set Architecture (ISA) Code To Translated Code In A Partial Emulation Environment

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6185669B1 (en) * 1999-02-18 2001-02-06 Hewlett-Packard Company System for fetching mapped branch target instructions of optimized code placed into a trace memory
US6594734B1 (en) * 1999-12-20 2003-07-15 Intel Corporation Method and apparatus for self modifying code detection using a translation lookaside buffer
US7406613B2 (en) * 2004-12-02 2008-07-29 Qualcomm Incorporated Translation lookaside buffer (TLB) suppression for intra-page program counter relative or absolute address branch instructions
US7543119B2 (en) * 2005-02-10 2009-06-02 Richard Edward Hessel Vector processor
US7509472B2 (en) * 2006-02-01 2009-03-24 Sun Microsystems, Inc. Collapsible front-end translation for instruction fetch
US8190652B2 (en) * 2007-12-06 2012-05-29 Intel Corporation Achieving coherence between dynamically optimized code and original code
US20100274972A1 (en) 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US20050086451A1 (en) * 1999-01-28 2005-04-21 Ati International Srl Table look-up for control of instruction execution
US6678815B1 (en) * 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
US20040122800A1 (en) * 2002-12-23 2004-06-24 Nair Sreekumar R. Method and apparatus for hardware assisted control redirection of original computer code to transformed code
US20060282839A1 (en) * 2005-06-13 2006-12-14 Hankins Richard A Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers
US20110153307A1 (en) * 2009-12-23 2011-06-23 Sebastian Winkel Transitioning From Source Instruction Set Architecture (ISA) Code To Translated Code In A Partial Emulation Environment

Also Published As

Publication number Publication date
WO2013048460A1 (en) 2013-04-04
TW201322132A (zh) 2013-06-01
US9652234B2 (en) 2017-05-16
US20130305019A1 (en) 2013-11-14

Similar Documents

Publication Publication Date Title
TWI620125B (zh) 用以控制部分二進制轉譯系統中之轉換的指令及邏輯
TWI731893B (zh) 具有載入索引和預提取聚集操作之處理器、方法及系統
JP6207095B2 (ja) 条件付きループをベクトル化する命令及び論理
JP6227621B2 (ja) 複数の試験ソースに対するor試験及びand試験機能を提供するために命令をフュージングする方法及び装置
TWI730016B (zh) 用於跨步分散運算的指令與邏輯的處理器、方法及系統
KR101842058B1 (ko) 푸싱형 버퍼 복사 및 저장 기능성을 제공하기 위한 명령어 및 논리
CN107092465B (zh) 用于提供向量混合和置换功能的指令和逻辑
US20130283249A1 (en) Instruction and logic to perform dynamic binary translation
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
US9262327B2 (en) Signature based hit-predicting cache
TWI697788B (zh) 用以提供向量包裝之直方圖功能的方法,裝置,指令及邏輯
US9459871B2 (en) System of improved loop detection and execution
TWI715681B (zh) 用於位元欄位位址和插入之指令及邏輯
TWI720056B (zh) 用於設置多重向量元素操作之指令及邏輯
KR102296619B1 (ko) 계산 처리를 위한 벡터 포맷용 명령어 및 로직
JP2018504667A (ja) ベクトルパックドタプル相互比較機能を提供する方法、装置、命令、およびロジック
US9189240B2 (en) Split-word memory
US10157063B2 (en) Instruction and logic for optimization level aware branch prediction
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
KR101898791B1 (ko) 멀티 스트랜드 비순차 프로세서에서 회수를 위한 명령어들을 식별하는 명령어 및 로직
US20160283504A1 (en) Apparatus for Hardware Implementation of Lossless Data Compression
TWI773652B (zh) 在處理器中進行立即資料的收合之技術
WO2018005718A1 (en) System and method for out-of-order clustered decoding
TW201732549A (zh) 用於壓縮與旋轉的指令和邏輯
JP6231155B2 (ja) ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック