CN105824603B - 一种基于cisc指令集的流水线取指和译码方法 - Google Patents
一种基于cisc指令集的流水线取指和译码方法 Download PDFInfo
- Publication number
- CN105824603B CN105824603B CN201610140888.8A CN201610140888A CN105824603B CN 105824603 B CN105824603 B CN 105824603B CN 201610140888 A CN201610140888 A CN 201610140888A CN 105824603 B CN105824603 B CN 105824603B
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- execution cycle
- cycle number
- value
- 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
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000006073 displacement reaction Methods 0.000 claims description 10
- 238000004519 manufacturing process Methods 0.000 claims description 5
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 6
- 230000007812 deficiency Effects 0.000 abstract description 2
- 230000000630 rising effect Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000008520 organization Effects 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
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- 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
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- 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 or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
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)
Abstract
本发明公开了一种基于CISC指令集的流水线取指和译码方法,其实现过程为:1、将指令取入译码级,每周期取一字节长度的指令;2、指令长度寄存器向右移一位;3、指令执行周期数寄存器向右移一位;4、若指令长度寄存器数值为零,且指令执行周期数寄存器数值也为零,转到1,否则转到2,并且取指级输出空指令给译码级。所涉及的指令集,指令长度为1到4个字节,指令执行时间为1到11个时钟周期。本发明克服了传统CISC指令集取指和预译码技术的不足,解决传统CISC流水线设计需要增加额外译码周期和预译码电路的问题,可用于实现一类基于CISC指令集的流水线设计。
Description
技术领域
本发明涉及基于CISC指令集的微处理器流水线设计领域,更进一步涉及兼容MCS-51指令集的CIP8051内核中微控制器的流水线取指和译码方法。
背景技术
流水线技术是一种指令并行执行的技术。该技术将一个操作分成几个执行时间基本相等的步骤,通过插入寄存器来暂存每个步骤的执行结果,并以此作为下一个步骤的输入数据。精简指令集(RISC)中每条指令均为单操作,且指令长度相同,因此指令操作易于划分为N个流水线步骤,当流水线填满时,则流水线中会有N条指令在同时执行。采用流水线后,单条指令的执行周期没有缩短,但每个时钟周期都会有一条指令执行完毕,现代处理器已广泛采用流水线设计。
但是,复杂指令集(CISC)中各条指令长度不一,且各指令执行周期数也不尽相同,这使得其指令非单操作,很难划分流水级,在流水线实现上存在难度。传统实现CISC指令集的流水线设计主要采用预译码的方法来实现,将指令一次性取出,通过预译码将复杂的CISC指令简单的类似于RISC的微指令,然后再对CISC微指令进行流水,如在论文《32位CISC微处理器流水线的设计》即采用这种方法。这种译码方法,将指令一次性取出,需要较宽的总线;同时由于增加了预译码电路,增大了电路的复杂性,也增加了额外的译码周期。
发明内容
本发明的目的在于克服传统CISC指令集取指和预译码技术的不足,解决传统CISC流水线设计需要增加额外译码周期和预译码电路的问题,提出了一种基于CISC指令集的流水线取指和译码方法。
实现本发明目的方法的具体手段为:一种基于CISC指令集的流水线取指和译码方法,将流水线第一级指定为取指级,完成取指令;将流水线第二级指定为译码级,完成指令执行周期数的确定、指令字节数的确定,并通过指令长度寄存器和指令执行周期数寄存器记录当前指令的取指和执行情况;流水线第三级为执行级,完成指令执行和计算结果写回;其中第二级流水线中计算完成的指令执行周期数和指令字节数以组合逻辑值的形式反馈回第一级流水中;包括如下步骤:
(1)初始化指令长度寄存器和指令执行周期数寄存器的值为零;
(2)在取指级中,每个时钟周期取一条指令的一个字节,送入译码级中;
(3)若指令长度寄存器和指令执行周期数寄存器值都为零,说明当前进入译码电路的指令字节为一条指令的第一个字节,根据该字节编码,译出当前指令长度的字节数和当前指令需要执行的周期数;
(4)指令长度寄存器存放的值右移一位;
(5)指令执行周期数寄存器中存放的值右移一位;
(6)将指令长度寄存器和指令执行周期数寄存器的移位结果反馈回取指级,在取指级中,若移位后指令长度寄存器中4比特数值相或为1,且指令执行周期数寄存器中11比特相或为1,说明指令尚未全部取完,返回步骤(2);若移位后指令长度寄存器中4比特数值相或为0,且指令执行周期数寄存器中11比特相或为0,说明需要取新指令,返回执行步骤(2);若移位后指令长度寄存器中4比特数值相或为0,且指令执行周期数寄存器中11比特相或为1,则取指级流水线暂停,输出空指令给译码级,返回步骤(5)。
采用指令长度寄存器来记录当前指令的所有字节是否被取完的情况;所述指令长度寄存器位宽为4比特,若当前指令长度为n个字节,则指令长度寄存器第n-1比特位等于1,其他比特位设定为0;每取指令的一个字节,所述指令长度寄存器的值向右移动1个比特位,若所述指令长度寄存器的值为4’b0000,则当前指令的取值工作全部完毕;其中,n为自然数,1≤n≤4。
采用指令执行周期数寄存器记录当前指令需要被执行完成的周期数;所述指令执行周期数寄存器位宽为11比特,若当前指令的执行周期数为m个周期,则指令执行周期数寄存器第m-1比特位等于1,其他比特位设定为0;每取指令的一个字节,所述指令执行周期数寄存器的值向右移动1个比特位,若所述指令执行周期数寄存器的值为11’b0000_0000_000,则当前指令的执行工作全部完毕;其中,m为自然数,1≤m≤11。
本发明方法适用于指令长度为1到4个字节、指令执行周期与指令字节数不一定相等、指令执行周期为1到11个时钟周期、指令执行周期大于等于指令字节数的一类CISC指令集。
本发明克服了传统CISC指令集取指和预译码技术的不足,解决传统CISC流水线设计需要增加额外译码周期和预译码电路的问题,可用于实现一类基于CISC指令集的流水线设计。
附图说明
图1为本发明的流水线结构图。
图2为本发明的流水线取指和译码工作流程图。
图3为本发明的实例工作时序图。
具体实施方式
参照附图1,本发明的流水线划分为三级:取指级,译码级和执行级。其中,取指级从程序存储器中将指令码取出,每次取一个字节。译码级接收来自取指级的指令码,并对其进行译码,获得指令的执行周期数和指令长度,并将这两个值以组合逻辑的形式返回。执行级从数据存储器中取出数据,并执行运算,将结果写回。
参照附图2,本发明的一种基于CISC指令集的流水线取指和译码方法的具体实施步骤如下:
(1)初始化指令长度寄存器和指令执行周期数寄存器的值为零;
(2)在取指级中,每个时钟周期从程序存储器中取一条指令的一个字节,送入译码级中;其中,取指令过程中对程序存储器采用组合逻辑读的形式,
(3)在译码级中,若指令长度寄存器和指令执行周期数寄存器值都为零,说明当前进入译码电路的指令字节为一条指令的第一个字节,根据该字节编码,译出当前指令长度的字节数和当前指令需要执行的周期数;译码过程中,遵循CIP8051的MCS-51指令集手册;
(4)将指令长度寄存器存放的值右移一位;
(5)将指令执行周期数寄存器存放的值右移一位;
(6)将指令长度寄存器和指令执行周期数寄存器的移位结果以组合逻辑的形式反馈回取指级;同时,将移位结果分别写入指令长度寄存器和指令执行周期数寄存器;
(7)在取指级中,若移位后指令长度寄存器中4比特数值相或为0,且指令执行周期数寄存器中11比特相或为0,返回执行步骤(2);若移位后指令长度寄存器中4比特数值相或为0,且指令执行周期数寄存器中11比特相或为1,则取指级流水线暂停,输出空指令给译码级,返回步骤(5);若移位后指令长度寄存器中4比特数值相或为1,且指令执行周期数寄存器中11比特相或为1,说明指令尚未取完,返回步骤(2)。
参照附图3,以一条长度为两个字节,执行时间为三个时钟周期的指令为例,在时钟1上升沿该指令的第一个字节进入译码级,具体实现方法如下:
(1)初始化指令长度寄存器和指令执行周期数寄存器为零;
(2)时钟1上升沿来临时,取指级从程序存储器中取一个长度为一个字节的指令值,送入译码级;
(3)判断指令周期状态寄存器的值为零,则说明进来的是一条新指令,对译码级中的一个字节指令进行译码,从而获得指令长度值和指令执行周期数,即此时指令长度值为4’b0010,指令执行周期数值为11’b0000_0000_100;
(4)指令长度数值右移一位,移位结果为4’b0001;
(5)指令执行周期数值右移一位,移位结果为11’b0000_0000_010;
(6)指令长度数值和指令执行周期数值的移位结果以组合逻辑的形式反馈回取指级;同时,将移位结果分别写入指令长度寄存器和指令执行周期数寄存器;
(7)在取指级中,指令长度数值为4’b0001,各比特位相或值不为零,同时指令执行周期数值为11’b0000_0000_010,各比特位相或值不为零,故时钟2上升沿来临时,继续从程序存储器中取指令,则该指令的第二个字节进入译码级;
(8)时钟2上升沿到来后,在译码级,将指令长度寄存器的值右移一位,此时指令长度寄存器的值为4’b0000;
(9)时钟2上升沿到来后,在译码级,将指令执行周期数寄存器的值右移一位,此时指令执行周期数寄存器的值为11’b0000_0000_001;
(10)指令长度数值和指令执行周期数值的移位结果以组合逻辑的形式反馈回取指级;同时,将移位结果分别写入指令长度寄存器和指令执行周期数寄存器;
(11)在取指级中,指令长度数值为4’b0000,各比特位相或值为零,但是指令执行周期数值为11’b0000_0000_001,各比特位相或值不为零,故时钟3上升沿来临时,取指级流水线暂停,输出空指令给译码级;
(12)时钟3上升沿到来后,在译码级,将指令执行周期数寄存器的值右移一位,此时指令执行周期数寄存器的值为11’b0000_0000_000;
(13)指令长度数值和指令执行周期数值的移位结果以组合逻辑的形式反馈回取指级;同时,将移位结果分别写入指令长度寄存器和指令执行周期数寄存器;
(14)在取指级中,指令长度数值为4’b0000,各比特位相或值为零,同时指令执行周期数值为11’b0000_0000_000,各比特位相或值为零,故时钟4上升沿来临时,返回执行步骤(1)。
Claims (3)
1.一种基于CISC指令集的流水线取指和译码方法,将流水线第一级指定为取指级,完成取指令;将流水线第二级指定为译码级,完成指令执行周期数的确定、指令字节数的确定,并通过指令长度寄存器和指令执行周期数寄存器记录当前指令的取指和执行情况;流水线第三级为执行级,完成指令执行和计算结果写回;其中第二级流水线中计算完成的指令执行周期数和指令字节数以组合逻辑值的形式反馈回第一级流水中;包括如下步骤:
(1)初始化指令长度寄存器和指令执行周期数寄存器的值为零;
(2)在取指级中,每个时钟周期取一条指令的一个字节,送入译码级中;
(3)若指令长度寄存器和指令执行周期数寄存器值都为零,说明当前进入译码电路的指令字节为一条指令的第一个字节,根据该字节编码,译出当前指令长度的字节数和当前指令需要执行的周期数;
(4)指令长度寄存器存放的值右移一位;
(5)指令执行周期数寄存器中存放的值右移一位;
(6)将指令长度寄存器和指令执行周期数寄存器的移位结果以组合逻辑的形式反馈回取指级,同时,将位移结果分别写入指令长度寄存器和指令执行周期寄存器,在取指级中,若移位后指令长度寄存器中4比特数值相或为1,且指令执行周期数寄存器中11比特相或为1,说明指令尚未全部取完,返回步骤(2);若移位后指令长度寄存器中4比特数值相或为0,且指令执行周期数寄存器中11比特相或为0,说明需要取新指令,返回执行步骤(2);若移位后指令长度寄存器中4比特数值相或为0,且指令执行周期数寄存器中11比特相或为1,则取指级流水线暂停,输出空指令给译码级,返回步骤(5)。
2.根据权利要求1所述的基于CISC指令集的流水线取指和译码方法,其特征在于,采用指令长度寄存器来记录当前指令的所有字节是否被取完的情况;所述指令长度寄存器位宽为4比特,若当前指令长度为n个字节,则指令长度寄存器第n-1比特位等于1,其他比特位设定为0;每取指令的一个字节,所述指令长度寄存器的值向右移动1个比特位,若所述指令长度寄存器的值为4’b0000,则当前指令的取值工作全部完毕;其中,n为自然数,1≤n≤4。
3.根据权利要求1所述的基于CISC指令集的流水线取指和译码方法,其特征在于,采用指令执行周期数寄存器记录当前指令需要被执行完成的周期数;所述指令执行周期数寄存器位宽为11比特,若当前指令的执行周期数为m个周期,则指令执行周期数寄存器第m-1比特位等于1,其他比特位设定为0;每取指令的一个字节,所述指令执行周期数寄存器的值向右移动1个比特位,若所述指令执行周期数寄存器的值为11’b0000_0000_000,则当前指令的执行工作全部完毕;其中,m为自然数,1≤m≤11。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610140888.8A CN105824603B (zh) | 2016-03-14 | 2016-03-14 | 一种基于cisc指令集的流水线取指和译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610140888.8A CN105824603B (zh) | 2016-03-14 | 2016-03-14 | 一种基于cisc指令集的流水线取指和译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105824603A CN105824603A (zh) | 2016-08-03 |
CN105824603B true CN105824603B (zh) | 2018-07-31 |
Family
ID=56987209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610140888.8A Active CN105824603B (zh) | 2016-03-14 | 2016-03-14 | 一种基于cisc指令集的流水线取指和译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105824603B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109558169B (zh) * | 2018-11-28 | 2023-07-18 | 中国电子科技集团公司第四十七研究所 | 一种微处理器指令集在线可重构方法 |
CN110780925B (zh) * | 2019-09-02 | 2021-11-16 | 芯创智(北京)微电子有限公司 | 一种指令流水线的预译码系统及方法 |
CN110941211A (zh) * | 2019-10-17 | 2020-03-31 | 华晟现代电子科技(香港)有限公司 | 一种基于物联网精简功能的微处理器及控制方法 |
CN112350738B (zh) * | 2020-09-29 | 2023-05-30 | 西南交通大学 | 基于比特翻转算法加速软译码的联合译码方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
CN101488082A (zh) * | 2008-01-15 | 2009-07-22 | 上海海尔集成电路有限公司 | 复杂指令集微控制器的译码方法和装置 |
CN101894013A (zh) * | 2010-07-16 | 2010-11-24 | 中国科学院计算技术研究所 | 处理器内指令级流水线控制方法及其系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008299729A (ja) * | 2007-06-01 | 2008-12-11 | Digital Electronics Corp | プロセッサ |
-
2016
- 2016-03-14 CN CN201610140888.8A patent/CN105824603B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
CN101488082A (zh) * | 2008-01-15 | 2009-07-22 | 上海海尔集成电路有限公司 | 复杂指令集微控制器的译码方法和装置 |
CN101894013A (zh) * | 2010-07-16 | 2010-11-24 | 中国科学院计算技术研究所 | 处理器内指令级流水线控制方法及其系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105824603A (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105824603B (zh) | 一种基于cisc指令集的流水线取指和译码方法 | |
TW541458B (en) | loop cache memory and cache controller for pipelined microprocessors | |
CN102117198B (zh) | 一种分支处理方法 | |
US8904153B2 (en) | Vector loads with multiple vector elements from a same cache line in a scattered load operation | |
KR101496009B1 (ko) | 루프 버퍼 패킹 | |
CN101957744A (zh) | 一种用于微处理器的硬件多线程控制方法及其装置 | |
CN103984530B (zh) | 一种提高store指令执行效率的流水线结构及方法 | |
CN104182204B (zh) | 融合if‑then指令的微处理器 | |
CN107357552A (zh) | 基于bwdsp芯片实现浮点复数向量求和的优化方法 | |
TW201510861A (zh) | 指令順序執行之指令對、處理器、方法及系統 | |
CN105677298B (zh) | 一种将计算机指令中立即数扩展的方法和装置 | |
CN100451951C (zh) | Risc cpu中的5+3级流水线设计方法 | |
US5771365A (en) | Condensed microaddress generation in a complex instruction set computer | |
CN102855120B (zh) | 超长指令字vliw的处理器和处理方法 | |
CN103412848A (zh) | 一种四核处理器系统共享单一程序存储器的方法 | |
KR101545701B1 (ko) | 프로세서 및 그 명령어 번들 복원 방법 | |
CN102779026B (zh) | 一种高性能dsp处理器中的指令多发射方法 | |
CN103488462B (zh) | 一种改进型8051ip核 | |
US8370607B2 (en) | Power efficient system for recovering an architecture register mapping table | |
CN202720631U (zh) | 基于单/双发射指令集的微处理器指令处理系统 | |
CN105843589B (zh) | 一种应用于vliw类型处理器的存储器装置 | |
CN101118485A (zh) | 一种8051微控制器指令流水系统及实现方法 | |
US5987602A (en) | Parameterless language in a machine for implementation thereof | |
CN103092570A (zh) | 平行处理来自单一程序存储器的单芯片双核心微处理器架构 | |
JP3211750B2 (ja) | 情報処理装置及びパイプライン処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |