CN101344840B - 一种微处理器及在微处理器中执行指令的方法 - Google Patents

一种微处理器及在微处理器中执行指令的方法 Download PDF

Info

Publication number
CN101344840B
CN101344840B CN2007101185876A CN200710118587A CN101344840B CN 101344840 B CN101344840 B CN 101344840B CN 2007101185876 A CN2007101185876 A CN 2007101185876A CN 200710118587 A CN200710118587 A CN 200710118587A CN 101344840 B CN101344840 B CN 101344840B
Authority
CN
China
Prior art keywords
instruction
length
length instruction
bits
microprocessor
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.)
Expired - Fee Related
Application number
CN2007101185876A
Other languages
English (en)
Other versions
CN101344840A (zh
Inventor
陈新中
卢佳文
梅思行
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Simplight Nanoelectronics Co ltd
Original Assignee
SUZHOU SIMPLNANO ELECTRONICS CO Ltd
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 SUZHOU SIMPLNANO ELECTRONICS CO Ltd filed Critical SUZHOU SIMPLNANO ELECTRONICS CO Ltd
Priority to CN2007101185876A priority Critical patent/CN101344840B/zh
Publication of CN101344840A publication Critical patent/CN101344840A/zh
Application granted granted Critical
Publication of CN101344840B publication Critical patent/CN101344840B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本发明提供一种指令集的优化。在第一方面,提供一种微处理器,包括指令存储器,混合存储具有不同长度的第一长度指令和第二长度指令,所述第一长度指令具有小于第二长度指令的长度,所述第一长度指令和第二长度指令采用操作码加以区分;指令抽取单元,从指令存储器中提取混合存储的指令,根据操作码从中分离出第一长度指令和第二长度指令;指令译码单元,将第一长度指令和第二长度指令分别译码;和,转移操作单元,当进行转移操作时,转移指令指向第一和第二长度指令之任何一个的边界。采用该优化的指令集,程序代码尺寸得以显著降低。

Description

一种微处理器及在微处理器中执行指令的方法
技术领域
本发明涉及微处理器,具体地说涉及对微处理器所采用的指令集的优化。
背景技术
如今,存储子系统的成本逐渐高于微处理器。压缩代码以适应受到成本或空间限制的存储子系统已经成为嵌入式系统开发的一项重要事务。节约存储成本,一方面需要编写紧凑的代码;另一方面,微处理器的指令集对存储器的消耗同样影响很大。通常,微处理器的指令为32比特,其中有些指令用足32比特,比如ADD Rd,Ra,Rb。有些指令不需要32比特,比如JUMP和PUSH指令。为此,有人设计了16比特的指令子集或者长度指令,以降低代码尺寸。
以ARM公司的代码压缩方案(Thumb)为例。Thumb实际上是添加到ARM的标准RISC指令集之上的独立指令集,由大约36条16位长度指令构成。通过一条模式切换指令在这两种指令集之间进行切换。通过使用这些较短的指令替换ARM标准的32位指令,可以将某些代码的规模减小。然而,Thumb代码和标准ARM代码不能混杂使用,必须显式地在两种模式间进行切换。这迫使程序员将所有的16位代码与32位代码分开并隔离到独立的模块中。图1是采用Thumb方案的代码存储示意图。另外,Thumb模式下不能使用全部寄存器。
还有些代码压缩方案能够实现任意地动态混合16比特和32比特。图2(a)是一种16比特和32比特混合存储的示意图。然而,这样的代码压缩方案需要复杂的硬件配置加以支撑。另外,当转移指令指向i1指令时,i1指令的存储位置受到限制。此时,i0和i1的存储位置如图2(b)所示。由图2(b)可见,存储空间存在一定的浪费。
因此,迫切地需要有一种能够克服以上问题的指令代码压缩方案。
发明内容
在第一方面,本发明提供一种微处理器。微处理器包括指令存储器,混合存储具有不同长度的第一长度指令和第二长度指令,所述第一长度指令具有小于第二长度指令的长度,所述第一长度指令和第二长度指令采用操作码加以区分;指令抽取单元,从指令存储器中提取混合存储的指令,根据操作码从中分离出第一长度指令和第二长度指令;指令译码单元,将第一长度指令和第二长度指令分别译码;和,转移操作单元,当进行转移操作时,转移指令指向第一和第二长度指令之任何一个的边界;其中所述微处理器包括多个寄存器,所述第一长度指令和第二长度指令均全面访问所述多个寄存器。
在第二方面,本发明提供一种在微处理器中执行指令的方法,所述指令包括具有不同长度的第一长度指令和第二长度指令,所述第一长度指令具有小于第二长度指令的长度,所述第一长度指令和第二长度指令采用操作码加以区分,所述方法包括:从存储器中提取混合存储的指令;根据操作码从中分离出第一长度指令和第二长度指令;将第一长度指令和第二长度指令分别译码;当进行转移操作时,转移指令指向第一和第二长度指令之任何一个的边界;其中微处理器包括多个寄存器,所述第一长度指令和第二长度指令均全面访问所述多个寄存器。
在第三方面,本发明提供一种计算机程序产品,包括计算机可读介质,其上混合存储具有不同长度的第一长度指令和第二长度指令,所述第一长度指令具有小于第二长度指令的长度,所述第一长度指令和第二长度指令采用操作码加以区分,以便在执行时微处理器根据操作码从混合存储的指令分离出第一长度指令和第二长度指令,并且当进行转移操作时,转移指令指向第一和第二长度指令之任何一个的边界。
根据第四方面,提供一种供微处理器执行的指令集,包括具有不同长度的第一长度指令和第二长度指令,第一长度指令具有小于第二长度指令的长度,第一长度指令和第二长度指令采用操作码加以区分并且可以混合存储,以便在执行时微处理器根据操作码从混合存储的指令分离出第一长度指令和第二长度指令,并且当进行转移操作时,转移指令指向第一和第二长度指令之任何一个的边界。
在第一、第二、第三和第四方面中,优选地,所述第一长度指令具有小于第二长度指令的长度。优选地,操作码在第一长度指令中。优选地,第一长度指令是16比特;第二长度指令是32比特。
本发明有效解决了32比特和16比特指令的混合存储问题,它可以任意混合16比特和32比特;可以分支到任何16比特指令边界。程序代码尺寸得以降低,可以达到20-30%。另外,16比特指令可以全面使用寄存器。
附图说明
下面将参照附图对本发明的优选实施方案进行更详细的说明,其中:
图1是采用Thumb方案的代码存储示意图;
图2(a)是一种现有技术的16比特和32比特指令混合存储的示意图;
图2(b)是现有技术的包含转移指令的混合指令存储的示意图;
图3是根据本发明的一个实施方案的指令格式图;
图4是实施本发明的一种微处理器结构图;以及
图5是指令抽取之后指令缓冲区的一种数据格式示意图。
具体实施方式
图3是根据本发明的一个实施方案的指令格式图。如图3所示,有一个32比特存储空间。该32比特存储空间可能存储一个32比特,也可能存储2个16比特指令。译码时首先将32比特的字当作为32比特指令,并且查看第27-31位。如果第27-31位不是16比特指令的操作码,则表明这是一个32比特指令。如果第27-31位存在16比特指令的操作码,则表明32位字的高16位(第16-31位)属于16比特指令。显然,32位字的低16位(第0-15位)也属于16比特指令,故此低16位译码为另一个16比特指令。
需要说明,该操作码并非仅仅设置在16比特的高5位。它可以设置在16比特的任意位置,也可以由一定数量的比特组合而成。
根据本发明,16比特指令可以全面使用寄存器,比如32个寄存器。通常的指令操作往往需要占用32比特的存储空间。例如add rd r1 r2。它实际进行的操作是rd=r1+r2。由于要全面使用32个寄存器,每个寄存器需要占据5个比特的空间。寄存器rd、r1、r2就要占据5X3=15比特空间。因此,一般意义下16比特存储空间不足以存储完成此类操作的指令。作为变通,一种常规的办法是限制指令所访问的寄存器范围,而将指令从32比特压缩为16比特。本发明针对这种情况作了相应的改变,允许16比特指令访问所有寄存器(32个寄存器)。在一个例子中,在执行add rd r1 r2加法操作时,用2个寄存器r1、r2来解决,也就是add r2 r1 r2,r1、r2仅占用5X2=10比特。这样,原本需要32比特的操作就可以用16比特指令来完成。因此,本发明利用类似的方法来充分利用16比特指令,使得16比特指令可以全面地使用寄存器。
根据本发明,转移指令可以任意转移到16比特边界和32比特边界。在通常的操作中,32比特指令要占4个字节,因此在取指令单元每执行完一次操作,程序计数器PC就要自动加4,在转移控制指令时会把32比特的地址写入PC,因此转移控制指令只能寻找32位边界。在本发明中,为了充分使用16比特指令,在取指令时会针对指令字节数判断指令计数器PC的增加量。在一个例子中,32比特指令加4,16比特指令加2。这样,在执行转移控制指令时,就可以转移到16位的边界。例如分支branch指令既可以寻找32位的地址边界,也可以寻找16位的地址边界。
包含这样的16比特指令和32比特指令的程序(例如c语言)由编译器编译成紧凑的二进制文件,存储在内存或指令高速缓冲存储器(简称指令缓存)中。
图4是实施本发明的微处理器结构图。如图4所示,微处理器包括指令抽取单元410,指令译码单元420和转移操作单元430。
指令抽取单元410从指令缓存提取例如4*32比特的数据。指令抽取单元410根据操作码将其分离为16比特和32比特指令。分离后的指令可以是4条32比特指令,或8条16比特指令,或者其之间的任何组合。
然后,为分离后的指令设置标志位。标志位的作用在于后续译码时确定指令的类型。在一个例子中,标志位包括高有效位V1,低有效位V2和模式位M。图5是指令抽取之后指令缓冲区的一种数据格式示意图。
如图5所示,模式位为1时,表明存在16位指令。此时,若高有效位V1为1,表明高16位是单条16位指令;低有效位V2为1,表明低16位是单条16位指令。若有效位为0,表明相应的位置不存在16位指令,为空。
模式位为0时,表明这是一条32位指令。此时,高、低有效位V1和V2均设定为1。
回到图4。在指令分离之后,指令译码单元420基于各标志位和指令的其它位对分离后的指令做译码。在一个例子中,对多个指令的译码平行进行。
转移操作单元430执行有关的转移操作,允许转移指令(包括分支BRANCH,调用CALL,跳转JUMP指令)转移到任意的16位边界和32位边界。在本发明中,无需单独设立一个模式切换指令。
本发明有效解决了32比特和16比特指令的混合存储问题,它可以任意混合16比特指令和32比特指令;可以转移到任何16比特指令边界。程序代码尺寸得以降低,可以达到20-30%。另外,16比特指令可以全面使用寄存器,32个寄存器均可使用。
需要说明,以上结合32比特和16比特指令对本发明进行了描述。但是,本发明并不仅仅限于32比特和16比特指令,而应当适用于不同长度指令的混合存储。
本发明可以适用于任何微处理器,尤其适用于嵌入式微处理器。
显而易见,在此描述的本发明可以有许多变化,这种变化不能认为偏离本发明的精神和范围。因此,所有对本领域技术人员显而易见的改变,都包括在本权利要求书的涵盖范围之内。

Claims (5)

1.一种微处理器,包括指令存储器,在所述指令存储器中以混合对齐方式存储具有不同长度的第一长度指令和第二长度指令,所述第一长度指令具有小于第二长度指令的长度,所述第一长度指令和第二长度指令采用操作码加以区分;指令抽取单元,从指令存储器中提取混合存储的指令,根据操作码从中分离出第一长度指令和第二长度指令;指令译码单元,将第一长度指令和第二长度指令分别译码;和,转移操作单元,当进行转移操作时,转移指令指向第一和第二长度指令之任何一个的边界;
其中所述微处理器包括多个寄存器,所述第一长度指令和第二长度指令均全面访问所述多个寄存器。
2.如权利要求1所述的微处理器,其特征在于第一长度指令是16比特;第二长度指令是32比特。
3.一种在微处理器中执行指令的方法,所述指令包括具有不同长度的第一长度指令和第二长度指令,所述第一长度指令具有小于第二长度指令的长度,所述第一长度指令和第二长度指令采用操作码加以区分,所述方法包括:从存储器中提取混合对齐方式存储的指令;根据操作码从中分离出第一长度指令和第二长度指令;将第一长度指令和第二长度指令分别译码;当进行转移操作时,转移指令指向第一和第二长度指令之任何一个的边界;
其中微处理器包括多个寄存器,所述第一长度指令和第二长度指令均全面访问所述多个寄存器。
4.如权利要求3所述的方法,其特征在于对分离后的第一和第二长度指令并行译码。
5.如权利要求4所述的方法,其特征在于第一长度指令是16比特;第二长度指令是32比特。
CN2007101185876A 2007-07-10 2007-07-10 一种微处理器及在微处理器中执行指令的方法 Expired - Fee Related CN101344840B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101185876A CN101344840B (zh) 2007-07-10 2007-07-10 一种微处理器及在微处理器中执行指令的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101185876A CN101344840B (zh) 2007-07-10 2007-07-10 一种微处理器及在微处理器中执行指令的方法

Publications (2)

Publication Number Publication Date
CN101344840A CN101344840A (zh) 2009-01-14
CN101344840B true CN101344840B (zh) 2011-08-31

Family

ID=40246851

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101185876A Expired - Fee Related CN101344840B (zh) 2007-07-10 2007-07-10 一种微处理器及在微处理器中执行指令的方法

Country Status (1)

Country Link
CN (1) CN101344840B (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007143278A2 (en) 2006-04-12 2007-12-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
CN101627365B (zh) 2006-11-14 2017-03-29 索夫特机械公司 多线程架构
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
US9766893B2 (en) 2011-03-25 2017-09-19 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
EP2689330B1 (en) 2011-03-25 2022-12-21 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
EP2710481B1 (en) 2011-05-20 2021-02-17 Intel Corporation Decentralized allocation of resources and interconnect structures to support the execution of instruction sequences by a plurality of engines
US9442772B2 (en) 2011-05-20 2016-09-13 Soft Machines Inc. Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
EP2783280B1 (en) 2011-11-22 2019-09-11 Intel Corporation An accelerated code optimizer for a multiengine microprocessor
WO2013101149A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Encoding to increase instruction set density
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
EP2972836B1 (en) 2013-03-15 2022-11-09 Intel Corporation A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR101708591B1 (ko) 2013-03-15 2017-02-20 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463520B1 (en) * 1996-09-13 2002-10-08 Mitsubishi Denki Kabushiki Kaisha Processor for executing instruction codes of two different lengths and device for inputting the instruction codes
CN1570851A (zh) * 2003-07-23 2005-01-26 凌阳科技股份有限公司 一种执行不同长度指令集的处理器及方法
CN1625731A (zh) * 2002-01-31 2005-06-08 Arc国际公司 具有多种长度指令集体系结构的可配置数据处理器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463520B1 (en) * 1996-09-13 2002-10-08 Mitsubishi Denki Kabushiki Kaisha Processor for executing instruction codes of two different lengths and device for inputting the instruction codes
CN1625731A (zh) * 2002-01-31 2005-06-08 Arc国际公司 具有多种长度指令集体系结构的可配置数据处理器
CN1570851A (zh) * 2003-07-23 2005-01-26 凌阳科技股份有限公司 一种执行不同长度指令集的处理器及方法

Also Published As

Publication number Publication date
CN101344840A (zh) 2009-01-14

Similar Documents

Publication Publication Date Title
CN101344840B (zh) 一种微处理器及在微处理器中执行指令的方法
EP2186001B1 (en) Implementation of variable length instruction encoding using alias addressing
CN101694613B (zh) 不对准存储器存取预测
Benini et al. Selective instruction compression for memory energy reduction in embedded systems
CN101627366B (zh) 预加载指令的方法及装置
CN103488464B (zh) 微处理器以及微处理器操作方法
CN101493762B (zh) 处理数据的方法和设备
CN102033734B (zh) 数据处理引擎
US7272701B2 (en) Method and apparatus for limiting ports in a register alias table having high-bandwidth and low-bandwidth structures
CN101916180A (zh) Risc处理器中执行寄存器类型指令的方法和其系统
CN101646999A (zh) 以适当的预解码预载来自可变长度指令集的指令的系统、方法和软件
CN103748550B (zh) 用于存储熵编码指令序列及将其翻译成可执行形式的方法和设备
EP2083352B1 (en) Processing unit
US20060015678A1 (en) Virtual memory device including a bridge circuit
CN104346132A (zh) 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机
CN105765522A (zh) 用于立即数处置和旗标处置的处理器和方法
CN100538623C (zh) 一种8位微控制器
CN101164035A (zh) 基于已知的处理器状态而选择性地启用内容可寻址存储器重命名寄存器文件中的比较器的功率节约方法和设备
CN108920188B (zh) 一种扩展寄存器堆的方法及装置
US9195259B1 (en) Method and apparatus for clock-gating registers
CN100583030C (zh) 一种risc处理器及其数据访存方法
KR100735552B1 (ko) 코드 메모리 상의 프로그램의 코드 크기를 줄이는 방법
CN1306641A (zh) 并行数据处理
CN103327316A (zh) 视频宏块的上下文信息存取方法和系统
CN102169466A (zh) 一种基于页操作的可编程Nandflash控制器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: SUZHOU JIANYUENA ELECTRONICS CO., LTD.

Free format text: FORMER OWNER: BEIJNG SIMPLE LIGHT ELECTRONICS CO., LTD.

Effective date: 20100604

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100088 ROOM 1001, BLOCK B, JINQIU INTERNATIONAL BUILDING, NO.6, ZHICHUN ROAD, HAIDIAN DISTRICT, BEIJING TO: 215021 ROOM A-0305, INTERNATIONAL SCIENCE PARK, NO.1355, JINJIHU AVENUE, SUZHOU CITY INDUSTRIAL PARK DISTRICT

TA01 Transfer of patent application right

Effective date of registration: 20100604

Address after: 215021 A-0305, international science and Technology Park, 1355 Jinji Lake Avenue, Suzhou Industrial Park

Applicant after: SUZHOU SIMPLIGHT NANOELECTRONICS CO.,LTD.

Address before: 100088 Beijing City, Haidian District Zhichun Road Jinqiu International Building No. 6 room 1001 building B

Applicant before: BEIJING SIMPLIGHT NANOELECTRONICS Co.,Ltd.

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110831