説明

プロセッサおよびそれを用いたマイクロコンピュータシステム

【課題】汎用レジスタを用いないプロセッサを提供すること。
【解決手段】複数のCo−CPUが互いに接続され、複数のCo−CPUが別個の演算を並列に実行するプロセッサが提供される。複数のCo−CPUのそれぞれは、コマンドデコーダ22と、ALU21と、複数のセレクタ23〜36とを含む。コマンドデコーダ22は、コマンドコードをデコードする。セレクタ23〜28は、隣接する複数のCo−CPUからの出力およびMRAMからの出力を受け、少なくとも1つを選択的に出力する。ALU21は、セレクタ27および28からの出力に対してコマンドデコーダ22によるデコード結果に応じた演算を行なう。セレクタ31〜32は、ALU21による演算結果および隣接する複数のCo−CPUからの出力を受け、隣接する他の複数のCo−CPUに選択的に出力する。したがって、汎用レジスタを用いないプロセッサを提供することが可能になる。

【発明の詳細な説明】
【技術分野】
【0001】
複数の演算器を含んだプロセッサに関し、特に、それぞれの演算器が異なる命令コードを並列に処理することが可能なプロセッサおよびそれを用いたマイクロコンピュータシステムに関する。
【背景技術】
【0002】
近年、プロセッサによる処理性能の向上を図るために、複数の演算器を並列に動作させる技術、たとえばSIMD(Single Instruction/Multiple Data)、MIMD(Multiple Instruction/Multiple Data)などの開発が盛んに行なわれている。
【0003】
一方、プロセッサを搭載したシステムにおいて使用されるメモリも多様化しており、MRAM(Magnetic Random Access Memory)を用いたものも開発されている。MRAMは不揮発メモリではあるが、同じ不揮発メモリであるフラッシュメモリよりも高速に読出し/書込み動作を行なうことができる。また、MRAMは、フラッシュメモリのように書換え回数の制限がない。
【0004】
したがって、プロセッサと不揮発メモリとを混載したMCU(Micro Controller Unit)、いわゆるワンチップマイコンにおいて、比較的書換え回数が少ない不揮発のROM(Read Only Memory)として用いられる部分以外に、SRAM(Static Random Access Memory)が使われていた部分にもMRAMを用いることができる。これに関連する技術として、下記の特許文献1に開示された発明がある。
【0005】
特許文献1に開示された発明において、キャッシュ制御部が、CPUから32ビットのロング・データの書き込み要求時のサイクルではCPUから出力されるアドレスおよびロング・データを保持するとともに、書き込むべき32ビットのロング・データのうち8ビットだけをCPUから出力されるアドレスに対応するMRAMの記憶領域に格納する。また、CPUがMRAMへのデータの読み出し/書き込み要求を行なわないサイクル時に、保持しているアドレスに対応するMRAMの記憶領域に、保持しているロング・データのうちMRAMに格納していない残りのデータを8ビット単位で格納する。
【特許文献1】特開2006−338513号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
上述のように、ワンチップマイコンなどにおいて、MRAMを従来SRAMが使われていた部分にも用いると、MRAMは不揮発メモリであるため、瞬間的に停電状態(以下、瞬停と略す。)となって電源の供給が一時的に停止した場合でも、処理中のデータが失われることはない。そのため、瞬停から復帰して電源の供給が再開されたときに、瞬停直後のプログラムから再開することが可能となる。
【0007】
しかしながら、従来のプロセッサは演算を複数の汎用レジスタを用いて行なっているため、瞬停直後のプログラムから処理を再開するためには電源が完全に停止する前に全ての汎用レジスタの内容をMRAMに退避する必要がある。したがって、全ての汎用レジスタの内容をMRAMに退避するまで電源を維持する必要がある。
【0008】
また、従来のプロセッサは仕様上規定された汎用レジスタ以外にも、パイプライン処理などのためにさらに多くのレジスタを備えており、これらのレジスタの内容を全て退避するまで電源を維持するのが困難となってきている。
【0009】
また、上述した特許文献1は、MRAMを用いたデータ処理装置を開示しているが、瞬停時における処理の開示はない。
【0010】
本発明は、上記問題点を解決するためになされたものであり、その目的は、汎用レジスタを用いないプロセッサおよびそれを用いたマイクロコンピュータシステムを提供することである。
【課題を解決するための手段】
【0011】
本発明の一実施例によれば、複数のCo−CPUが互いに接続され、複数のCo−CPUが別個の演算を並列に実行するプロセッサが提供される。複数のCo−CPUのそれぞれは、コマンドデコーダと、ALUと、複数のセレクタとを含む。コマンドデコーダは、コマンドコードをデコードする。セレクタは、隣接する複数のCo−CPUからの出力およびMRAMからの出力を受け、少なくとも1つを選択的に出力する。ALUは、セレクタからの出力に対してコマンドデコーダによるデコード結果に応じた演算を行なう。セレクタは、ALUによる演算結果および隣接する複数のCo−CPUからの出力を受け、隣接する他の複数のCo−CPUに選択的に出力する。
【発明の効果】
【0012】
この実施例によれば、複数のCo−CPUが互いに接続され、複数のCo−CPUが別個の演算を並列に実行するので、汎用レジスタを用いないプロセッサを提供することが可能になるという効果がある。
【発明を実施するための最良の形態】
【0013】
図1は、本発明の実施の形態におけるプロセッサ(以下、CPU(Central Processing Unit)とも呼ぶ。)を含んだMRAM内蔵マイコンの概略構成の一例を示す図である。このマイコン100は、CPU1と、命令コードを格納するMRAM2および3と、シフタ群4および5と、データを格納するMRAM6および7とを含む。なお、本実施の形態においては、マイコンがMRAMを内蔵する場合について説明するが、電源が停止してもデータを保持することが可能な他の不揮発メモリを内蔵してもよい。
【0014】
CPU1は、命令コード(以下、コマンドコードとも呼ぶ。)をフェッチするときにCA(Code Address)にアドレスを出力する。MRAM2および3はそれぞれ、CPU1からのアドレスに応じて8×16(=128)ビットの命令コードを同時に出力する。シフタ群4および5は、連続したアドレスの命令コードをコードバスに順次出力するように制御される。CPU1は、コードバスに出力された命令コードをCC(Command Code)を介して受け、命令コードに応じた処理を行なう。
【0015】
CPU1は、MRAM6および7からデータを読み出すときにDAO(Data Address Out)にアドレスを出力する。MRAM6および7は、CPU1からのアドレスに応じて32ビットのデータを出力する。CPU1は、MRAM6および7から出力されたデータをMDI(Memory Data Input)を介して読込む。
【0016】
CPU1は、MRAM6および7にデータを書込むときにDAOにアドレスを出力すると共に、DO(Data Out)に32ビットのデータを出力する。MRAM6および7は、CPU1からのアドレスに応じてデータを書込む。
【0017】
また、CPU1には外部との高速/広帯域インタフェースであるHSI(High Speed Input)およびHSO(High Speed Output)が設けられており、MRAM以外のデバイスとの間で高速にデータの読出し/書込みが可能である。
【0018】
図2は、CPU1の内部構成の一例を示すブロック図である。CPU1は、16個のCo−CPU11−0〜11−15と、プログラムカウンタ(PC)12とを含む。なお、Co−CPUは、演算ユニットとも呼ぶ。
【0019】
Co−CPU11−0〜11−15は、それぞれLLI、RLI、LLOおよびRLOを有している。LLIは、図2の下側に隣接するCo−CPUのRLOに接続される。また、RLIは、図2の下側に隣接するCo−CPUのLLOに接続される。なお、図2の最下段のCo−CPU11−12〜11−15のLLIのそれぞれは最上段のCo−CPU11−0〜11−3のRLOのそれぞれに接続され、Co−CPU11−12〜11−15のRLIのそれぞれはCo−CPU11−0〜11−3のLLOのそれぞれに接続され、データを循環できるように接続されている。
【0020】
また、Co−CPU11−0〜11−15は、それぞれHBIおよびHBOを有しており、上述のように外部のデバイスとの間で高速にデータの読出し/書込みが行なえる。HBIは、HSIに接続される。HBOは、HSOに接続される。
【0021】
また、一部のCo−CPUは、DBI、DBO、ABOおよび/またはPBOを有している。DBIは、MDIに接続される。DBIを有しているCo−CPUのみ、MRAM6および7からのデータを入力することができる。DBOは、DOに接続される。DBOを有するCo−CPUのみがMRAM6および7にデータを出力することができる。
【0022】
ABOは、DAOに接続される。ABOを有しているCo−CPUのみがMRAM6および7にアドレスを出力することができる。PBOは、プログラムカウンタ12に接続される。PBOを有するCo−CPUのみがプログラムカウンタ12の値を変更することが可能である。
【0023】
また、Co−CPU11−0〜11−15のそれぞれには、コマンドコード0〜15が入力される。Co−CPU11−0〜11−15のそれぞれは、コマンドコード0〜15によって指定される演算を実行する。
【0024】
図3は、Co−CPU11−0〜11−15の内部構成を示すブロック図である。Co−CPU11−0〜11−15のそれぞれは、ALU21と、コマンドデコーダ22と、セレクタ23〜36とを含む。
【0025】
コマンドデコーダ22は、コマンドコード(Code)と、分岐判定を示すT_inと、イミディエート値を示すIMMIとを受けてデコードし、デコード結果をALU21およびセレクタ23〜36に出力する。また、コマンドデコーダ22は、イミディエート値をIMML_outまたはIMMR_outを介して次段のCo−CPUに出力する。
【0026】
セレクタ23および24のそれぞれは、PBIの値およびDBIの値のいずれかを選択して出力する。なお、PBIはPCの値が入力される端子であり、図2ではそれを省略している。
【0027】
セレクタ25は、LLIの値およびセレクタ23の出力値のいずれかを選択して出力する。セレクタ26は、RLIの値およびセレクタ24の出力値のいずれかを選択して出力する。
【0028】
セレクタ27は、HBIの値およびセレクタ25の出力値のいずれかを選択して出力する。セレクタ28は、HBIの値およびセレクタ26の出力値のいずれかを選択して出力する。セレクタ29および30は、セレクタ27の出力値およびセレクタ28の出力値のいずれかを選択して出力する。
【0029】
セレクタ31は、ALU21の出力値およびセレクタ29の出力値のいずれかを選択して出力する。セレクタ32は、ALU21の出力値およびセレクタ30の出力値のいずれかを選択して出力する。
【0030】
セレクタ33は、セレクタ31の出力値およびセレクタ32の出力値のいずれかを選択してHBOに出力する。セレクタ34は、セレクタ31の出力値およびセレクタ32の出力値のいずれかを選択してPBOに出力する。
【0031】
セレクタ35は、セレクタ31の出力値およびセレクタ32の出力値のいずれかを選択してABOに出力する。セレクタ36は、セレクタ31の出力値およびセレクタ32の出力値のいずれかを選択してDBOに出力する。
【0032】
なお、セレクタ31の出力値がそのままLLOに出力され、セレクタ32の出力値がそのままRLOに出力される。
【0033】
セレクタの切替えによってLLIの値またはRLIの値をそのままLLOまたはRLOに出力することにより、データをスルーすることも可能である。
【0034】
ALU21は、コマンドデコーダ22のデコード結果に応じて演算を行なう。このときの演算対象は、セレクタ27の出力値およびセレクタ28の出力値の中の1つまたは2つである。また、ALU21は、コマンドコードがイミディエート値のロード命令の場合、イミディエート値をそのまま出力する。また、ALU21は、演算によって発生したフラグ(Tビット)をT_outを介して次段のCo−CPUに出力する。
【0035】
図4は、コマンドコードのビットアサインの一例を示す図である。コマンドコードは8ビットで構成され、そのうち上位4ビットが演算の種類を示し、下位4ビットがセレクタ23〜36の切替えを示す。演算の種類として使用頻度が高い命令(以下、標準命令と呼ぶ。)のみが記載されており、それ以外の演算は拡張命令としてサポートしている。すなわち、使用頻度が高い命令が1命令(8ビット)で構成され、使用頻度が低い命令が2命令(16ビット)で構成される。各演算の詳細は後述する。
【0036】
図4の“入力”はALU21にどの値が入力されるかを示しており、“出力”はLLOおよびRLOにどの値が出力されるかを示している。また、“外部出力”はALU21の演算結果が外部出力であるHBO、DAO、DOまたはPBOのいずれかに出力される場合に記載されている。
【0037】
たとえば、コマンドコードの下位4ビットが“0000”の場合、ALU21の入力としてLLIおよびRLIが選択され、ALU21の演算結果がLLOに出力され、RLIの値がRLOに出力されるようにセレクタ23〜36が切替えられる。
【0038】
また、コマンドコードの下位4ビットが“0100”の場合、ALU21の入力としてLLIおよびRLIが選択され、ALU21の演算結果がLLOに出力され、RLIの値がRLOに出力され、ALU21の演算結果が外部出力であるHBOに出力されるようにセレクタ23〜36が切替えられる。
【0039】
また、コマンドコードの下位4ビットが“1011”の場合、DBIを有するCo−CPUであれば、ALU21の入力としてLLIおよびDBIが選択され、ALU21の演算結果がLLOおよびRLOに出力され、ALU21の演算結果が外部出力であるABOに出力されるようにセレクタ23〜36が切替えられる。DBIを有さないCo−CPUであれば、ALU21の入力としてLLIおよびRLIが選択され、ALU21の演算結果がLLOおよびRLOに出力され、ALU21の演算結果が外部出力であるABOに出力されるようにセレクタ23〜36が切替えられる。なお、外部出力の“−/ABO”は、ABOを有するCo−CPUからのみALU21の演算結果が外部に出力され、ABOを有さないCo−CPUからはALU21の演算結果が外部に出力されないことを示している。
【0040】
なお、コマンドコードの下位4ビットがこれら以外の場合には、上記の説明と同様にセレクタが切替えられて入出力が制御される。
【0041】
図5は、従来のCPU命令が本実施の形態におけるCPU1によってどのように実行されるかを示している。本実施の形態におけるCPU1の動作を、データ転送命令、算術演算命令、論理演算命令、シフト命令および分岐命令に分けて以下に説明する。
【0042】
(データ転送命令)
従来のCPU命令“MOV #imm,Rn”は、即値immを符号拡張してレジスタRnに代入する命令であるが、本実施の形態においては標準命令である“IMM #imm”として実行される。ALU21は、コマンドデコーダ22に入力されたIMMIを符号拡張して出力する。
【0043】
従来のCPU命令“MOV.L @(disp,PC),Rn”は、(disp×4+PC)のアドレスからデータを読出してレジスタRnに転送する命令であるが、本実施の形態においては4つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを符号拡張して出力する。第2のCo−CPUにおいて第1のCo−CPUの演算結果に対して“SHAL”命令が実行されて、第1のCo−CPUの演算結果を1ビットだけ左シフトした値が演算される。第3のCo−CPUにおいて第2のCo−CPUの演算結果に対して“SHAL”命令が実行されて、第2のCo−CPUの演算結果を1ビットだけ左シフトした値が演算される。第4のCo−CPUにおいて“ADD”命令が実行されて、第3のCo−CPUの演算結果にPCの値が加算され、その演算結果がMRAM6および7のアドレスであるDAOに出力される。このとき、MRAM6および7から読出されたデータがMDIに出力される。
【0044】
従来のCPU命令“MOV Rm,Rn”、“MOV.L Rm,@Rn”および“MOV.L @Rm,Rn”については、本実施の形態のCPUは汎用レジスタという概念がないため、これらの命令に対応する処理は不要である。
【0045】
従来のCPU命令“MOV.L Rm,@−Rn”は、レジスタRnに(Rn−4)の値を代入し、レジスタRnよって示されるアドレスにレジスタRmの値を転送する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値“4”を出力する。第2のCo−CPUにおいてALU21が“SUB”命令を実行することにより、Lin(図3のLLI)の値から即値“4”を減算し、その演算結果がMRAM6および7のアドレスであるDAOに出力される。このとき、別のCo−CPUによって演算された値がDOに出力され、その値がMRAM6および7に書込まれる。
【0046】
従来のCPU命令“MOV.L @Rm+,Rn”は、レジスタRmによって示されるアドレスから値を読出してレジスタRnに代入し、レジスタRmに(Rm+4)の値を代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値“4”を出力する。第2のCo−CPUにおいてALU21が“ADD”命令を実行することにより、Linの値に即値“4”を加算して出力する。
【0047】
従来のCPU命令“MOV.L Rm,@(disp,Rn)”は、レジスタRmの値を(disp×4+PC)のアドレスに転送する命令であるが、本実施の形態においては4つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを符号拡張して出力する。第2のCo−CPUにおいて第1のCo−CPUの演算結果に対して“SHAL”命令が実行されて、第1のCo−CPUの演算結果を1ビットだけ左シフトした値が演算される。第3のCo−CPUにおいて第2のCo−CPUの演算結果に対して“SHAL”命令が実行されて、第2のCo−CPUの演算結果を1ビットだけ左シフトした値が演算される。第4のCo−CPUにおいて“ADD”命令を実行することにより、第3のCo−CPUの演算結果にRin(図3のRLI)の値が加算され、その演算結果がMRAM6および7のアドレスであるDAOに出力される。このとき、別のCo−CPUによって演算された値がDOに出力され、その値がMRAM6および7に書込まれる。
【0048】
従来のCPU命令“MOV.L @(disp,Rm),Rn”は、(disp×4+Rm)のアドレスからデータを読出してレジスタRnに転送する命令であるが、本実施の形態においては4つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを符号拡張して出力する。第2のCo−CPUにおいて第1のCo−CPUの演算結果に対して“SHAL”命令が実行されて、第1のCo−CPUの演算結果を1ビットだけ左シフトした値が演算される。第3のCo−CPUにおいて第2のCo−CPUの演算結果に対して“SHAL”命令が実行されて、第2のCo−CPUの演算結果を1ビットだけ左シフトした値が演算される。第4のCo−CPUにおいて“ADD”命令が実行されて、第3のCo−CPUの演算結果にRinの値が加算され、その演算結果がMRAM6および7のアドレスであるDAOに出力される。このとき、MRAM6および7から読出されたデータがMDIに出力される。
【0049】
従来のCPU命令“MOV.L Rm,@(R0,Rn)”は、レジスタRmの値を(R0+Rn)で示されるアドレスに転送する命令であるが、本実施の形態においては標準命令である“ADD Lin Rin”として実行される。ALU21は、Linの値とRinの値とを加算し、その演算結果がMRAM6および7のアドレスであるDAOに出力される。このとき、別のCo−CPUによって演算された値がDOに出力され、その値がMRAM6および7に書込まれる。
【0050】
従来のCPU命令“MOV.L @(R0,Rm),Rn”は、(R0+Rm)で示されるアドレスからデータを読出してレジスタRnに転送する命令であるが、本実施の形態においては標準命令である“ADD Lin Rin”として実行される。ALU21は、Linの値とRinの値とを加算し、その演算結果がMRAM6および7のアドレスであるDAOに出力される。このとき、MRAM6および7から読出されたデータがMDIに出力される。
【0051】
従来のCPU命令“MOVA @(disp,PC),R0”は、(disp×4+PC)の値をレジスタR0に代入する命令であるが、本実施の形態においては4つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを符号拡張して出力する。第2のCo−CPUにおいて第1のCo−CPUの演算結果に対して“SHAL”が実行されて、第1のCo−CPUの演算結果を1ビットだけ左シフトした値が演算される。第3のCo−CPUにおいて第2のCo−CPUの演算結果に対して“SHAL”が実行されて、第2のCo−CPUの演算結果を1ビットだけ左シフトした値が演算される。第4のCo−CPUにおいて“ADD”命令が実行されて、第3のCo−CPUの演算結果にPCの値が加算され、その演算結果が出力される。
【0052】
従来のCPU命令“MOVT Rn”は、Tビットの値をレジスタRnに代入する命令であるが、本実施の形態においては拡張命令である“MOVT”として実行される。ALU21は、Tビットの値をT_outに出力する。
【0053】
(算術演算命令)
従来のCPU命令“ADD Rm,Rn”は、レジスタRnの値とRmの値とを加算してレジスタRnに代入する命令であるが、本実施の形態においては標準命令である“ADD Lin Rin”として実行される。ALU21は、Linの値とRinの値とを加算し、その演算結果を出力する。
【0054】
従来のCPU命令“ADD #imm,Rn”は、レジスタRnの値と即値immとを加算してレジスタRnに代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを出力する。第2のCo−CPUにおいてALU21が“ADD”命令を実行することにより、Linの値に即値immを加算して出力する。
【0055】
従来のCPU命令“ADDC Rm,Rn”は、レジスタRnの値とRmの値とTビットの値とを加算してレジスタRnに代入し、キャリーをTビットに代入する命令であるが、本実施の形態においては拡張命令である“ADDC”として実行される。ALU21は、入力された2つの値とTビットの値とを加算して出力し、キャリーをT_outに出力する。
【0056】
従来のCPU命令“ADDV Rm,Rn”は、レジスタRnの値とRmの値とを加算してレジスタRnに代入し、オーバーフローをTビットに代入する命令であるが、本実施の形態においては拡張命令である“ADDV”として実行される。ALU21は、入力された2つの値を加算して出力し、オーバーフローをT_outに出力する。
【0057】
従来のCPU命令“CMP/EQ #imm,R0”は、レジスタR0の値と即値immとを比較し、同じ場合にTビットに“1”を代入し、異なる場合にTビットに“0”を代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを出力する。第2のCo−CPUにおいてALU21が“CMP/EQ”命令を実行することにより、Linの値と即値immとを比較し、同じ場合にT_outに“1”を出力し、異なる場合にT_outに“0”を出力する。
【0058】
従来のCPU命令“CMP/EQ Rm,Rn”は、レジスタRnの値とRmの値とを比較し、同じ場合にTビットに“1”を代入し、異なる場合にTビットに“0”を代入する命令であるが、本実施の形態においては標準命令である“CMP/EQ”として実行される。ALU21は、Linの値とRinの値とを比較し、同じ場合にT_outに“1”を出力し、異なる場合にT_outに“0”を出力する。
【0059】
従来のCPU命令“CMP/GE Rm,Rn”は、レジスタRnの値とRmの値とを有符号で比較し、Rn≧Rmの場合にTビットに“1”を代入し、それ以外の場合にTビットに“0”を代入する命令であるが、本実施の形態においては標準命令である“CMP/GT”として実行される。ALU21は、Linの値とRinの値とを比較し、Lin≧Rinの場合にT_outに“1”を出力し、それ以外の場合にT_outに“0”を出力する。
【0060】
従来のCPU命令“CMP/GT Rm,Rn”は、レジスタRnの値とRmの値とを有符号で比較し、Rn>Rmの場合にTビットに“1”を代入し、それ以外の場合にTビットに“0”を代入する命令であるが、本実施の形態においては標準命令である“CMP/GT”として実行される。ALU21は、Linの値とRinの値とを比較し、Lin>Rinの場合にT_outに“1”を出力し、それ以外の場合にT_outに“0”を出力する。
【0061】
従来のCPU命令“CMP/PL Rn”は、レジスタRnの値と“0”と比較し、Rn>0の場合にTビットに“1”を代入し、それ以外の場合にTビットに“0”を代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値“0”を出力する。第2のCo−CPUにおいてALU21が“CMP/GT”命令を実行することにより、Linの値と“0”とを比較し、Lin>0場合にT_outに“1”を出力し、それ以外の場合にT_outに“0”を出力する。
【0062】
従来のCPU命令“CMP/PZ Rn”は、レジスタRnの値と“0”と比較し、Rn≧0の場合にTビットに“1”を代入し、それ以外の場合にTビットに“0”を代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値“0”を出力する。第2のCo−CPUにおいてALU21が“CMP/GT”命令を実行することにより、Linの値と“0”とを比較し、Lin≧0の場合にT_outに“1”を出力し、それ以外の場合にT_outに“0”を出力する。
【0063】
従来のCPU命令“DT Rn”は、レジスタRnの値をデクリメントしてRnに代入し、Rnの値が“0”の場合にTビットに“1”を代入し、それ以外の場合にTビットに“0”を代入する命令であるが、本実施の形態においては4つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値“1”を出力する。第2のCo−CPUにおいてALU21が“SUB”命令を実行することにより、Linの値から“1”を減算して出力する。第3のCo−CPUが“IMM”命令を実行することにより、即値“0”を出力する。第4のCo−CPUにおいてALU21が“CMP/EQ”命令を実行することにより、第2のCo−CPUの演算結果と“0”とを比較し、同じ場合にT_outに“1”を出力し、異なる場合にT_outに“0”を出力する。
【0064】
従来のCPU命令“NEG Rm,Rn”は、“0”からレジスタRmの値を減算してレジスタRnに代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値“0”を出力する。第2のCo−CPUにおいてALU21が“SUB”命令を実行することにより、“0”からRinの値を減算して出力する。
【0065】
従来のCPU命令“NEGC Rm,Rn”は、“0”からレジスタRmの値とTビットの値とを減算してレジスタRnに代入し、ボローをTビットに代入する命令であるが、本実施の形態においては拡張命令である“NEGC”として実行される。ALU21は、即値“0”からLinの値とTビットの値とを減算して出力し、ボローをT_outに出力する。
【0066】
従来のCPU命令“SUB Rm,Rn”は、レジスタRnの値からレジスタRmの値を減算してレジスタRnに代入する命令であるが、本実施の形態においては標準命令である“SUB”として実行される。ALU21は、Linの値からRinの値を減算して出力する。
【0067】
従来のCPU命令“SUBC Rm,Rn”は、レジスタRnの値からレジスタRmの値とフラグTの値とを減算してレジスタRnに代入し、ボローをTビットに代入する命令であるが、本実施の形態においては拡張命令である“SUBC”として実行される。ALU21は、Linの値からRinの値とTビットの値とを減算して出力し、ボローをT_outに出力する。
【0068】
従来のCPU命令“SUBV Rm,Rn”は、レジスタRnの値からRmの値を減算してレジスタRnに代入し、アンダーフローをTビットに代入する命令であるが、本実施の形態においては拡張命令である“SUBV”として実行される。ALU21は、Linの値からRinの値を減算して出力し、アンダーフローをT_outに出力する。
【0069】
(論理演算命令)
従来のCPU命令“AND Rm,Rn”は、レジスタRnの値とRmの値との論理積をレジスタRnに代入する命令であるが、本実施の形態においては標準命令である“AND”として実行される。ALU21は、Linの値とRinの値との論理積を演算し、演算結果を出力する。
【0070】
従来のCPU命令“AND #imm,R0”は、レジスタR0の値と即値immとの論理積をレジスタR0に代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを出力する。第2のCo−CPUにおいてALU21がRinの値と即値immとの論理積を演算し、演算結果を出力する。
【0071】
従来のCPU命令“NOT Rm,Rn”は、レジスタRmの値を反転してレジスタRnに代入する命令であるが、本実施の形態においては標準命令である“NOT”として実行される。ALU21は、Linの値を反転し、その演算結果を出力する。
【0072】
従来のCPU命令“OR Rm,Rn”は、レジスタRnの値とRmの値との論理和を演算してレジスタRnに代入する命令であるが、本実施の形態においては標準命令である“OR”として実行される。ALU21は、Linの値とRinの値との論理和を演算し、演算結果を出力する。
【0073】
従来のCPU命令“OR #imm,R0”は、レジスタR0の値と即値immとの論理和を演算してレジスタR0に代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを出力する。第2のCo−CPUにおいてALU21がRinの値と即値immとの論理和を演算し、演算結果を出力する。
【0074】
従来のCPU命令“TST Rm,Rn”は、レジスタRnの値とRmの値との論理積を演算し、演算結果が“0”の場合にTビットに“1”を代入し、それ以外の場合にTビットに“0”を代入する命令であるが、本実施の形態においては拡張命令である“TST”として実行される。ALU21は、Linの値とRinの値との論理積を演算し、演算結果が“0”の場合にT_outに“1”を出力し、それ以外の場合にT_outに“0”を出力する。
【0075】
従来のCPU命令“TST #imm,R0”は、レジスタR0の値と即値immとの論理積を演算し、演算結果が“0”の場合にTビットに“1”を代入し、それ以外の場合にTビットに“0”を代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令および拡張命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを出力する。第2のCo−CPUにおいてALU21がRinの値と即値immとの論理積を演算し、演算結果が“0”の場合にT_outに“1”を出力し、それ以外の場合にT_outに“0”を出力する。
【0076】
従来のCPU命令“XOR Rm,Rn”は、レジスタRnの値とRmの値との排他的論理和を演算してレジスタRnに代入する命令であるが、本実施の形態においては標準命令である“XOR”として実行される。ALU21は、Linの値とRinの値との排他的論理和を演算し、演算結果を出力する。
【0077】
従来のCPU命令の“XOR #imm,R0”は、レジスタR0の値と即値immとの排他的論理和を演算してレジスタR0に代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを出力する。第2のCo−CPUにおいてALU21がRinの値と即値immとの排他的論理和を演算し、演算結果を出力する。
【0078】
(シフト命令)
従来のCPU命令の“ROTL Rn”は、レジスタRnの値に対して1ビットの左シフト演算を行ない、溢れた値がTビットに代入され、最上位ビットの値が最下位ビットに移動する命令であるが、本実施の形態においては拡張命令“ROTL”として実行される。ALU21は、Linの値に対して1ビットの左シフト演算を行ない、溢れた値がT_outに出力され、最上位ビットの値が最下位ビットに移動する。
【0079】
従来のCPU命令の“ROTR Rn”は、レジスタRnの値に対して1ビットの右シフト演算を行ない、溢れた値がTビットに代入され、最下位ビットの値が最上位ビットに移動する命令であるが、本実施の形態においては拡張命令“ROTR”として実行される。ALU21は、Linの値に対して1ビットの右シフト演算を行ない、溢れた値がT_outに出力され、最下位ビットの値が最上位ビットに移動する。
【0080】
従来のCPU命令“ROTCL Rn”は、レジスタRnの値に対して1ビットの左シフト演算を行ない、Tビットの値が最下位ビットに移動し、最上位ビットの値がTビットに移動する命令であるが、本実施の形態においては拡張命令“ROTCL”として実行される。ALU21は、Linの値に対して1ビットの左シフト演算を行ない、Tビットの値が最下位ビットに移動し、最上位ビットの値がT_outに出力される。
【0081】
従来のCPU命令“ROTCR Rn”は、レジスタRnの値に対して1ビットの右シフト演算を行ない、Tビットの値が最上位ビットに移動し、最下位ビットの値がTビットに移動する命令であるが、本実施の形態においては拡張命令“ROTCR”として実行される。ALU21は、Linの値に対して1ビットの右シフト演算を行ない、Tビットの値が最上位ビットに移動し、最下位ビットの値がT_outに出力される。
【0082】
従来のCPU命令“SHAL Rn”は、レジスタRnの値に対して1ビットの左シフト演算を行ない、溢れた値がTビットに代入され、最下位ビットに“0”が代入される命令であるが、本実施の形態においては標準命令“SHAL”として実行される。ALU21は、Linの値に対して1ビットの左シフト演算を行ない、溢れた値がT_outに出力され、最下位ビットに“0”が代入される。
【0083】
従来のCPU命令“SHAR Rn”は、レジスタRnの値に対して1ビットの右シフト演算を行ない、溢れた値がTビットに代入され、最上位ビットに元の最上位ビットの値が代入される命令であるが、本実施の形態においては標準命令“SHAR”として実行される。ALU21は、Linの値に対して1ビットの右シフト演算を行ない、溢れた値がT_outに出力され、最上位ビットに元の最上位ビットの値が代入される。
【0084】
従来のCPU命令“SHLL Rn”は、レジスタRnの値に対して1ビットの左シフト演算を行ない、最下位ビットに“0”が代入され、最上位ビットの値がTビットに移動する命令であるが、本実施の形態においては標準命令“SHLL”として実行される。ALU21は、Linの値に対して1ビットの左シフト演算を行ない、最下位ビットに“0”が代入され、最上位ビットの値がT_outに出力される。
【0085】
従来のCPU命令“SHLR Rn”は、レジスタRnの値に対して1ビットの右シフト演算を行ない、最上位ビットに“0”が代入され、最下位ビットの値がTビットに移動する命令であるが、本実施の形態においては標準命令“SHLR”として実行される。ALU21は、Linの値に対して1ビットの右シフト演算を行ない、最上位ビットに“0”が代入され、最下位ビットの値がT_outに出力される。
【0086】
従来のCPU命令“SHLL2 Rn”は、レジスタRnの値に対して2ビットの左シフト演算を行ない、演算結果をレジスタRnに代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“SHLL”命令を実行することにより、Linの値に対して1ビットの左シフト演算を行なう。第2のCo−CPUにおいてALU21が“SHLL”命令を実行することにより、第1のCo−CPUの演算結果に対して1ビットの左シフト演算を行ない、演算結果を出力する。
【0087】
従来のCPU命令“SHLR2 Rn”は、レジスタRnの値に対して2ビットの右シフト演算を行ない、演算結果をレジスタRnに代入する命令であるが、本実施の形態においては2つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“SHLR”を実行することにより、Linの値に対して1ビットの右シフト演算を行なう。第2のCo−CPUにおいてALU21が“SHLR”命令を実行することにより、第1のCo−CPUの演算結果に対して1ビットの右シフト演算を行ない、演算結果を出力する。
【0088】
従来のCPU命令“SHLL8 Rn”は、レジスタRnの値に対して8ビットの左シフト演算を行ない、演算結果をレジスタRnに代入する命令であるが、本実施の形態においては拡張命令“SHLL8”として実行される。ALU21は、Linの値に対して8ビットの左シフト演算を行ない、演算結果を出力する。
【0089】
従来のCPU命令“SHLR8 Rn”は、レジスタRnの値に対して8ビットの右シフト演算を行ない、演算結果をレジスタRnに代入する命令であるが、本実施の形態においては拡張命令“SHLR8”として実行される。ALU21は、Linの値に対して8ビットの右シフト演算を行ない、演算結果を出力する。
【0090】
従来のCPU命令“SHLL16 Rn”は、レジスタRnの値に対して16ビットの左シフト演算を行ない、演算結果をレジスタRnに代入する命令であるが、本実施の形態においては拡張命令“SHLL16”として実行される。ALU21は、Linの値に対して16ビットの左シフト演算を行ない、演算結果を出力する。
【0091】
従来のCPU命令“SHLR16 Rn”は、レジスタRnの値に対して16ビットの右シフト演算を行ない、演算結果をレジスタRnに代入する命令であるが、本実施の形態においては拡張命令“SHLR16”として実行される。ALU21は、Linの値に対して16ビットの右シフト演算を行ない、演算結果を出力する。
【0092】
(分岐命令)
従来のCPU命令“BF label”は、Tビットが“0”の場合に(disp×2+PC)のアドレスに分岐し、Tビットが“1”の場合にnop(no−operation)命令として処理される命令であるが、本実施の形態においては標準命令“BF”として実行される。ALU21は、Tビットが“0”の場合にLinの値を選択して出力し、Tビットが“1”の場合にRinの値を選択して出力する。ALU21から出力された値は、PBOを介してPC12に設定される。
【0093】
従来のCPU命令“BT label”は、Tビットが“0”の場合にnop命令として処理され、Tビットが“1”の場合に(disp×2+PC)のアドレスに分岐する命令であるが、本実施の形態においては標準命令“BT”として実行される。ALU21は、Tビットが“0”の場合にRinの値を選択して出力し、Tビットが“1”の場合にLinの値を選択して出力する。ALU21から出力された値は、PBOを介してPC12に設定される。
【0094】
従来のCPU命令“BRA label”は、(disp×2+PC)のアドレスに分岐する命令であるが、本実施の形態においては4つのCo−CPUが標準命令をそれぞれ実行することによってこの命令が実行される。第1のCo−CPUが“IMM”命令を実行することにより、即値immを符号拡張して出力する。第2のCo−CPUにおいて第1のCo−CPUの演算結果に対して“SHAL”が実行されて、第1のCo−CPUの演算結果を1ビットだけ左シフトした値が演算される。第3のCo−CPUにおいて第2のCo−CPUの演算結果に対して“SHAL”が実行されて、第2のCo−CPUの演算結果を1ビットだけ左シフトした値が演算される。第4のCo−CPUにおいて“ADD”命令が実行されて、第3のCo−CPUの演算結果にPCの値が加算されて出力される。第4のCo−CPUのALU21から出力された値は、PBOを介してPC12に設定される。
【0095】
従来のCPU命令“BRAF Rm”は、レジスタRmの値とPCの値とを加算して、PCに代入する命令であるが、本実施の形態においては標準命令“ADD”として実行される。ALU21は、Linの値とPCの値とを加算して出力する。ALU21から出力された値は、PBOを介してPC12に設定される。
【0096】
従来のCPU命令“JMP”は、レジスタRmの値をPCに代入する命令であるが、本実施の形態においてはALU21の演算結果をPBOを介してPC12に設定することにより可能である。
【0097】
図6は、本発明の実施の形態におけるCPU1の処理を説明するためのタイミングチャートである。まず、サイクルT0において、コマンドコード0(以下、CC0)に対応するアドレスがCAに出力される。このとき、データ0に対応するアドレスがDAOに出力される。
【0098】
サイクルT1において、各Co−CPUは、MRAM2および3から出力されたCC0をフェッチする。このとき、データ0がMRAM6および7から出力される。各Co−CPUは、CC0に応じた演算を実行する。
【0099】
サイクルT2において、Co−CPUのいずれかの演算結果がDOに出力されると、その演算結果をMRAM6および7に書込むためのアドレスが、他のCo−CPUによって演算されてDAOに出力される。このとき、次のコマンドコードであるCC1がフェッチされ、データ1がMRAM6および7から出力される。また、サイクルT1においてフェッチされたCC0が分岐命令であれば、このサイクルで分岐先のアドレスがCAに出力される。
【0100】
サイクルT3において、CC3に対応するアドレスがCAに出力され、データ3に対応するアドレスがDAOに出力される。また、各Co−CPUによってCC2がフェッチされ、MRAM6および7からデータ2が出力される。また、Co−CPUのいずれかの演算結果がDOに出力される。以下、同様の処理が繰返される。
【0101】
図7は、電源電圧を検出するための回路の一例を示す図である。この検出回路は、電圧差検出回路41と、ダイオード42と、コンデンサ43とを含む。なお、本実施の形態においては瞬停を検出し、瞬停から復帰したときに瞬停の直後のプログラムから処理を再開するものであるが、汎用レジスタを持たないのでPC21の値のみを退避すればよい。
【0102】
コンデンサ43は、ダイオード42を介して外部電源に接続されており電荷を蓄積しているため、外部電圧が低下した場合でも電圧の低下が緩やかとなる。電圧差検出回路41は、+端子と−端子との電圧差が所定値以上となるのを検出し、電圧停止信号をMRAM内蔵MCU100に出力する。このとき、MRAM内蔵MCU100は、PC21の値をMRAMの所定アドレスに退避する。
【0103】
また、電圧差検出回路41は、電源電圧が所定値以上になって瞬停から復帰したことを検出すると、MRAM内蔵MCU100に電源復帰信号を出力する。このとき、MRAM内蔵MCU100は、MRAMの所定アドレスに退避していた値をPC21に書込んでプログラムの処理を再開する。
【0104】
図8は、高級言語の文法構成の一例を示す図である。図8(a)は、statementの一例を示しており、代入文(1)とif文(2)とから構成されているものとする。なお、図8においては説明を簡単にするために従来のCPU命令を用いて説明するが、上述のように本実施の形態におけるCPU1は汎用レジスタを有さないため、図5を用いて説明したコードが生成されて、Co−CPU間で直接データを受け取ることになる。
【0105】
(1)の代入文においては、左辺の代入先の配列の要素番号(アドレス)をスタックに積む“MOV Rn,Rm”のコードが生成され、右辺の式(expression)の解析とコード生成とが終了した段階で“MOV Rn,@Rm”のコードを生成して格納先アドレスに格納する。なお、アドレス計算が必要な場合には、下の[expression]を通る。
【0106】
(2)のif文においては、条件(condition)に一致すれば直後のstatementが実行され、一致しなければそのstatementを飛ばす。また、elseという予約語がある場合、条件に一致しなければelseの直後のstatementを実行する。
【0107】
図8(b)は、conditionの一例を示しており、左辺の式(expression)の解析とコード生成とが終了した段階でその式の次が、“==”、“!=”、“<”、“>”、“<=”、“=>”のいずれであるかによって、それに対応した“CMP/XX Rm,Rn”のコードが生成される。そして、右辺の式(expression)の解析とコード生成とが行なわれる。
【0108】
図8(c)は、expressionの一例を示しており、まずtermによって後述する図8(d)が実行される。そして、その次の入力が“+”または“−”であれば、再びtermが実行されて“ADD Rm,Rn”または“SUB Rm,Rn”のコードが生成される。
【0109】
図8(d)は、termの一例を示しており、まずfactorによって後述する図8(e)が実行される。そして、その次の入力が“*”または“/”であれば、再度termが実行されて“MUL Rm,Rn”または“DIV Rm,Rn”のコードが生成される。
【0110】
図8(e)は、factorの一例を示しており、入力が数値であればnumberを通り、“MOV #imm、Rn”のコードが生成される。また、入力が整数(integer ID)であればidentを通り、“MOV @Rm,Rn”のコードが生成される。
【0111】
入力が式(expression)であれば、図8(c)が実行されてその式の解析とコード生成とが行なわれる。また、入力が“+”または“−”であれば、再度factorが実行されて“NEG Rm,Rn”のコードが生成される。
【0112】
入力が配列(array ID)であればidentを通り、配列の要素番号(アドレス)をスタックに積む“MOV Rn,Rm”のコードが生成され、式(expression)の解析とコード生成とが終了した段階で“MOV @Rm,Rn”のコードを生成してスタックに積む。
【0113】
入力が関数(function ID)であればidentを通り、式(expression)の解析とコード生成とが終了した段階で“BSRF Rm”のコードが生成される。この“BSRF Rm”は、サブルーチンプロシージャへの分岐を行なうための命令である。
【0114】
以上説明したように、本実施の形態におけるCPU1によれば、Co−CPUの演算結果が直接他のCo−CPUに入力されるので、汎用レジスタを用いないプロセッサを構成することが可能となった。
【0115】
また、汎用レジスタを用いないため、瞬停が発生した場合でもPCの値をMRAMに退避するのみで瞬停前の状態からプログラムを再開することができ、瞬停時に長時間電源を維持する必要がなくなった。
【0116】
また、複雑な命令は複数のCo−CPUによって実行されるため、ALUを簡単な回路構成で実現することができると共に、複雑な式にも柔軟に対応できるようになった。
【0117】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【0118】
【図1】本発明の実施の形態におけるCPUを含んだMRAM内蔵マイコンの概略構成の一例を示す図である。
【図2】CPU1の内部構成の一例を示すブロック図である。
【図3】Co−CPU11−0〜11−15の内部構成を示すブロック図である。
【図4】コマンドコードのビットアサインの一例を示す図である。
【図5】従来のCPU命令が本実施の形態におけるCPU1によってどのように実行されるかを示す図である。
【図6】本発明の実施の形態におけるCPU1の処理を説明するためのタイミングチャートである。
【図7】電源電圧を検出するための回路の一例を示す図である。
【図8】高級言語の文法構成の一例を示す図である。
【符号の説明】
【0119】
1 CPU、2,3,6,7 MRAM、4,5 シフタ群、11−0〜11−15 Co−CPU、12 PC、21 ALU、22 コマンドデコーダ、23〜36 セレクタ、41 電圧差検出回路、42 ダイオード、43 コンデンサ、100 MRAM内蔵MCU。

【特許請求の範囲】
【請求項1】
複数の演算ユニットが互いに接続され、該複数の演算ユニットが別個の演算を並列に実行するプロセッサであって、
前記複数の演算ユニットのそれぞれは、命令コードをデコードするデコード手段と、
隣接する複数の演算ユニットからの出力に対して前記デコード手段によるデコード結果に応じた演算を行ない、演算結果を隣接する他の複数の演算ユニットに出力する演算手段とを含む、プロセッサ。
【請求項2】
前記演算ユニットはさらに、前記隣接する複数の演算ユニットからの出力および前記プロセッサの外部にある記憶装置からの出力を受け、少なくとも1つを前記演算手段に選択的に出力する第1の選択手段を含む、請求項1記載のプロセッサ。
【請求項3】
前記第1の選択手段は、前記隣接する複数の演算ユニットからの出力、前記プロセッサの外部にある記憶装置からの出力および該記憶装置よりも広帯域の外部入力を受け、少なくとも1つを前記演算手段に選択的に出力する、請求項2記載のプロセッサ。
【請求項4】
前記演算ユニットはさらに、前記演算手段による演算結果および前記隣接する複数の演算ユニットからの出力を受け、隣接する他の複数の演算ユニットに選択的に出力する第2の選択手段を含む、請求項1〜3のいずれかに記載のプロセッサ。
【請求項5】
前記複数の演算ユニットの演算結果のいずれかが、前記プロセッサの外部にある記憶装置のアドレスとして出力される、請求項1記載のプロセッサ。
【請求項6】
前記プロセッサはさらに、命令コードをフェッチするためのアドレスを格納するプログラムカウンタを含み、
前記複数の演算ユニットの演算結果のいずれかが、前記プログラムカウンタに設定される、請求項1記載のプロセッサ。
【請求項7】
前記プロセッサはさらに、電源が停止したことを検出する検出手段と、
前記検出手段によって電源停止が検出された場合に、前記プログラムカウンタの値を退避する手段を含む、請求項6記載のプロセッサ。
【請求項8】
前記演算手段は、前記命令コードが即値のロード命令の場合に、当該即値を演算結果としてそのまま出力する、請求項1記載のプロセッサ。
【請求項9】
複数の演算ユニットが互いに接続され、該複数の演算ユニットが別個の演算を並列に実行するプロセッサと、
不揮発メモリとを含んだマイクロコンピュータシステムであって、
前記複数の演算ユニットのそれぞれは、命令コードをデコードするデコード手段と、
隣接する複数の演算ユニットからの出力および前記不揮発メモリからの出力を受け、少なくとも1つを選択的に出力する第1の選択手段と、
前記第1の選択手段からの出力に対して前記デコード手段によるデコード結果に応じた演算を行なう演算手段と、
前記演算手段による演算結果および前記隣接する複数の演算ユニットからの出力を受け、隣接する他の複数の演算ユニットに選択的に出力する第2の選択手段とを含む、マイクロコンピュータシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2008−217538(P2008−217538A)
【公開日】平成20年9月18日(2008.9.18)
【国際特許分類】
【出願番号】特願2007−55462(P2007−55462)
【出願日】平成19年3月6日(2007.3.6)
【出願人】(503121103)株式会社ルネサステクノロジ (4,790)
【Fターム(参考)】