JP3805578B2 - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP3805578B2 JP3805578B2 JP25997699A JP25997699A JP3805578B2 JP 3805578 B2 JP3805578 B2 JP 3805578B2 JP 25997699 A JP25997699 A JP 25997699A JP 25997699 A JP25997699 A JP 25997699A JP 3805578 B2 JP3805578 B2 JP 3805578B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- instruction
- size
- operand
- processor
- 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
Links
- 230000008859 change Effects 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 claims 9
- 230000014759 maintenance of location Effects 0.000 description 32
- 238000001514 detection method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000004606 Fillers/Extenders Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
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/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Power Sources (AREA)
- Advance Control (AREA)
Description
【発明の属する技術分野】
本発明は、複数のサイズのデータを扱うプロセッサに関するものである。
【0002】
【従来の技術】
近年、機器組み込み用途のプロセッサが扱うデータは多様化している。例えば、32ビット、16ビット、8ビットのサイズのデータを扱うことが要求される。一方では、携帯機器へプロセッサを応用する場合、バッテリの容量に制限があるため、長時間駆動を行うには低消費電力が要求されている。
【0003】
32ビットのアーキテクチャを有する従来のRISC(Reduced Instruction Set Computer)型プロセッサは、データに算術論理演算操作を施すための32ビットのALU(Arithmetic and Logic Unit)と、データを保持するための32ビットのレジスタファイルと、データを転送するための32ビットのバスとを備えたものであった。このプロセッサで8ビットデータを扱う場合には、このデータのサイズが無条件で32ビットに拡張される。具体的には、8ビットデータが符号付きデータであるならば上位24ビットに符号拡張が、8ビットデータが符号なしデータであるならば上位24ビットにゼロ拡張がそれぞれなされる。16ビットデータを扱う場合にも、このデータのサイズが無条件で32ビットに拡張される。このようにして得られた32ビットデータが、32ビットのALUに供給され、32ビットのレジスタファイルに保持され、また32ビットのバスを通して転送されるようになっていた。
【0004】
【発明が解決しようとする課題】
上記従来のRISC型プロセッサによれば、2つの8ビットデータをメモリから順次ロードし、これらを加算し、その結果を表す8ビットデータをメモリにストアするという一連の動作を行う場合であっても、32ビットのALUと、32ビットのレジスタファイルと、32ビットのバスとの全てのハードウェア資源が動作していたので、電力が無駄に消費される問題があった。このことは、16ビットデータを扱う場合にも同様であった。
【0005】
本発明の目的は、複数のサイズのデータを扱うプロセッサにおける電力消費の無駄を削減することにある。
【0006】
【課題を解決するための手段】
上記目的を達成するため、本発明は、複数のサイズのデータを扱うプロセッサにおいて、最大サイズに対応したビット幅を有する操作手段のうち、指定されたオペランドのデータサイズに応じた部分のみを動作させることとしたものである。ここにいう操作手段は、命令により指定されたオペランドに、該命令により指定された操作を施すための手段であって、オペランドデータに算術論理演算操作を施すためのALUと、オペランドデータを保持するためのレジスタファイルと、オペランドデータを転送するためのバスと、バスを駆動するためのドライバと、バス上のオペランドデータを取り込むためのラッチと、オペランドデータのサイズを拡張するための拡張器とを含む。例えば、与えられた命令を解読することにより、該命令により指定されたオペランドについて、該指定されたオペランドのデータサイズに関するサイズ情報を得て、前記操作手段のうち当該サイズ情報により指定された部分のみを動作させる。
【0007】
オブジェクト指向の観点によれば、オペランドデータと、該オペランドデータのサイズに関するサイズ情報とをレジスタファイルに保持させるようにするとよい。この場合において、レジスタファイルへの特定サイズのオペランドデータの設定を要求する第1の命令が解読されて、該第1の命令により指定されたオペランドのデータサイズに関するサイズ情報が得られたときには、オペランドデータとともにサイズ情報をレジスタファイルに保持させる。また、レジスタファイルに保持されたオペランドデータの参照を要求する第2の命令が解読されたときには、レジスタファイルからオペランドデータとともに該オペランドデータのサイズに関するサイズ情報を読み出して、前記操作手段のうち当該レジスタファイルから読み出したサイズ情報により指定された部分のみを動作させる。
【0008】
本発明の他の観点によれば、前記第1の命令は、オペランドデータを符号付きデータとして扱うべきか又は符号なしデータとして扱うべきかを指定する命令でもある。レジスタファイルには、オペランドデータと、該オペランドデータのサイズに関するサイズ情報とに加えて、該オペランドデータの符号の有無に関する符号情報を保持させる。この場合において、前記第1の命令が解読されて、該第1の命令により指定されたオペランドの符号の有無に関する符号情報が得られたときには、オペランドデータとともに符号情報をレジスタファイルに保持させる。また、レジスタファイルに保持されたオペランドデータの参照を要求する前記第2の命令が解読されたときには、レジスタファイルからオペランドデータとともに該オペランドデータの符号の有無に関する符号情報を読み出して、当該読み出した符号情報に従って前記第2の命令が実行されるように前記操作手段を制御する。
【0009】
【発明の実施の形態】
図1は、本発明に係るプロセッサの構成例を示している。本プロセッサは、32ビットのアーキテクチャを有するRISC型プロセッサであって、32ビット(ワード)、16ビット(ハーフワード)、8ビット(バイト)のサイズのデータを扱うものである。
【0010】
本プロセッサは、データに算術論理演算操作を施して、その結果を得るとともにフラグを生成するための32ビットのALUを備えている。この32ビットALUは、4個の8ビットALU1a,1b,1c,1dに分割されている。ゲート11a,11b,11cは、これら4個の8ビットALU1a〜1dの間で桁上げ(キャリ)に関する演算情報を選択的に伝達するためのゲートである。4個の8ビットALU1a〜1dと3個のゲート11a〜11cとの全てが動作するとき、リップルキャリ方式の32ビットALUが実現する。2個の8ビットALU1c,1dと1個のゲート11cのみが動作するとき、16ビットALUが実現する。また、1個の8ビットALU1dのみが動作することもある。フラグは、オペランドのデータサイズに応じたビット位置で生成されるようになっている。なお、図1中の符号の末尾のa,b,c,dはそれぞれ、32ビットのうちの最上位8ビット、中上位8ビット、中下位8ビット、最下位8ビットの位置を表すよう付されている。
【0011】
本プロセッサは、8本のレジスタR0〜R7で構成された32ビットのレジスタファイル2を更に備えている。レジスタR0〜R7の各々は、それぞれ8ビットデータを保持するためのデータA部(DA部)2a、データB部(DB部)2b、データC部(DC部)2c及びデータD部(DD部)2dと、データの符号の有無に関する1ビット情報を保持するための符号情報部(SU部)2eと、データのサイズに関する2ビット情報を保持するためのサイズ情報部(SZ部)2fとから構成される。あるレジスタのSU部2eの1ビットの値が“1”であることは、当該レジスタに保持されたデータが符号付きデータとして扱われるべきことを意味する。同ビットの値が“0”であることは、当該レジスタに保持されたデータが符号なしデータとして扱われるべきことを意味する。あるレジスタのSZ部2fの2ビットの値が“10”であることは、当該レジスタのDA部2a、DB部2b、DC部2c及びDD部2dが32ビットのデータを保持していることを意味する。同2ビットの値が“01”であることは、当該レジスタの中のDC部2c及びDD部2dのみが16ビットのデータを保持していることを意味する。また、同2ビットの値が“00”であることは、当該レジスタの中のDD部2dのみが8ビットのデータを保持していることを意味するようになっている。
【0012】
本プロセッサは、各々データを転送するための、各々32ビット幅を有するAバス31、Bバス32及びCバス33を更に備えている。図1において、20は命令列を格納するためのROM(Read-Only Memory)、21はROM20から読み出された命令を保持するための命令レジスタ(IR:Instruction Register)、24はロードストアユニット、25はデータを格納するためのRAM(Random
Access Memory)である。
【0013】
命令レジスタ21から得られた即値オペランドデータは、Bバス32を駆動するための各々8ビットのドライバ3a,3b,3c,3dへ供給される。32ビットの即値オペランドデータをBバス32へ供給すべき場合には、ドライバ3a〜3dが動作する。16ビットの即値オペランドデータをBバス32へ供給すべき場合には、ドライバ3c,3dのみが動作する。また、8ビットの即値オペランドデータをBバス32へ供給すべき場合には、ドライバ3dのみが動作する。
【0014】
RAM25からロードストアユニット24により読み出されたロードデータは、Bバス32を駆動するための各々8ビットのドライバ4a,4b,4c,4dへ供給される。32ビットのロードデータをBバス32へ供給すべき場合には、ドライバ4a〜4dが動作する。16ビットのロードデータをBバス32へ供給すべき場合には、ドライバ4c,4dのみが動作する。また、8ビットのロードデータをBバス32へ供給すべき場合には、ドライバ4dのみが動作する。
【0015】
レジスタファイル2から読み出された第1のデータは、Aバス31を駆動するための各々8ビットのドライバ5a,5b,5c,5dへ供給される。DA部2a、DB部2b、DC部2c及びDD部2dから読み出された32ビットのデータをAバス31へ供給すべき場合には、ドライバ5a〜5dが動作する。DC部2c及びDD部2dから読み出された16ビットのデータをAバス31へ供給すべき場合には、ドライバ5c,5dのみが動作する。また、DD部2dから読み出された8ビットのデータをAバス31へ供給すべき場合には、ドライバ5dのみが動作する。
【0016】
レジスタファイル2から読み出された第2のデータは、Bバス32を駆動するための各々8ビットのドライバ6a,6b,6c,6dへ供給される。DA部2a、DB部2b、DC部2c及びDD部2dから読み出された32ビットのデータをBバス32へ供給すべき場合には、ドライバ6a〜6dが動作する。DC部2c及びDD部2dから読み出された16ビットのデータをBバス32へ供給すべき場合には、ドライバ6c,6dのみが動作する。また、DD部2dから読み出された8ビットのデータをBバス32へ供給すべき場合には、ドライバ6dのみが動作する。
【0017】
図1中の7a,7b,7c及び7dは、各々Aバス31上のデータを取り込むための、各々8ビットのラッチ(DA1,DB1,DC1及びDD1)である。取り込むべきデータが32ビットのサイズを有する場合には、ラッチ7a〜7dが動作する。取り込むべきデータが16ビットのサイズを有する場合には、ラッチ7c,7dのみが動作する。また、取り込むべきデータが8ビットのサイズを有する場合には、ラッチ7dのみが動作する。
【0018】
図1中の8a,8b,8c及び8dは、各々Bバス32上のデータを取り込むための、各々8ビットのラッチ(DA2,DB2,DC2及びDD2)である。取り込むべきデータが32ビットのサイズを有する場合には、ラッチ8a〜8dが動作する。取り込むべきデータが16ビットのサイズを有する場合には、ラッチ8c,8dのみが動作する。また、取り込むべきデータが8ビットのサイズを有する場合には、ラッチ8dのみが動作する。
【0019】
本プロセッサは、ラッチ7a〜7dに取り込まれたデータのサイズを拡張して、その結果を表すデータをALU1a〜1dの左入力へ供給するための32ビットの拡張器を更に備えている。この32ビット拡張器は、4個の8ビット拡張器(EA1,EB1,EC1及びED1)9a,9b,9c,9dに分割されている。4個の8ビット拡張器9a〜9dの全てが動作するとき、8ビット又は16ビットデータのサイズを32ビットへ拡張するための拡張器が実現する。2個の8ビット拡張器9c,9dのみが動作するとき、8ビットデータのサイズを16ビットへ拡張するための拡張器が実現する。サイズ拡張されるべきデータが符号付きデータであるならば符号拡張が、サイズ拡張されるべきデータが符号なしデータであるならばゼロ拡張がそれぞれなされる。
【0020】
本プロセッサは、ラッチ8a〜8dに取り込まれたデータのサイズを拡張して、その結果を表すデータをALU1a〜1dの右入力へ供給するための32ビットの拡張器を更に備えている。この32ビット拡張器は、4個の8ビット拡張器(EA2,EB2,EC2及びED2)10a,10b,10c,10dに分割されている。4個の8ビット拡張器10a〜10dの全てが動作するとき、8ビット又は16ビットデータのサイズを32ビットへ拡張するための拡張器が実現する。2個の8ビット拡張器10c,10dのみが動作するとき、8ビットデータのサイズを16ビットへ拡張するための拡張器が実現する。サイズ拡張されるべきデータが符号付きデータであるならば符号拡張が、サイズ拡張されるべきデータが符号なしデータであるならばゼロ拡張がそれぞれなされる。
【0021】
ALU1a〜1dの演算結果を表すデータは、Cバス33を駆動するための各々8ビットのドライバ12a,12b,12c,12dへ供給される。32ビットのデータをCバス33へ供給すべき場合には、ドライバ12a〜12dが動作する。16ビットのデータをCバス33へ供給すべき場合には、ドライバ12c,12dのみが動作する。また、8ビットのデータをCバス33へ供給すべき場合には、ドライバ12dのみが動作する。レジスタファイル2の中に保持すべきデータは、Cバス33から供給される。また、RAM25へストアすべきデータは、Cバス33からロードストアユニット24へ供給される。
【0022】
本プロセッサは、命令レジスタ21から与えられた命令を解読するための命令解読器(ID:Instruction Decoder)22と、SU部2a及びSZ部2fの各々の情報の書き込み及び読み出しを司るコントローラ23とを更に備えている。命令解読器22は、ドライバ3a〜3d,4a〜4dの駆動のオン・オフを含め、図中の操作手段を構成する種々の要素を制御する。コントローラ23も、SU部2a及びSZ部2fの各々の情報に応じて、図中の操作手段を構成する種々の要素の動作ビット幅等を制御する。
【0023】
図2は、本プロセッサの命令セットの一部を示している。本プロセッサは、ロード命令群、サイズ変更命令群、符号有無変更命令群、即値転送命令群、算術論理演算命令群、ストア命令群、ブランチ命令群等を実行できるように構成されている。ただし、図2では、ブランチ命令群等の図示が省略されている。図2中のRn及びRmは、各々レジスタR0〜R7のいずれかを意味する。レジスタR0〜R7の各々はプログラマに対して32ビットレジスタとして定義され、SU部2eとSZ部2fとはプログラマからは見えない。
【0024】
(1)ロード命令群
ロード命令群には、以下の6種類の命令が含まれる。個々の命令のオペコードフィールド(operation code field)は、オペランドの符号の有無に関する指定情報と、オペランドのデータサイズに関する指定情報とを含んでいる。いずれの命令でも、プロセッサの動作制御は命令解読器22によって行われる。
【0025】
(1.1) ldb mem,Rn
この命令は、メモリ(mem)から8ビットデータをロードして、これを符号付きデータとしてレジスタRnに設定することを要求する命令である。この命令が解読されると、ロードストアユニット24がRAM25から8ビットのオペランドデータを読み出す。読み出されたデータは、ドライバ4d、Bバス32の最下位8ビット部分を順次経てラッチ8dに取り込まれ、拡張器10d及びALU1dを素通りしてドライバ12dに供給され、Cバス33の最下位8ビット部分を経てレジスタRnのDD部2dに格納される。これと並行して、レジスタRnのSU部2eには符号付きデータの保持を表す値“1”が、そのSZ部2fには8ビットデータの保持を表す値“00”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【0026】
(1.2) ldbu mem,Rn
この命令は、メモリから8ビットデータをロードして、これを符号なしデータとしてレジスタRnに設定することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタRnのSU部2eに符号なしデータの保持を表す値“0”が格納される点を除いて、上記(1.1)と同じである。
【0027】
(1.3) ldh mem,Rn
この命令は、メモリから16ビットデータをロードして、これを符号付きデータとしてレジスタRnに設定することを要求する命令である。この命令が解読されると、ロードストアユニット24がRAM25から16ビットのオペランドデータを読み出す。読み出されたデータは、ドライバ4c,4d、Bバス32の最下位16ビット部分を順次経てラッチ8c,8dに取り込まれ、拡張器10c,10d及びALU1c,1dを素通りしてドライバ12c,12dに供給され、Cバス33の最下位16ビット部分を経てレジスタRnのDC部2c及びDD部2dに格納される。これと並行して、レジスタRnのSU部2eには符号付きデータの保持を表す値“1”が、そのSZ部2fには16ビットデータの保持を表す値“01”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【0028】
(1.4) ldhu mem,Rn
この命令は、メモリから16ビットデータをロードして、これを符号なしデータとしてレジスタRnに設定することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタRnのSU部2eに符号なしデータの保持を表す値“0”が格納される点を除いて、上記(1.3)と同じである。
【0029】
(1.5) ld mem,Rn
この命令は、メモリから32ビットデータをロードして、これを符号付きデータとしてレジスタRnに設定することを要求する命令である。この命令が解読されると、ロードストアユニット24がRAM25から32ビットのオペランドデータを読み出す。読み出されたデータは、ドライバ4a〜4d、Bバス32の全部を順次経てラッチ8a〜8dに取り込まれ、拡張器10a〜10d及びALU1a〜1dを素通りしてドライバ12a〜12dに供給され、Cバス33の全部を経てレジスタRnのDA部2a、DB部2b、DC部2c及びDD部2dに格納される。これと並行して、レジスタRnのSU部2eには符号付きデータの保持を表す値“1”が、そのSZ部2fには32ビットデータの保持を表す値“10”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【0030】
(1.6) ldu mem,Rn
この命令は、メモリから32ビットデータをロードして、これを符号なしデータとしてレジスタRnに設定することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタRnのSU部2eに符号なしデータの保持を表す値“0”が格納される点を除いて、上記(1.5)と同じである。
【0031】
(2)サイズ変更命令群
サイズ変更命令群には、以下の3種類の命令が含まれる。個々の命令のオペコードフィールドは、オペランドのデータサイズに関する指定情報を含むが、オペランドの符号の有無に関する指定情報を含まない。いずれの命令でも、プロセッサの動作制御は命令解読器22とコントローラ23とによって行われる。
【0032】
(2.1) extb Rn
この命令は、レジスタRnに保持されたデータ(Rnデータ)のサイズを8ビットに変更することを要求する命令である。この命令が解読されると、レジスタRnのSU部2e及びSZ部2fの各々の値がコントローラ23に送られる。以降の動作は、SZ部2fの値、すなわちRnデータのサイズに応じて異なる。
【0033】
(i) Rnデータが8ビットデータである場合には、何の動作も行われない。全てのドライバは動作せず、全てのラッチやレジスタはデータの保持を続ける。
【0034】
(ii) Rnデータが16ビットデータである場合には、レジスタRnのSZ部2fの値が、16ビットデータの保持を表す値“01”から、8ビットデータの保持を表す値“00”に変更される。ただし、レジスタRnのSU部2eの値は変更されない。これにより、レジスタRnに保持された16ビットデータは、符号の有無をそのままに、その上位8ビットが無効化される。全てのドライバは動作せず、全てのラッチや他のレジスタはデータの保持を続ける。
【0035】
(iii) Rnデータが32ビットデータである場合には、レジスタRnのSZ部2fの値が、32ビットデータの保持を表す値“10”から、8ビットデータの保持を表す値“00”に変更される。ただし、レジスタRnのSU部2eの値は変更されない。これにより、レジスタRnに保持された32ビットデータは、符号の有無をそのままに、その上位24ビットが無効化される。全てのドライバは動作せず、全てのラッチや他のレジスタはデータの保持を続ける。
【0036】
(2.2) exth Rn
この命令は、Rnデータのサイズを16ビットに変更することを要求する命令である。この命令が解読されると、レジスタRnのSU部2e及びSZ部2fの各々の値がコントローラ23に送られる。以降の動作は、SU部2e及びSZ部2fの値、すなわちRnデータの符号の有無とサイズとに応じて異なる。
【0037】
(i) Rnデータが8ビットデータである場合には、データのサイズ拡張が行われる。具体的には、レジスタRnのDD部2dから8ビットのオペランドデータが読み出され、これがドライバ6d、Bバス32の最下位8ビット部分を順次経てラッチ8dに取り込まれる。そして、ラッチ8dに取り込まれた8ビットデータのサイズが拡張器10c,10dにより16ビットに拡張される。詳細には、レジスタRnに保持された8ビットデータが符号付きデータであるならば上位8ビットに符号拡張が、レジスタRnに保持された8ビットデータが符号なしデータであるならば上位8ビットにゼロ拡張がそれぞれなされる。このサイズ拡張により得られた16ビットデータは、ALU1c,1dを素通りしてドライバ12c,12dに供給され、Cバス33の最下位16ビット部分を経てレジスタRnのDC部2c及びDD部2dに格納される。これと並行して、レジスタRnのSZ部2fの値は、8ビットデータの保持を表す値“00”から、16ビットデータの保持を表す値“01”に変更される。ただし、レジスタRnのSU部2eの値は変更されない。これにより、レジスタRnに保持されたデータの符号の有無をそのままに、該データのサイズが8ビットから16ビットへ拡張される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【0038】
(ii) Rnデータが16ビットデータである場合には、何の動作も行われない。全てのドライバは動作せず、全てのラッチやレジスタはデータの保持を続ける。
【0039】
(iii) Rnデータが32ビットデータである場合には、レジスタRnのSZ部2fの値が、32ビットデータの保持を表す値“10”から、16ビットデータの保持を表す値“01”に変更される。ただし、レジスタRnのSU部2eの値は変更されない。これにより、レジスタRnに保持された32ビットデータは、符号の有無をそのままに、その上位16ビットが無効化される。全てのドライバは動作せず、全てのラッチや他のレジスタはデータの保持を続ける。
【0040】
(2.3) ext Rn
この命令は、Rnデータのサイズを32ビットに変更することを要求する命令である。この命令が解読されると、レジスタRnのSU部2e及びSZ部2fの各々の値がコントローラ23に送られる。以降の動作は、SU部2e及びSZ部2fの値、すなわちレジスタRnの保持データの符号の有無とサイズとに応じて異なる。
【0041】
(i) Rnデータが8ビットデータである場合には、データのサイズ拡張が行われる。具体的には、レジスタRnのDD部2dから8ビットのオペランドデータが読み出され、これがドライバ6d、Bバス32の最下位8ビット部分を順次経てラッチ8dに取り込まれる。そして、ラッチ8dに取り込まれた8ビットデータのサイズが拡張器10a〜10dにより32ビットに拡張される。詳細には、レジスタRnに保持された8ビットデータが符号付きデータであるならば上位24ビットに符号拡張が、レジスタRnに保持された8ビットデータが符号なしデータであるならば上位24ビットにゼロ拡張がそれぞれなされる。このサイズ拡張により得られた32ビットデータは、ALU1a〜1dを素通りしてドライバ12a〜12dに供給され、Cバス33の全部を経てレジスタRnのDA部2a、DB部2b、DC部2c及びDD部2dに格納される。これと並行して、レジスタRnのSZ部2fの値は、8ビットデータの保持を表す値“00”から、32ビットデータの保持を表す値“10”に変更される。ただし、レジスタRnのSU部2eの値は変更されない。これにより、レジスタRnに保持されたデータの符号の有無をそのままに、該データのサイズが8ビットから32ビットへ拡張される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【0042】
(ii) Rnデータが16ビットデータである場合には、データのサイズ拡張が行われる。具体的には、レジスタRnのDC部2c及びDD部2dから16ビットのオペランドデータが読み出され、これがドライバ6c,6d、Bバス32の最下位16ビット部分を順次経てラッチ8c,8dに取り込まれる。そして、ラッチ8c,8dに取り込まれた16ビットデータのサイズが拡張器10a〜10dにより32ビットに拡張される。プロセッサの以降の動作は、Rnデータが8ビットデータである場合に関する上記(i)と同じである。
【0043】
(iii) Rnデータが32ビットデータである場合には、何の動作も行われない。全てのドライバは動作せず、全てのラッチやレジスタはデータの保持を続ける。
【0044】
(3)符号有無変更命令群
符号有無変更命令群には、以下の2種類の命令が含まれる。個々の命令のオペコードフィールドは、オペランドの符号の有無に関する指定情報を含むが、オペランドのデータサイズに関する指定情報を含まない。いずれの命令でも、プロセッサの動作制御は命令解読器22によって行われる。
【0045】
(3.1) sgn Rn
この命令は、レジスタRnに保持されたデータ(Rnデータ)を符号付きデータに変更することを要求する命令である。この命令が解読されると、レジスタRnのSU部2eに符号付きデータの保持を表す値“1”が格納される。レジスタRnのSZ部2fの値は変更されない。これにより、レジスタRnに符号なしデータが保持されていた場合には、そのデータサイズをそのままに、以降は該データが符号付きデータとして扱われることとなる。全てのドライバは動作せず、全てのラッチや他のレジスタはデータの保持を続ける。
【0046】
(3.2) unsgn Rn
この命令は、Rnデータを符号なしデータに変更することを要求する命令である。この命令が解読されると、レジスタRnのSU部2eに符号なしデータの保持を表す値“0”が格納される。レジスタRnのSZ部2fの値は変更されない。これにより、レジスタRnに符号付きデータが保持されていた場合には、そのデータサイズをそのままに、以降は該データが符号なしデータとして扱われることとなる。全てのドライバは動作せず、全てのラッチや他のレジスタはデータの保持を続ける。
【0047】
(4)即値転送命令群
即値転送命令群には、以下の6種類の命令が含まれる。個々の命令のオペコードフィールドは、オペランドの符号の有無に関する指定情報と、オペランドのデータサイズに関する指定情報とを含んでいる。いずれの命令でも、プロセッサの動作制御は命令解読器22によって行われる。
【0048】
(4.1) movb imm8,Rn
この命令は、オペランドフィールドで指定された8ビット即値データ(imm8)を符号付きデータとしてレジスタRnに転送することを要求する命令である。この命令が解読されると、命令レジスタ21から8ビット即値データが読み出される。読み出されたデータは、ドライバ3d、Bバス32の最下位8ビット部分を順次経てラッチ8dに取り込まれ、拡張器10d及びALU1dを素通りしてドライバ12dに供給され、Cバス33の最下位8ビット部分を経てレジスタRnのDD部2dに格納される。これと並行して、レジスタRnのSU部2eには符号付きデータの保持を表す値“1”が、そのSZ部2fには8ビットデータの保持を表す値“00”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【0049】
(4.2) movbu imm8,Rn
この命令は、オペランドフィールドで指定された8ビット即値データを符号なしデータとしてレジスタRnに転送することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタRnのSU部2eに符号なしデータの保持を表す値“0”が格納される点を除いて、上記(4.1)と同じである。
【0050】
(4.3) movh imm16,Rn
この命令は、オペランドフィールドで指定された16ビット即値データ(imm16)を符号付きデータとしてレジスタRnに転送することを要求する命令である。この命令が解読されると、命令レジスタ21から16ビット即値データが読み出される。読み出されたデータは、ドライバ3c,3d、Bバス32の最下位16ビット部分を順次経てラッチ8c,8dに取り込まれ、拡張器10c,10d及びALU1c,1dを素通りしてドライバ12c,12dに供給され、Cバス33の最下位16ビット部分を経てレジスタRnのDC部2c及びDD部2dに格納される。これと並行して、レジスタRnのSU部2eには符号付きデータの保持を表す値“1”が、そのSZ部2fには16ビットデータの保持を表す値“01”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【0051】
(4.4) movhu imm16,Rn
この命令は、オペランドフィールドで指定された16ビット即値データを符号なしデータとしてレジスタRnに転送することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタRnのSU部2eに符号なしデータの保持を表す値“0”が格納される点を除いて、上記(4.3)と同じである。
【0052】
(4.5) mov imm32,Rn
この命令は、オペランドフィールドで指定された32ビット即値データ(imm32)を符号付きデータとしてレジスタRnに転送することを要求する命令である。この命令が解読されると、命令レジスタ21から32ビット即値データが読み出される。読み出されたデータは、ドライバ3a〜3d、Bバス32の全部を順次経てラッチ8a〜8dに取り込まれ、拡張器10a〜10d及びALU1a〜1dを素通りしてドライバ12a〜12dに供給され、Cバス33の全部を経てレジスタRnのDA部2a、DB部2b、DC部2c及びDD部2dに格納される。これと並行して、レジスタRnのSU部2eには符号付きデータの保持を表す値“1”が、そのSZ部2fには32ビットデータの保持を表す値“10”がそれぞれ格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【0053】
(4.6) movu imm32,Rn
この命令は、オペランドフィールドで指定された32ビット即値データを符号なしデータとしてレジスタRnに転送することを要求する命令である。この命令が解読された場合のプロセッサの動作は、レジスタRnのSU部2eに符号なしデータの保持を表す値“0”が格納される点を除いて、上記(4.5)と同じである。
【0054】
(5)算術論理演算命令群
算術論理演算命令群には、以下の5種類のレジスタ間演算命令が含まれる。個々の命令のオペコードフィールドは、オペランドのデータサイズに関する指定情報を含まず、またオペランドの符号の有無に関する指定情報を含まない。ここでは、2オペランド形式を採用し、演算及びフラグの生成はデスティネーションオペランドのデータサイズに基づくものとする。いずれの命令でも、プロセッサの動作制御は命令解読器22とコントローラ23とによって行われる。
【0055】
(5.1) add Rm,Rn
この命令は、レジスタRmに保持されたデータ(Rmデータ)と、レジスタRnに保持されたデータ(Rnデータ)とを加算して、その結果をレジスタRnに格納することを要求する命令である。この命令が解読されると、レジスタRnのSU部2e及びSZ部2fの各々の値と、レジスタRmのSU部2e及びSZ部2fの各々の値とがコントローラ23に送られる。
【0056】
次に、Rmデータの転送について説明する。Rmデータが8ビットデータである場合には、レジスタRmのDD部2dから8ビットのオペランドデータが読み出され、これがドライバ6d、Bバス32の最下位8ビット部分を順次経てラッチ8dに取り込まれる。Rmデータが16ビットデータである場合には、レジスタRmのDC部2c及びDD部2dから16ビットのオペランドデータが読み出され、これがドライバ6c,6d、Bバス32の最下位16ビット部分を順次経てラッチ8c,8dに取り込まれる。Rmデータが32ビットデータである場合には、レジスタRmのDA部2a、DB部2b、DC部2c及びDD部2dから32ビットのオペランドデータが読み出され、これがドライバ6a〜6d、Bバス32の全部を順次経てラッチ8a〜8dに取り込まれる。
【0057】
次に、Rnデータの転送について説明する。Rnデータが8ビットデータである場合には、レジスタRnのDD部2dから8ビットのオペランドデータが読み出され、これがドライバ5d、Aバス31の最下位8ビット部分を順次経てラッチ7dに取り込まれる。Rnデータが16ビットデータである場合には、レジスタRnのDC部2c及びDD部2dから16ビットのオペランドデータが読み出され、これがドライバ5c,5d、Aバス31の最下位16ビット部分を順次経てラッチ7c,7dに取り込まれる。Rnデータが32ビットデータである場合には、レジスタRnのDA部2a、DB部2b、DC部2c及びDD部2dから32ビットのオペランドデータが読み出され、これがドライバ5a〜5d、Aバス31の全部を順次経てラッチ7a〜7dに取り込まれる。
【0058】
ラッチ7a〜7dに保持されたRnデータは、拡張器9a〜9dを素通りして、ALU1a〜1dの左入力に与えられる。ラッチ8a〜8dに保持されたRmデータは、RnデータのサイズがRmデータのサイズより大きい場合には、拡張器10a〜10dによりRnデータのサイズまで拡張がなされたうえ、ALU1a〜1dの右入力に与えられる。そうでない場合には、Rmデータが拡張器10a〜10dを素通りしてALU1a〜1dの右入力に与えられる。Rmデータのサイズ拡張がなされる際、Rmデータの符号の有無に関する情報に応じて、“1”ならば符号拡張が、“0”ならばゼロ拡張がそれぞれ選択される。
【0059】
ALU1a〜1d及びゲート11a〜11cは、Rnデータのサイズに応じて動作する。Rnデータが8ビットデータである場合には、ALU1dのみが動作して、8ビットの加算結果と、フラグとが得られる。Rnデータが16ビットデータである場合には、ALU1c,1d及びゲート11cのみが動作して、16ビットの加算結果と、フラグとが得られる。Rnデータが32ビットデータである場合には、ALU1a〜1d及びゲート11a〜11cの全てが動作して、32ビットの加算結果と、フラグとが得られる。フラグは、Rnデータのサイズに応じたビット位置において、かつRnデータの符号の有無に関する情報に応じて生成される。
【0060】
レジスタファイル2への加算結果の格納も、Rnデータのサイズに応じてなされる。Rnデータが8ビットデータである場合には、8ビットの加算結果がドライバ12dに供給され、Cバス33の最下位8ビット部分を経てレジスタRnのDD部2dに格納される。Rnデータが16ビットデータである場合には、16ビットの加算結果がドライバ12c,12dに供給され、Cバス33の最下位16ビット部分を経てレジスタRnのDC部2c及びDD部2dに格納される。Rnデータが32ビットデータである場合には、32ビットの加算結果がドライバ12a〜12dに供給され、Cバス33の全部を経てレジスタRnのDA部2a、DB部2b、DC部2c及びDD部2dに格納される。以上のプロセッサ動作の間、他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【0061】
(5.2) sub Rm,Rn
この命令は、RmデータからRnデータを減算して、その結果をレジスタRnに格納することを要求する命令である。この命令が解読された場合のプロセッサの動作は、ALU1a〜1dにおける演算操作が減算である点を除いて、上記(5.1)と同じである。
【0062】
(5.3) cmp Rm,Rn
この命令は、RmデータとRnデータとを比較することを要求する命令である。この命令が解読された場合のプロセッサの動作は、ALU1a〜1dにおける演算操作が減算である点と、ドライバ12a〜12dの全てがCバス33を駆動しない点と、レジスタRnのDA部2a、DB部2b、DC部2c及びDD部2dが更新されない点とを除いて、上記(5.1)と同じである。
【0063】
(5.4) and Rm,Rn
この命令は、RmデータとRnデータとの論理積をレジスタRnに格納することを要求する命令である。この命令が解読された場合のプロセッサの動作は、ALU1a〜1dにおける演算操作が論理積である点を除いて、上記(5.1)と同じである。
【0064】
(5.5) or Rm,Rn
この命令は、RmデータとRnデータとの論理和をレジスタRnに格納することを要求する命令である。この命令が解読された場合のプロセッサの動作は、ALU1a〜1dにおける演算操作が論理和である点を除いて、上記(5.1)と同じである。
【0065】
(6)ストア命令群
ストア命令群には、次の1種類の命令が含まれる。命令のオペコードフィールドは、オペランドのデータサイズに関する指定情報を含まず、またオペランドの符号の有無に関する指定情報を含まない。プロセッサの動作制御は命令解読器22とコントローラ23とによって行われる。
【0066】
(6.1) st Rn,mem
この命令は、レジスタRnに保持されたデータ(Rnデータ)をメモリにストアすることを要求する命令であって、メモリへのストアはRnデータのサイズに基づく。この命令が解読されると、レジスタRnのSU部2e及びSZ部2fの各々の値がコントローラ23に送られる。Rnデータが8ビットデータである場合には、レジスタRnのDD部2dから8ビットのオペランドデータが読み出され、これがドライバ6d、Bバス32の最下位8ビット部分を順次経てラッチ8dに取り込まれ、拡張器10d及びALU1dを素通りしてドライバ12dに供給され、Cバス33の最下位8ビット部分を経てRAM25に格納される。Rnデータが16ビットデータである場合には、レジスタRnのDC部2c及びDD部2dから16ビットのオペランドデータが読み出され、これがドライバ6c,6d、Bバス32の最下位16ビット部分を順次経てラッチ8c,8dに取り込まれ、拡張器10c,10d及びALU1c,1dを素通りしてドライバ12c,12dに供給され、Cバス33の最下位16ビット部分を経てRAM25に格納される。Rnデータが32ビットデータである場合には、レジスタRnのDA部2a、DB部2b、DC部2c及びDD部2dから32ビットのオペランドデータが読み出され、これがドライバ6a〜6d、Bバス32の全部を順次経てラッチ8a〜8dに取り込まれ、拡張器10a〜10d及びALU1a〜1dを素通りしてドライバ12a〜12dに供給され、Cバス33の全部を経てRAM25に格納される。他のドライバは動作せず、他のラッチやレジスタはデータの保持を続ける。
【0067】
以上で図2中の全ての命令群を説明した。次に、2つの8ビットデータをメモリから順次ロードし、これらを加算し、その結果を表す8ビットデータをメモリにストアするという一連の動作を行うことを要求する命令列、すなわち、
命令1: ldb mem,R0
命令2: ldb mem,R1
命令3: add R1,R0
命令4: st R0,mem
が実行される場合の、図1のプロセッサの動作を説明する。まず、命令1の実行により、RAM25から8ビットデータがロードされ、これが符号付きデータとしてレジスタR0のDD部2dに設定される。レジスタR0のSZ部2fには、8ビットデータの保持を表す値“00”が格納される。次に、命令2の実行により、RAM25から更に8ビットデータがロードされ、これが符号付きデータとしてレジスタR1のDD部2dに設定される。レジスタR1のSZ部2fには、8ビットデータの保持を表す値“00”が格納される。続いて、命令3の実行により、レジスタR0及びR1の各々のSZ部2fが参照されて、R0データとR1データとの8ビット加算が行われ、その結果を表す8ビットデータがレジスタR0に格納される。この際、R0データは拡張器9dを素通りしてALU1dの左入力に、R1データは拡張器10dを素通りしてALU1dの右入力にそれぞれ与えられる。ALU1dは8ビットの加算結果を生成し、この加算結果はレジスタR0のDD部2dに格納される。最後に、命令4の実行により、レジスタR0のSZ部2fが参照されて、当該レジスタR0に保持された8ビットの加算結果がRAM25にストアされる。
【0068】
以上の一連のプロセッサ動作では、ALU1a〜1c、レジスタR0,R1の各々のDA部2a、DB部2b及びDC部2c、ドライバ4a〜4c,5a〜5c,6a〜6c、ラッチ7a〜7c,8a〜8c、拡張器9a〜9c,10a〜10c、ゲート11a〜11c、ドライバ12a〜12c、並びに、A、B及びCバス31,32,33の各々の上位24ビット部分は決して使用されないので、電力消費の無駄が削減される。上記命令列中の例えば命令1(ロード命令)を即値転送命令に置き換えても同様である。また、図1のプロセッサで16ビットデータを扱う場合にも消費電力削減効果が得られる。
【0069】
しかも、図1のプロセッサによれば、レジスタファイル2を構成する8本のレジスタR0〜R7の各々にSZ部2fを設け、RAM25からレジスタファイル2への特定サイズのオペランドデータのロードを要求する命令や、レジスタファイル2への特定サイズの即値オペランドデータの転送を要求する命令が解読されたときには、オペランドデータのサイズ情報をSZ部2fに保持させ、レジスタファイル2の中のオペランドデータの参照を要求する算術論理演算命令、又は、レジスタファイル2からRAM25へのオペランドデータのストアを要求する命令が解読されたときには、レジスタファイル2のSZ部2fからサイズ情報を読み出して、操作手段を構成する種々の要素のうち当該サイズ情報により指定された部分のみを動作させることとしたので、命令数を増やさずに、従来のプログラム資産を活用しながら上記消費電力削減効果を得ることができる。
【0070】
なお、本発明は、複数のサイズのデータを扱うプロセッサである限り、RISC型に限らず、例えばCISC(Complex Instruction Set Computer)型のプロセッサにも適用可能である。その他、例えば次のような変形が可能である。
【0071】
(a)算術論理演算命令群において、演算及びフラグの生成はデスティネーションオペランドのデータサイズに基づくとしたが、ソースオペランドとデスティネーションオペランドとのうちデータサイズの大きい方に基づくとしてもよい。
【0072】
(b)算術論理演算命令群は2オペランド形式としたが、3オペランド形式であってもよい。その場合、デスティネーションオペランドのデータサイズは、2つのソースオペランドのデータサイズのうち大きい方に基づくとするのが好適である。
【0073】
(c)レジスタファイル、ラッチ、拡張器、ALU、ドライバ、バスを最上位8ビット、中上位8ビット、中下位8ビット、最下位8ビットの4つの部分に分けて制御しているが、最上位8ビットと中上位8ビットとを一体化して、最上位16ビット、中位8ビット、最下位8ビットの3つの部分に区切って制御してもよい。
【0074】
(d)データサイズを8ビット、16ビット、32ビットの3種類としているが、それに24ビットのデータサイズを加えて4種類としてもよい。こうすれば、レジスタファイル、ラッチ、拡張器、ALU、ドライバ、バスを最上位8ビット、中上位8ビット、中下位8ビット、最下位8ビットの4つの部分に分けて制御する図1の構成が活かされる。
【0075】
(e)データサイズを8ビット、16ビット、32ビット、64ビットの4種類とすることも可能である。例えば、レジスタファイル、ラッチ、拡張器、ALU、ドライバ、バスのビット幅を64ビットに拡げ、最上位32ビット、中上位16ビット、中下位8ビット、最下位8ビットの4つの部分に分けて制御するようにすればよい。
【0076】
(f)データサイズは8ビットの倍数に限らない。ALUの出力からレジスタファイル2の入力に至る経路上のいずれかの位置にオペランドデータの有効サイズ検出機構を設け、検出した有効サイズをSZ部2fに保持させるようにしてもよい。例えば、名目上は32ビットの符号なしデータであっても、実際には最上位28ビットが全て0値ビットであることもある。このような場合には、4ビットデータの保持を意味するサイズ情報をSZ部2fに保持させ、このサイズ情報に応答して、操作手段を構成する種々の要素の最下位4ビット部分のみを動作させればよい。
【0077】
(g)レジスタファイル2の中にSU部2e及びSZ部2fを設けず、算術論理演算命令の実行時にレジスタファイル2から2つの32ビットデータを読み出し、両データからその有効サイズと符号付き/符号なしの区別とを検出するためのサイズ/符号検出部を別に設けるようにしてもよい。このサイズ/符号検出部は、各データの最上位ビット側からビットサーチを行い、最初に1が立っているビットの位置を検出する。その値の大きい方を有効サイズとし、これをコントローラ23に入力する。また、ビットサーチの結果、最上位ビットに1が立っている場合には「符号付き」の情報を、立っていない場合には「符号なし」の情報をコントローラ23に入力する。この一連の動作によって、コントローラ23は上記と同様の信号を入力されるので、以後の動作は同様である。ただし、ALU等の操作手段は動作幅が1ビット単位で分割されているものとする。なお、動作幅を1ビット単位ではなく例えば4ビット単位で分割することとすれば、サイズ/符号検出部でビットサーチを行わず、代わりに4ビット毎の論理操作をすればよいので効率的である。
【0078】
(h)マルチタスク処理に対応するためには、SU部2e及びSZ部2fをコンテキストブロックに追加し、タスク切り換え時にはこれらを退避又は復帰するようにすればよい。
【0079】
【発明の効果】
以上説明してきたとおり、本発明によれば、複数のサイズのデータを扱うプロセッサにおいて、最大サイズに対応したビット幅を有する操作手段のうち、指定されたオペランドのデータサイズに応じた部分のみを動作させることとしたので、当該プロセッサにおける電力消費の無駄を削減することができる。
【0080】
また、オペランドデータのサイズ情報をレジスタファイルに保持させ、当該オペランドデータの参照を要求する算術論理演算命令等が解読されたときには、レジスタファイルからオペランドデータとともにサイズ情報を読み出して、前記操作手段のうち当該サイズ情報により指定された部分のみを動作させることとすれば、命令数を増やさずに、従来のプログラム資産を活用しながら上記消費電力削減効果を得ることができる。
【図面の簡単な説明】
【図1】本発明に係るプロセッサの構成例を示すブロック図である。
【図2】図1のプロセッサの命令セットの一部を示す図である。
【符号の説明】
1a〜1d ALU[算術論理演算手段]
2 レジスタファイル[レジスタ手段]
2a データA部(DA部)
2b データB部(DB部)
2c データC部(DC部)
2d データD部(DD部)
2e 符号情報部(SU部)
2f サイズ情報部(SZ部)
3a〜3d ドライバ[ドライバ手段]
4a〜4d ドライバ[ドライバ手段]
5a〜5d ドライバ[ドライバ手段]
6a〜6d ドライバ[ドライバ手段]
7a〜7d ラッチ[ラッチ手段]
8a〜8d ラッチ[ラッチ手段]
9a〜9d 拡張器[拡張手段]
10a〜10d 拡張器[拡張手段]
11a〜11c ゲート[演算情報伝達手段]
12a〜12d ドライバ[ドライバ手段]
20 ROM
21 命令レジスタ(IR)
22 命令解読器(ID)[操作制御手段]
23 コントローラ[操作制御手段]
24 ロードストアユニット
25 RAM
31 Aバス[バス手段]
32 Bバス[バス手段]
33 Cバス[バス手段]
Claims (17)
- 複数のサイズのデータを扱うプロセッサであって、
命令により指定されたオペランドに、前記命令により指定された操作を施すための、前記複数のサイズのうちの最大サイズに対応したビット幅を有する操作手段と、
与えられた命令を解読することにより、該命令により指定されたオペランドについて、該指定されたオペランドのデータサイズに関するサイズ情報を得て、前記操作手段のうち前記サイズ情報により指定された部分のみを動作させるための操作制御手段とを備え、
前記操作手段は、オペランドデータと、該オペランドデータのサイズに関するサイズ情報とを保持するためのレジスタ手段を有し、
前記操作制御手段は、
前記レジスタ手段への特定サイズのオペランドデータの設定を要求する第1の命令が解読されて、該第1の命令により指定されたオペランドのデータサイズに関するサイズ情報が得られたときには、前記オペランドデータとともに前記サイズ情報を前記レジスタ手段に保持させる機能と、
前記レジスタ手段に保持されたオペランドデータの参照を要求する第2の命令が解読されたときには、前記レジスタ手段から前記オペランドデータとともに該オペランドデータのサイズに関するサイズ情報を読み出して、前記操作手段のうち前記レジスタ手段から読み出したサイズ情報により指定された部分のみを動作させる機能とを更に有することを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記操作手段は、オペランドデータに算術論理演算操作を施すための、前記最大サイズに対応したビット幅を有する算術論理演算手段を備え、
前記算術論理演算手段のうち前記指定されたオペランドのデータサイズに応じた部分のみが動作するように構成されたことを特徴とするプロセッサ。 - 請求項2記載のプロセッサにおいて、
前記操作手段は、前記算術論理演算手段を構成する各部分の間で演算情報を伝達するための演算情報伝達手段を更に備え、
前記演算情報伝達手段のうち前記指定されたオペランドのデータサイズに応じた部分のみが動作するように構成されたことを特徴とするプロセッサ。 - 請求項3記載のプロセッサにおいて、
前記演算情報伝達手段により伝達される演算情報は、桁上げに関する情報であることを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記操作手段は、
オペランドデータを転送するための、前記最大サイズに対応したビット幅を有するバス手段と、
前記バス手段を駆動するための、前記最大サイズに対応したビット幅を有するドライバ手段とを備え、
前記ドライバ手段のうち前記指定されたオペランドのデータサイズに応じた部分のみが動作するように構成されたことを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記操作手段は、
オペランドデータを転送するための、前記最大サイズに対応したビット幅を有するバス手段と、
前記バス手段上のオペランドデータを取り込むための、前記最大サイズに対応したビット幅を有するラッチ手段とを備え、
前記ラッチ手段のうち前記指定されたオペランドのデータサイズに応じた部分のみが動作するように構成されたことを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記操作手段は、オペランドデータのサイズを拡張するための、前記最大サイズに対応したビット幅を有する拡張手段を備え、
前記拡張手段のうち前記指定されたオペランドのデータサイズに応じた部分のみが動作するように構成されたことを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記プロセッサは、RISC型であることを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記第1の命令は、メモリから前記レジスタ手段へのオペランドデータのロードを要求する命令、又は、前記レジスタ手段への即値オペランドデータの転送を要求する命令であることを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記第2の命令は、オペランドのデータサイズに関する指定情報を含まないオペコードフィールドを有する命令であることを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記第2の命令は、前記レジスタ手段を参照する算術論理演算命令、又は、前記レジスタ手段からメモリへのオペランドデータのストアを要求する命令であることを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記操作制御手段は、特定サイズへのオペランドデータのサイズの変更を要求する第3の命令が解読されて、該第3の命令により指定されたオペランドのデータサイズに関する新たなサイズ情報が得られたときには、前記レジスタ手段中の前記指定されたオペランドに対応するデータのサイズ情報を変更する機能を更に有することを特徴とするプロセッサ。 - 請求項1記載のプロセッサにおいて、
前記第1の命令は、オペランドデータを符号付きデータとして扱うべきか又は符号なしデータとして扱うべきかを指定する、オペランドの符号の有無に関する符号情報を含むオペコードフィールドを有する命令であり、
前記レジスタ手段は、前記オペランドデータの符号の有無に関する符号情報を保持する機能を更に有し、
前記操作制御手段は、
前記第1の命令が解読されて、該第1の命令により指定されたオペランドの符号の有無に関する符号情報が得られたときには、前記オペランドデータとともに前記符号情報を前記レジスタ手段に保持させる機能と、
前記レジスタ手段に保持されたオペランドデータの参照を要求する前記第2の命令が解読されたときには、前記レジスタ手段から前記オペランドデータとともに該オペランドデータの符号の有無に関する符号情報を読み出して、該読み出した符号情報に従って前記第2の命令が実行されるように前記操作手段を制御する機能とを更に有することを特徴とするプロセッサ。 - 請求項13記載のプロセッサにおいて、
前記操作制御手段は、オペランドデータの符号の有無の変更を要求する第4の命令が解読されて、該第4の命令により指定されたオペランドの符号の有無に関する新たな符号情報が得られたときには、前記レジスタ手段中の前記指定されたオペランドに対応するデータの符号情報を変更する機能を更に有することを特徴とするプロセッサ。 - 請求項14記載のプロセッサにおいて、
前記操作制御手段は、
与えられた命令を解読するための命令解読器と、
前記レジスタ手段への前記サイズ情報及び前記符号情報の書き込みと、前記レジスタ手段からの前記サイズ情報及び前記符号情報の読み出しとを司るコントローラとを備えたことを特徴とするプロセッサ。 - 複数のサイズのデータを扱うプロセッサであって、
命令により指定されたオペランドに、前記命令により指定された操作を施すための、前 記複数のサイズのうちの最大サイズに対応したビット幅を有する操作手段と、
前記操作手段のうち前記指定されたオペランドのデータサイズに応じた部分のみを動作させるための操作制御手段とを備え、
前記操作手段は、オペランドデータと、該オペランドデータのサイズに関するサイズ情報とを保持するためのレジスタ手段を有し、
前記操作制御手段は、前記レジスタ手段への特定サイズのオペランドデータの設定を要求する第1の命令が解読されて、該第1の命令により指定されたオペランドのデータサイズに関するサイズ情報が得られたときには、前記オペランドデータとともに前記サイズ情報を前記レジスタ手段に保持させる機能を更に有することを特徴とするプロセッサ。 - 請求項16記載のプロセッサにおいて、
前記操作制御手段は、前記レジスタ手段に保持されたオペランドデータの参照を要求する第2の命令が解読されたときには、前記レジスタ手段から前記オペランドデータとともに該オペランドデータのサイズに関するサイズ情報を読み出して、前記操作手段のうち前記レジスタ手段から読み出したサイズ情報により指定された部分のみを動作させる機能を更に有することを特徴とするプロセッサ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25997699A JP3805578B2 (ja) | 1999-09-14 | 1999-09-14 | プロセッサ |
US09/606,091 US6802017B1 (en) | 1999-09-14 | 2000-06-29 | Partial enabling of functional unit based on data and size pair in register |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25997699A JP3805578B2 (ja) | 1999-09-14 | 1999-09-14 | プロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001084141A JP2001084141A (ja) | 2001-03-30 |
JP3805578B2 true JP3805578B2 (ja) | 2006-08-02 |
Family
ID=17341557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25997699A Expired - Fee Related JP3805578B2 (ja) | 1999-09-14 | 1999-09-14 | プロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US6802017B1 (ja) |
JP (1) | JP3805578B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6732203B2 (en) | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
US20040078608A1 (en) * | 2001-04-02 | 2004-04-22 | Ruban Kanapathippillai | Method and apparatus for power reduction in a digital signal processor integrated circuit |
CN101044450A (zh) * | 2004-10-19 | 2007-09-26 | 松下电器产业株式会社 | 处理器 |
JP2007122626A (ja) * | 2005-10-31 | 2007-05-17 | Matsushita Electric Ind Co Ltd | マイクロプロセッサ |
US20080141046A1 (en) * | 2006-12-06 | 2008-06-12 | International Business Machines Corporation | Partial data flow functional gating using structural or partial operand value information |
KR20090085944A (ko) * | 2008-02-05 | 2009-08-10 | 삼성전자주식회사 | 전력 소모를 감소시킨 프로세서 및 반도체 장치 |
WO2010112970A1 (en) * | 2009-03-31 | 2010-10-07 | Freescale Semiconductor, Inc. | Data processing with variable operand size |
GB2478731B (en) * | 2010-03-15 | 2013-08-21 | Advanced Risc Mach Ltd | Operand size control |
GB2483906C (en) * | 2010-09-24 | 2019-10-09 | Advanced Risc Mach Ltd | Selection of debug instruction set for debugging of a data processing apparatus |
US9317285B2 (en) * | 2012-04-30 | 2016-04-19 | Apple Inc. | Instruction set architecture mode dependent sub-size access of register with associated status indication |
US9639369B2 (en) | 2013-11-11 | 2017-05-02 | Apple Inc. | Split register file for operands of different sizes |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5833572B2 (ja) * | 1977-10-21 | 1983-07-20 | 株式会社東芝 | 情報処理方式 |
US4812971A (en) * | 1983-10-03 | 1989-03-14 | Digital Equipment Corporation | Central processing unit for a digital computer |
DE3479356D1 (en) * | 1983-12-23 | 1989-09-14 | Hitachi Ltd | A data processor with control of the significant bit lenghts of general purpose registers |
US4649477A (en) * | 1985-06-27 | 1987-03-10 | Motorola, Inc. | Operand size mechanism for control simplification |
JPH06250818A (ja) | 1993-02-24 | 1994-09-09 | Matsushita Electric Ind Co Ltd | 算術論理演算装置 |
-
1999
- 1999-09-14 JP JP25997699A patent/JP3805578B2/ja not_active Expired - Fee Related
-
2000
- 2000-06-29 US US09/606,091 patent/US6802017B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6802017B1 (en) | 2004-10-05 |
JP2001084141A (ja) | 2001-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6456867B2 (ja) | 密結合ヘテロジニアスコンピューティングのためのハードウェアプロセッサ及び方法 | |
KR101790428B1 (ko) | 조건부 루프들을 벡터화하기 위한 명령어들 및 로직 | |
JP6699845B2 (ja) | 方法及びプロセッサ | |
JP5926754B2 (ja) | 限定範囲ベクトルメモリアクセス命令、プロセッサ、方法、及びシステム | |
JP6467742B2 (ja) | プロセッサ、方法、およびプロセッシングシステム | |
US7836278B2 (en) | Three operand instruction extension for X86 architecture | |
JP5201641B2 (ja) | 重複オペランドを使用したsimdの内積演算 | |
JP6673574B2 (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
JP3805578B2 (ja) | プロセッサ | |
WO2006112045A1 (ja) | 演算処理装置 | |
KR102472894B1 (ko) | 벡터 패킹된 투플 교차 비교 기능을 제공하기 위한 방법, 장치, 명령어들 및 로직 | |
WO2013095657A1 (en) | Instruction and logic to provide vector blend and permute functionality | |
US9009450B2 (en) | Mixed operand size instruction processing for execution of indirect addressing load instruction specifying registers for different size operands | |
CN114004349A (zh) | 一种能支持不同位宽运算数据的运算单元、方法及装置 | |
US10235179B2 (en) | Data processor selecting a flag out of a plurality of flags generated by an instruction operating on multiple operand sizes in parallel | |
JP3683773B2 (ja) | Simd演算を実行するために標準macユニットを利用する浮動小数点ユニット | |
CN108139911B (zh) | 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格 | |
JPH0895804A (ja) | 中央処理装置 | |
EP2889755A2 (en) | Systems, apparatuses, and methods for expand and compress | |
GB2402763A (en) | Data access program instruction encoding | |
US6078940A (en) | Microprocessor with an instruction for multiply and left shift with saturate | |
US7047383B2 (en) | Byte swap operation for a 64 bit operand | |
JP2580396B2 (ja) | パイプラインにおける分岐命令制御方式 | |
JPS63175932A (ja) | ディジタル信号処理装置 | |
JPH1091432A (ja) | プログラム実行方法およびプログラム実行装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041012 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051129 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060127 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060221 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060403 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060425 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060510 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100519 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110519 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110519 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120519 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |