CN111679857B - 高效能复杂指令译码的微处理器 - Google Patents
高效能复杂指令译码的微处理器 Download PDFInfo
- Publication number
- CN111679857B CN111679857B CN202010541910.6A CN202010541910A CN111679857B CN 111679857 B CN111679857 B CN 111679857B CN 202010541910 A CN202010541910 A CN 202010541910A CN 111679857 B CN111679857 B CN 111679857B
- Authority
- CN
- China
- Prior art keywords
- instruction
- complex
- microcode
- instructions
- memory
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
- 230000004927 fusion Effects 0.000 claims abstract description 27
- 238000001514 detection method Methods 0.000 claims description 20
- 230000010485 coping Effects 0.000 claims description 4
- 210000004027 cell Anatomy 0.000 claims 21
- 210000000352 storage cell Anatomy 0.000 claims 2
- 238000000034 method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- RFHAOTPXVQNOHP-UHFFFAOYSA-N fluconazole Chemical compound C1=NC=NN1CC(C=1C(=CC(F)=CC=1)F)(O)CN1C=NC=N1 RFHAOTPXVQNOHP-UHFFFAOYSA-N 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
- G06F9/3881—Arrangements for communication of instructions and data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请提出一种高效能复杂指令译码的微处理器。一微处理器包括一指令队列、一指令译码器、以及一微码控制器。该指令译码器耦接该指令队列。该微码控制器耦接该指令译码器且具有一存储器。该存储器存储以一特定顺序排列的M条复杂指令的一融合微码,M为大于1的整数。指令队列的第一至第M个存储格遵循该特定顺序队列上述M条复杂指令并将之弹出时,该指令译码器令该微码控制器单一次陷入微码读取,读取该存储器存储的该融合微码。
Description
技术领域
本申请涉及微处理器架构,特别涉及复杂指令译码。
背景技术
微处理器通常以只读存储器(ROM)存储复杂指令的微码,期以节省译码器硬件成本。但只读存储器的存取仍有一定的时间成本:陷入(trap)微码读取需承担陷入延时。如何高效应付复杂指令陷入延时为本技术领域一项重要课题。
发明内容
本申请提出多条复杂指令的融合技术,将多条复杂指令的微码融合存储在微码控制器的存储器中,使原本多次陷入(trap)微码读取的状况,精简为仅单一次陷入微码读取。微处理器效能大幅提升。
根据本申请一种实施方式实现的一微处理器包括一指令队列、一指令译码器、以及一微码控制器。该指令译码器耦接该指令队列。该微码控制器耦接该指令译码器且具有一存储器。该存储器存储以一特定顺序排列的M条复杂指令的一融合微码,M为大于1的整数。指令队列的第一至第M个存储格遵循该特定顺序队列上述M条复杂指令并将之弹出时,该指令译码器令该微码控制器单一次陷入微码读取,读取该存储器存储的该融合微码。
一种实施方式中,还包括界线微指令用于在该融合微码中区隔上述M条复杂指令的个体微码,并应付中断要求。
一种实施方式中,微处理器还包括一检测电路。检测到上述第一至第M个存储格弹出以该特定顺序队列的上述M条复杂指令时,该检测电路提供一指令略过信号给该指令队列,使上述M条复杂指令中,除已交给译码的第一条复杂指令外的第二至第M条复杂指令自该指令队列删除。
一种实施方式中,微处理器还包括一陷入决定电路。检测到上述第一至第M个存储格弹出以该特定顺序队列的上述M条复杂指令时,该检测电路藉一型式信号指示该陷入决定电路操作该微码控制器,使该微码控制器单一次陷入微码读取,自该存储器读取该融合微码。
一种实施方式中,该存储器存储一第一融合微码以及一第二融合微码。该第一融合微码对应一第一复杂指令以及紧接该第一复杂指令的一第二复杂指令。该第二融合微码对应该第二复杂指令以及紧接该第二复杂指令的一第三复杂指令。当该指令队列的存储格遵循顺序分别队列该第一以及第二复杂指令、且将之弹出时,该指令译码器令该微码控制器单一次陷入微码读取,读取该存储器存储的该第一融合微码。当该指令队列的存储格遵循顺序分别队列该第二以及第三复杂指令、且将之弹出时,该指令译码器令该微码控制器单一次陷入微码读取,读取该存储器存储的该第二融合微码。
一种实施方式中,该第一复杂指令为一系统调用程序的一系统呼叫指令,该第二复杂指令为该系统调用程序的一寄存器切换指令,且该第三复杂指令为该系统调用程序的一系统返还指令。连续使用该第一复杂指令以及该第二复杂指令用于进入该系统调用程序。连续使用该第二复杂指令以及该第三复杂指令用于离开该系统调用程序。
下文特举实施例,并配合所附图示,详细说明本发明内容。
附图说明
图1为根据本申请一种实施方式所实现的一微处理器100;
图2图解Syscall-Swapgs融合微码112、以及Swapgs-Sysret融合微码114的结构;
图3为时序图,图解传统技术与本申请差异;
图4根据本申请一种实施方式图解一微处理器400;
图5图解根据本申请一种实施方式实现的一微处理器500;以及
图6为时序图,图解传统技术与本申请差异。
【符号说明】
100、400、500~微处理器;
102、402、502~指令队列;
104、404、504~指令译码器;
106、406、506~微码控制器;
108、408~检测电路;
110、410、510~存储器;
112~Syscall-Swapgs融合微码;
114~Swapgs-Sysret融合微码;
116~Syscall个体微码;
118~Swapgs个体微码;
120~Sysret个体微码;
122、422、522~复杂指令译码器;
124、126、128、524、526、528~简单指令译码器;
130、132、134以及136~子译码器;
138、438、538~陷入决定电路;
140、440~指令略过信号;
142、442~型式信号;
202~Syscall个体微码;
204~Swapgs个体微码;
206~Swapgs个体微码;
208~Sysret个体微码;
302~传统技术的微码读取时序;
304、306~两次陷入微码读取;
308~本申请融合微码的微码读取时序;
412~融合微码;
416_1至416_M~第一至第M个体微码;
508~译码控制电路;
550~扩位译码控制电路;
552~暂存器;
554~(微指令数量)信号;
556~暂停信号;
558~(指令I1类型)信号;
602~传统技术的复杂指令译码时序;
604~本申请硬件扩位的复杂指令译码时序;
D1…Dn、D1-1…D1-8~微指令;
End_Lastclk~界线微指令;
Entry1、…EntryM、…Entryn~存储格;
I1、…IM、…In~存储格弹出的指令;
M1…Mn~微指令;
Mux1、Mux2~多工器;
U1…U4~微指令。
具体实施方式
以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照权利要求书界定。
以下列举多种微处理器架构,使得复杂指令的译码得以低成本且高效完成。
图1为根据本申请一种实施方式所实现的一微处理器100,其中包括一指令队列102、一指令译码器104、一微码控制器106以及一检测电路108。指令译码器104耦接该指令队列102。微码控制器106耦接该指令译码器104且具有一存储器110。该存储器110可为只读存储器(ROM),其中对应微处理器100的复杂指令集烧录有多段微码。
除了单条复杂指令有相应的个体微码,本申请更提出多条复杂指令的融合技术。本申请将多条复杂指令的微码融合,并将融合微码存储在微码控制器106的存储器110中,应付该等复杂指令的译码。传统技术因应多条复杂指令需多次陷入(trap)微码读取,陷入延时累积起来相当可观。本申请融合微码只要单一次陷入微码读取就可以获得。微处理器100效能大幅提升。
以下实施例特别讨论一系统调用程序(例如,用户栈呼叫系统栈)所涉及的三条复杂指令:系统呼叫指令Syscall;寄存器切换指令Swapgs;以及系统返还指令Sysret。寄存器切换指令Swapgs一般用于保护用户栈和系统栈的栈指针。连续使用系统呼叫指令Syscall以及寄存器切换指令Swapgs(“Syscall+Swapgs”指令序列)可进入该系统调用程序。连续使用寄存器切换指令Swapgs以及系统返还指令Sysret(“Swapgs+Sysret”指令序列)可离开该系统调用程序。在微处理器100运作上,“Syscall+Swapgs”以及“Swapgs+Sysret”指令序列相当常见,首选作融合微码。
本申请为“Syscall+Swapgs”指令序列在存储器110烧录一Syscall-Swapgs融合微码112,并为“Swapgs+Sysret”指令序列在该存储器110烧录一Swapgs-Sysret融合微码114。融合微码虽然相应多条复杂指令,却只单一次陷入微码读取,陷入延时有效降低。纵然存储器110依旧为系统呼叫指令Syscall烧录有Syscall个体微码116,为寄存器切换指令Swapgs烧录有Swapgs个体微码118,为系统返还指令Sysret烧录有Sysret个体微码120,但仅用来应付非以“Syscall+Swapgs”、“Swapgs+Sysret”指令序列出现的状况。
图2图解Syscall-Swapgs融合微码112、以及Swapgs-Sysret融合微码114的结构。Syscall-Swapgs融合微码112以界线微指令End_Lastclk区隔Syscall个体微码202以及Swapgs个体微码204。Swapgs-Sysret融合微码114以界线微指令End_Lastclk区隔Swapgs个体微码206以及Sysret个体微码208。界线微指令End_Lastclk更用于应付中断要求,响应其前方微指令执行时发生的中断要求。
回到图1,以下说明各硬件的运作。
微处理器100的流水线宽度为4。指令译码器104包括一复杂指令译码器122、以及三个简单指令译码器124、126以及128。复杂指令译码器122包括四个子译码器130、132、134以及136、以及一陷入决定电路138。复杂指令译码器122接收指令队列102第一个存储格Entry1弹出的指令I1。简单指令译码器124、126、128分别接收第二至第四个存储格Entry2至Entry4弹出的指令I2至I4。检测电路108检测指令I1以及I2,判断其是否为“Syscall+Swapgs”、或“Swapgs+Sysret”指令序列,以进行本申请为如此特定指令序列所提供的译码程序。
检测到指令I1以及I2为”Syscall+Swapgs”、或”Swapgs+Sysret”指令序列时,检测电路108提供一指令略过信号140给指令队列102,使弹出的指令I2(寄存器切换指令Swapgs或系统返还指令Sysret)不进入第一个存储格Entry1,而是自该指令队列102删除。如此一来,指令队列102的状况确实反映“Syscall+Swapgs”指令序列(或“Swapgs+Sysret”指令序列)是一起译码。指令I1是交由复杂指令译码器122的子译码器130、132、134以及136译出头四条微指令D1、D2、D3以及D4。指令I1以及I2的其余译码则是由融合微码提供。如图所示,检测电路108藉一型式信号142指示该陷入决定电路138操作该微码控制器106单一次陷入微码读取,自该存储器110读出该型式信号142相应的融合微码。
一种实施方式中,指令I1以及I2为“Syscall+Swapgs”指令序列时,复杂指令译码器122接收系统呼叫指令Syscall,其中子译码器130、132、134以及136译出系统呼叫指令Syscall头四条微指令D1~D4。检测电路108令该型式信号142为“01”,代表所检测到的“Syscall+Swapgs”指令序列。相应地,陷入决定电路138操作该微码控制器106,使该微控制器106单一次陷入微码读取,自该存储器110读取Syscall-Swapgs融合微码112。“Syscall+Swapgs”指令序列剩余的微指令就是由该Syscall-Swapgs融合微码112提供,在接续周期呈微指令码M1~M4输出。执行第一个周期输出的微指令D1~D4以及接续周期输出的多组M1~M4,用户栈进入该系统调用程序。
一种实施方式中,指令I1以及I2为“Swapgs+Sysret”指令序列时,复杂指令译码器122接收寄存器切换指令Swapgs,其中子译码器130、132、134以及136译出寄存器切换指令Swapgs头四条微指令D1~D4。检测电路108令该型式信号142为“11”,代表所检测到的“Swapgs+Sysret”指令序列。相应地,陷入决定电路138操作该微码控制器106,使该微控制器106单一次陷入微码读取,自该存储器110读取Swapgs-Sysret融合微码114。“Swapgs+Sysret”指令序列剩余的微指令就是由该Swapgs-Sysret融合微码114提供,在接续周期呈微指令码M1~M4输出。执行第一个周期输出的微指令D1~D4以及接续周期输出的多组M1~M4,用户栈离开该系统调用程序。
图3为时序图,图解传统技术与本申请差异。传统技术的微码读取时序302两次陷入微码读取(标号304与306),须面对两段陷入延时。本申请融合微码(如,Syscall-Swapgs融合微码112、Swapgs-Sysret融合微码114)的微码读取时序308则只单一次陷入微码读取,只有单段陷入延时,显著改善微处理器100效能。
本申请不限定融合的复杂指令数量。一融合微码可以对应以一特定顺序排列的M条复杂指令。M为大于1的整数。不论是由多少条复杂指令融合,一融合微码只单一次陷入微码读取就可以获得。本申请微处理器流水线宽度也不限定,为整数n。
图4根据本申请一种实施方式图解一微处理器400,包括一指令队列402、一指令译码器404、以及一微码控制器406。指令译码器404耦接该指令队列402。微码控制器406耦接该指令译码器404且具有一存储器410。该存储器410存储以一特定顺序排列的M条复杂指令的一融合微码412,M为大于1的整数。该指令队列402的第一至第M个存储格Entry1至EntryM遵循该特定顺序队列上述M条复杂指令并将之弹出(为I1至IM)时,该指令译码器404令该微码控制器406单一次陷入微码读取,读取该存储器410存储的该融合微码412。该存储器410更分开存储上述M条复杂指令的个体微码,分别为第一至第M个体微码416_1至416_M,各自对应一次陷入微码读取。该特定顺序的队列不成立时,该微码控制器406是以分开存储的第一至第M个体微码416_1至416_M响应上述M条复杂指令。
检测电路408检测上述第一至第M个存储格Entry1至EntryM弹出的指令I1至IM是否为该特定顺序队列的上述M条复杂指令。若是,该检测电路408提供一指令略过信号440给该指令队列402,使上述M条复杂指令中,除已交给译码的第一条复杂指令外的第二至第M条复杂指令自该指令队列402删除。
该指令译码器404包括一复杂指令译码器422,耦接该指令队列402的第一个存储格Entry1。上述第一至第M个存储格Entry1至EntryM弹出的指令I1至IM为该特定顺序队列的上述M条复杂指令时,该复杂指令译码器422译出头n条微指令(D1至Dn),且上述M条复杂指令的剩余微指令由该微码控制器406单一次陷入微码读取,自该融合微码412获得。在接续周期中以微指令M1至Mn输出。
该指令译码器422还包括一陷入决定电路438。上述第一至第M个存储格Entry1至EntryM弹出的指令I1至IM为该特定顺序队列的上述M条复杂指令时,该检测电路408藉一型式信号442指示该陷入决定电路438操作该微码控制器406,使该微控制器406单一次陷入微码读取,自该存储器读410取该融合微码412。
凡多条复杂指令融合的融合微码,将多次陷入微码读取,调整成单一次陷入微码读取,都属于本申请技术范围。
更有其他实施方式并不限定只使用单一个复杂指令译码器。指令译码器可有多个复杂指令译码器。
以下更介绍另一种微处理器架构,其中以复杂指令译码器的硬件扩位,使得复杂指令的译码得以高效完成。
图5图解根据本申请一种实施方式实现的一微处理器500,包括一指令队列502、以及一指令译码器504。该指令译码器504耦接该指令队列502、且包括一复杂指令译码器522。该微处理器500的流水线宽度为4。该复杂指令译码器522包括8个子译码器,子译码器数量(8)两倍于该微处理器500的流水线宽度(4)。如此架构下,微指令数量8条以内的短复杂指令可以由复杂指令译码器522以硬件快速应付。微处理器500也包括一微码控制器506,其中一存储器510存储微指令数量超过8条的长复杂指令的微码。本实施例令超过8条微指令的长复杂指令才陷入存储器510微码读取。
如图所示,该指令译码器504还包括一陷入决定电路538,根据指令I1类型决定是否陷入存储器510的微码读取。指令I1为微指令数量超过8的长指令时,陷入决定电路538方操作该微码控制器506陷入微码读取。指令I1为微指令数量不超过8的短指令时,陷入决定电路538略去操作该微码控制器506进行陷入微码读取。
所示8个子译码器中,每4个子译码器为一组,不同组运作的周期不同。例如,前四个子译码器是在第一周期译出四条微指令D1-1…D1-4,后四个子译码器是在第二周期译出四条微指令D1-5…D1-8。相应如此扩位的复杂指令译码器522,微处理器500还包括硬件设计:一译码控制电路508(或称pair电路、或称检测电路);一扩位译码控制电路550;一暂存器552;以及两个多工器Mux1以及Mux2。
译码控制电路508在该指令队列502的第一个存储格Entry1弹出的指令I1为复杂指令时,判断该复杂指令(I1)的一微指令数量,并以信号554将该微指令数量传递给该扩位译码控制电路550。该扩位译码控制电路550在该微指令数量(554)大于4、且不超过8时,输出一暂停信号556至该指令队列502,令该指令队列502暂停弹出指令,直至该复杂指令译码器522完成该复杂指令(I1)的译码。
举例说明,指令I1为涉及八条微指令的复杂指令时,复杂指令译码器522在第一周期操作头四个子译码器译出四条微指令D1-1…D1-4,并在第二周期译出操作另外四个子译码器译出四条微指令D1-5…D1-8。指令I1的硬件译码需要两个周期。相应地,该扩位译码控制电路550即以暂停信号556使指令队列502暂停第二周期的指令弹出,使复杂指令译码器522第一周期以及第二周期是对同一条复杂指令译码两段微指令(第一周期的微指令D1-1…D1-4、以及第二周期的微指令D1-5…D1-8),在第三周期才进入下一条指令的译码。
指令译码器504以硬件译出的微指令则是以多工器Mux1、Mux2适时输出为微指令U1至U4。
首先讨论第一存储格Entry1弹出指令I1为微指令数量8的复杂指令的状况。第一周期,该复杂指令译码器522的第一至第四个子译码器译出的微指令D1-1至D1-4由多工器Mux1作为微处理器M1至M4输入多工器Mux2,再由多工器Mux2输出为微指令U1至U4。第二周期,该复杂指令译码器522的第五至第八个子译码器译出的微指令D1-5至D1-8由多工器Mux2输出为微指令U1至U4。复杂指令译码器522的硬件扩位成功运作。
图示指令译码器504还包括三个简单指令译码器524、526以及528。该指令队列502的第一至第四个存储格Entry1至Entry4弹出的四条指令I1至I4为简单指令时,该复杂指令译码器522的第一个子译码器、以及上述三个简单指令译码器524、526以及528在同一周期运作,译出四条微指令D1-1、D2、D3以及D4。由多工器Mux1作为微处理器M1至M4输入多工器Mux2,再由多工器Mux2输出为微指令U1至U4。微处理器500也完全可以应付简单指令的译码。至于非连续四个为简单指令的例子,也完全可由微处理器500架构应付。例如,若只有指令I1以及I2为简单指令,该复杂指令译码器522的第一个子译码器、以及第一个简单指令译码器524在同一周期运作,译出两条微指令D1-1以及D2,由多工器Mux1作为微处理器M1以及M2输入多工器Mux2,再由多工器Mux2输出为微指令U1以及U2。
如图所示,多工器Mux1可由译码控制电路508以信号558设定。译码控制电路508将辨识出指令I1至I4类型(复杂指令或简单指令),以信号558控制多工器Mux1运作。
多工器Mux2则是由暂存器552操作。暂存器552由该扩位译码控制电路550填写。该暂存器552初始为一第一值。根据存储该第一值的该暂存器552,该多工器Mux2选择微指令M1至M4为微指令U1至U4输出。该第一个存储格Entry1弹出的指令I1为一复杂指令、且该复杂指令的一微指令数量大于4、且不超过8时,该扩位译码控制电路550令该暂存器552在接续一第一周期的一第二周期为一第二值。根据存储该第二值的该暂存器552,该多工器Mux2选择微指令D1-5…D1-8为微指令U1至U4输出。
藉由复杂指令译码器522的硬件扩位,纵使微处理器500的运算位宽有限(例如,为128位)、而指令队列502所队列为位宽256位的复杂指令,微处理器500也能高效完成指令译码。即使运算拆位(以两个128位运算完成256位宽运算)使得一复杂指令的微指令数量加倍,复杂指令译码器522扩位的硬件就能完成译码,无须陷入存储器510微码读取。
一种实施方式中,硬件运算位宽有限只有128位。256位的运算涉及两条128位存储器读取微指令、两条128位运算微指令,以及两条128位回存微指令,微指令数量加倍,由三条因应拆位变成六条。然而,本申请硬件扩位的复杂指令译码器522有能力译出八条微指令。因此,流程完全不陷入存储器510微码读取。
在其他实施方式中,流水线宽度不限定为4,可为整数n。甚至,复杂指令译码器的扩位不限定为两倍于流水线宽度。复杂指令译码器可具有k个子译码器,k大于n,且为n的整数倍。迭加多工器即可应付更大量扩位的例子。
图6为时序图,图解传统技术与本申请差异。所处理的复杂指令的微指令数量为2n,两倍于流水线宽度n。
时序602对应传统未硬件扩位的复杂指令译码器,必然陷入微码读取。微指令1至微指令n在一周期硬件译码出后,剩余n条微指令(微指令n+1至微指令2n)需陷入微码读取,经陷入延时后方从微码控制器的存储器取出。
时序604对应本申请硬件扩位的复杂指令译码器,完全不陷入微码读取。微指令1至微指令n在一周期硬件译码出后,剩余n条微指令(微指令n+1至微指令2n)在接续周期同样以硬件译码获得。陷入延时完美消除。
虽然本发明已以优选实施例公开如上,然其并非用以限定本发明,本领域技术人员在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附权利要求书界定范围为准。
Claims (18)
1.一种微处理器,包括:
指令队列;
指令译码器,耦接该指令队列;以及
微码控制器,耦接该指令译码器且具有存储器,该存储器存储以特定顺序排列的M条复杂指令的融合微码,M为大于1的整数;
其中,当该指令队列的第一至第M个存储格遵循该特定顺序排列上述M条复杂指令并将之弹出时,该指令译码器对所述M条复杂指令中的头n条微指令进行解码,并且该指令译码器控制该微码控制器从该存储器存储的该融合微码读取所述M条复杂指令中的剩余微指令,其中n是代表流水线宽度的数字。
2.如权利要求1所述的微处理器,其中:
界线微指令用于在该融合微码中区隔上述M条复杂指令的个体微码,并应付中断要求。
3.如权利要求1所述的微处理器,其中:
该存储器还分开存储上述M条复杂指令的个体微码;和
其中当该指令队列的第一至第M个存储格弹出以该特定顺序排列的上述M条复杂指令时,该指令译码器操作该微码控制器以读取该存储器存储的该融合微码,而不是读取所述M条复杂指令中的每条复杂指令的个体微码。
4.如权利要求3所述的微处理器,其中:
该特定顺序的排列不成立时,该微码控制器是以分开存储的上述个体微码响应上述M条复杂指令。
5.如权利要求4所述的微处理器,还包括:
检测电路,检测上述第一至第M个存储格是否弹出以该特定顺序排列的上述M条复杂指令。
6.如权利要求5所述的微处理器,其中:
检测到上述第一至第M个存储格弹出以该特定顺序排列的上述M条复杂指令时,该检测电路提供指令略过信号给该指令队列,使上述M条复杂指令中,除已交给译码的第一条复杂指令外的第二至第M条复杂指令自该指令队列删除。
7.如权利要求6所述的微处理器,其中:
该指令译码器包括复杂指令译码器,耦接该指令队列的第一个存储格;
当上述第一至第M个存储格弹出以该特定顺序排列的上述M条复杂指令时,从该复杂指令译码器译出上述M条复杂指令中的头n条微指令。
8.如权利要求7所述的微处理器,其中:
该指令译码器还包括陷入决定电路;以及
当检测到上述第一至第M个存储格弹出以该特定顺序排列的上述M条复杂指令时,该检测电路通过型式信号指示该陷入决定电路操作该微码控制器,使该微码控制器从该存储器读取该融合微码。
9.一种微处理器,包括:
指令队列;
指令译码器,耦接该指令队列;以及
微码控制器,耦接该指令译码器且具有存储器,该存储器存储第一融合微码,该第一融合微码对应第一复杂指令以及紧接该第一复杂指令的第二复杂指令;
其中,当该指令队列的第一以及第二个存储格分别排列该第一以及第二复杂指令、且将之弹出时,该指令译码器对所述第一和第二复杂指令中的头n条微指令进行解码,并且该指令译码器控制该微码控制器从该存储器存储的该第一融合微码读取所述第一和第二复杂指令中的剩余微指令,其中n是代表流水线宽度的数字。
10.如权利要求9所述的微处理器,其中:
该存储器还存储第二融合微码,该第二融合微码对应该第二复杂指令以及紧接该第二复杂指令的第三复杂指令;
其中,该指令队列的上述第一以及第二个存储格分别排列该第二以及第三复杂指令、且将之弹出时,该指令译码器对所述第二和第三复杂指令中的头n条微指令进行解码,并且该指令译码器操作该微码控制器读取该存储器存储的该第二融合微码,以从所述第二融合代码获得所述第二和第三复杂指令中的剩余微指令。
11.如权利要求10所述的微处理器,其中:
界线微指令用于在该第一融合微码中区隔第一个体微码以及第二个体微码,其中,该第一个体微码对应该第一复杂指令,且该第二个体微码对应该第二复杂指令;
该界线微指令用于在该第二融合微码中区隔该第二个体微码以及第三个体微码,其中,该第三个体微码对应该第三复杂指令;且
上述界线微指令还用于应付中断要求。
12.如权利要求11所述的微处理器,其中:
该存储器还分开存储分别对应于该第一、该第二、以及该第三复杂指令的第一、第二、以及第三个体微码;
当上述第一以及第二个存储格分别弹出该第一以及第二复杂指令时,该指令译码器操作该微码控制器以读取该存储器存储的该第一融合微码,而不是读取所述第一个体微码和所述第二个体微码;和
当上述第一以及第二个存储格分别弹出该第二以及第三复杂指令时,该指令译码器操作该微码控制器以读取该存储器存储的该第二融合微码,而不是读取所述第二个体微码和所述第三个体微码。
13.如权利要求12所述的微处理器,其中:
当上述第一以及第二个存储格非分别弹出该第一以及第二复杂指令、也非分别弹出该第二以及第三复杂指令时,该微码控制器是以分开存储的该第一、该第二、或该第三个体微码响应该第一个存储格弹出的该第一、该第二、或该第三复杂指令。
14.如权利要求13所述的微处理器,还包括:
检测电路,检测上述第一以及第二个存储格是否分别弹出该第一复杂指令以及该第二复杂指令、或是否分别弹出该第二复杂指令以及该第三复杂指令。
15.如权利要求14所述的微处理器,其中:
检测到上述第一以及第二个存储格分别弹出该第一复杂指令以及该第二复杂指令、或分别弹出该第二复杂指令以及该第三复杂指令时,该检测电路提供指令略过信号给该指令队列,使该第二个存储格弹出的复杂指令不进入该第一个存储格。
16.如权利要求15所述的微处理器,其中:
该指令译码器包括复杂指令译码器,耦接该第一个存储格;
当上述第一以及第二个存储格分别弹出该第一复杂指令以及该第二复杂指令时,该复杂指令译码器译出该第一复杂指令以及该第二复杂指令的头n条微指令;且
当上述第一以及第二个存储格分别弹出该第二复杂指令以及该第三复杂指令时,该复杂指令译码器译出该第二复杂指令以及该第三复杂指令的头n条微指令。
17.如权利要求16所述的微处理器,其中:
该指令译码器还包括陷入决定电路;
当检测到上述第一以及第二个存储格分别弹出该第一复杂指令以及该第二复杂指令时,该检测电路通过型式信号指示该陷入决定电路操作该微码控制器,使该微码控制器从该存储器读取该第一融合微码;且
当检测到上述第一以及第二个存储格分别弹出该第二复杂指令以及该第三复杂指令时,该检测电路通过该型式信号指示该陷入决定电路操作该微码控制器,使该微码控制器从该存储器读取该第二融合微码。
18.如权利要求17所述的微处理器,其中:
该第一复杂指令为系统调用程序的系统呼叫指令;
该第二复杂指令为该系统调用程序的寄存器切换指令;
该第三复杂指令为该系统调用程序的系统返还指令;
连续使用该第一复杂指令以及该第二复杂指令用于进入该系统调用程序;且
连续使用该第二复杂指令以及该第三复杂指令用于离开该系统调用程序。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010541910.6A CN111679857B (zh) | 2020-06-15 | 2020-06-15 | 高效能复杂指令译码的微处理器 |
US16/984,339 US11366665B2 (en) | 2020-06-15 | 2020-08-04 | Microprocessor with high-efficiency decoding of complex instructions |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010541910.6A CN111679857B (zh) | 2020-06-15 | 2020-06-15 | 高效能复杂指令译码的微处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111679857A CN111679857A (zh) | 2020-09-18 |
CN111679857B true CN111679857B (zh) | 2024-01-23 |
Family
ID=72435958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010541910.6A Active CN111679857B (zh) | 2020-06-15 | 2020-06-15 | 高效能复杂指令译码的微处理器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11366665B2 (zh) |
CN (1) | CN111679857B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11500803B2 (en) * | 2019-09-03 | 2022-11-15 | Qorvo Us, Inc. | Programmable slave circuit on a communication bus |
CN115629807B (zh) * | 2022-10-31 | 2023-04-14 | 海光信息技术股份有限公司 | 多线程处理器的译码方法、处理器、芯片及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360317B1 (en) * | 1997-10-29 | 2002-03-19 | Advanced Micro Devices, Inc. | Predecoding multiple instructions as one combined instruction and detecting branch to one of the instructions |
CN1570856A (zh) * | 2003-12-15 | 2005-01-26 | 智慧第一公司 | 用以防止微处理器管线中的停滞的装置及方法 |
CN103699362A (zh) * | 2009-06-01 | 2014-04-02 | 威盛电子股份有限公司 | 微处理器及其执行的方法 |
CN108958798A (zh) * | 2018-06-15 | 2018-12-07 | 上海兆芯集成电路有限公司 | 指令翻译电路、处理器电路及其执行方法 |
CN111159094A (zh) * | 2019-12-05 | 2020-05-15 | 天津芯海创科技有限公司 | 一种基于risc-v的近数据流式计算加速阵列 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5075844A (en) * | 1989-05-24 | 1991-12-24 | Tandem Computers Incorporated | Paired instruction processor precise exception handling mechanism |
US6901505B2 (en) * | 2001-08-09 | 2005-05-31 | Advanced Micro Devices, Inc. | Instruction causing swap of base address from segment register with address from another register |
US9348587B2 (en) * | 2010-07-09 | 2016-05-24 | Hyperion Core, Inc. | Providing code sections for matrix of arithmetic logic units in a processor |
US9207940B2 (en) * | 2013-03-15 | 2015-12-08 | Intel Corporation | Robust and high performance instructions for system call |
-
2020
- 2020-06-15 CN CN202010541910.6A patent/CN111679857B/zh active Active
- 2020-08-04 US US16/984,339 patent/US11366665B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6360317B1 (en) * | 1997-10-29 | 2002-03-19 | Advanced Micro Devices, Inc. | Predecoding multiple instructions as one combined instruction and detecting branch to one of the instructions |
CN1570856A (zh) * | 2003-12-15 | 2005-01-26 | 智慧第一公司 | 用以防止微处理器管线中的停滞的装置及方法 |
CN103699362A (zh) * | 2009-06-01 | 2014-04-02 | 威盛电子股份有限公司 | 微处理器及其执行的方法 |
CN108958798A (zh) * | 2018-06-15 | 2018-12-07 | 上海兆芯集成电路有限公司 | 指令翻译电路、处理器电路及其执行方法 |
CN111159094A (zh) * | 2019-12-05 | 2020-05-15 | 天津芯海创科技有限公司 | 一种基于risc-v的近数据流式计算加速阵列 |
Also Published As
Publication number | Publication date |
---|---|
US20210389947A1 (en) | 2021-12-16 |
CN111679857A (zh) | 2020-09-18 |
US11366665B2 (en) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111679857B (zh) | 高效能复杂指令译码的微处理器 | |
US7366874B2 (en) | Apparatus and method for dispatching very long instruction word having variable length | |
US7958339B2 (en) | Instruction execution control device and instruction execution control method | |
US7451296B2 (en) | Method and apparatus for pausing execution in a processor or the like | |
CN1103960C (zh) | 在多级流水线结构中处理条件跳转的结构和方法 | |
JP3817268B2 (ja) | マルチコードブック可変長デコーダ | |
US20050081021A1 (en) | Automatic register backup/restore system and method | |
CN102053816A (zh) | 具有开关矩阵存储器的数据混洗单元及其混洗方法 | |
US9032188B2 (en) | Issue policy control within a multi-threaded in-order superscalar processor | |
CN111679856B (zh) | 高效能复杂指令译码的微处理器 | |
US8069335B2 (en) | Processing system and method for executing instructions | |
US20050149931A1 (en) | Multithread processor architecture for triggered thread switching without any cycle time loss, and without any switching program command | |
US20060149921A1 (en) | Method and apparatus for sharing control components across multiple processing elements | |
JPH07507888A (ja) | 命令高速解読パイプラインプロセッサ | |
US6308263B1 (en) | Pipeline processing apparatus for reducing delays in the performance of processing operations | |
US6230258B1 (en) | Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions | |
WO2011109476A1 (en) | System and method of processing hierarchical very long instruction packets | |
TWI344109B (en) | High efficient pipelined decompression method with no-wait time | |
JPH11345121A (ja) | プログラム制御ユニット用の命令取り出し装置および方法 | |
US20050160254A1 (en) | Multithread processor architecture for triggered thread switching without any clock cycle loss, without any switching program instruction, and without extending the program instruction format | |
US8255672B2 (en) | Single instruction decode circuit for decoding instruction from memory and instructions from an instruction generation circuit | |
JP2001505340A (ja) | 相対飛び越し命令を伴うデータ処理装置 | |
GB2420884A (en) | A long instruction word processor architecture | |
SU1042017A1 (ru) | Мультимикропрограммное устройство управлени | |
SU1043651A1 (ru) | Мультимикропрограммное устройство управлени |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Applicant after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Applicant before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |