JPH09505427A - ワード・アラインされた分岐目標を有する処理システム - Google Patents

ワード・アラインされた分岐目標を有する処理システム

Info

Publication number
JPH09505427A
JPH09505427A JP8510021A JP51002195A JPH09505427A JP H09505427 A JPH09505427 A JP H09505427A JP 8510021 A JP8510021 A JP 8510021A JP 51002195 A JP51002195 A JP 51002195A JP H09505427 A JPH09505427 A JP H09505427A
Authority
JP
Japan
Prior art keywords
instruction
word
processing system
address
aligned
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.)
Pending
Application number
JP8510021A
Other languages
English (en)
Inventor
オリ ミズラヒ−シャロム
クン−リン コ
Original Assignee
フィリップス エレクトロニクス ネムローゼ フェンノートシャップ
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 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ filed Critical フィリップス エレクトロニクス ネムローゼ フェンノートシャップ
Publication of JPH09505427A publication Critical patent/JPH09505427A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 本発明は、ワード・アラインされた(word-aligned)命令をバイトの倍数単位(multibyte)で取出す(fetch)が、バイト・アラインされた(byte-aligned)命令も使用可能なマイクロコントローラまたはプロセッサのアーキテクチャに関連する。飛び越し(jump)命令の目標番地(target address)はワード・アラインされるので、飛び越し命令はワード・アラインで取り出される。アセンブラまたはコンパイラは、ワード境界上にアラインされた分岐(branch)命令の目標番地を用いて、符号(code)を命令記憶の中にロードする。割込みからの復帰においては、プログラム・カウンターに、バイト・アラインされた完全な復帰番地をロードする。

Description

【発明の詳細な説明】 ワード・アラインされた分岐目標を有する処理システム 本発明は1個のプロセッサを有する処理システムに関連する。 各種プロセッサの命令セットは、各データ項目または命令の第1バイトに対し て差支えない範囲で各種の番地を定義している。通常のプロセッサは2種類に大 別できる。すなわち: 1)完全アライン型(fully-aligned).この場合には、番地は通常、バイト、ワー ド(2バイト)、ダブルワード(4バイト)など、特定の境界上にのみ存在する 。この種のプロセッサで用いられる命令セットは、位置合わせサイズ(alignment size)の倍数の(二進数の)命令サイズを有する。 2)非アライン型(non-aligned).この場合には、番地のサイズはアラインに制約 されない。すなわち、如何なる(許容できる)番地細分(granularity)からも出 発できる。ただし、大抵の場合何らかのバイト番地から出発する。 プロセッサまたはマイクロコントローラの性能評価について興味ある要素の1 つは、記憶システム(キャッシュ、読み書き、読取り専用を含む)からの符号読 取り方法である。現在のプロセッサやマイクロコントローラでは、内部の実行が 高速化し、その結果命令に要求される帯域(bandwidth)が増加しているため、メ モリーへのアクセスは通常倍数バイト(multi-byte)のバス(データ・パス)を経 由して行なわれる。アクセスを高速化し、しかも不要なゲート遅延を回避する最 も簡単な方法は、符号または命令読取りの度ごと、固定アライン(fixed alignme nt)で記憶へのアクセスを行なうことである。こうすれば、複雑なフェッチ後位 置合わせ機構(post fetch alignment scheme)は、ほとんど(またはすべて)の システム階層レベルで回避できる。この方式は、高性能または倍数バイト指向(m ulti-byte oriented)のプロセッサを実現するのに一般に受容されている。特に 上記完全アライン型アーキテクチャではうまく機能する。 現在のマイクロコントローラで興味あるもう一つの要素は、符号密度(code de nsity)である。各命令には相当な量の情報が含まれるので、必要な情報を格納す るにはかなりのサイズが必要になる。特定の技術またはアーキテクチャに対応し て、各命令を最適符号化するには多くの方法がある。一般に、極めて簡単なルー ルが用いられる。すなわち、最も頻繁に用いる命令は極力短くし、その帯域(動 的な符号サイズ)と符号記憶サイズ(静的符号サイズ)の要求をカットするので ある。このような符号化の効果は周囲条件により異なるが、コスト主導型設計の ためにはこのルールは極めて有効で、プログラム符号密度は明らかに高まる。し かし、このルールに従うと、可変サイズ命令をしかも非アライン型番地で使わざ るを得ないことになろう。 しかし、非アライン型を用いたプロセッサでは、非アライン型番地への分岐命 令に従って符号を取り出す場合、(目標命令の長さがアラインされた記憶アクセ ス境界を超えると)常に余分な記憶サイクルが必要になる。これは大きな欠陥で あり、このため実行が遅れプロセッサの性能が落ちる。その対策には幾つもある が、大部分は何らかのキャッシュ記憶を伴うため比較的高価になる。最も望まし い方式は、符号取出しと命令アラインの双方が簡単になることから、完全アライ ン型命令セットの採用である。 しかし、単にコスト主導設計を考えて完全アライン方式をとると、分岐での欠 陥は減るが、その結果の性能向上は符号サイズを犠牲にして得られることになる 。 必要とされる最適解は、非アライン型アーキテクチャで得られる符号記録密度 の上昇と、完全アライン型アーキテクチャで得られるフェッチ速度の向上と簡単 さ、の双方を満たすことである。本発明の大要 本発明の目的は、符号記録密度を高め、しかもスケジュールされた分岐命令で の取出しを速くすること(fast fetch)である。 本発明のもう一つの目的は、命令をバイト境界でアライン可能にすることであ る。 また本発明の目的は、分岐目標(branch target)など、フロー変化(flow chang e)における目標命令(target instruction)はワード境界にアラインすることにも ある。ここでワードのサイズは、特定の具体例での読取りにおける記憶の位置合 わせとサイズ(the alignment and a size of memory)によって定義される。 更に、本発明の目的は、単一または倍数バイトで命令や符号の取出しを行なう プロセッサを実現することである。 更に追加して、本発明の目的は、プログラム・カウンタに対する分岐目標の範 囲(branch target range)を、与えられたオフセット・サイズに対する分岐命令 に比較して、大きくすることにある。 上記各目的は、以下の各項を含む処理システムにより達成できる: − 1個の記憶; − 1個のプロセッサで以下を含むもの − 記憶から命令情報を、一度に1ワードずつ取り出すためのフェッチ手 段 − 命令情報から得られた命令を実行する手段。ここで少なくとも一部の 命令は、ワード長の倍数(multiples)の間の中間長を有する − 命令情報を記憶に配置する(place)ための命令配置手段。ここで、こ の配置手段は、各命令ごとにそれがフロー変化命令の目標かどうかを検出する。 またこの格納手段は、各特定命令がフロー変化の目標でない限り、それを記憶の 中の符号密度を最大化するような形で配置する。もしその特定命令がフロー変化 の目標だった場合、命令配置手段はその特定命令をワード境界に配置する。 本処理システムは、例えば1個のマイクロコントローラ・アーキテクチャと1 個のコンパイラを含む。本マイクロコントローラは、非アライン型の倍数バイト ・フェッチ(multibyte fetches)を行い、またワード・アラインされた分岐番地 へ飛越しを行う。従って:飛越し命令(jump-to instruction)はワード・アライ ン型のフィッチが可能である。更に本マイクロプロセッサは、ワード境界にアラ インされた分岐命令目標番地を用いて符号を命令記憶へロードする。 本発明に基づく処理システムの実施例には、上記プログラム・カウンタ・レジ スタと結合した命令番地修正ユニットを含み、このユニットは、フロー変化目標 への参照を含むフロー変化命令の制御の下で、プログラム・カウンタ・レジスタ の内容を変更する。ここで異なるワード相互は上記参照の最下位のビットで区別 される。従ってこの参照は1ワードの中の異なるバイト相互を区別するビットは 含まない。このため、与えられた長さの参照によって、より大きな分岐目標範囲 が得られる。 本発明の詳細な構成と動作を以下更に詳細に説明し主張するが、それに伴い、 上記以外の他の目的や利点が次第に明らかになる。その一環として付図を参照す るが、その中の類似の数字は類似の部分を示す。図面の簡単な説明 図1は、本発明に基づく1個のマイクロコントローラまたはプロセッサの要素 を示す; 図2と3は、記憶組織を示す; 図4と5はスタックを示す; 図6は倍数バイト・フェッチ(multi-byte fetch)におけるバイト・アラインを 示す; 図7はフェッチ動作中におけるプログラム・カウンタの修正を示す。好適な実施例の説明 本発明は、分岐、飛越し、手続き呼出し(procedure calls)などで起こるプロ グラム・フローのスケジュールされた変化において、ワード・サイズ符号のスル ープットを最大にするものである。これを実現するため、本発明に基づくプロセ ッサまたはマイクロコントローラ、命令セット、及びアセンブラーまたはコンパ イラは、すべてのフロー変化の入り口点(分岐目標など)をワード(2バイト) の境界にアラインし、バイトの倍数による符号フェッチを実行する。ここで倍数 としては2バイトすなわち1ワードが望ましいが限定の必要はない。ワードの倍 数フェッチも可能である。これにより分岐に入った場合の符号フェッチは迅速に なる。このアーキテクチャは、命令が何らかのバイトにアラインできるので符号 密度を最大にすることができ、またこのアーキテクチャでは命令をバイトの倍数 で取出し、またフェッチ・ユニット上でフェッチ後アライン(post fetch alignm ent)を実行する。命令サイズは1ないし7バイトの範囲で長さが変わり、倍数バ イト・フェッチ自体の位置合わせとサイズ(alignment and size)には制約されず 、また符号の高密度も実現する。命令はバイト境界で取出されるが、分岐目標は ワード境界でアラインされるので、本マイクロコントローラでは、同一の番地ビ ッ ト数を用いた場合でも、分岐における目標番地の範囲が広くなる。というのは、 目標番地はバイト相互を区別する最下位ビットを運ぶ必要がなく、代わりに最上 位ビットが追加できるからである。本マイクロコントローラではまた、プログラ ム・フローにおける計画外の変化、例えば例外や割り込みが如何なるバイト番地 で起こっても対応が可能である。これは割り込みや例外が起こった場合スタック に完全な復帰番地(return address)を格納しておくことによる。復帰命令(retur ninstruction)がスタックから上記完全な復帰番地をポップするので、これら予 定外割り込みや例外が生じた場合には、バイト単位の細分番地へのプログラム分 岐が可能である。もちろん、奇数番地への復帰は通常偶数番地への復帰よりも遅 い。 本発明によるマイクロコントローラ・システム10のアーキテクチャを図1に示 す。このシステム10には、単一チップのマイクロコントローラ12及びこれと分離 した内部の命令・データ記憶を含む。マイクロコントローラ12は外部装置14と16 に接続され、また20/24ビットの外部番地指定機能を介して、16メガバイトの外 部命令記憶装置18、及び16メガバイトの外部データ記憶装置20に接続されている 。マイクロコントローラ12はバス・インタフェイス・ユニット22を含み、このユ ニットは外部記憶18及び20との間で、16ビットの外部双方向番地・データ・バス 24を介して通信する。このバス上で、番地は2サイクルで転送され、20/24ビッ ト番地の一部分が外部ラッチ(図示せず)に保持(latch)される。マイクロコン トローラ12は、外部装置14及び16との間で、I/O ポート26-28 を介して通信する 。これらポートは特別機能レジスタ群(SFR)40として番地指定可能である。ポー ト26-28 は、他の特別機能レジスタ同様、バス・インタフェイス・ユニット22を 介して、内部周辺バス42の上で番地指定可能である。オンチップ特別機能レジス タ群40(その中あるものはビット番地指定可能)にはプログラム状態ワード(PSW )レジスタ44も含む。この44は割込み制御ユニット84と結合して内部・外部装置 と通信する。PSW レジスタ44は、フラグ及び一般状態制御の目的で、ALU 72、実 行ユニット70、及び復号ユニット(decode unit)74にも接続される。レジスタ群4 0には、割込みレジスタ44、タイマー・レジスタ50、及びシステム構成ビットを 収容するシステム構成レジスタ(SCR)54をも含む。プログラム状態語レジスタ44 は、レジスタ動作一般については周辺バス42の上で番地指定可能であり、また他 の実 行関連動作については内部バス86への接続(a connection)を介して番地指定可能 である。バス・インタフェイス・ユニット22により、周辺特別機能レジスタ40は マイクロコントローラのコア60と分離している。コア60はマイクロコードされた 実行ユニット70を含み、このユニットはALU 72及びその他のユニットを用いて命 令実行を制御する。復号ユニット74により解読される命令は、命令記憶空間の一 部である内部EPROM 76から取り出されるか、または外部命令記憶18からフェッチ ・ユニット78により取り出される。静的RAM 80は、レジスタ・ファイル82の汎用 レジスタと同様、データ記憶空間の一部で、命令とデータの格納にも利用される 。 マイクロコントローラ12は図2と3に示すような記憶組織を含む。ここで図2 は頁に分解した組織を、また図3は頁の内容を詳細に示す。既に述べたように、 マイクロコントローラ12の記憶空間には、分離して存在する命令記憶とデータ記 憶とが含まれる。プログラム記憶とデータ記憶が論理的に分離しているため、双 方の記憶に対する同時アクセスが可能である。このマイクロコントローラ12では 、それぞれ最大16メガバイトの分離したデータ記憶・プログラム記憶(24ビット 番地)が使用できる。図3に示すようにデータ記憶空間118 は64K バイトの頁12 0に区切られる。バイト・レジスタRO-R7 が4バンク(banks)存在し(図4参照) 、それらは、オンチップRAM(レジスタ・ファイル82の中の)の0番地から出発 し、16進法の番地1Fに至るデータ記憶にもマップされている。4バンクのうち1 個が、PSW レジスタ44の2ビットによって活動状態のバンクとして選択される。 この選択されたバンクは汎用レジスタとして使われる(appear)。 システム10の中の記憶は、バイト(8ビット)単位で番地指定される。1ワー ドは16ビットで、2連続バイトから成る。マイクロコントローラ12における記憶 順序は「リトル・エンディアン(“Little Endian”)」により、1ワードの低位 バイトが低位番地に記憶され、高位バイトが次に高い番地に記憶される。16ビッ トワードで番地指定可能なあらゆる記憶位置は、バイトでもワードでもアクセス できる。外部バス24は8または16ビットのモードで構成でき、チップのリセット 状態でその何れかが選択される。選択した動作モード次第で、すべての16ビット 外部アクセスは、厳密にワードによるか(16ビットモード)、または連続した記 憶位置からのバイトによるか(8ビットモード)で行なわれる。8ビットモード で 外部からワード・フェッチが行なわれる場合、分離したバイト・アクセスが2回 起こる。(データがオンチップなら1回のワード・アクセスと同じ結果が得られ る。) 前記のように、マイクロコントローラ12は、番地指定可能な16メガバイト空間 をプログラム記憶18として使用できる。命令セットには飛越し(jump)と呼出し(c all)を含み、その中にはローカルの符号空間で動作するもの、プログラム記憶の 全空間にアクセスできるもの、及びレジスタ間接(register indirect)で動作す るものがある。後に詳述するように、プログラム記憶目標番地のうち、マイクロ 符号プログラム制御の下で、飛越し、呼出し、分岐、トラップ、割込みの各命令 により参照されるものはワード・アラインされる。しかし、サブルーチンまたは 割込みハンドラーからの復帰番地は、奇数または偶数の何れのバイト境界にアラ インしてもよい。例えば、分岐命令は如何なる符号番地でも起こり得るが、分岐 先は偶数番地のみである。分岐番地の位置合わせ(alignment)には2つの利点が ある: 1)命令に余分の1ビットを加えなくとも、分岐の範囲が2倍になる; 2)分岐命令符号(branched-to code)は、もしワード・アラインされていれば実 行が速い。というのは、この命令の最初の2バイト(1ワード)が同時に取出さ れるからである。 マイクロコントローラ12では、スタックは図4と5に示すように高い番地から低 い番地へと下方へ成長する。このマイクロコントローラ12のアーキテクチャでは LIFO方式(後入れ先出し)のスタックが使われる。如何なる場合でも、スタック ・ポインタ(SP)はスタックにプッシュされた最後のワードを指している。新デ ータがプッシュされるときには、記憶に書込む前にスタック・ポインタの指数が 減少する。データがスタックからポップされるときには、データが記憶から読み 出された後でスタック・ポインタの指数が増加する。マイクロコントローラ12は データを格納するのに、最上位のビット(MSB)から行なうので、スタック・ポイ ンタは常にスタックに書かれたワードの最下位ビット(LSB)を指す。このことは 、汎用ポインタが記憶からデータにアクセスする方法と調和するので、スタック ・ポインタの内容を汎用ポインタ・レジスタに複写してこれをスタックの状態を 示 すアクセス・パラメタとして使用してもよい。スタックの動作は、ユーザ・スタ ック・ポインタ(USP)とシステム・スタック・ポインタ(SSP)の2個を、レジスタ ・ファイル82のレジスタに設けることにより容易になる。これらの16ビットスタ ック・ポインタは通例のトップ・オブ・スタック型のポインタで、プッシュ・ダ ウン・スタックの最上部のデータを番地指定する。このデータは暗黙のうちに、 PUSHとPOP 動作、サブルーチン呼出し、復帰、及びトラップ・例外などの割込み 動作で参照される。このスタックは常に「ワード」アラインされている。スタッ クへのPUSH(バイト/ワード)があると、スタック・ポインタの指数は2だけ減 少し(SP=SP-2)、POP(バイト/ワード)があると、スタック・ポインタの指 数は2だけ増加する(SP=SP+2)。こうして、このスタック位置合わせ(stack a lignment)により、あらゆるスタック動作がワード境界(偶数番地)で行なわれ ることが保証され、その結果位置合わせ問題がなくなり、割込みの待時間(laten cy time)が短縮するのは、他の16ビットまたはそれより大きなスタックの動作で も同様である。SPはPUSHに先立って予め減少するので、ワード・アラインされた スタックはFEから下方に成長する。マルチタスクのシステムでは、1個のスタッ ク・ポインタは監視システムに、もう1個は現在活動中のタスクにそれぞれ使わ れる。これにより、システム・ソフトとユーザ応用プログラムの分離ができ、防 護機構として有効に働く。この2個のスタック・ポインタは、割込み性能の改善 にも有効である。この2個のスタック・ポインタは同一のレジスタ番地を共用す る。任意の時点で使用されレジスタ・ファイルに「現れる(“appear”)」スタッ ク・ポインタは、プログラム状態語(PSW)レジスタ44の中のシステム・モード・ ビット(SM)で決定される。ユーザ・モードの中では、すべてのプッシュ、ポップ 、及びサブルーチン復帰番地は応用(またはユーザ)スタックを用いる。しかし 、割込みは常にシステム・スタックを用いる。前記のように、レジスタ・ファイ ルには8個の16ビット・レジスタが存在する。これら8個のうち、1個はスタッ ク・ポインタ(R7)用に保留されるが、他の7個は汎用ポインタ・レジスタとして 、記憶の中の異なるセグメントへのアクセスに用いてよい。SFR 空間の中の「バ イト」・レジスタには、7個の汎用ポインタ・レジスタ(SPではない)のそれぞ れと組み合わさったビットが格納され、このそれぞれはDSまたはESレジスタの何 れかを、間接番地指定モードのため、24ビット番地の最高位8ビットのソース(s ource)として選択する。このレジスタはセグメント選択レジスタと呼ばれる。例 外と割込みの動作は、正常な命令処理を強制排除する事象で、プログラム・フロ ーの中では予定・スケジュール外または予期しない変化である。各割込みとか例 外動作には1個のベクトルが割当てられ、関連のハンドラー・ルーチンを指定す る。例外・割込み処理は、ハンドラー・ルーチンへ制御を渡すのに必要なすべて の動作を含むが、ハンドラー・ルーチン自体の実行は含まない。例外・割込みベ クトルには、例外を扱うルーチンの番地を含む。例外・割込みベクトルはベクト ル・テーブルと呼ぶデータ構造に収容される。このテーブルは符号記憶頁0の最 初の256バイトに位置している。すべてのベクトルは2ワードから成り、それら は:(i)例外ハンドラーの番地とワード境界に位置するその処理エントリー点; 及び、(ii)そのハンドラーのためのPSW の初期内容である。RESET 以外のすべて の例外・割込み動作が起こると、現在進行中のプログラム・カウンタ(PC)とPSW の値は、一旦スタックに格納されて、現在の命令がその優先レベルに基づいて完 了した後、再びサービスに入る。例外・割込み動作の間は、24ビットの復帰番地 全体と現在のPSW ワードとがスタックの上にプッシュされる。スタックされたPC (ハイバイト):PC(ローワード)の値は、現在の命令の流れの中での次の命令 に関する24ビット番地である。次いで、プログラム・カウンタ(PC)には、対応す るハンドラー・ルーチンの番地がベクトル・テーブルからロードされ、PSW には 、対応するベクトルの上位ワードの中に格納された新たな値がロードされる。例 外・割込みハンドラーの実行は、割込みからの復帰(RETI)命令が出るか、他の例 外または割込みで高優先度のものが発生するまで進行する。このRETI命令でそれ ぞれのハンドラー・ルーチンは終結する。マイクロ符号プログラム制御の下で、 この命令が出ると、24ビット復帰番地全体がスタックからPCにポップされ、スタ ックから原PSW が再ロードされ、プロセッサは(割込みで)中断していたルーチ ンの実行を再開する。 マイクロコントローラ12の上で命令を実行するため、符号すなわち命令の番地 を形成する方法には数種類ある。プログラム・フローの中でスケジュールまたは 計画された変化には、単純な相対分岐(relative branch)、長い相対分岐、24ビ ットの飛越しと呼出し、及び復帰がある。単純な相対分岐では、プログラム・カ ウンタに8ビットの変位(displacement)を加えて新符号番地を生成する。この計 算は、8ビット相対変位を1ビットだけシフトし(ワード番地への変位であるた め)、結果を24ビットに延長し、それをプログラム・カウンタの内容に加え、そ してその結果の最下位ビットを強制的に0にすることにより達成される。長い相 対無条件分岐(JMP)と16ビット相対変位を伴う呼出しは、同一のシーケンスを用 いる。遠い飛越しと呼出しとは(far jumps and calls)、命令の中に24ビットの 絶対番地を含むもので、プログラム・カウンタの内容全体が全く新たな値で置き 換えられる。復帰命令が出ると、(プログラム・カウンタは)スタックから番地 を獲得する。この番地は長さが16または24ビットで、復帰の型及びシステム構成 レジスタ(SCR)の中の頁0モード・ビット(page zero mode bit)によって支配さ れる。24ビット復帰番地の場合は、単純にプログラム・カウンタの値全体が置き 換えられる。16ビット復帰番地の場合は、頁0モードの中のPCの下位16ビットが 置き換えられるだけである。ここでPCの上位8ビットは0と仮定される。符号番 地については、ポインタ・レジスタからの16ビット値に、プログラム・カウンタ (PC)または符号セグメント(CS)レジスタの上位8ビットを加えて24ビット符号番 地を形成する。上記何れの8ビットを採るかは、使用されるポインタ・レジスタ に対応するSSELレジスタの中のセグメント選択ビットが、0=PC及び1=CSの何 れに設定されるかにより決定される。ここでCSは8ビットSFR の1つであること に注意されたい。 取出された命令をワードかバイトの境界の何れかにアラインするようなフェッ チ動作が可能である。この動作は、在来の非アライン型符号フェッチ回路と在来 の位置合わせ回路(それぞれフェッチ・ユニット78及び復号ユニット74の中にあ る)の組合せにより実行される(図6参照)。在来の前フェッチ待ち行列(prefe tch queue)200が、符号記憶76または命令記憶18からワードを受取り、これを在 来の位置合わせマルチプレクサ(alignment multiplexer)202に渡す。このマルチ プレクサ202は、適当なバイト(単数または複数)を選択してこれを復号ユニッ ト74の中の在来の復号論理回路204に渡す。この復号論理回路204はこの命令を解 読し、それを、在来のステージング・レジスタ206 を介して、コアの他のユ ニット例えば実行ユニット70などに渡す。こうして命令はバイト・アラインされ 、本来の順序でステージングできる。 計画外プログラム・フロー変化に際して、ワード・アラインされた目標へのフ ローの飛越しを容易にしたり、そうした計画外プログラム・フロー変化からバイ ト・アラインされた復帰目標への復帰を容易にしたりするため、プログラム・カ ウンタ・レジスタの中のプログラム・カウンタ値が、図7に示す回路を使って調 整される。正常順序による命令実行動作ではプログラム・フローが逐次進行し、 各命令が実行された後、プログラム・カウンタ・レジスタ220の内容の最上位ビ ット(MSB)が加算器222に直接加わる。最下位ビット(LSB)は、ステージング・レ ジスタ206が分岐を示していない限り、AND ゲート223を介して加算器222に加わ る。加算器222は、復号器ステージング・レジスタ206から供給される命令長を、 マルチプレクサ224を経由してプログラム・カウンタ値に加算し、こうして更新 されたPCがマルチプレクサ226を経由してプログラム・カウンタ・レジスタ220に 再び格納(stored back)される。スケジュールされたフロー変化が起こって、例 えば分岐命令の1つである飛越しとか呼出しがステージング・レジスタ206に現 れた場合、AND ゲート223の働きで、最下位ビットは加算器222に加わらない。マ ルチプレクサ224は、命令長を示す代わりに、分岐オフセット(branchoffset)の 最上位のビット列(ワード番地)及び強制的に“0”にした最下位ビットを加算 器222に加える。加算器222は、LSB の増加したオフセット(LSB augumented offs et)をプログラム・カウンタ値に加算し、その値がプログラム・カウンタ・レジ スタ220に格納される。フローで予期しない変化、例えば例外や割込みが起こっ た場合、元来のフロー、例えば割込みからの復帰などに復帰し次第、マルチプレ クサ226はプログラム・カウンタ・レジスタ220に、内部バス86から得られた、例 えば割込みの場合にはスタックから得られたフル復帰番地をロードする。 既に触れた通り、本発明では、ある場合には飛越し目標の番地が1ワードの境 界上にある(fall on)ことが要求される。飛越し目標がワード・アラインされて いない状態が起こるのは、ワード境界にアラインされた命令が、下記に示すよう に奇数バイトをもつ場合である。 この例では、BNE 命令が2バイトを占有し、MOV.B 命令が3バイトであるため、 分岐目標(“L1”)に関する次の命令が奇数バイト番地に位置することとなる。ア センブラまたはコンパイラは、幾つもの方法によってこの問題を解決して、ワー ド・アラインされた飛越し目標番地を有する目的符号を作成できる。アセンブラ またはコンパイラにおける一つの解決法として、シンボル・テーブルを作成中、 シンボル名テーブルの中で飛越し目標にシンボル名を割当てる際、そのシンボル ・テーブルに、最終番地をワード境界上にアラインすべきかどうか示す領域をも たせるという方法がとれる。飛越し目標の位置ポインタまたはカウンタの値がワ ード境界にないという状況に遭遇した場合、すなわち最下位ビットが二進法の“ 0”でないか、位置ポインタが奇数を含んでいる場合には、その位置に単一のNO P 命令を挿入するという方法がとれる。そうすれば、位置ポインタは次のバイト へと増加する。この結果、次の命令とシンボルはワード・アラインされ、その位 置の値には飛越し目標のシンボル名が割当てられ、結果として飛越し目標に割当 てられる番地は強制的に次のワード・アラインされた位置カウンタ番地になる。 その様子は下記に示す通りである。 この解決法では、無駄な命令(NOP)が生じて実行ユニットはそれを処理せねばな らない。結果として数個のクロック・サイクルが無駄になるが、ある種の場合に は受容できる。例えば、ループ・パラメタ初期設定に際してこの余分なNOP を挿 入すると、このアラインされたラベル(aligned label)がループ・エントリーと なって何回も分岐され得る場合などである。もう一つの解決法は、コンパイラに 隣接符号を走査させて、バイト境界上にある飛越し目標を識別し、その目標命令 に先行する何れかの命令長を拡張すればその目標がワード・アラインできるかど うかを判断することである。そうできるならその命令を拡張し、駄目ならNOP を 挿入すればよい。ワード・アラインを実現するための拡張を下記に示す。 この例では、オール“0”の余分なバイトが相対オフセットに加えられる。コン パイラかアセンブラを用いて、ワード境界上に飛越し目標を有する符号が作れる ようにできるなら、非アライン型の符号プロセッサを用いたとしても、その計画 的なプログラム・フロー変化で必然的に起こる不利益(penalty)が最小にでき、 プロセッサ全体のスループットが増加する。 本発明における多くの特徴と利益は詳細な仕様から明らかであり、従って後記 の請求項では、本発明の真の精神と範囲から必然的に生まれるそうした特徴と利 点をすべてカバーすることを意図する。更に、関連技術に精通する当業者にとっ ては、多数の変形や変更は容易に案出できるので、本発明をここで示し説明した 構造と動作に厳密に限定することは望ましくない。例えば、本発明は位置合わせ が4バイト境界で望まれる場合にも適用可能である。従って、適切な変形または それに相当する内容は、すべて本発明に依存しその範囲に入る可能性がある。

Claims (1)

  1. 【特許請求の範囲】 1.1個の処理システムにおいて、 ― 1個の記憶と; ― 命令情報を上記記憶から一度に1ワードずつ取り出すためのフェッチ手 段を含み、また、上記命令情報から得られた実行命令で、少なくともその一部は ワード長の倍数の中間長を有する実行命令を実行する手段を含む1個のプロセッ サと; ― 上記命令情報をメモリ内に配置するための命令配置手段と; を有して成り、 上記命令配置手段は、各命令ごとにその命令が1個のフロー変化命令のフロ ー変化目標であるかどうかを検出し、また上記命令配置手段は、各特定の命令ご とに、それがフロー変化目標でなければ記憶内部の符号密度を最大にできるよう に配置し、それがフロー変化目標である場合にはワード境界に配置することを特 徴とする処理システム。 2.請求項1に記載の処理システムにおいて、更に、計画外のプログラム・フロ ー変化から、ワード境界に配置されていない命令に復帰するための飛越し手段を 含むことを特徴とする処理システム。 3.請求項1に記載の処理システムにおいて、上記命令配置手段が、フロー変化 目標である命令をワード境界上に配置するために、命令の拡張及び符号の操作を 行なう1個のコンパイラを含むことを特徴とする処理システム。 4.請求項1に記載の処理システムにおいて、上記実行手段が、バイト・アライ ンされた命令を受取る1個の命令待ち行列;及び上記行列に結合して実行のため 上記命令をアラインする1個の位置合わせマルチプレクサ;を含むことを特徴と する処理システム。 5.請求項1に記載の処理システムにおいて、上記実行手段は、取出した命令の 番地を明示する1個のプログラム・カウンタ・レジスタ;及び、上記プログラム ・カウンタ・レジスタと結合した1個の命令番地修正ユニット;を有して成り、 それによりフロー変化目標への参照を含むフロー変化命令の制御の下で、 上記プログラム・カウンタ・レジスタの内容を修正し、上記参照の最下位ビット は異なるワードを区別することを特徴とする処理システム。 6.1個の処理システムにおいて、 飛び越し目標命令をワード境界にアラインするため、命令の拡張と符号の操 作を行なう1個のコンパイラと; バイト・アラインされた命令を受取る1個の命令待ち行列を含むプロセッサ と; 上記行列と結合し上記命令を実行のためアラインする位置合わせマルチプレ クサと; 取出した命令の番地を指定する1個のプログラム・カウンタ・レジスタ; 上記プログラム・カウンタ・レジスタと結合し、ワード番地を用いてプログ ラム・カウンタを修正する1個の命令番地修正ユニットと; 計画外のプログラム・フロー変化からバイト・アラインされた番地を用いて 復帰するための飛び越し手段と:及び 上記の取出した命令を実行するための実行手段と; を有して成ることを特徴とする処理システム。 7.コンピュータ命令を実行する方法において、 a.フロー変化目標である命令をワード境界にアラインすること; b.順次実行の可能な命令をバイト境界にアラインすること;及び c.ワード境界にアラインされた命令をバイトの倍数ずつ取出して実行するこ と; を含むことを特徴とするコンピュータ命令を実行する方法。 8.請求項7に記載の方法において、 d.計画外の復帰は、バイト・アラインされたプログラム飛び越し番地を用い て行なうこと; を更に含むことを特徴とするコンピュータ命令を実行する方法。
JP8510021A 1994-09-16 1995-08-21 ワード・アラインされた分岐目標を有する処理システム Pending JPH09505427A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/308,337 US5590358A (en) 1994-09-16 1994-09-16 Processor with word-aligned branch target in a byte-oriented instruction set
US08/308,337 1994-09-16
PCT/IB1995/000667 WO1996008762A2 (en) 1994-09-16 1995-08-21 Processing system with word-aligned branch target

Publications (1)

Publication Number Publication Date
JPH09505427A true JPH09505427A (ja) 1997-05-27

Family

ID=23193583

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8510021A Pending JPH09505427A (ja) 1994-09-16 1995-08-21 ワード・アラインされた分岐目標を有する処理システム

Country Status (6)

Country Link
US (1) US5590358A (ja)
EP (1) EP0729605B1 (ja)
JP (1) JPH09505427A (ja)
KR (1) KR100385495B1 (ja)
DE (1) DE69524379T2 (ja)
WO (1) WO1996008762A2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5706483A (en) * 1994-12-13 1998-01-06 Microsoft Corporation Run-time code compiler for data block transfer
US5966514A (en) * 1995-05-31 1999-10-12 Matsushita Electric Industrial Co., Ltd. Microprocessor for supporting reduction of program codes in size
US5687339A (en) * 1995-09-14 1997-11-11 Elan Microelectronics Corp. Pre-reading and pre-decoding of instructions of a microprocessor within single cycle
US6338106B1 (en) 1996-12-20 2002-01-08 Pact Gmbh I/O and memory bus system for DFPS and units with two or multi-dimensional programmable cell architectures
US5889997A (en) * 1997-05-30 1999-03-30 Hewlett-Packard Company Assembler system and method for a geometry accelerator
CA2211515C (en) * 1997-07-25 2001-12-11 Kevin Alexander Stoodley System and method of local data alignment for stack memory
EP0953898A3 (en) 1998-04-28 2003-03-26 Matsushita Electric Industrial Co., Ltd. A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor
EP0992894A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Apparatus and method for loop execution
US6721875B1 (en) * 2000-02-22 2004-04-13 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing a single-syllable IP-relative branch instruction and a long IP-relative branch instruction in a processor which fetches instructions in bundle form
JP2004519027A (ja) * 2001-01-30 2004-06-24 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 主プロセッサと命令経路コプロセッサとの同期化
US6993619B2 (en) * 2003-03-28 2006-01-31 International Business Machines Corporation Single request data transfer regardless of size and alignment
US8006071B2 (en) * 2004-03-31 2011-08-23 Altera Corporation Processors operable to allow flexible instruction alignment
US20060277396A1 (en) * 2005-06-06 2006-12-07 Renno Erik K Memory operations in microprocessors with multiple execution modes and register files
US20080162879A1 (en) * 2006-12-29 2008-07-03 Hong Jiang Methods and apparatuses for aligning and/or executing instructions
US20080162522A1 (en) * 2006-12-29 2008-07-03 Guei-Yuan Lueh Methods and apparatuses for compaction and/or decompaction
US8966228B2 (en) * 2009-03-20 2015-02-24 Arm Limited Instruction fetching following changes in program flow
JP4862100B1 (ja) * 2011-03-25 2012-01-25 好一 北岸 中央演算処理装置及びマイクロコンピュータ

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4338663A (en) * 1978-10-25 1982-07-06 Digital Equipment Corporation Calling instructions for a data processing system
EP0150177A1 (en) * 1983-07-11 1985-08-07 Prime Computer, Inc. Data processing system
US4791557A (en) * 1985-07-31 1988-12-13 Wang Laboratories, Inc. Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system
US5187782A (en) * 1986-02-26 1993-02-16 Hitachi, Ltd. Data processing system
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
EP0461257B1 (en) * 1989-01-17 1997-04-23 Fujitsu Limited Microprocessor sequencer for controlling the decoding of varable length instructions
JP2682217B2 (ja) * 1989-08-28 1997-11-26 日本電気株式会社 マイクロプロセッサ
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
US5163139A (en) * 1990-08-29 1992-11-10 Hitachi America, Ltd. Instruction preprocessor for conditionally combining short memory instructions into virtual long instructions
US5335332A (en) * 1991-12-24 1994-08-02 International Business Machines Corporation Method and system for stack memory alignment utilizing recursion
JP2928680B2 (ja) * 1992-03-30 1999-08-03 株式会社東芝 複合条件処理方式
JPH0667877A (ja) * 1992-08-19 1994-03-11 Kofu Nippon Denki Kk 命令フェッチ回路

Also Published As

Publication number Publication date
EP0729605A1 (en) 1996-09-04
US5590358A (en) 1996-12-31
WO1996008762A2 (en) 1996-03-21
DE69524379D1 (de) 2002-01-17
DE69524379T2 (de) 2002-10-17
EP0729605B1 (en) 2001-12-05
WO1996008762A3 (en) 1996-05-30
KR100385495B1 (ko) 2003-08-14
KR960706124A (ko) 1996-11-08

Similar Documents

Publication Publication Date Title
US5781750A (en) Dual-instruction-set architecture CPU with hidden software emulation mode
EP0415461B1 (en) Central processing unit supporting variable length instructions
KR100323191B1 (ko) 다중명령세트를이용한데이터프로세싱장치
JP3173793B2 (ja) 多重命令セットによるデータ処理装置及びデータ処理方法
US5649145A (en) Data processor processing a jump instruction
US6298423B1 (en) High performance load/store functional unit and data cache
JPH09505427A (ja) ワード・アラインされた分岐目標を有する処理システム
JPH0926878A (ja) データ処理装置
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
EP0465248B1 (en) Pseudo-linear bank switching memory expansion
JP2002540523A (ja) マイクロコントローラ命令セット
US7865699B2 (en) Method and apparatus to extend the number of instruction bits in processors with fixed length instructions, in a manner compatible with existing code
JP3543181B2 (ja) データ処理装置
JP2847974B2 (ja) データ処理装置
US20030061464A1 (en) Digital signal controller instruction set and architecture
JPH07120278B2 (ja) データ処理装置
Berenbaum et al. Introduction to the CRISP Instruction Set Architecture.
US4812971A (en) Central processing unit for a digital computer
US4893235A (en) Central processing unit for a digital computer
JP3345787B2 (ja) データ処理装置
EP0206653A2 (en) Method and means for loading and storing data in a reduced instruction set computer
JPH09505428A (ja) ページアドレスモードを有するマイクロコントローラ
CA1250666A (en) Central processing unit for a digital computer
JP3147884B2 (ja) 記憶装置及び情報処理装置
JPH11510288A (ja) 間接指定子を用いるエミュレーションを含む命令デコーダ