米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 松下電器産業株式会社

発明の名称 プロセッサおよびプログラム生成装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2007−4821(P2007−4821A)
公開日 平成19年1月11日(2007.1.11)
出願番号 特願2006−216894(P2006−216894)
出願日 平成18年8月9日(2006.8.9)
代理人 【識別番号】100097445
【弁理士】
【氏名又は名称】岩橋 文雄
発明者 宮地 信哉 / 檜垣 信生 / 田中 哲也
要約 課題
プロセッサの高性能化を図るためには、命令の解読より前の段階で何らかの先行処理を行う必要があるが、組み込み等でよく使われる可変長命令体系のプロセッサの場合には、命令の先頭位置を決定する必要があり、その為には前回の命令フェッチの状態を保存する命令フェッチ状態保存器が必要となり、かつ、その状態は分岐発生時にリセット制御する必要があるなど、ハードウェアが増加したりクリティカルパスが発生するという問題があるだけでなく、制御的にも複雑でバグ発生の要因にも成り得るという問題がある。

解決手段
可変命令語長の命令列を実行するプロセッサであって、前記命令列に含まれ、操作を記述する命令語を解読する命令解読器と、前記命令語とは排他的に、かつ一定間隔毎に前記命令列に含まれる、命令の位置情報を取り出す命令位置取得手段とを備えることを特徴とする。
特許請求の範囲
【請求項1】
複数の固定長のユニットからなる命令を可変長命令として並列実行するプロセッサであって、
前記命令中には前記命令がどの命令セットに属するかを示す命令セット選択情報が配置されており、前記情報に基づいて命令セットを切り換えることを特徴とするプロセッサ。
【請求項2】
複数の命令セットからなる命令列を生成するプログラム生成装置であって、入力されたプログラムから一定の長さの命令語を抽出する命令抽出手段と、前記命令抽出手段により抽出された前記命令語がどの前記命令セットに属するかを規定する命令セット選択情報を生成する命令セット選択情報生成手段と、前記命令抽出手段により抽出された前記命令語と、前記命令セット選択情報生成手段により生成された前記命令セット選択情報とを合成して前記命令列を生成する命令列生成手段とを備えることを特徴とするプログラム生成装置。
【請求項3】
複数の固定長のユニットからなる命令を可変長命令として並列実行するプロセッサであって、
前記命令中には前記キャッシュに対するライトアクセスがミスであった場合に
主記憶装置のみを書き換えるかまたはキャッシュメモリのみを書き換えるかの情報が配置されており、この情報に基づいてキャッシュに対するライトアクセスがミスであった場合主記憶装置のみを書き換えるかまたはキャッシュメモリのみを書き換えるかの切り換えを行うことを特徴とするプロセッサ。
【請求項4】
命令列を生成するプログラム生成装置であって、入力されたプログラムから一定の長さの命令語を抽出する命令抽出手段と、前記命令抽出手段により抽出された前記命令語に対するキャッシュ制御を規定するキャッシュ制御情報を生成するキャッシュ制御情報生成手段と、前記命令抽出手段により抽出された前記命令語と、前記キャッシュ制御情報生成手段により生成された前記キャッシュ制御情報とを合成して前記命令列を生成する命令列生成手段とを備えることを特徴とするプログラム生成装置。
発明の詳細な説明
【技術分野】
【0001】
本発明は、命令の解読処理を軽減するプロセッサ、プログラム生成装置および記録媒体に関するものである。
【背景技術】
【0002】
近年、電子技術及び情報処理技術の発展によりマイクロプロセッサの性能が向上し、あらゆる機器に組み込まれ広く利用されている。その様なプロセッサでは、パイプライン処理により高い性能を達成している。パイプライン処理とは命令の処理を複数に分割し、それらを時間的にずらして別の命令を並列に処理するものである。特に組み込み用途の場合には、コードサイズの増加を抑制する目的で可変命令語長の命令体系を採用する必要があるが、可変命令語長の命令は命令解読が複雑となるために、命令解読を複数のパイプラインに分割して行う事が多い。
【0003】
図16は第1の従来技術における命令のフォーマットである。
【0004】
従来技術の命令は、21ビットを単位として(以下ユニットと表現する)同図
(a)に示す1ユニットで構成される命令と同図(b)に示す2ユニットで構成される命令の2種類の命令を持ち、2つの命令はそれぞれの命令の先頭の0ビット目の命令フォーマット情報101の値で区別されており、0ビット目が0の時には1ユニット命令を、0ビット目が1の時には2ユニット命令を示す。またこれらの命令は、メモリ上では(c)に示すように、1回のフェッチ幅である64ビットの中に3ユニット入れた形で格納されている。
【0005】
図17は第1の従来技術におけるプロセッサのブロック図である。
【0006】
本プロセッサは、サイクル毎に2命令を同時実行するプロセッサであり、分岐先は必ず命令フェッチ単位の先頭であるとする。
【0007】
メモリシステム210から供給される命令列321は、命令供給発行部1620に入力される。
【0008】
命令供給発行部1620では、固定長命令変換器1622によって可変命令語長命令から解読の容易な固定長命令へ変換される。変換された固定長命令は命令バッファ223によって一時的に蓄えられ、命令解読部230からの要求に従って2命令ずつ命令レジスタ224に供給される。命令レジスタ224に格納された2つの命令は、命令解読部230へ供給される。命令解読部230では、2つの命令解読器233、234が命令を解読する。命令実行部240では、2つの演算器243、244により演算が行われる。
【0009】
図18は固定長命令変換器1622の詳細図である。
【0010】
命令フェッチ状態保存器1631は、通常は前回の命令フェッチと今回の命令フェッチを命令が跨いでいるかどうかの状態を保存している。命令が跨いでいない場合には今回の命令フェッチの先頭と命令の先頭が一致している事を、跨いでいる場合には今回の命令フェッチの先頭は2ユニットで構成される命令の後半1ユニットであることを示している。また、分岐が発生した場合には、命令実行部21内のPC制御部242から命令フェッチ制御部1621経由で命令フェッチ
に同期して命令フェッチ状態保存器1631へ分岐が発生したことが伝えられる。この場合には、命令フェッチ状態保存器1631の値は、命令が跨いでいない状態に初期化され、命令フェッチの先頭が命令の先頭となることを示す。第2先頭検出器322bは命令フェッチ状態保存器1631、および、先頭のユニット321aの先頭ビットの情報から2つ目のユニット321bが命令の先頭かどうかを判断する。同様に、第3先頭検出器322cは第2先頭検出器322b、および、2つ目のユニット321bの先頭ビットの情報から3つ目のユニット321cが命令の先頭かどうかを判断する。最後に次状態発生器1622dは第3先頭検出器322c、および、3つ目のユニット321cの先頭ビットの情報から321cから始まる命令が今回の命令フェッチで終わるかどうかを判断し、結果を命令フェッチ状態保存器1631に保存すると共に、命令フェッチで終わらない場合には一時保存レジスタ323へ3つ目のユニット321cを保存する。
【0011】
MIXa324aは、今回の命令フェッチが命令の途中から始まっていた場合には、一時保存レジスタ323に格納した命令の前半部分と命令の後半部分である321aの値を連結したものを、321aが命令の先頭で1ユニットで終わる命令であった場合には、図4(a)の様に、321aの値と1ユニット分の意味の無いデータを出力したものを、321aが命令の先頭で2ユニットで終わる命令であった場合には、図4(b)の様に、321aの値と321bの値を連結したものを命令バッファ223に出力し、それ以外の場合には何も出力しない。
【0012】
同様に、MIXb324bは、321bが命令の先頭で1ユニットで終わる命令であった場合には、321bの値と1ユニット分の意味の無いデータを連結したものを、321bが命令の先頭で2ユニットで終わる命令であった場合には、321bの値と321cの値を連結したものを命令バッファ223に出力し、それ以外の場合には何も出力しない。
【0013】
同様に、MIXc324cは、321cが命令の先頭で1ユニットで終わる命令であった場合には、321cの値と1ユニット分の意味の無いデータを連結し
たものを命令バッファ223へ出力し、それ以外の場合には何も出力しない。
【0014】
また、次状態発生器1622dは、今回の命令フェッチと次回の命令フェッチを命令が跨いでいるかどうかの情報を命令フェッチ状態保存器1631に出力するとともに、跨いでいる場合には一時保存レジスタ323に命令の先頭を保存させる。
【0015】
固定長命令変換器1622から命令バッファ223へは、最大6ユニットの命令325が供給される。
【0016】
命令列変換器332は、命令バッファ223に毎回供給される最大6ユニットの命令325を、4ユニットずつ、FIFO部333に入力する。
【0017】
FIFO部333は、命令解読部230の要求に従って4ユニットの命令を命令レジスタ224へ出力する。
【発明の開示】
【発明が解決しようとする課題】
【0018】
この様に、プロセッサの高性能化を図るためには、命令の解読より前の段階で何らかの先行処理を行う必要があるが、組み込み等でよく使われる可変命令語長の命令体系のプロセッサの場合には、命令の先頭位置を決定する必要があり、その為には前回の命令フェッチの状態を保存する命令フェッチ状態保存器1631が必要となり、かつ、その状態は分岐発生時にリセット制御する必要があるなど、ハードウェアが増加したりクリティカルパスが発生するという問題があるだけでなく、制御的にも複雑でバグ発生の要因にも成り得るという問題がある。
【課題を解決するための手段】
【0019】
上記課題を解決するための第1の発明は、命令中に配置された情報を元に命令セットを切り換えるプロセッサである。これにより、命令セットを切り換える命令を使用しなくても済むため、コードサイズが小さくできる。
【0020】
さらに、上記課題を解決するための第2の発明は、命令中に配置された情報を元にキャッシュに対するライトアクセスがミスであった場合に主記憶装置のみを書き換えるかまたはキャッシュメモリのみを書き換えるかを切り換えるプロセッサである。これにより、より効率的なキャッシュ制御ができる。
【発明の効果】
【0021】
以上の説明から明らかなように、本発明は、命令中に付加情報を配置し、この情報に基づいて制御することによりプロセッサの構造を簡単にするものである。
【発明を実施するための最良の形態】
【0022】
以下、本発明に係るプロセッサ、プログラム生成装置、及び記録媒体の実施の形態について、図面を用いて詳細に説明する。
【0023】
(第1の実施の形態)
(命令フォーマット)
図1は、本発明の第1の実施の形態におけるプロセッサの命令フォーマットである。
【0024】
本プロセッサは、21ビットを単位として(以下ユニットと表現する)、同図(a)に示す1ユニットで構成される命令と同図(b)に示す2ユニットで構成される2種類の命令を持ち、2つの命令はそれぞれの命令の先頭である0ビット目にある命令フォーマット情報ビット101の値で区別されており、0ビット目が0の時には1ユニット命令を、0ビット目が1の時には2ユニット命令を示す。またこれらの命令は、メモリ上では同図(c)、(d)に示すように、1回のフェッチ幅である64ビットの中に3ユニットの命令と、フェッチ単位内の最初のユニットが命令の先頭かどうかを示す命令の先頭情報102を格納したことになっている。
【0025】
同図(c)の様に命令の先頭情報102が1の時には命令の先頭が最初のユニットに存在することを、同図(d)に示す様に0の時には命令の後半が最初のユニットに存在することを示している。
【0026】
(プロセッサのハードウェア構成)
図2は本発明の第1の実施の形態におけるプロセッサのブロック図である。
【0027】
本プロセッサは、2命令が同時実行可能なプロセッサであり、分岐先は必ず命令フェッチ単位の先頭であるとする。
【0028】
210は命令列を格納しているメモリシステム、220は命令フェッチから固定長命令への変換までを担当する命令供給発行部、221は命令フェッチを制御する命令フェッチ制御部、222は命令フェッチした可変長命令を固定長命令に変換する固定長命令変換器、223は固定長命令をバッファリングする命令バッファ、224は解読する命令を格納する命令レジスタ、230は命令解読全般を行う命令解読部、231は命令解読を制御する命令発行制御部、232は命令を解読する命令解読器、233は命令を解読する第1命令解読器、234は命令を解読する第2命令解読器、240は解読結果に従って命令を実行する命令実行部、241は命令実行を制御する命令実行制御部、242は分岐関係を担当するPC制御部、243は第1演算器、244は第2演算器、245はレジスタを格納するレジスタファイルである。
【0029】
図3は、命令供給発行部220の詳細ブロック図である。
【0030】
321はメモリシステムから供給される64ビットの命令フェッチデータ、321aは命令フェッチデータ321中の1つ目のユニットのデータ、321bは命令フェッチデータ321中の2つ目のユニットのデータ、321cは命令フェッチデータ321中の3つ目のユニットのデータ、321dは命令フェッチデータ321中の命令の位置情報ビット、322bは2つ目のユニットのデータ321bが命令の先頭かどうかを判断する第2先頭検出器、322cは3つ目のユニ
ットのデータ321cが命令の先頭かどうかを判断する第3先頭検出器、322dは次の命令フェッチの1つ目のユニットのデータ321aが命令の先頭かどうかを判断する次状態発生器、323は今回の命令フェッチ内にある命令の後半が次回の命令フェッチに存在する場合に命令の前半を格納する一時保存レジスタ、324aは1つ目のユニットが末尾、あるいは、先頭の時に2ユニットの固定長命令325aを出力するMIXa、324bは2つ目のユニットが先頭の時に2ユニットの固定長命令325bを出力するMIXb、324cは3つ目のユニットが1ユニット命令の先頭の時に2ユニットの固定長命令325cを出力するMIXc、331は命令バッファを制御する命令バッファ制御部、332は固定長命令変換器222の出力する6ユニットの命令を2ユニット命令の連続に変換する命令列変換器、333は命令をためるFIFOである。
【0031】
以上の様に構成された本発明の第1の実施の形態のプロセッサについて、以下、その動作を説明する。
【0032】
メモリシステム210から供給される命令列321は、命令供給発行部220に入力される。命令供給発行部内では、固定長命令変換器222によって可変長命令から解読の容易な固定長命令へ変換される。変換された固定長命令は命令バッファ223によって一時的に蓄えられ、命令解読部230からの要求に従って2命令ずつ命令レジスタ224に供給される。命令レジスタ224に格納された2つの命令列は、命令解読部230へ供給される。命令解読部230では、2つの命令解読器233、234が命令を解読する。命令実行部240では、2つの演算器243、244により演算が行われる。
【0033】
(固定長命令変換器の詳細な構成)
以下に固定長命令への変換器の詳細を述べる。
【0034】
命令フェッチデータ321中の命令位置情報ビット321dは、前回の命令フェッチと今回の命令フェッチで命令が跨いでいたかどうかの状態を保存している
。命令が跨いでいない場合には今回の命令フェッチの先頭と命令の先頭が一致している事を、跨いでいる場合には今回の命令フェッチの先頭は2ユニットで構成される命令の後半1ユニットであることを示している。
【0035】
第2先頭検出器322bは命令フェッチデータ321中の命令位置情報ビット321d、および、先頭のユニット321aの先頭ビットの情報から2つ目のユニット321bが命令の先頭かどうかを判断する。
【0036】
同様に、第3先頭検出器322cは第2先頭検出器322b、および、2つ目のユニット321bの先頭ビットの情報から3つ目のユニット321cが命令の先頭かどうかを判断する。最後に次状態発生器322dは第3先頭検出器322c、および、3つ目のユニット321cの先頭ビットの情報から321cから始まる命令が今回の命令フェッチで終わるかどうかを判断し、命令フェッチで終わらない場合には一時保存レジスタ323へ3つ目のユニット321cを保存する。
【0037】
MIXa324aは、今回の命令フェッチが命令の途中から始まっていた場合には、一時保存レジスタ323に格納した命令の前半部分と命令の後半部分である321aの値を連結したものを、321aが命令の先頭で1ユニットで終わる命令であった場合には、図4(a)の様に、321aの値と1ユニット分の意味の無いデータを連結したものを、321aが命令の先頭で2ユニットで終わる命令であった場合には、図4(b)の様に、321aの値と321bの値を連結したものを命令バッファ223に出力し、それ以外の場合には何も出力しない。
【0038】
同様に、MIXb324bは、321bが命令の先頭で1ユニットで終わる命令であった場合には、321bの値と1ユニット分の意味の無いデータを連結したものを、321bが命令の先頭で2ユニットで終わる命令であった場合には、321bの値と321cの値を連結したものを命令バッファへ223に出力し、それ以外の場合には何も出力しない。
【0039】
同様に、MIXc324cは、321cが命令の先頭で1ユニットで終わる命令であった場合には、321cの値と1ユニット分の意味の無いデータを連結したものを命令バッファ223へ出力し、それ以外の場合には何も出力しない。
【0040】
(命令列変換器、FIFOの詳細な構成)
図7は命令列変換器の動作を説明する表である。
【0041】
命令列変換器332内部には常時0ユニット、あるいは、2ユニットの命令列が存在している。
【0042】
命令列変換器332は、固定長命令変換器から2ユニット、あるいは4ユニット、あるいは6ユニットの命令を受け取る。
【0043】
命令を受け取った結果、4ユニット以上の命令が用意された時には命令列変換器332は、FIFO333へ4ユニットの命令を出力する。4ユニット未満の命令が存在する時には、FIFO333へは出力せずに命令列変換器332に保存する。
【0044】
FIFO333は、内部に用意された命令を、命令解読部230からの要求に従って4ユニットずつ命令レジスタ224へ出力する。
【0045】
(プロセッサの動作)
次に具体的な命令を解読実行した場合の本プロセッサの動作について説明する。
【0046】
図5(c)は本発明の第1の実施の形態におけるプログラムの例である。
【0047】
本プログラム例では、0x1000番地(”0x”は16進数を表す。以下同様。)から1ユニットで構成されたadd r0,r1命令、2ユニットで構成
されたadd 0x1234,r2命令、add 0x2345,r3命令、sub 0x3456,r4命令、1ユニットで構成されたnop命令、cmp r1,r2命令、sub r3,r4命令、sub r5,r6命令、sub r6,r7命令が続くとする。この命令列中で、0x1004番地の命令フェッチは次の命令フェッチに命令が続いているので、命令の位置情報ビット102は0に、それ以外は1になる(本来、バイナリの機械語命令だが、ここではニモニック表記している)。
【0048】
0x1000番地への分岐命令を検出すると、命令実行制御部241はPC制御部242に分岐の指令を出力する。PC制御部242は命令フェッチ制御部221へ分岐命令を出力し、IAバス211へ分岐アドレスを出力する。メモリシステム210はIAバス211に対応した命令列64ビットをIDバス212へ出力し、命令供給発行部220内の固定長命令変換器222が受け取る。
【0049】
固定長命令変換器222では、まず、命令フェッチデータ中の命令の先頭情報ビット102が1であることから、1つ目のユニットのデータ321aが命令の先頭であることがわかる。また、第2先頭検出器322bでは、321aが命令の先頭であることと、1つ目のユニット321aの先頭ビットが0であることから、2つ目のユニットも命令の先頭であることがわかる。同じ様にして、第3先頭検出器322cでは、321bが命令の先頭であることと、2つ目のユニット321bの先頭ビットが1であることから、3つ目のユニットは2つ目のユニットを先頭とする命令の後半である事がわかる。最後に、次状態発生器322dでは、321cが命令の末尾である事から3つ目のユニット321cの先頭ビットを見るまでもなく、3つ目のユニットで命令が終っている事が分かるので、一時保存レジスタ323には3つ目のユニットのデータ321cを保存する必要はない事がわかる。
【0050】
また、MIXa324aは、1つ目のユニットのデータ321aが命令の先頭であり、かつ1ユニット命令である事から、命令データ321aと意味の無いデ
ータ21ビットを連結したものを命令バッファ223に出力する。同様に、MIXb324bは、2つ目のデータ321bが命令の先頭であり、2ユニット命令の先頭であることから、命令データ321bと321cを連結したものを命令バッファ223へ出力する。同様にMIXc324cは、3つ目のデータ321cが2ユニット命令の後半である事から、何も出力しない。
【0051】
これにより、0x1000番地の命令フェッチにより命令バッファへは、図6(a1)及び図6(b1)及び図6(c1)の様に4ユニットの命令が命令バッファ223に出力される。
【0052】
次に、0x1004番地の命令フェッチを行う。
【0053】
同様の処理を行うことによって、MIXa324aは、2ユニット命令の先頭であるので、1つ目のユニットのデータ321aと2つ目のユニットのデータ321bを連結して命令バッファ223へ出力する。MIXb324bは、2ユニット命令の後半であるので、何も出力しない。MIXc324cは、2ユニット命令の前半であるので、何も出力しない。次状態発生器322dは、321cが次命令の前半であるので、321cのデータを一時保存レジスタ323へ保存する。
【0054】
これによって、0x1004番地の命令フェッチにより命令バッファへは、図6(a2)及び図6(b2)及び図6(c2)の様に2ユニットの命令が命令バッファ223に出力される。
【0055】
次に、0x1008番地の命令フェッチを行う。
【0056】
同様の処理を行うことによって、MIXa324aは、2ユニット命令の後半であるので、一時保存レジスタ323に保存した前半の命令と1つ目のユニットのデータ321aを連結して命令バッファ223へ出力する。MIXb324bは、1ユニット命令なので、2ユニット目のデータ321bと21ビットの意味のないデータを連結して命令バッファ223へ出力する。MIXc324cは、
3つ目のユニットが1ユニット命令であるので、3ユニット目のデータ321cと21ビットの意味のないデータを連結して命令バッファ223へ出力する。
【0057】
これによって、0x1008番地の命令フェッチにより命令バッファへは、図6(a3)及び図6(b3)及び図6(c3)の様に6ユニットの命令が命令バッファ223に出力される。
【0058】
同様の処理によって、0x100c番地の命令フェッチにより命令バッファへは、図6(a4)及び図6(b4)及び図6(c4)の様に6ユニットの命令が命令バッファ223に出力される。
【0059】
命令解読部230では、固定長命令変換器222によって固定長命令に変換された命令を命令バッファ223や命令レジスタ224を経由して2命令ずつ解読を行う。
【0060】
(プログラム生成装置の構成)
図14は本発明の第1の実施の形態におけるプログラム生成装置のブロック図である。
【0061】
1410は命令の位置情報を付加する前のソースプログラム格納手段、1420は3ユニット毎のグループに分ける命令抽出手段、1430は命令がグループを跨いでいるかどうかを判別する先頭位置情報生成手段、1440はグループ化された命令列と先頭位置情報を合成する命令列生成手段、1450は生成した命令列を格納する命令列格納手段である。
【0062】
以上の様に構成された本発明の第1の実施の形態のプログラム生成装置について、以下、その動作を説明する。
【0063】
ソースプログラム格納手段1410には、1ユニットあるいは、2ユニットで
構成されるソースプログラムが格納されている。命令抽出手段1420は、ソースプログラムをソースプログラム格納手段1410から取得し、それぞれ3ユニットで構成されるグループに分割する。先頭位置情報生成手段1430は、命令抽出手段1420が出力するグループに分割された命令を取得し、グループの先頭が命令の先頭と一致しているかどうかを判断し、一致している場合には1を、一致していないときには0の値を出力する。命令列生成手段1440は命令抽出手段1420の出力と先頭位置情報生成手段1430の出力を合成して位置情報を付加した命令列を出力する。
【0064】
(プログラム生成装置の動作)
次に具体的な命令を解読実行した場合の本命令列生成装置の動作について説明する。
【0065】
図5(a)および(b)は本発明の第1の実施の形態におけるプログラム生成装置の入力プログラムと出力されるプログラムの例である。
【0066】
ソースプログラム格納手段1410には、同図(a)に示す、1ユニットで構成されたadd r0,r1命令、2ユニットで構成されたadd 0x1234,r2命令、add 0x12345,r3命令、sub 0x3456,r4命令、1ユニットで構成されたnop命令、cmp r1,r2命令、sub
r3,r4命令と、sub r5,r6命令、sub r6,r7命令が格納されている。
【0067】
命令抽出手段1420は、ソースプログラム格納手段1410に格納されたソースプログラムから図5(b1)の様に3ユニットの命令add r0,r1命令と2ユニットで構成されたadd 0x1234,r2命令を抽出し、先頭位置情報生成手段1430及び命令列生成手段1440に出力する。
【0068】
先頭位置情報生成手段1430では、命令抽出手段1420から3ユニットの
命令を受け取ると、その先頭のユニットが命令の先頭であるかどうかを判断する。add r0,r1命令は命令の先頭であるので1を出力する。
【0069】
命令列生成手段1440は、命令抽出手段1420が出力する3ユニットの命令及び先頭位置情報生成手段1430が出力する1ビットの値1を合成して、64ビットの命令列を出力する。
【0070】
次に、同様にして、命令抽出手段1420は、図5(b2)の様にadd 0x2345,r3命令と、sub 0x3456,r4命令の前半の3ユニットを出力し、先頭のユニットはadd 0x2345,r3命令命令の先頭であるので、先頭位置情報生成手段1430は1を出力する。
【0071】
次に、同様にして、命令抽出手段1420は、図5(b3)の様にsub 0x3456,r4命令の後半と、1ユニットで構成されたnop命令の3ユニットを出力し、先頭のユニットはsub 0x3456,r4命令の後半であるので、先頭位置情報生成手段1430は0を出力する。
【0072】
以上の処理を繰り返すことによって、命令列生成手段1440は命令位置情報を付加した命令列を出力する。
【0073】
図5(c)は、図5(b)の命令列に命令位置情報を付加した命令列である。
【0074】
(第2の実施の形態)
(命令フォーマット)
図8は、本発明の第2の実施の形態におけるプロセッサの命令フォーマットである。
【0075】
本プロセッサは、2つの命令セットを有している。
【0076】
同図(a)は21ビット固定長命令で構成される第1の命令セットであり、同図(b)は63ビット固定長命令で構成される第2の命令セットである。
【0077】
2つの命令セットは、64ビットの命令フェッチ毎単位内に存在する命令セット選択情報で選択される。
【0078】
同図(c)は、1ビットの命令セット選択情報FMが0の場合の、3個の第1の命令セットで構成される3命令列であり、同図(d)は、1ビットの命令セット選択ビットFMが1の場合の、1個の第2の命令セットで構成される命令列である。
【0079】
図9は、本発明の第2の実施の形態におけるプロセッサの構成図である。
【0080】
910は命令列を格納しているメモリシステム、920は命令フェッチした命令を命令レジスタに格納する命令供給発行部、921は命令フェッチを制御する命令フェッチ制御部、924は解読する命令を格納する命令レジスタ、930は命令解読全般を行う命令解読部、931は命令解読を制御する命令発行制御部、932は命令を解読する命令解読器、933aは21ビットの命令3つで構成される命令列を解読する第1命令解読器、933bは63ビットの命令1つで構成される命令列を解読する第2命令解読器、935はいずれかの命令解読器の解読結果を選択するMUX、936は命令セットを決定する命令セット選択器、940は解読結果に従って命令を実行する命令実行部、941は命令実行を制御する命令実行制御部、942は分岐関係を担当するPC制御部、943は演算器、945はレジスタを格納するレジスタファイルである。
【0081】
以上の様に構成された本発明の第2の実施の形態のプロセッサについて、以下、その動作を説明する。
【0082】
メモリシステム910から供給される命令列は、命令供給発行部920に入力される。命令供給発行部内では、命令解読部930からの要求に従って64ビットずつ命令レジスタ924に供給される。命令レジスタ924に格納された命令列は、命令解読部930へ供給される。命令解読部930では、64ビットの命
令を2種類の命令列として、第1命令解読器933aと第2命令解読器933bによって解読を行う。命令セット選択器936は2つの解読結果のうちどちらかを決定し、その情報によりMUX935は2つの解読結果のうちの1つを選択する。命令実行部940では、演算器943により演算が行われる。
【0083】
(命令解読器の詳細な構成)
以下に命令解読器の詳細を述べる。
【0084】
命令供給発行部920から供給された64ビットの命令列は、第1命令解読器933a及び第2命令解読器933bによって解読される。
【0085】
第1命令解読器933aでは、64ビットの命令列の内の最初の21ビットを解読しマイクロ命令934aを出力する。
【0086】
第2命令解読器933bでは、64ビットの命令列の内の63ビットを解読しマイクロ命令934bを出力する。
【0087】
命令セット選択器936では、64ビットの命令列の内の1ビットの命令セット選択情報を用いて命令セットの選択を行う。命令セット選択情報が0の時には、現在命令レジスタ924に格納されている命令は第1の命令セットの命令3つで構成されていることを、命令セット選択情報が1の時には、現在命令レジスタ924に格納されている命令は第2の命令セットの命令1つで構成されていることを示す。MUX935は、命令セット選択器936が選択した命令セット情報を用いて、第1命令解読器933aの出力するマイクロ命令934aあるいは、第2命令解読器933bの出力するマイクロ命令934bのどちらかを選択する。これによって命令解読器932は、命令レジスタ924に格納された命令列を正しい命令として解読し、命令実行部940へ演算命令を発行する。
【0088】
また、命令セット選択器936が第1の命令セットを選択した場合、第1命令
解読器933aは続けて命令レジスタ924に格納されている、残りの2つの第1の命令セットの命令の解読を行ない、命令実行部へマイクロ命令934aを出力する。
【0089】
(プロセッサの動作)
次に具体的な命令を解読実行した場合の本プロセッサの動作について説明する。
【0090】
図10(c1)および(c2)は本発明の第2の実施の形態におけるプログラムの例である。
【0091】
0x1000番地から第1の命令セットの命令である、add1 r0,r0命令、sub1 r2,r1命令、cmp1 r4,r1命令が続き、0x1004番地から第2の命令セットの命令である、add2 r5,r6命令、sub2 r7,r6命令、cmp2 r9,r6命令、jmp2 0x2000命令が続き、離れて0x2000番地からは第1の命令セットの命令である、mul1 r0,r1命令、div1 r2,r3命令、sub1 r1,r2命令が続くとする。この命令列中で、0x1000、及び0x2000番地の命令フェッチは第1の命令セットの命令が格納されているので命令セット選択情報は0に、それ以外は第2の命令セットの命令が格納されているので1になる(本来バイナリの機械語命令だが、ここではニモニックで表記している。また、add1命令とsub2命令の機械語が同じであるという様に、命令セットが異なると同一の機械語に異なる命令が割り当てられる事もあるし、add1命令とadd2命令が同じ機械語であるという様に、命令セットが異なっても同一の命令は同一の機械語に割り当てられることもある。)。
【0092】
0x1000番地への分岐命令を検出すると、命令実行制御部941はPC制御部942に分岐の指令を出力する。PC制御部942は命令フェッチ制御部921へ分岐命令を出力し、IAバス911へ分岐アドレスを出力する。メモリシ
ステム910はIAバス911に対応した0x1000番地から始まる命令列64ビットをIDバス912へ出力し、命令供給発行部920内の命令レジスタ924が受け取る。
【0093】
命令解読器932内の第1命令解読器933aは、命令レジスタ924の先頭21ビット925aを参照してadd1 r0,r0命令を解読、第2命令解読器933bは、命令レジスタ924の先頭63ビット925a、925b、925cを参照して解読を行い、それぞれマイクロ命令934a及びマイクロ命令934bを出力する。同時に、命令セット選択器936は命令レジスタ924を参照し、命令セット選択情報が0である事から命令セットが第1の命令セットであることを決定する。MUX935は、第1命令解読器933aの出力するマイクロ命令934aを選択するので、命令実行部940ではadd1 r0,r0命令が実行される。
【0094】
続いて、第1の命令セットを選択しているので、第1命令解読器933aは続けて命令レジスタ924に格納されている、残りの2つの第1の命令セットの命令の解読を行ない、命令実行部940へマイクロ命令934aを出力する。これによって、sub1 r2,r1命令、cmp1 r4,r1命令が実行される。
【0095】
次に、0x1004番地の命令を実行する。命令レジスタ924に格納される0x1004番地の命令フェッチデータの命令セット選択情報は1であるので、第2の命令セットとして、add2 r5,r6命令が解読され、命令実行部940で実行される。
【0096】
同様にして、0x1008番地は、第2の命令セットであるsub2 r7,r6命令が、0x100c番地は第2の命令セットであるcmp2 r9,r6命令が、0x1010番地は第2の命令セットであるjmp2 0x2000命令が、分岐先の0x2000番地は、第1の命令セットであるmul1 r0,
r1命令、div1 r2,r3命令、sub1 r1,r2命令が実行される。
【0097】
(プログラム生成装置の構成)
図15は本発明の第2の実施の形態におけるプログラム生成装置のブロック図である。
【0098】
1610は命令の位置情報を付加する前のソースプログラム格納手段、1620は3ユニット毎のグループに分ける命令抽出手段、1630は命令がどちらの命令セットに属しているかの情報を生成する命令セット選択情報生成手段、1640はグループ化された命令列と命令セット選択情報を合成する命令列生成手段、1650は生成した命令列を格納する命令列格納手段である。
【0099】
以上の様に構成された本発明の第2の実施の形態のプログラム生成装置について、以下、その動作を説明する。
【0100】
ソースプログラム格納手段1610には、1ユニットで構成される第1の命令セットに属する命令、及び、3ユニットで構成される第2の命令セットに属する命令のソースプログラムが格納されている。命令抽出手段1620は、ソースプログラムをソースプログラム格納手段1610から取得し、それぞれ3ユニットで構成されるグループに分割する。命令セット選択情報生成手段1630は、命令抽出手段1620が出力するグループに分割された命令を取得し、グループ内の命令がどちらの命令セットに属しているかを判断し、第1の命令セットに属している時には0を、第2の命令セットに属しているときには1の値を出力する。命令列生成手段1640は命令抽出手段1620の出力と命令セット選択情報生成手段1630の出力を合成して命令セット選択情報を付加した命令列を出力する。
【0101】
(プログラム生成装置の動作)
次に具体的な命令を解読実行した場合の本命令列生成装置の動作について説明する。
【0102】
図10(a)および(b)は本発明の第2の実施の形態におけるプログラム生成装置の入力プログラムと出力されるプログラムの例である。
【0103】
ソースプログラム格納手段1610には、同図(a)に示す、第1の命令セットの命令である、add1 r0,r0命令、sub1 r2,r1命令、cmp1 r4,r1命令が続いて、第2の命令セットの命令である、add2 r5,r6命令、sub2 r7,r6命令、cmp2 r9,r6命令、jmp2 0x2000命令が続くとする。
【0104】
命令抽出手段1620は、ソースプログラム格納手段1610に格納されたソースプログラムから図10(b1)の様に3ユニット分の命令である、第1の命令セットの命令である、add1 r0,r0命令、sub1 r2,r1命令、cmp1 r4,r1命令を抽出し、命令セット選択情報生成手段1630及び命令列生成手段1640に出力する。
【0105】
命令セット選択情報生成手段1630では、命令抽出手段1620から3ユニットの命令を受け取ると、命令列がどちらの命令セットに属するかを判断する。これら3ユニットの命令は第1の命令セットであるので0を出力する。
【0106】
命令列生成手段1640は、命令抽出手段1620が出力する3ユニットの命令及び命令セット選択情報生成手段1630が出力する1ビットの値0を合成して、64ビットの命令列を出力する。
【0107】
次に、同様にして、命令抽出手段1620は、図10(b2)の様に第2の命令セットの命令である、add2 r5,r6命令の3ユニットを出力し、該当ユニットは第2の命令セットに属する命令であるので、命令セット選択情報生成
手段1630は1を出力する。
【0108】
以上の処理を繰り返すことによって、命令列生成手段1640は命令セット選択情報を付加した命令列を出力する。
【0109】
図10(c1)は、図10(b)の命令列に命令セット選択情報を付加した命令列である。
【0110】
(従来の命令セット選択方式の課題)
この様に従来の命令セット選択方式では、プログラムカウンタ1830に実装されたTビットによって命令セットの選択を行うが、1バイト単位の命令を持つプロセッサではこの方式は使用できないという問題がある。また、命令セットの選択は実行時のプログラムカウンタ1830の値によってのみ決まり、実際に動作させないと命令セットは決定できないため、例えば0x1000番地の命令列を見た時にそれがどちらの命令セットなのかを判断することができず、機械語レベルでのデバッグに困難があったり、例えば0x1001に分岐命令を記述するなど、プログラマの間違いで第1の命令セットで記述されたプログラムに、最下位ビットが1の分岐アドレスで分岐した場合に動作の保証ができないという問題がある。
【0111】
また、公開特許公報特開平8−44557号に従来例として記載されているVAX11コンピューターの様に、プロセッサステータスレジスタに実装した命令セット切り替えレジスタへの書込によって命令セットを選択する方式では、プロセッサステータスレジスタに書き込む命令が必要となるので、プログラムが余分に必要とされ、プログラム領域が肥大したり、書込処理によりプロセッサの性能が低下してしまうという問題がある。また通常のレジスタ書込は、例えばライトバックステージの様な、命令の解読よりも後のパイプラインステージで行われるために、プロセッサステータスレジスタへの書き込み命令の解読と、プロセッサステータスレジスタへの実際の書き込みの間に時間差が発生してしまうため、命
令セットの切替えが高速に行えないという問題もある。
【0112】
(第3の実施の形態)
(命令フォーマット)
図11は、本発明の第3の実施の形態におけるプロセッサの命令フォーマットである。
【0113】
本プロセッサは、同図(a)に示すように、21ビットを単位とした固定長命令形式となっている。64ビットの命令フェッチ単位は、21ビットの3つの命令と1ビットの命令キャッシュ制御情報で構成される。命令キャッシュ制御情報が0の時は、その命令フェッチ単位に含まれる命令をキャッシュに登録しない事を、1の時は、その命令フェッチ単位に含まれる命令をキャッシュに登録する制御を示す。同図(b)は、命令キャッシュ制御情報が0の場合で、命令フェッチ単位に含まれる3つの命令は命令キャッシュに登録しない事を示す。同図(c)は、命令キャッシュ制御情報が1の場合で、命令フェッチ単位に含まれる3つの命令は命令キャッシュに登録する事を示す。
【0114】
(プロセッサのハードウェア構成)
図12は本発明の第3の実施の形態におけるプロセッサのブロック図である。
【0115】
1210は命令列を格納しているメモリシステム、1250は命令列に対するキャッシュを制御する命令キャッシュ装置、1252は命令列を命令キャッシュ装置1250に登録するかどうかを判断する命令キャッシュ制御解読器、1253は命令キャッシュ、1220はメモリシステム1210或いは命令キャッシュ装置1250から命令を得る命令供給発行部、1221は命令フェッチを制御する命令フェッチ制御部、1224は解読する命令を格納する命令レジスタ、1230は命令解読全般を行う命令解読部、1231は命令解読を制御する命令発行制御部、1232は命令を解読する命令解読器、1240は解読結果に従って命令を実行する命令実行部、1241は命令実行を制御する命令実行制御部、12
42は分岐関係を担当するPC制御部、1243は演算器、1245はレジスタを格納するレジスタファイルである。
【0116】
以上の様に構成された本発明の第3の実施の形態のプロセッサについて、以下、その動作を説明する。
【0117】
命令フェッチ制御部1221から命令フェッチアドレスが発行されると、命令キャッシュ装置1250は該当する命令が命令キャッシュ1253に格納されているかを確認し、命令キャッシュ1253に格納されていない場合には、メモリシステム1210へIAバス1211を通じて命令フェッチアドレスを出力する。
【0118】
メモリシステム1210はIDバス1212を通じて命令列を命令キャッシュ装置1250へ供給する。
【0119】
命令キャッシュ装置1250では、命令キャッシュ制御解読器1252は命令列の内の命令キャッシュ制御情報を解読し、命令キャッシュ制御情報が1の時には命令キャッシュ1253への登録を行い、命令キャッシュ情報が0の時には命令キャッシュ1253への登録を行わない。
【0120】
命令キャッシュ装置1250はメモリシステム1210或いは命令キャッシュ1253のいずれかに格納された命令列をCDバス1255を介して命令供給発行部1220に供給する。
【0121】
命令供給発行部1220では、命令解読部1230からの要求に従って64ビットずつ命令レジスタ1224に命令列を供給する。命令レジスタ1224に格納された命令列は、命令解読部1230へ供給される。命令解読部1230では、64ビットの命令を3つの21ビット命令として、命令解読器1232によって解読を行う。
【0122】
命令実行部1240では、演算器1243により演算が行われる。
【0123】
(プロセッサの動作)
次に具体的な命令を解読実行した場合の本プロセッサの動作について説明する。
【0124】
図13は本発明の第3の実施の形態におけるプログラムの例である。
【0125】
このプログラムは、割り込み処理プログラムの様な通常プログラムの流れとは異なり、本プログラムに分岐して来た時、命令キャッシュには本プログラムは格納されていない状況を想定している。
【0126】
本プログラム例では、0x1000番地からclr r1命令、 mov imm,r4命令、mov r5,r0命令、mov (r0),r3命令、mul r3,r4命令、add r4,r1命令、sub imm,r0命令、cmp r1,r0命令、bne 0x1004命令、rti命令が配置されており、この命令列中、0x1004番地及び0x1008番地に格納されている6つの命令は内部で繰り返して実行されるのに対して、ほかの命令は1度しか実行されない。この為、0x1004番地及び0x1008番地に格納されている命令は命令キャッシュに登録した方が効率が高いので命令キャッシュ制御情報は1に、それ以外の命令キャッシュ情報は0に設定されている。
【0127】
割り込み等の要因により、0x1000番地への分岐命令を検出すると、命令実行制御部1241はPC制御部1242に分岐の指令を出力する。PC制御部1242は命令フェッチ制御部1221へ分岐命令を出力し、CAバス1254へ分岐アドレスを出力する。
【0128】
命令キャッシュ1253にはこれらのプログラムは格納されていないので、命令キャッシュ装置1250はIAバス1211を通じてメモリシステム1210から命令列を要求する。メモリシステム1210は命令列をIDバス1212を
通じて命令キャッシュ装置1250へ供給する。
【0129】
命令キャッシュ装置1250は、命令列をCDバス1255を介して命令供給発行部1220内の命令レジスタ1224へ供給する。また、キャッシュ制御解読器1252は命令列の内の命令キャッシュ制御情報を解読し、命令キャッシュ制御情報が0であることから、命令キャッシュ1253への登録を行わない。
【0130】
命令解読器1232は、命令レジスタ1224の命令を21ビットずつ、clr r1命令、 mov imm,r4命令、mov r5,r0命令として解読し、命令実行部1240は演算を行う。
【0131】
同様にして、0x1004番地及び0x1008番地の6つの命令の実行を行う。これらの命令列は命令キャッシュ制御情報が1に設定されているので、メモリシステム1210から命令フェッチすると同時に、命令キャッシュ装置1250では命令キャッシュ1253への登録が行われる。これによってmov (r0),r3命令、mul r3,r4命令、add r4,r1命令、sub imm,r0命令、cmp r1,r0命令、bne 0x1004命令が解読、実行されると同時に、命令キャッシュ1253への登録が行われる。
【0132】
次に、再度0x1004番地及び0x1008番地の6つの命令を実行する場合、これらの命令列は命令キャッシュ1253に既に格納されているので、メモリシステム1210にアクセスすることなく、高速に実行される。
【0133】
最後に、0x100c番地のrti命令を実行する場合には、0x1000番地の命令を実行する場合と同じく、メモリシステム1210から命令列を獲得して実行するが、命令キャッシュ1253への登録は行わない。
【0134】
(従来のキャッシュ制御方式の課題)
公開特許公報特開平8−44557号に従来例として記載されているVAX1
1コンピューターの様に、プロセッサステータスレジスタに実装したキャッシュ制御レジスタへの書込によってキャッシュの登録や参照などの動作を制御する方式では、プロセッサステータスレジスタに書き込む命令が必要となるので、プログラムが余分に必要とされ、プログラム領域が肥大したり、書込処理によりプロセッサの性能が低下してしまうという問題がある。また通常のレジスタ書込は、例えばライトバックステージの様な、解読ステージよりも後のパイプラインステージで行われるために、プロセッサステータスレジスタへの書き込み命令の解読と、プロセッサステータスレジスタへの実際の書き込みの間に時間差が発生してしまうため、キャッシュの制御が高速に行えないという問題もある。
【0135】
以上で添付図面を参照して本発明の図示した実施の形態について説明したが、本発明はこれら実施の形態のみに限定されるものではなく、当業者であれば特許請求の範囲に記載した発明の要旨から逸脱することなく、種々の変形及び変更が可能であると理解すべきである。
【0136】
第1の実施の形態に関して、本実施の形態では命令フェッチ幅や命令長を規定したがそれらを特に限定するものではない。
【0137】
また、命令位置情報を、格納する単位を命令フェッチ幅としたが、この単位は、一定間隔、あるいは分岐先の命令毎であれば特に限定しない、例えば、命令フェッチ幅や、命令フェッチ幅の整数倍や、命令フェッチ幅の整数分の1であっても構わない。
【0138】
また、命令位置情報は、前記単位に必ず存在する必要は無く、例えば、分岐先を含む単位のみに存在していたり、分岐先を含む単位の次の単位のみに存在していたり、分岐命令を含む単位や、メモリアクセス命令を含む単位にのみ存在していたりしても構わない。
【0139】
また、命令の位置情報を、単位の中で最低位の番地に位置する命令の位置情報
としたが、この位置情報は、単位の中で最低位の番地の命令が命令のどの部分であるかという情報でも構わないし、また、単位内に含まれる全ての命令の位置情報であっても構わない。
【0140】
また、命令の位置情報を、可変語長命令から固定長への変換に用いたが、この情報を何に利用するかは特に限定しない。例えば、解読時の処理の負荷分散を目的とした前解読処理であっても構わないし、分岐命令の分岐先を予測する分岐予測や、先行投機実行の為に使用しても構わない。
【0141】
また、ソースプログラム格納手段が扱うデータは、ニモニックであっても機械語であっても構わないし、C言語の様な高級言語であっても構わない。
【0142】
また、命令抽出手段は、3ユニット毎の固定長を抽出したが、固定長の長さは何でも構わないし、また、分岐先の命令語の間隔に対応した長さの命令を抽出する機能であっても構わない。
【0143】
また、命令列格納手段は、具体的に何であるかは限定しない。例えば、フロッピー(登録商標)ディスクやハードディスクや、光ディスクなどの媒体であっても構わない。
【0144】
第2の実施の形態に関して、本実施の形態では命令フェッチ幅や命令長を規定したがそれらを特に限定するものではない。
【0145】
また、命令セット選択情報を、格納する単位を命令フェッチ幅としたが、この単位は、一定間隔あるいは分岐先の命令毎であれば特に限定しない、例えば、命令フェッチ幅や、命令フェッチ幅の整数倍や、命令フェッチ幅の整数分の1であっても構わない。
【0146】
また、命令セット選択情報は、前記単位に必ず存在する必要は無く、例えば、分岐先を含む単位のみに存在していたり、分岐先を含む単位の次の単位のみに存
在していたり、分岐命令を含む単位や、メモリアクセス命令を含む単位にのみ存在していたりしても構わない。
【0147】
また、命令セット選択情報を、解読器の出力するマイクロ命令の無効化に用いたが、この情報を何に利用するかは特に限定しない。例えば、解読器に入力する命令列の無効化処理に使っても構わないし、解読器の動作状態の制御に使用しても構わない。
【0148】
また、命令セットを固定長命令としたが、それらを限定するものではない。例えば、全て可変長命令であっても構わないし、混在であっても構わない。また、可変長命令の場合には、命令の先頭あるいは末尾が格納されている単位の命令セット選択情報であっても構わない。
【0149】
また、ソースプログラム格納手段が扱うデータは、ニモニックであっても機械語であっても構わないし、C言語の様な高級言語であっても構わない。
【0150】
また、命令抽出手段は、3ユニット毎の固定長の命令列を抽出したが、固定長の長さは何でも構わないし、また、分岐先の命令語の間隔に対応した可変の長さの命令列を抽出する機能であっても構わない。
【0151】
また、命令列格納手段は、具体的に何であるかは限定しない。例えば、フロッピー(登録商標)ディスクやハードディスクや、光ディスクなどの媒体であっても構わない。
【0152】
第3の実施の形態に関して、本実施の形態では命令フェッチ幅や命令長を規定したがそれらを特に限定するものではない。
【0153】
また、キャッシュ制御情報を、格納する単位を命令フェッチ幅としたが、この単位は、一定間隔あるいは分岐先の命令毎であれば特に限定しない、例えば、命令フェッチ幅や、命令フェッチ幅の整数倍や、命令フェッチ幅の整数分の1であ
っても構わない。
【0154】
また、キャッシュ制御情報は、前記単位に必ず存在する必要は無く、例えば、分岐先を含む単位のみに存在していたり、分岐先を含む単位の次の単位のみに存在していたり、分岐命令を含む単位や、メモリアクセス命令を含む単位にのみ存在していたりしても構わない。
【0155】
また、キャッシュ制御情報を、命令列の命令キャッシュへの登録制御に用いたが、命令キャッシュへのアクセス制御であっても構わないし、データキャッシュへの登録制御やアクセス制御であっても構わない。
【0156】
また、命令セットを固定長命令としたが、それらを限定するものではない。例えば、全て可変長命令であっても構わないし、混在であっても構わない。また、可変長命令の場合には、命令の先頭あるいは末尾が格納されている単位の命令セット選択情報であっても構わない。
【0157】
また、制御情報は、キャッシュ制御情報に限定しない。具体的には、先行命令フェッチ制御であったり、割り込み制御であったり、MMUに対する制御情報であったりしても構わない。先行命令フェッチの場合には、先行命令フェッチの一時禁止情報であったり、命令フェッチした命令列を一時的に格納する命令バッファの格納バイト数をソフトウェア的に制御するものであったり、先行命令フェッチのフェッチバス幅であったりしても構わない。割り込み制御情報の場合には、割り込み禁止情報であったり、割り込み禁止レベル情報であったりしても構わない。また、単一の制御情報ではなく、複数の制御情報を混在させても構わない。混在するときには、同一単位内に混在させても構わないし、単位毎に異なる制御情報を組み込む形式にしても構わない。
【0158】
また、制御情報は、現在の単位に対する制御情報であっても構わないし、次の単位に対する制御情報であっても構わない。
【図面の簡単な説明】
【0159】
【図1】本発明の第1の実施の形態におけるプロセッサの命令フォーマットおよび、命令フェッチ時の命令列の並びを示す図
【図2】本発明の第1の実施の形態におけるプロセッサのブロック構成図
【図3】本発明の第1の実施の形態における命令供給発行部のブロック構成図
【図4】本発明の第1の実施の形態における固定長命令変換器の出力フォーマットを示す図
【図5】本発明の第1の実施の形態におけるプログラムを示す図
【図6】本発明の第1の実施の形態におけるプログラムを変換した固定長命令を示す図
【図7】本発明の第1の実施の形態における命令列変換器の動作の説明図
【図8】本発明の第2の実施の形態におけるプロセッサの命令フォーマットおよび、命令フェッチ時の命令列の並びを示す図
【図9】本発明の第2の実施の形態におけるプロセッサのブロック構成図
【図10】本発明の第2の実施の形態におけるプログラムを示す図
【図11】本発明の第3の実施の形態におけるプロセッサの命令フォーマットおよび、命令フェッチ時の命令列の並びを示す図
【図12】本発明の第3の実施の形態におけるプロセッサのブロック構成図
【図13】本発明の第3の実施の形態におけるプログラムを示す図
【図14】本発明の第1の実施の形態におけるプログラム生成装置のブロック構成図
【図15】本発明の第2の実施の形態におけるプログラム生成装置のブロック構成図
【図16】従来のプロセッサの命令フォーマットおよび、命令フェッチ時の命令列の並びを示す図
【図17】従来のプロセッサのブロック構成図
【図18】従来のプロセッサにおける命令供給発行部のブロック構成図
【図19】従来におけるプログラムを示す図
【符号の説明】
【0160】
101 命令フォーマット情報
102 命令の先頭情報
210 メモリシステム
220 命令供給発行部
221 命令フェッチ制御部
222 固定長命令変換器
223 命令バッファ
224 命令レジスタ
230 命令解読部
231 命令発行制御部
232 命令解読器
233 第1命令解読器
234 第2命令解読器
240 命令実行部
241 命令実行制御部
242 PC制御部
243 第1演算器
244 第2演算器
245 レジスタファイル
910 命令列を格納しているメモリシステム
920 命令フェッチした命令を命令レジスタに格納する命令供給発行部
921 命令フェッチを制御する命令フェッチ制御部
924 解読する命令を格納する命令レジスタ
930 命令解読全般を行う命令解読部
931 命令解読を制御する命令発行制御部
932 命令を解読する命令解読器
933a 21ビットの命令3つで構成される命令列を解読する第1命令解読器
933b 63ビットの命令1つで構成される命令列を解読する第2命令解読器
935 いずれかの命令解読器の解読結果を選択するMUX
936 命令セットを決定する命令セット選択器
940 解読結果にしたがって命令を実行する命令実行部
941 命令実行を制御する命令実行制御部
942 分岐関係を担当するPC制御部
943 演算器
945 レジスタを格納するレジスタファイル
1210 命令列を格納しているメモリシステム
1220 メモリシステム1210或いは命令キャッシュ装置1250から命令を得る命令供給発行部
1221 命令フェッチを制御する命令フェッチ制御部
1224 解読する命令を格納する命令レジスタ
1230 命令解読全般を行う命令解読部
1231 命令解読を制御する命令発行制御部
1232 命令を解読する命令解読器
1240 解読結果にしたがって命令を実行する命令実行部
1241 命令実行を制御する命令実行制御部
1242 分岐関係を担当するPC制御部
1243 演算器
1245 レジスタを格納するレジスタファイル
1250 命令列に対するキャッシュを制御する命令キャッシュ装置
1252 命令列を命令キャッシュ装置1250に登録するかどうかを判断するキャッシュ制御解読器
1253 命令キャッシュ




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013