JP2013174942A - 複数のコンディションフラグを有するcpu - Google Patents

複数のコンディションフラグを有するcpu Download PDF

Info

Publication number
JP2013174942A
JP2013174942A JP2012037531A JP2012037531A JP2013174942A JP 2013174942 A JP2013174942 A JP 2013174942A JP 2012037531 A JP2012037531 A JP 2012037531A JP 2012037531 A JP2012037531 A JP 2012037531A JP 2013174942 A JP2013174942 A JP 2013174942A
Authority
JP
Japan
Prior art keywords
flag
instruction
register
cpu
control unit
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.)
Granted
Application number
JP2012037531A
Other languages
English (en)
Other versions
JP5866697B2 (ja
Inventor
Tatsuya Koizumi
達也 小泉
Shinichi Inokawa
晋一 井ノ川
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.)
LE TEKKU KK
LETech Co Ltd
Original Assignee
LE TEKKU KK
LETech 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 LE TEKKU KK, LETech Co Ltd filed Critical LE TEKKU KK
Priority to JP2012037531A priority Critical patent/JP5866697B2/ja
Publication of JP2013174942A publication Critical patent/JP2013174942A/ja
Application granted granted Critical
Publication of JP5866697B2 publication Critical patent/JP5866697B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

【課題】プログラム効率とメモリ空間の削減の両立をおこなえるCPUアーキテクチャと命令セットを提供することを目的とする。
【解決手段】本発明のプロセッサは、演算実行時にフラグ値が変化する第1のフラグと、データロードがなされるとフラグ値が変化する第2のフラグという2つのコンディションフラグを一つのCPUが備えるので、データロード後のフラグ変化で処理を分岐させたければロード時にフラグが更新される第2のフラグを用いた機械語命令を作成し、データロード後にロード前のフラグ値を用いた処理を行なわせたければ、ロード時にフラグが自動的に更新されない第1のフラグを用いた機械語命令を作成する。これにより、ゼロ判定やフラグ退避が不要となり、フラグ値がデータロード時に更新されては困る場合及び自動的に更新された方が都合良い場合の両方に対して簡潔なプログラムで組み立てることができる。
【選択図】図2

Description

本発明は、CPUに用いられるCPUコアに係り、IPコアとして活用されるCPUにおける複数のコンディションフラグに関する技術に係るものである。
CPUのレジスタは、アキュームレータや汎用レジスタ、インデックスレジスタなどの他に、フラグレジスタも含んだ構成となっているのが一般的である。アキュームレータが算術演算及び論理演算の結果をストアするレジスタであるのに対し、フラグレジスタは演算の結果生じた各種の条件をあらわすステータスをストアするという役割がある。
マイクロプロセッサの種類に応じて、アキュームレータとフラグレジスタの関係は若干異なっている。すなわち、モトローラ68系CPUは、アキュームレータなどのレジスタにデータをロードすることにあわせてフラグレジスタ内の特定ビット(ゼロフラグ)の値が変化するのに対し、インテル80系CPUは、レジスタにデータをロードした時点ではゼロフラグ等の値は変化せず、演算を施し、その演算結果に基づいてゼロフラグ等の値が変化する仕様になっている。
用途に応じたプログラムを作成するにはゼロフラグの値を用いて処理を分岐させることが必要になるが、80系CPUのプログラマーは、データを一旦ロードし、AND論理演算などでロードされたデータがゼロであるかを判定したステップを追加しなければゼロフラグが変化しないために不便を感じていた。他方で、68系CPUは、上述したように、データがロードされるとゼロフラグの値が保持されないので、ゼロフラグの値を使用して分岐処理を行なわせるときには、そのゼロフラグ値をスタック、別のレジスタ、又はワークエリアに退避する処理をしてからデータをロードしなければならなかった。
このようなゼロフラグ変化の問題は、80系及び68系の各プログラマーが作成するプログラムの工数が増加することの不便さにとどまらない。すなわち、80系におけるフラグ変化のためのプログラムステップ数の増加、68系におけるフラグ退避のためのワーキングエリアの確保は、メモリ空間を多く消費してしまうことにもつながるからである。80系や68系のCPUは、現在では、汎用のコンピュータ製品というようよりも、各種機器の組み込み用途として主に使用されており、例えば、パチンコなどの遊技機における当り確率を制御する特定コア用プロセッサのために使用されることが多い。遊技機の場合、関連する遊技関連規則の制約からメモリ空間が大幅に制限されているため、ゼロフラグ値の変化に対処するためのメモリ空間の増加は無視できない問題である。
そこで、本発明は、かかる従来技術の問題点に鑑みてなされたものであり、プログラム効率とメモリ空間の削減の両立をおこなえるCPUアーキテクチャと命令セットを提供することを目的とする。
前記目的を達成するために、本発明によるCPUは、所与の機械語命令を実行するCPUコアを具備し、前記CPUコアは、前記機械語命令に従い決定される命令動作シーケンスに基づき、(i)算術論理演算が実行されたとき、演算結果をフラグレジスタ内の第1のコンディションフラグに対応するビット(Z)に反映し、(ii)前記CPUコア内のレジスタにデータがロードされたとき、ロード結果を前記フラグレジスタ内の第2のコンディションフラグに対応するビット(TZ)に反映する、ことを特徴とする。
より詳細に言うと、本発明によるCPUは、所与の機械語命令を実行するCPUコアを具備し、前記CPUコアは、前記CPUコア内部の状態遷移を管理し、各状態に応じた動作指示を作成する状態制御ユニットと、外部より入力された機械語命令を解析して命令デコードを作成し、当該命令デコードを前記状態制御ユニットに渡すこと、及び、前記状態制御ユニットにより決定される内部状態遷移による動作指示に従い命令動作のシーケンスを決定する中央制御ユニットと、前記中央制御ユニットからの命令動作シーケンスに基づき、複数の内部レジスタ又は外部入力をソースとして算術論理演算を実行する演算論理ユニット(ALU)と、前記内部レジスタの状態又は所定の命令でセット若しくはリセットが行われる複数フラグを有する1以上のフラグレジスタと、を含み、
前記演算論理ユニットの演算結果が、前記フラグレジスタ内の第1のコンディションフラグに対応するビット(Z)に反映され、前記内部レジスタへのデータロードの結果が、前記フラグレジスタ内の第2のコンディションフラグに対応するビット(TZ)に反映される、ことを特徴とする。
また、本発明によるCPUコアは、前記演算論理ユニットの演算結果が、前記第1のコンディションフラグに対応するビット(Z)と、前記第2のコンディションフラグに対応するビット(TZ)との両方に反映されることを特徴とする。
本発明のCPUは、演算実行時にフラグ値が変化する第1のコンディションフラグと、データロードがなされるとフラグ値が変化する第2のコンディションフラグというように2つのコンディションフラグを一つのCPUコア内に備えるようにしたので、これら第1のコンディションフラグと第2のコンディションフラグを状況に応じて使い分けることが可能になる。例えば、データロード後のフラグ変化で処理を分岐させたければロード時にフラグが更新される“第2のコンディションフラグ”を用いた命令でプログラムを作成する一方で、データロード後にロード前のフラグ値を用いた処理を行なうのであれば、ロード時にフラグが自動的に更新されない“第1のコンディションフラグ”を用いた命令でプログラムを作成する。2つのフラグを巧みに活用することでゼロ判定やフラグ退避のプログラムステップが不要となり、フラグ値がデータロード時に更新されては困る場合及び自動的に更新されて良い場合の両方に対して簡潔なプログラムを組み立てることができる。
また、使用する空間領域の面からみると、プログラムエリアとしてのメモリ削減ができるとともに、フラグ状態の保持、退避、復旧のためのプログラムステップとワークエリアが不要になるため、メモリ効率が格段に向上したプログラムを作成することができるようになる。
さらにまた、第1のコンディションフラグのみを参照するZ80の命令をそのまま残し、第2のコンディションフラグを参照する命令の追加という命令構成のCPUコアにすることで、既存のプログラムを変更せずに拡張をすることができるという利点があり、その結果、複数のプログラム間の互換性がよいという効果もある。
本発明の一実施形態に係わる、CPUとメモリの構成を表したブロック図である。 本発明の一実施形態に係わる、CPU内部の構成図である。 本発明の一実施形態に係わる、フラグレジスタの内訳を示す図である。 本発明の一実施形態に係わる、CPU内のデータの流れを詳細に説明した図である。 本発明の一実施形態に係わる、状態制御ユニット内で管理されている状態の遷移を図示したものである。
図面を参照しながら、本発明のCPUの一実施形態について以下に説明する。
図1は、CPU1とメモリ4の構成をあらわしたブロック図である。CPU1はCPUコア部2とバスコントローラ3を含む。コア部2は、バスコントロール信号でバスコントローラ3を制御し、メモリユニット4との間でリード/ライト信号や入出力データのやり取りをする。また、CPUコア部2に対して割込み信号(INT)/待ち信号(WAIT)、CPUコア部2及びバスコントローラ3に対してリセット信号が入力可能な状態になっている。
図2は、図1で示したCPUコア部2の内部構成を示したブロック図である。CPUコア部2における外部入力ユニット10は、外部信号(例えば、リセット、INT、WAIT、BUSREQ等)を入力し、状態制御ユニット11に受け渡す。このとき、リセット信号は中央制御ユニット12等を含む各ユニットのための初期化信号として渡される。
状態制御ユニット11は、図5に示す内部状態遷移を管理して、CPUコア2の動作状態を決定すると共に中央制御ユニット12へ実際の動作指示を行う。各命令に関する内部状態遷移は命令フェッチ状態(1)から始まり、中央制御ユニット12で行われる命令デコードの結果に応じて次の内部状態遷移が決定され(例えば、演算処理、メモリロード、メモリ記憶等)、したがって各命令毎に異なる内部状態遷移をもつことになる。なお、各命令の状態遷移の情報は、状態制御ユニット11内に格納されている。
中央制御ユニット12は、バスコントローラ3経由でメモリユニット4より入力された入力データDIを読み込んで命令デコーダ13に渡し、命令デコーダ13により命令解析を行う。命令デコーダ13で命令解析が終了して、中央制御ユニット12が命令デコードの結果を状態制御ユニット11に渡すと、状態制御ユニット11内で決定される内部状態遷移による次の動作指示に従い、命令動作をデータパスユニット14で順次実行させる。 なお、命令デコードの結果と状態制御ユニット11から指示される状態により各命令がどのような動作を行うかのシーケンス情報は中央制御ユニット12内に格納されている。
データパスユニット14は、レジスタバンク15を含む。レジスタバンク15は、本実施の形態の場合、アキュームレジスタ(A)、フラグレジスタ(F)及び6個のレジスタ(B,C,D,E,H,L)、並びにインデックスレジスタ(IX,IY)、スタックポインター(SP)、プログラムカウンター(PC)を含んで構成されている。なお、レジスタバンク15内のレジスタは複数セットで構成することも可能である。
図3は、フラグレジスタ(F)の内訳例を示している。レジスタバンク15内のFレジスタ17が図3で示すフラグレジスタ(F)に対応する。フラグレジスタ(F)には、CPUのオペレーションにより、演算ユニットALU16の演算結果や特定の命令においてセット/リセットされる複数のフラグを有する。
本実施形態では、7種類のフラグ(7ビット)を示す。ビットD6が演算実行時にフラグ値が変化する第1のコンディションフラグに対応する。つまり、CPUコアが演算命令を実行した結果がゼロになったときに第1のコンディションフラグはセットされる。
一方、ビットD5がデータロード時にフラグ値が変化する第2のコンディションフラグに対応する。第2のコンディションフラグの動作は、加算命令、減算命令、論理演算命令、インクリメント/ディクリメント命令等による演算結果と、ロード命令においてロードデータの判定を行いセットされる。
なお、本実施形態において、第1のコンディションフラグをビットD6に、第2のコンディションフラグをビットD5に割当てて説明するが、もちろん、他のビットに割当て可能であることは言うまでもない。また、その他のビットは、例えば、D0は桁上がりや桁下がりが生じたときにセットされるキャリーフラグ、D7は演算結果が負の場合にセットされるサインフラグなどであるが、本発明とは直接関係しないので、ここでは説明を省略する。
また、レジスタバンク15内には、ディスティネーションセレクタ(DSTsel)17と、演算論理ユニット(ALU)16、及びアドレスセレクタ(ADDRESSsel)18を備える。
ディスティネーションセレクタ(DSTsel)17は、演算論理ユニット(ALU)16からの入力を、レジスタ(B,C,D,E,H,L)へ出力するか、或いは、外部バスコントローラ(不図示)を介してメモリユニット4等へ渡す出力信号DOへ出力するかの選択を行なう。
ソースAセレクタ(SRCAsel)20は、複数ある内部レジスタの中から1つのレジスタを選択して、演算論理ユニット(ALU)16への入力Aと決定する。
ソースBセレクタ(SRCBsel)19は、複数ある内部レジスタ及び外部バスコントローラ(不図示)を介して入力された外部入力DIの中から1つを選択して、演算論理ユニット(ALU)16への入力Bと決定する。
演算論理ユニット(ALU)16は、ソースAセレクタ(SRCAsel)20が選択したソースA(SRCA)、及び、ソースBセレクタ(SRCBsel)19が選択したソースB(SRCB)を用いて、中央制御ユニット12からの命令動作に従い、ソースA(SRCA)とソースB(SRCB)の各種演算を行う。その演算結果は、ディスティネーションセレクタ17に出力される。
アドレスセレクタ(ADDRESSsel)18は、アクセスするメモリアドレスを選択するセレクタで、命令フェッチの場合はプログラムカウンタ(PC)、間接アドレスの場合はBC,DE,HL(ペアで16ビット)、IX、IYレジスタ、スタックアクセスの場合はSP、直接メモリアドレスを指定する場合はロード、ストア命令で読み込まれたオペランドを格納するアドレスレジスタ(不図示)を選択する。
次に、上述したデータパスユニット14で行なわれる命令実行の具体例を示す。
例えば“ADD A、B”命令の機械語命令は命令1バイトで構成され、命令内容は、AレジスタとBレジスタの内容を加算してAレジスタに格納することである。この命令が実行されるとき、CPUは下記の動作を行う。
まず、CPUコア2の状態が命令フェッチとなると、状態制御ユニット11が命令フェッチの指示を中央制御ユニット12へ出す。この指示を受けて、中央制御ユニット12はデータパスユニット14を操作し、プログラムカウンタ(PC)が示すアドレスをアドレスセレクタ(ADDRESSsel)18に設定し、これにより1バイト命令をメモリ4から読み出し、DI入力を介して入力する。入力された1バイト命令はデコーダー13へ渡され、命令解析が行われる。このときプログラムカウンタ(PC)では、次の命令フェッチアドレスを指示するための処理も同時に行われている。
中央制御ユニット12のデコーダー13により、“ADD A,B”命令と解析された結果が状態制御ユニット11へ渡されると、状態制御ユニット11はCPUコア2の動作状態が「演算」であると識別し、中央制御ユニット12にBレジスタの内容をAレジスタに加算するよう指示を出す。中央制御ユニット12はデータパスユニット14を操作して、Bレジスタの内容をAレジスタに加算する。
データパスユニット14と中央制御ユニット12における一連の処理の完了が状態制御ユニット11に通知されると、状態制御ユニット11は、CPUコア2の状態を「演算」中から次の命令をフェッチするサイクルへ遷移し、命令フェッチ及びその実行というサイクルが順次繰り返される。「実行」の間、中央制御ユニット12からの指示を受けたデータパスユニット14内では、ソースAセレクタ(SRCAsel)20がAレジスタを選択し、ソースBセレクタ(SRCBsel)19がBレジスタを選択し、演算論理ユニット(ALU)16により加算演算が実行され、ディスティネーションセレクタ(DSTsel)17により選択されたAレジスタへ演算結果を格納する。
図4はデータパスユニット14におけるデータの流れを詳細に説明した図である。
ソースAセレクタ(SRCAsel)20はセレクタ回路であり、レジスタバンク15内に複数あるレジスタに格納されたレジスタ内容のうち、算術/論理演算回路43の入力Aへセットされるデータ(SourceA)41が、中央制御ユニット12からのソースA選択信号により選択される。
ソースBセレクタ(SRCBsel)19もセレクタ回路であり、レジスタバンク15内の複数あるレジスタに格納されたレジスタ内容、及び、外部バスコントローラを介してメモリユニット2等から入力される外部入力DIのうち、算術/論理演算回路43の入力Bへセットされるデータ(SourceB)42が、中央制御ユニット12からのソースB選択信号により選択される。また、ソースBセレクタ(SRCBsel)19は、上記入力Bと並列して演算結果セレクタへ入力されるデータも選択する。
算術/論理演算回路43は演算論理ユニット(ALU)16内にあり、様々な演算(加算、減算、論理和、論理積等)を行う。これらの演算は算術/論理演算回路43内では並行して処理され、演算結果は演算結果セレクタ44を介して、ディスティネーションセレクタ(DSTsel)45により選択されたレジスタまたは外部出力DOに出力される。
演算結果セレクタ44は、算術/論理演算回路43から出力される複数の演算結果の中から演算結果を選択したり、或いはソースBセレクタ19からの外部入力DIも入力として選択できる回路構成となっている。演算結果セレクタ44のセレクタ出力は、図示するとおり、Z判定回路46、TZ判定回路47、ディスティネーションセレクタ(DSTsel)45に並列に出力される。
ここで、Z判定回路46は、上述した第1のコンディションフラグのためのゼロ判定回路であり、Z更新信号により、入力されたデータが全てゼロか否ゼロかの判定を行う。ゼロ判定であればフラグレジスタ17のZflagに反映する(例えば、ビットD6に1をセットする)。
また、TZ判定回路47は、Z判定回路46とは別に設けた第2のコンディションフラグのためのゼロ判定回路である。ゼロ判定回路と同様に、TZ更新信号により、入力されたデータが全てゼロか否ゼロかの判定を行う。TZ判定回路47の場合、ゼロ判定のときのみならず、データがレジスタバンク内のレジスタにロードされるときも、フラグレジスタのTZflagに反映する(例えば、ビットD5に1をセットする)。その結果、演算実行時の更新があった場合にZflag及びTZflagは同じフラグ値となり、ロード時の更新があった場合には異なる値となる。
ディスティネーションセレクタ(DSTsel)45は、ディスティネーション選択信号により選択された出力を、レジスタバンク15内のレジスタ或いは外部出力DOの何れに格納するかの選択を行う。
本実施例の場合、第1のコンディションフラグであるZflagは演算時に更新され、第2のコンディションフラグであるTZflagは演算時及びレジスタへのデータロード時に更新されることを、以下の命令を用いて更に説明する。
(例1:“ADD A,B”命令)
“ADD A,B”命令は、レジスタバンク15内のAレジスタとBレジスタの加算結果をAレジスタに格納する演算を実行することである。この命令の場合、中央制御ユニット12の指示によりソースA41としてAレジスタが選択され、ソースB42としてBレジスタが選択されて演算が行われる。次に、演算結果セレクタ44により加算の結果が選択され、Z判定回路46によりZ判定結果がZflagにセットされる。ディスティネーションセレクタ45は、Aレジスタを選択して結果をAレジスタに格納する。したがって、演算結果が、第1のコンディションフラグであるZフラグに反映される。
(例2:“LD A,(100h)”命令)
LD A,(100h)”命令は、Aレジスタに100h番地のデータをロードする演算を実行することである。この命令の場合、ソースBセレクタ19は外部入力DIを選択、演算結果セレクタ44はソースBを選択、ディスティネーションセレクタ45はAレジスタを選択し、Z判定は前回のZflagを更新、TZ判定は演算結果セレクタ44の結果を更新とすると、100h番地のデータがAレジスタにロードされる。Zフラグは変化しないが、TZ判定回路47が、ロードされた100h番地のデータがゼロか否ゼロかの判定を行う。したがって、データをロードしたという結果が、第2のコンディションフラグであるTZフラグに反映される。
このようなZflagが演算時に更新され、TZflagが演算時とレジスタへのデータロード時に更新する処理構成は、インテル80系動作、モトローラ68系動作にそれぞれ一致し、各CPUの動作の互換性を反映している。ただし、Zflagは演算論理ユニットの演算結果を反映し(インテル80系動作)、TZflagは演算論理ユニットの演算結果とレジスタへのロードデータの値の判定を反映する(モトローラ68系動作)ことに必ずしも限定されるわけではない。例えば、TZflagはレジスタへのロードデータの判定のみを反映するとしても良い。
ところで、上述したソースAセレクタ20、ソースBセレクタ19、演算結果セレクタ44、Z判定回路46、TZ判定回路47、ディスティネーションセレクタ(DSTsel)45は、各々、中央制御ユニット12から出力されるソースA選択信号、ソースB選択信号、演算結果選択信号、Z更新信号、TZ更新信号、ディスティネーション選択信号を受けて作動するようになっている。これらの選択又は更新信号は、中央制御ユニット内のデコーダー13による命令デコードの結果により出力される。これにより命令コード毎にZflagとTZflagの変化を定義できるため、様々組み合わせの命令セットを作成することが可能になる。また、参照するジャンプ命令、サブルーチンコール、リターン命令等についても、Zflagを参照する命令とTZflagを参照する命令をそれぞれ用意しておけば、様々な条件でのプログラム制御が可能となる。
また、本実施形態では、演算結果がゼロか否ゼロかを判定するゼロフラグについて説明したが、他のフラグについても同様の判定回路や保持回路を持つよう構成することにより、同様の回路構成を実現できる。
すでに、状態制御ユニット11が図5に示す内部状態遷移を管理すること、また、中央制御ユニット11内のデコーダー13による命令デコードの結果に応じて次の内部状態遷移が決定されることを述べたが、各内部状態について以下に簡単に説明しておく。
CPUコア2の状態は下記に示す状態に定義でき、その状態がCPUの制御信号や命令により各実行サイクルへ遷移していくものである。
1.リセット状態
全ての内部状態がクリアされ、CPUコア2が初期化された状態。
2.命令フェッチ
メモリから命令を読み込み、その命令を解析する。
3.メモリ・ロード
指定されたアドレスのメモリからデータを内部レジスタに読み込む。
4.メモリ・ストア
内部レジスタのデータを指定したアドレスのメモリへ書き込む。
5.演算
内部のレジスタに算術演算を行う。
6.HALT
CPUコア2を実行停止とする。リセット、割り込み等の外部制御信号により解除される。
リセット信号により動作開始したCPUコア2は、命令フェッチサイクルによりメモリから命令を読み出してその命令をデコード(解析)する。デコードした命令がロード命令であれば、CPUコア2は、メモリからデータをロードするメモリ・ロードサイクルに従いメモリのロードを行い、そして次の命令フェッチを行う。次にフェッチした命令が演算であればその演算を行うし、演算後メモリへストアする命令であればメモリ・ストアというサイクルを実行する。このようにCPUコア2は、状態遷移ユニット内の状態により、中央制御ユニット12内の命令デコーダー13により選択されたセレクタ選択信号を組み合わせて、命令を随時実行していく。
なお、本実施形態ではCPUコア2の状態を上記6つの状態として説明したが、この状態区分はこれに限定されるものではなく、CPUの設計に応じて様々なものがあり得ることに留意されたい。
本実施形態によれば、CPUコア2がZflagとTZflagという2つのフラグを具備することにより、データロードしてもフラグ値が変化しないZflagと、データロードされるとフラグ値が変化するTZflagそれぞれに対し、1つの命令でロードデータの値を反映することができる。そのため、条件分岐命令がZflagを参照して行なうものと、TZflagを参照するものそれぞれを用意しておき、プログラム作成の容易さやプログラマーの使い勝手に応じてどちらのフラグを参照するかを適宜選択すれば良い。
この点につき、TZflagを持たずにZflagを1つにし、ロード命令についてZflagの変化する命令と、Zflagの変化しない命令とを用意すれば同様な処理結果を達成することもあり得る。しかしながら、例えばジャンプ、サブルーチンコール等の条件分岐命令の数に較べて、メモリからのロード、レジスタ間のロードといったロード命令数は数倍多いことから、Zflagを1つしかもたない方法にするとロード命令数が格段に増大してしまうことになる。8ビットCPUの場合、機械語の命令構成は、基本8ビットで構成する1バイトであるが、1バイトで実装できない場合は2バイト以上の構成となる。現状では1バイトでは256個の命令しか定義できないため、2バイト以上の構成の組み合わせで命令セットが定義されている。また、命令は1バイトであっても、指定するアドレス情報が1バイト又は2バイト必要なために2バイト命令や3バイト命令も存在する。
本発明が目的とするプログラム効率とメモリ空間の削減の両立をおこなえるCPUアーキテクチャと命令セットを提供するためには、命令構成の少ない命令によってプログラム数を短縮することが望ましく、いかに少ない命令構成の命令でプログラムできるかが重要な要素となる。このことを考慮すると、本発明のコンディションフラグ構成は、機械語命令数を大幅に削減できるものといえる。
本願発明は、特に、パチンコなどの遊技機におけるCPUに適用されることが有益である。
1 CPU
2 CPUコア
3 バスコントローラ
4 メモリユニット
11 状態制御ユニット
12 中央制御ユニット
13 デコーダー
14 データパスユニット
15 レジスタバンク
16 ALU
17 フラグレジスタ

Claims (3)

  1. 所与の機械語命令を実行するCPUコアを具備したCPUであって、
    前記CPUコアは、前記機械語命令に従い決定される命令動作シーケンスに基づき、(i)算術論理演算が実行されたとき、演算結果をフラグレジスタ内の第1のコンディションフラグに対応するビット(Z)に反映し、(ii)前記CPUコア内のレジスタにデータがロードされたとき、ロード結果を前記フラグレジスタ内の第2のコンディションフラグに対応するビット(TZ)に反映する、ことを特徴とするCPU。
  2. 前記演算結果が、前記第1のコンディションフラグに対応するビット(Z)と、前記第2のコンディションフラグに対応するビット(TZ)との両方に反映される、請求項1に記載のCPU。
  3. 前記CPUコアは、
    前記CPUコア内部の状態遷移を管理し、各状態に応じた動作指示を作成する状態制御ユニットと、
    外部より入力された機械語命令を解析して命令デコードを作成し、当該命令デコードを前記状態制御ユニットに渡すこと、及び、前記状態制御ユニットにより決定される内部状態遷移による動作指示に従い命令動作のシーケンスを決定する中央制御ユニットと、
    前記中央制御ユニットからの命令動作シーケンスに基づき、複数の内部レジスタ又は外部入力をソースとして算術論理演算を実行する演算論理ユニット(ALU)と、
    前記内部レジスタの状態又は所定の命令でセット若しくはリセットが行われる複数フラグを有する1以上のフラグレジスタと、
    を含み、
    前記演算論理ユニットの演算結果が、前記フラグレジスタ内の第1のコンディションフラグに対応するビット(Z)に反映され、
    前記内部レジスタへのデータロードの結果が、前記フラグレジスタ内の第2のコンディションフラグに対応するビット(TZ)に反映される、
    ことを特徴とする、請求項1又は2に記載のCPU。
JP2012037531A 2012-02-23 2012-02-23 複数のコンディションフラグを有するcpu Active JP5866697B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012037531A JP5866697B2 (ja) 2012-02-23 2012-02-23 複数のコンディションフラグを有するcpu

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012037531A JP5866697B2 (ja) 2012-02-23 2012-02-23 複数のコンディションフラグを有するcpu

Publications (2)

Publication Number Publication Date
JP2013174942A true JP2013174942A (ja) 2013-09-05
JP5866697B2 JP5866697B2 (ja) 2016-02-17

Family

ID=49267811

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012037531A Active JP5866697B2 (ja) 2012-02-23 2012-02-23 複数のコンディションフラグを有するcpu

Country Status (1)

Country Link
JP (1) JP5866697B2 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH023822A (ja) * 1988-06-21 1990-01-09 Matsushita Electric Ind Co Ltd データ処理装置
JPH02148222A (ja) * 1988-11-30 1990-06-07 Matsushita Electric Ind Co Ltd データ処理装置
JPH02224025A (ja) * 1988-10-18 1990-09-06 Apollo Computer Inc コンピューターシステム
JPH07509083A (ja) * 1992-07-13 1995-10-05 テキサス インスツルメンツ インコーポレイテッド ディジタル信号プロセッサ
JPH096614A (ja) * 1995-06-21 1997-01-10 Sanyo Electric Co Ltd データ処理装置
US5802360A (en) * 1996-05-01 1998-09-01 Lucent Technologies Inc. Digital microprocessor device having dnamically selectable instruction execution intervals
US20030061464A1 (en) * 2001-06-01 2003-03-27 Catherwood Michael I. Digital signal controller instruction set and architecture

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH023822A (ja) * 1988-06-21 1990-01-09 Matsushita Electric Ind Co Ltd データ処理装置
JPH02224025A (ja) * 1988-10-18 1990-09-06 Apollo Computer Inc コンピューターシステム
JPH02148222A (ja) * 1988-11-30 1990-06-07 Matsushita Electric Ind Co Ltd データ処理装置
JPH07509083A (ja) * 1992-07-13 1995-10-05 テキサス インスツルメンツ インコーポレイテッド ディジタル信号プロセッサ
JPH096614A (ja) * 1995-06-21 1997-01-10 Sanyo Electric Co Ltd データ処理装置
US5802360A (en) * 1996-05-01 1998-09-01 Lucent Technologies Inc. Digital microprocessor device having dnamically selectable instruction execution intervals
US20030061464A1 (en) * 2001-06-01 2003-03-27 Catherwood Michael I. Digital signal controller instruction set and architecture

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6015049856; 川俣晶: 'プロセサの仕組みってこうだったのか! C言語で作るCPUエミュレータ' NIKKEI SOFTWARE 第12巻,第2号, 20090124, Pages:52-73, 日経BP社 Nikkei Business Publications,Inc. *

Also Published As

Publication number Publication date
JP5866697B2 (ja) 2016-02-17

Similar Documents

Publication Publication Date Title
JP2550213B2 (ja) 並列処理装置および並列処理方法
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
EP2015174B1 (en) Microprogrammed processor having multiple processor cores using time-shared access to a microprogram control store
KR102379894B1 (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
US20230084523A1 (en) Data Processing Method and Device, and Storage Medium
US20120260061A1 (en) Data processing apparatus and method for performing vector operations
KR20150019349A (ko) 다중 쓰레드 실행 프로세서 및 이의 동작 방법
JP2019511056A (ja) 複素数乗算命令
US7552313B2 (en) VLIW digital signal processor for achieving improved binary translation
US6061367A (en) Processor with pipelining structure and method for high-speed calculation with pipelining processors
JP2002532775A (ja) インタープリタプログラム実行方法
JP7410186B2 (ja) Gpuにおける明示的な個別マスクレジスタのマスク操作方法
US9361109B2 (en) System and method to evaluate a data value as an instruction
US6505291B1 (en) Processor having a datapath and control logic constituted with basis execution blocks
US20060200648A1 (en) High-level language processor apparatus and method
JP4800582B2 (ja) 演算処理装置
JP5866697B2 (ja) 複数のコンディションフラグを有するcpu
US8285975B2 (en) Register file with separate registers for compiler code and low level code
US5812845A (en) Method for generating an object code for a pipeline computer process to reduce swapping instruction set
JP4159586B2 (ja) 情報処理装置および情報処理の高速化方法
US8275978B1 (en) Execution of conditional branch instruction specifying branch point operand to be stored in jump stack with branch destination for jumping to upon matching program counter value
JP2004021890A (ja) データ処理装置
JP2000029696A (ja) プロセッサおよびパイプライン処理制御方法
JP3511691B2 (ja) 演算処理装置
KR100244210B1 (ko) 멀티-스테이지 파이프라인 구조를 갖는 마이크로 프로세서 디자인방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151116

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: 20151209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151216

R150 Certificate of patent or registration of utility model

Ref document number: 5866697

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250