JP2966085B2 - 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法 - Google Patents

後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法

Info

Publication number
JP2966085B2
JP2966085B2 JP2511130A JP51113090A JP2966085B2 JP 2966085 B2 JP2966085 B2 JP 2966085B2 JP 2511130 A JP2511130 A JP 2511130A JP 51113090 A JP51113090 A JP 51113090A JP 2966085 B2 JP2966085 B2 JP 2966085B2
Authority
JP
Japan
Prior art keywords
stack
microprocessor
register
instruction
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2511130A
Other languages
English (en)
Other versions
JPH05502125A (ja
Inventor
チャールズ エイチ ムーア
ラッセル エイチ ザ サード フィッシュ
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.)
Individual
Original Assignee
Individual
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=23537828&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2966085(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Individual filed Critical Individual
Publication of JPH05502125A publication Critical patent/JPH05502125A/ja
Application granted granted Critical
Publication of JP2966085B2 publication Critical patent/JP2966085B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • G06F7/5272Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7828Architectures of general purpose stored program computers comprising a single central processing unit without memory
    • G06F15/7832Architectures of general purpose stored program computers comprising a single central processing unit without memory on one IC chip (single chip microprocessors)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/584Pseudo-random number generators using finite field arithmetic, e.g. using a linear feedback shift register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • G06F7/785Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using a RAM
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP
    • 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
    • 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/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • 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 or 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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 or look ahead
    • G06F9/3824Operand accessing
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/58Indexing scheme relating to groups G06F7/58 - G06F7/588
    • G06F2207/581Generating an LFSR sequence, e.g. an m-sequence; sequence may be generated without LFSR, e.g. using Galois Field arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/58Indexing scheme relating to groups G06F7/58 - G06F7/588
    • G06F2207/583Serial finite field implementation, i.e. serial implementation of finite field arithmetic, generating one new bit or trit per step, e.g. using an LFSR or several independent LFSRs; also includes PRNGs with parallel operation between LFSR and outputs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】 背景技術 1.技術分野 この発明は広義には簡単な低減命令セットコンピュー
タ(RISC)マイクロプロセッサに関する。より詳細に
は、かかるマイクロプロセッサで、たとえば20ドルの価
格でたとえば毎秒2、000万の命令(MIPS)の性能レベ
ルが可能なものに関する。
2.従来の技術 マイクロプロセッサの発明以来、その設計の改善には
二つの異なる方法が用いられてきた、第1の方法ではマ
イクロプロセッサ集積回路中のトランジスタをより多く
しまたより高速にし、さらにより複雑な命令セットを備
えることによって性能の向上が図られた。この方法は、
Motorola 68000やIntel 80X86のシリーズにその例を見
ることができる。この方法は数百のピンアウトを有する
より大きなダイおよびパッケージに向かう傾向にある。
最近では、マイクロプロセッサ集積回路自体とその命
令セットの両方においてより簡単に性能の改善を得るこ
とができると考えられている。この第2の方法はRISCマ
イクロプロセッサを提供するものであり、Sun SPARCやI
ntelのマイクロプロセッサにその例を見ることができ
る。しかし、この方法においても従来の実施態様では多
数のピンアウトを収容するためにマイクロプロセッサの
パッケージは大型となっている。したがって、高性能マ
イクロプロセッサの簡略化が依然として要請されてい
る。
従来の高性能マイクロプロセッサでは、そのマイクロ
プロセッサに対応するのに十分な速度のメモリアクセス
を行うためにマイクロプロセッサへの直接接続を行うた
めの高速スタティックメモリが必要とされる。低速のダ
イナミックランダムアクセスメモリ(DRAM)がこのよう
なマイクロプロセッサに用いられるのは、階層的メモリ
構成においてのみであり、スタティックメモリがマイク
ロプロセッサとDRAMの間のバッファとしてはたらく。
従来のマイクロプロセッサは、マイクロプロセッサ集
積回路上に設けるかあるいは別途設けられるDMAコント
ローラを介してシステム周辺装置のための直接メモリア
クセス(DMA)を提供する。このようなDMAコントローラ
はDMA要求およびDMA応答のルーチン処理を提供すること
ができるが、ある種の処理はマイクロプロセッサの主中
央処理装置(CPU)によって行わなければならない。
発明の開示 この発明の目的は低コストで高性能なマイクロプロセ
ッサ及びマイクロプロセッサシステムを提供することで
ある。
この目的およびそれに関連する目的はここに開示する
新しい高性能の低コストマイクロプロセッサを用いるこ
とによって達成することができる。
この発明の一態様においては、マイクロプロセッサシ
ステムは算術論理演算装置を含む。第1の後入れ先出し
スタックがこの算術論理演算装置に接続されている。こ
の第1の後入れ先出しスタックはこの算術論理演算装置
の第1の入力に接続されたトップ項目を記憶する手段
と、この算術論理演算装置の第2の入力に接続されたネ
クスト(次)項目を記憶する手段を含む。この算術論理
演算装置はトップ項目を記憶する手段に接続された出力
を有する。トップ項目を記憶する手段はレジスタファイ
ルに入力を提供するように接続される。
この発明の別の態様においては、マイクロプロセッサ
システムは中央処理装置、メモリ、中央処理装置をメモ
リに接続するバスを含む。中央処理装置は、算術論理装
置と算術論理装置に接続された後入れ先入れスタックを
含む。後入れ先出しスタックはこの算術論理演算装置の
第1の入力に接続されたトップ項目を記憶する手段と、
この算術論理演算装置の第2の入力に接続されたネクス
ト(次)項目を記憶する手段を含む。算術論理演算装置
はトップ項目を記憶する手段に接続された出力を有す
る。後入れ先出しスタックはラッチとして構成された第
1の複数のスタック要素と、ランダムアクセスメモリと
して構成された第2複数のスタック要素を有する。第1
および第2の複数のスタック要素と中央処理装置は単一
の集積回路内に設けられている。そして、後入れ先出し
スタックが単一の集積回路の外部のランダムアクセスメ
モリとして構成される第3の複数のスタック要素を有す
る。
この発明の更に別の態様においては、マイクロプロセ
ッサは単一の集積回路中のメイン中央処理装置と別の直
接メモリアクセス中央処理装置とを含む。メイン中央処
理装置は算術論理装置、算術論理装置に入力を提供する
ように接続されたトップ項目レジスタとネクスト(次)
項目レジスタ付きの第1の後入れ先出しスタックを有
し、算術論理装置の出力はトップ項目レジスタに接続さ
れており、トップ項目レジスタは内部データバスに入力
を提供するように接続されており、内部データバスはル
ープカウンタに双方向に接続されており、ループカウン
タは減分器に接続されており、内部データバスはスタッ
クポインタ、リターンスタックポインタ、モードレジス
タ、および命令レジスタに双方向に接続されており、内
部データバスはメモリコントローラ、リターン後入れ先
出しスタックのYレジスタ、Xレジスタおよびプログラ
ムカウンタに接続されており、Yレジスタ、Xレジスタ
およびプログラムカウンタは内部アドレスバスへの出力
を提供し、内部アドレスバスはメモリコントローラへの
と増分器への入力を提供し、増分器は内部データバスに
接続され、直接メモリアクセス中央処理装置はメモリコ
ントローラへの入力を提供し、メモリコントローラはア
ドレス/データバスとランダムアクセスメモリへの接続
のための複数の制御ラインを有するマイクロプロセッ
サ。
この発明の更に別の態様において、マイクロプロセッ
サシステムにおいて後入れ先出しスタックを動作させる
方法が、ラッチとして構成された第1の複数のスタック
要素、ランダムアクセスメモリとして構成された第2の
複数のリスック要素を提供し、第1および第2の複数の
スタック要素をマイクロプロセッサとともに単一の集積
回路内に設け、この単一の集積回路の外部のランダムア
クセスメモリとして構成された第3の複数のスタック要
素を提供し、後入れ先出しスタックに項目を記憶させ、
第2の複数のスタック要素にアクセスすることなく第1
の複数のスタック要素から第1の複数の項目を取り出
し、第1の複数のスタック要素が空であるときは第2の
複数のスタック要素から第1の複数の項目を取り出し、
第3の複数のスタック要素にアクセスすることなく第2
の複数のスタック要素から第2の複数の項目を取り出
し、第2の複数のスタック要素が空であるときは第3の
複数のスタック要素から第2の複数の項目を取り出す。
この発明の上述の目的と関連の目的、利点および特徴
は当該技術に精通するものには、以下のこの発明のより
詳細な説明を図面を参照して検討することにより、いっ
そう容易に理解されるであろう。
図面の簡単な説明 図1はこの発明によるマイクロプロセッサを内蔵する
集積回路パッケージの外平面図である。
図2はこの発明によるマイクロプロセッサのブロック
図である。
図3は図1および図2のマイクロプロセッサを内蔵す
るデータ処理装置の一部のブロック図である。
図4は図2に示すマイクロプロセッサの部分のより詳
細なブロック図である。
図5は図2に示すマイクロプロセッサの他の部分のよ
り詳細なブロック図である。
図6は図3に部分的に示し、また図1−2および図4
−5のマイクロプロセッサを内蔵するデータ処理システ
ムの他の部分のブロック図である。
図7および図8は図3および図6に部分的に示すデー
タ処理システムのレイアウト図である。
図9は単一の集積回路上のデータ処理システムにおけ
るこの発明によるマイクロプロッサの第2の実施例のレ
イアウト図である。
図10は図7および図8のデータ処理システムの一部の
より詳細なブロック図である。
図11は図12に示すシステム部分の動作を理解するのに
有用なタイミング図である。
図12は図7および図8のデータ処理システムの別の部
分のより詳細なブロック図である。
図13は図2に示すマイクロプロセッサの一部のより詳
細なブロック図である。
図14は図3および図7−8に示すシステムの一部のよ
り詳細なブロックおよび概略図である。
図15は図14に示すシステム部分の動作を理解するのに
有用なグラフである。
図16は図4に示すシステム部分の一部を示すより詳細
なブロック図である。
図17は図2に示すマイクロプロセッサの一部のより詳
細なブロック図である。
図18は図17に示すマイクロプロセッサ部分の一部のよ
り詳細なブロック図である。
図19は図18に示すマイクロプロセッサ部分の一部の動
作を理解するのに有用な波形図である。
図20は図4に示すシステム部分の別の部分を示すより
詳細なブロック図である。
図21は図4に示すシステム部分の別の部分を示すより
詳細なブロック図である。
図22および図23は図4に示すシステム部分の別の部分
を示すより詳細なブロック図である。
発明の詳細な説明 概観 この発明のマイクロプロセッサは、 高実行速度と 低システムコスト に対して最適化された32ビットマイクロプロセッサとし
て実施するのが望ましい。この実施例ではマイクロプロ
セッサは20ドルで20MIPSのものと考えることができる。
このプロセッサの重要な特徴は次の通りである。
20MIPSの実行に低コスト汎用ダイナミックRAMを使
用、 1メモリサイクル当たり4命令取り出し、 オンチップ高速ページモードメモリ管理、 外部キャッシュなしで高速実行、 インターフェースチップがほとんど不要、 44ピンSOJパッケージ内に32ビットCPU 命令セットはほとんどの動作を8ビット命令で指定で
きるように構成されている。この考え方の利点は次の通
りである。
プログラムがより小さくなる、 プログラムをより高速に実行することができる。
ほとんどのコンピュータシステムでメモリバスが問題
点になっている。バスは命令の取り出しとデータの取り
出しと記憶に用いられる。単一のメモリバスサイクル中
に四つの命令を取り出す能力はデータ処理に対するバス
の利用可能性を大きく向上させる。
図について、特に図1について説明すると、約0.8イ
ンチの実際の大きさの約100倍の大きさで示した44ピン
プラスティック無導線チップキャリア中のパッケージ化
された32ビットマイクロプロセッサを示す。マイクロプ
ロセッサ50が44ピンパッケージとして設けられるという
点は、通常約200の入出力(I/O)ピンを有する代表的な
マイクロプロセッサと大きく異なっている。マイクロプ
ロセッサ50は2、000万命令/秒(MIPS)の速度とされ
ている。DO−D31のラベルが付いたアドレスおよびデー
タライン52が、次に説明するマイクロプロセッサ50の動
作方法の結果速度を犠牲にすることなくアドレス用とデ
ータ用に共用されている。
ダイナミックRAM 低コスト44ピンパッケージに加えて、この高性能マイ
クロプロセッサ50のもう一つの特殊な側面は、列アドレ
スストローブ(RAS)およびカラムアドレスストローブ
(CAS)I/Oピン54によって示すように、ダイナミックラ
ンダムアクセスメモリ(DRAM)と直接動作する点であ
る。マイクロプロセッサ50の他のI/Oピンには、VDDピン
56、VSSピン58、出力イネーブルピン60、書き込みピン6
2、クロックピン64およびリセットピン66がある。
あらゆる高速コンピュータは動作するには高速で高価
なメモリを必要とする。最も高速なスタティックRAMメ
モリは低速のダイナミックRAMの10倍ものコストがかか
る。このマイクロプロセッサは低コストのダイナミック
RAMを高速ページモードで用いるように最適化されてい
る。ページモードダイナミックRAMはコストをかけずに
スタティックRAMの性能を提供する。例えば、低コスト
の85nsecのダイナミックRAMは高速ページモードで動作
するとき25nsecでアクセスする。マイクロプロセッサチ
ップ上の集積高速ページモード制御はシステムのインタ
ーフェースを簡略化し、高速なシステムを実現する。
マイクロプロセッサ50の詳細を図2に示す。マイクロ
プロセッサ50は、マイクロプロセッサ50を構成する単一
の集積回路中にメイン中央処理装置(CPU)70と別の直
接メモリアクセス(DMA)CPU72を含む。メインCPU70は
それぞれが入力をライン82および84によって算術論理演
算装置(ALU)80に提供するように接続されたトップ項
目レジスタ76と次項目レジスタ78を有する第1の16深後
入れ先出しスタック74を有する。ALU80の出力はライン8
6によってトップ項目レジスタ76に接続されている。82
のトップ項目レジスタの出力もまたライン88によって内
部データバス90に接続されている。
ループカウンタ92がライン96および98によって減分器
94に接続されている。ループカウンタ92はライン100に
よって内部データバス90に双方向接続されている。スタ
ックポインタ102、復帰スタックポインタ104、モードレ
ジスタ106および命令レジスタ108もまたライン110、11
2、114および116によって内部データバス90に接続され
ている。内部データバス90はメモリコントローラ118と
ゲート120に接続されている。ゲート120は復帰後入れ先
出しスタック134のXレジスタ128、プログラムカウンタ
130およびYレジスタ132への入力をライン122、124およ
び126上に提供する。Xレジスタ128、プログラムカウン
タ130およびYレジスタ132は内部アドレスバス136への
出力をライン138、140および142上に提供する。内部ア
ドレスバスはメモリコントローラ118と増分器144への入
力を提供する。増分器144はXレジスタ、プログラムカ
ウンタおよびYレジスタ132への入力をライン146、12
2、124および126を介して提供する。DMA CPU72はライン
148上にメモリコントローラ118への入力を提供する。メ
モリコントローラ118はアドレス/データバス150と制御
ライン152によってRAM(図示せず)に接続されている。
図2はマイクロプロセッサ50が簡単なアーキテクチャ
を有することを示す。従来のRISCマイクロプロセッサの
設計ははるかに複雑である。たとえば、SPARC RISCマイ
クロプロセッサはマイクロプロセッサ50の3倍のゲート
を有し、Intel 8960 RISCマイクロプロセッサはマイク
ロプロセッサ50の20倍のゲートを有する。このマイクロ
プロセッサの速度はかなりの部分この簡略性に起因す
る。このアーキテクチャはこの簡略性を得るために後入
れ先出しスタックとレジスタ書き込みを用いている。
マイクロプロセッサ50は集積回路チップ上に設けられ
る資源を十分に活用するように調整されたI/Oを内蔵す
る。オンチップラッチによって同じI/O回路を三つの異
なることを処理するのに用いることができる。すなわ
ち、速度を少ししか、あるいは全く犠牲にせずから無ア
ドレス指定、列アドレス指定およびデータを処理するこ
とができる。この三重バス多重化によって拡張すべきバ
ッファの数、相互接続ラインの数、I/Oピンおよび内部
バッファの数を少なくすることができる。
オンチップDRAM制御を備えることによって、スタティ
ックRAMを用いてえることのできる性能と等しい性能を
得ることができる。その結果、メモリをほとんどのRISC
システムに用いられるスタティックRAMのシステムコス
トの1/4で設けることができる。
マイクロプロセッサ50は1メモリサイクルあたり四つ
の命令を取り出すことができる。命令は8ビットフォー
マットであり、これは32ビットマイクロプロセッサであ
る。したがって、システム速度はメモリバス帯域幅の4
倍である。この能力によってマイクロプロセッサが次の
命令を得る速度におけるフォン・ノイマンの障害を突破
することが可能になる。この動作モードは後入れ先出し
スタックとレジスタアレーの使用によって可能となる。
後入れ先出しスタックは二つの出所と一つの行先に対す
る明示アドレスの従来技術ではなく、暗示アドレスを使
用することを可能とする。
ほとんどの命令はマイクロプロセッサ50内で20ナノ秒
で実行される。したがってマイクロプロセッサはパイプ
ライン遅延を用いず50のピークMIPSで命令を実行するこ
とができる。これはマイクロプロセッサ50中の少数のゲ
ートとこのマイクロプロセッサのアーキテクチャの高度
な並行処理の結果である。
図3はI/Oピン52からのDRAM150のアドレス指定に対し
てマイクロプロセッサ50のラインD8−D14上でカラムア
ドレスと列アドレスがどのように多重化されるかを示
す。DRAM150は8個あるうちの一つであるが、ここでは
説明をわかりやすくするため一つのDRAM150のみを示
す。図示するように、ラインD11−D18はそれぞれDRAM15
0の列アドレス入力A0−A8に接続されている。さらに、
ラインD12−D15はDRAM150のデータ入力DQ1−DQ4に接続
されている。出力イネーブル、書き込みおよびカラムア
ドレスストローブピン54はそれぞれライン152によってD
RAM150の出力イネーブル、書き込みおよびカラムアドレ
スストローブ入力に接続されている。列アドレスストロ
ーブピン54は列アドレスストローブ複合ロジック154を
介してライン152および158によってDRAM150の列アドレ
スストローブ入力に接続されている。
D0−D7ピン52(図1)はマイクロプロセッサ50がD11
−D18ピン52に多重化された列アドレスおよびカラムア
ドレスを出力中である時にはアイドル状態である。した
がって、D0−D7ピン52は右寄せされたI/Oが求められる
とき入出力に同時に用いることができる。したがって同
時アドレス指定および入出力を行うことができる。
図4はマイクロプロセッサがいかにして単一のクロッ
クサイクル中での複数命令取り出しと前方命令取り出し
を通じて、DRAMを用いてスタティックRAMを用いる場合
と等しい性能を達成できるかを示す。命令レジスタ108
は32ビット内部データバス90上の四つの8ビットバイト
命令ワード1−4を受け取る。命令レジスタ108の四つ
の命令バイト1−4の位置はバス172、174、176および1
78によってマルチプレクサ170に接続される。マイクロ
プログラムカウンタ180はライン182によってマルチプレ
クサ170に接続される。マルチプレクサ170はバス186に
よって復号器184に接続される。復号器184はライン188
上にマイクロプロセッサ50の他の部分に対する内部信号
を提供する。
各命令バイト1−4の位置の最上位ビット190はライ
ン194によって4入力復号器192に接続される。復号器19
2の出力はライン196によってメモリコントローラ118に
接続される。プログラムカウンタ130は内部アドレスバ
ス136によってメモリコントローラ118に接続され、命令
レジスタ108は内部データバス90によってメモリコント
ローラ118に接続される。アドレス/データバス198と制
御バス200はDRAM150(図3)に接続される。
動作中において、残りの命令1−4の最上位ビット19
0がマイクプロセッサ50のクロックサイクル中に“1"で
あるとき、待ち行列にはメモリ参照命令はない。ライン
196上の復号器192の出力はメモリコントローラ118によ
る他のアクセスを介在させない前方命令取り出しを要求
する。命令レジスタ108中の現在の命令が実行されてい
る間に、メモリコントローラ118はプログラムカウンタ1
30からの四つの命令の次のセットのアドレスを得、その
命令セットを得る。現在の命令セットの実行が完了する
までには次の命令セットを命令レジスタにロードする準
備ができている。
DMA CPU72の詳細を図5に示す。内部データバス90は
メモリコントローラ118とDMA命令レジスタ210に接続さ
れている。DMA命令レジスタ210はバス214によってDMAプ
ログラムカウンタ212に、バス216によって転送サイズカ
ウンタ216に、バス222によって時限転送間隔カウンタ22
0に接続されている。DMA命令レジスタ210はまたライン2
26によってDMA I/OおよびRAMアドレスレジスタ224に接
続されている。DMA I/OおよびRAMアドレスレジスタ224
はメモリサイクル要求ライン228とバス230によってメモ
リコントローラ118に接続されている。DMAプログラムカ
ウンタ212はバス232によって内部アドレスバス136に接
続されている。転送サイズカウンタ216はライン236と23
8によって実行済みDMA命令減分器234に接続されてい
る。実行済みDMA命令減分器234はメモリサイクル応答ラ
イン240上の制御入力を受け取る。転送サイズカウンタ2
16はその計数を終えると、ライン242上にDMAプログラム
カウンタ212への制御信号を提供する。時限転送間隔カ
ウンタ220はライン246および248によって減分器244に接
続されている。減分器244はライン250上のマイクロプロ
セッサシステムクロックからの制御入力を受け取る。
DMA CPU72はそれ自体を制御し、命令を取り出し実行
する能力を有する。これはメインCPU70(図2)に対し
て時間の特定される処理のための双対プロセッサとして
動作する。
図6はデータライン52をあるものは入力ラインとなり
他のものは出力ラインとなるように再構成することによ
ってマイクロプロセッサ50を電気的にプログラム可能な
リードオンリーメモリ(EPROM)260に接続する態様を示
す。データライン52 D0−D7はEPROM 260の対応するデー
タ端子262とのデータのやり取りを可能とする。データ
ライン52 D9−D18はEPROM 260のアドレス端子264にアド
レスを提供する。データライン52 D19−D31はマイクロ
プロセッサ50からの入力をメモリおよびI/O復号ロジッ
ク266に提供する。RAS 0/1制御ライン268はメモリおよ
びI/O復号ロジックがライン270上にDRAM RAS出力を提供
するか、それともライン272上にEPROM260のためのカラ
ムイネーブル出力を提供するかを判定するための制御信
号を提供する。マイクロプロセッサ50のカラムアドレス
ストローブ端子60はライン274上にEPROM260の対応する
端子276への出力イネーブル信号を提供する。
図7および図8はマイクロプロセッサ50、合計2メガ
バイトのMSM514258−10型DRAM 150、Motorolaの50メガ
ヘルツ水晶発振器クロック282、I/O回路284、および272
56型EPROM 260を内蔵するワンカードデータ処理システ
ム280の前後を示す。I/O回路284は74HC04型高速16進イ
ンバータ回路286、IDT39C828型10ビット反転バッファ回
路288、IDT39C822型10ビット反転レジスタ回路290、お
よび二つのIDT39C823型9ビット非反転レジスタ回路292
を含む。カード280はさらに最大12V型直流−直流変換器
回路294、34ピン2アンプ型ヘッダ296、同軸雌電源コネ
クタ298、および3ピンアンプ直角ヘッダ300を加えてな
る。カード280はより大きなシステムに内蔵するかある
いは内部開発ツールとして用いることのできる低コスト
の埋め込み可能な製品である。
マイクロプロセッサ50はダイナミックRAMと非常に密
接に働くように設計された非常に高性能(50MHz)なRIS
C型32ビットCPUである。マイクロプロセッサ50は単一CP
U構成で可能な理論上の性能限界に近づくものである。
最終的にはマイクロプロセッサ50もその他のいかなるプ
ロセッサもバス帯域幅とバスパスの数によって制約され
る。クリティカルパスはCPUとメモリの間にある。
バス帯域幅とバスパスの問題に対する解決法の一つに
CPUをメモリチップ上に直接集積してすべてのメモリにC
PUへの直接バスを設ける方法がある。図9は単一の集積
回路312中に1メガビットのDRAM311と一体に設けた別の
マイクロプロセッサ310を示す。この発明以前にはこの
解決法は実用的なものではなかった。それはほとんどの
高性能CPUはそれ自体で500、000から1、000、000個の
トランジスタと非常に大きなダイサイズを要するためで
ある。マイクロプロセッサ310は図1−8のマイクロプ
ロセッサ50と等価である。マイクロプロセッサ50と310
はデュアルプロセッサ70および72(図2)あるいは314
および316(より小さいメモリ)用に50、000個以下のト
ランジスタしか必要としない現在あるものの中で最もト
ランジスタ効率の高い高性能CPUである。マイクロプロ
セッサ50および310の非常に高い速度は、ある程度まで
は能動素子の数が少ないことの結果である。基本的には
珪素が少ないほど、電子はそれが目指す場所により速く
到着することができる。
したがって、マイクロプロセッサ310はメモリチップ
ダイ312上での集積に適した唯一のCPUである。基本マイ
クロプロセッサ50にDRAMアレー311への近接を利用する
簡単な変更を加えることによってもマイクロプロセッサ
50のクロック速度を50%あるいはそれ以上増大させるこ
とができる。
DRAMダイ312上のマイクロプロセッサ310のコアは自動
系から周辺制御までの幅広いアプリケーションに必要な
速度と機能のほとんどを提供する。しかし、集積CPU 31
0/DRAM 311の考え方は多重プロセッサによる解決法によ
って非常に多量の計算を要する問題を解決する方法を大
きく変革する可能性を有するものである。CPU 310/DRAM
311の組合せはフォン・ノイマンの障害を多数のCPU/DR
AMチップ312に分散することによって排除する。マイク
ロプロセッサ310は多重処理を行うための特に良好な核
である。なぜなら、これはSDIターゲッティングアレー
を念頭に設計されており、プロセッサ間の効率的な通信
に対する備えがなされているためである。
従来の多重プロセッサの実施はCPUの能力を十分に生
かすことができないことに加えて、非常に高価であっ
た。多重プロセッサシステムは通常多数の基板レベルあ
るいはボックスレベルのコンピュータから構成される。
その結果、非常に多量のハードウエアとそれに対応する
配線、電力消費、および通信上の問題が発生するのが常
である。システムが相互接続されるまでに、インターフ
ェースを得るためだけのためにバス速度の50%もが使用
される。
さらに、多重プロセッサシステムのソフトウエアは数
が少ない。多重プロセッサシステムは、一つのCPUに多
くの仕事をさせ他はアイドル状態にするシステムソフト
ウエア中の不適切な負荷分担によって簡単に故障するこ
とがある。近年、システムソフトウエアは大きく進歩
し、UNIX V.4をも多重処理を支援するように改善するこ
とができる。DUAL SystemsやUNISOFTといったメーカー
の製品には68030型マイクロプロセッサシステム上で信
頼性のあるはたらきをするものもある。
マイクロプロセッサ310のアーキテクチャはインター
フェース上の摩擦のほとんどを解消する。これは最大64
個のCPU 130/RAM 311プロセッサはバッファやラッチを
用いず相互通信を行うことができるためである。チップ
312はそれぞれが約40MIPSの列速度を有する。これは、D
RAM 311をCPU 310の隣に配置することによってマイクロ
プロセッサ310の命令サイクルをマイクロプロセッサ50
の半分にすることができるためである。これらのチップ
312の64チップアレーは他の既存のいかなるコンピュー
タよりも強力である。このようなアレーは3×5カード
上に載り、価格はファックシミリ機より低く、小型テレ
ビと同じ電力を消費する。
価格対性能比の劇的な変化は常に既存のアプリケーシ
ョンに変化をもたらし、また新しいアプリケーションを
生み出す。共通総称並行処理アルゴリズムは重畳/高速
フーリエ変換(FFT)/パターン認識を処理する。集積
回路312を用いて可能な製品で興味深いものとしては、
高速読み取り機、リアルタイム音声認識、音声語翻訳、
リアルタイムロボットビジョン、顔から人間を識別する
製品、および自動車や航空機の衝突回避システムなどが
ある。
高密度テレビ(HDTV)画像を改善する、あるいはHDTV
情報をより小さな帯域幅に圧縮するためのリアルタイム
プロセッサは非常に実現の可能性の高いものである。HD
TVにおける負荷分担は非常に簡単である。色とフレーム
にしたがってタスクを分割するには6、9あるいは12の
プロセッサが必要となる。実際にはマイクロプロセッサ
310に一体化された4メガRAMが必要となる。
マイクロプロセッサ310は以下のような仕様である。
制御ライン 4−パワー/グラウンド 1−クロック 32−データI/O 4−システム制御 外部メモリ取り出し 外部メモリ取り出し 自動増分 X 外部メモリ取り出し 自動減分 Y 外部メモリ書き込み 外部メモリ書き込み 自動増分 X 外部メモリ書き込み 自動減分 Y 外部PROM取り出し すべてのXレジスタをロード すべてのYレジスタをロード すべてのPCレジスタをロード XとYの入れ替え 命令取り出し PCに追加 Xに追加 写像レジスタ書き込み 写像レジスタ読み出し レジスタ構成 マイクロプロセッサ310 CPU316コア カラムラッチ1(1024ビット)32×32MUX スタックポインタ(16ビット) カラムラッチ2(1024ビット)32×32MUX スタックポインタ(16ビット) プログラムカウンタ 32ビット X0レジスタ 32ビット(オンチップアクセスに対して
のみ起動) Y0レジスタ 32ビット(オンチップアクセスに対して
のみ起動) ループカウンタ 32ビット DMA CPU 314コア DMA プログラムカウンタ 24ビット 命令レジスタ 32ビット I/O およびRAM アドレスレジスタ 32ビット 転送サイズカウンタ 12ビット インターバルカウンタ 12ビット 基本チップ312のメモリ拡張を提供するために、イン
テリジェントDRAMを生成することができる。このチップ
は、プログラムカウンタ、XレジスタおよびYレジスタ
の三つのオンチップアドレスレジスタを備えることによ
って集積回路312との高速動作に対して最適化される。
その結果、インテリジェントDRAMにアクセスするために
はアドレスを必要とせず、総アクセスサイクルは10nsec
と短くすることができる。それぞれの拡張DRAMは三つの
レジスタのコピーを保持し、そのメモリアドレスを指定
するためのコードによって識別される。この三つのレジ
スタへの増分あるいは追加は実際にはメモリチップ上で
発生する。最大64のインテリジェントDRAM周辺装置によ
って、マルチプレクサやバッファの導入によって速度を
犠牲にすることなく大型システムの作成が可能となる。
マイクロプロセッサ310とマイクロプロセッサ50の間
にはある種の相異点があり、これはマイクロプロセッサ
310をDRAM 311と同じダイ312上に設けることに起因す
る。DRAM 311を一体化すると既存のオンチップDRAM 311
回路の活用を可能とするようなマイクロプロセッサ310
のアーキテクチャ上の変更が可能となる。列とカラムの
設計はメモリアーキテクチャに備わっている。DRAM 311
はまず1024ビットの列を選択し、それをカラムラッチに
記憶し、次にそれらのビットのうちの一つを読み出しあ
るいは書き込みすべきデータとして選択することによっ
てメモリアレー中のランダムなビットにアクセスする。
データのアクセスに要する時間は列アクセスとカラム
アクセスに分けられる。カラムラッチに記憶済みのデー
タの選択はランダムなビットの選択より少なくとも6倍
高速である。マイクロプロセッサ310は多数のカラムラ
ッチを作成し、それらをキャッシュおよびシフトレジス
タとして用いることによってこの高速性を活用する。新
しい情報の列を選択することはその結果得られる大きな
バス帯域幅によって1024ビットの読み出しおよび書き込
みを実行することと考えることができる。
1.マイクロプロセッサ50はその32ビットの命令レジスタ
108(図2および図4参照)を四つの8ビット命令のた
めのキャッシュとして取り扱う。DRAM 311はカラムビッ
トに対して1024ビットラッチを保持するため、マイクロ
プロセッサ310はこのカラムラッチを128の8ビット命令
のためのキャッシュとして取り扱う。したがって、ほと
んど常に次の命令がすでにキャッシュの中に存在してい
る。キャッシュ内の長いループもまた可能であり、マイ
クロプロセッサ50中の四つの命令ループより有用であ
る。
2.マイクロプロセッサ50はパラメータスタックとリター
ンスタック用に二つの16×32ビットディープレジスタア
レー74および134(図2)を用いる。マイクロプロセッ
サ310は二つの別の1024ビットカラムラッチを作成し
て、二つの32×32ビットアレーに等価なものを提供す
る。これはレジスタアレーの倍の速度でアクセスするこ
とができる。
3.マイクロプロセッサ50はビデオシフトレジスタへの入
出力に用いることのできるDMA能力を有する。マイクロ
プロセッサ310はさらに別の1024ビットカラムラッチ
を、CRT表示装置を直接駆動するための長いビデオシフ
トレジスタとして用いる。カラー表示に対しては、三つ
のオンチップシフトレジスタを用いることもできる。こ
れらのシフトレジスタは画素を最大100MHzで転送するこ
とができる。
4.マイクロプロセッサ50は外部の32ビットバスを介して
メモリにアクセスする。マイクロプロセッサ310のため
のメモリ311のほとんどは同じダイ312上にある。外部か
らより多くのメモリにアクセスするには8ビットバスを
用いて行う。その結果マイクロプロセッサ50に比べてダ
イ、パッケージ、および電力消費が小さくなる。
5.マイクロプロセッサ50はその動作電力の約3分の1を
I/Oピンとその関連のキャパシタンスの充電および放電
に用いる。マイクロプロセッサ50に接続されたDRAM150
(図8)はI/Oドライバ内でその電力のほとんどを消費
する。マイクロプロセッサ310システムの消費電力はマ
イクロプロセッサ50の約10分の1である。これはプロセ
ッサ310に隣接してDRAM 311を有することによって充電
および放電すべき外部キャパシタンスのほとんどが除去
されるためである。
6.多重処理とはこの解決法の速度を上げるために計算タ
スクを多数のプロセッサの間で分担することを意味す
る。多重処理の普及は、現在の個々のプロセッサの費
用、さらにプロセッサ間の通信能力上の限度から制約さ
れている。マイクロプロセッサ310は多重プロセッサの
有望な候補である。これはチップ312がメモリ付きの単
一のコンピュータであり、低コストと物理的なコンパク
トさが実現されているためである。
ビデオ出力を行うためにマイクロプロセッサ310に実
施されるシフトレジスタもまたプロセッサ間通信リンク
として構成することができる。INMOSトランスピュータ
は同様な戦略を意図したものであったが、速度ははるか
に低く、またマイクロプロセッサ310のカラムラッチア
ーキテクチャに備わっている性能上の利点を有していな
い。シリアル入出力は多くの多重プロセッサ構成におい
ては多数の隣合うプロセッサが通信を行うため不可欠で
ある。一つのキューブに六つのプロセッサがある。各プ
ロセッサは次のラインを用いて通信する。
DATA IN CLOCK IN READY FOR DATA DATA OUT DATA READY? CLOCK OUT 各プロセッサのオンチップDRAM 311を初期化するのに
特殊なスタートアップシーケンスが用いられる。
マイクロプロセッサ310のカラムラッチアーキテクチ
ャは隣合うプロセッサが内部レジスタあるいは他のチッ
プ312の命令キャッシュにさえ直接情報を送ることを可
能にする。この技術は既存のプロセッサには用いられて
いない。これは緊密に結合されたDRAMシステムにおいて
のみ性能を向上させるためである。
7.マイクロプロセッサ50のアーキテクチャは二種類のル
ープ構造を提供する。すなわち、LOOP−IF−DONEと、MI
CRO−LOOPである。前者はループアドレスへの入口点の
記述に8ビットから24ビットのオペランドを要する。後
者はループ全体を四つの命令待ち行列内で実行し、ルー
プ入口点はこの待ち行列中の第1の命令を意味する。こ
の待ち行列中のループは外部命令取り出しを行うことな
く動作し、最大で長いループ構成体の三倍の速度で実行
する。マイクロプロセッサ310はこのわずかな違いの二
つの構成対を保持する。マイクロプロセッサ310のマイ
クロループは、待ち行列の長さが1024ビットあるいは12
8の8ビット命令である点を除いてマイクロプロセッサ5
0の動作と同様に機能する。したがって、マイクロプロ
セッサ310のマイクロループは四つの8ビット命令マイ
クロプロセッサ50の待ち行列では不可能なジャンプ、分
岐、呼び出しおよび即時操作を含みうるものである。
マイクロプロセッサ50のマイクロループは簡単なブロ
ック移動と比較機能を実行できるだけである。より大き
なマイクロプロセッサ310の待ち行列はデジタル信号処
理あるいは浮動小数点アルゴリズムの全体がこの待ち行
列の中で高速でループすることを可能にする。
マイクロプロセッサ50は実行の再指令を行う次の四つ
の命令を提供する。
CALL BRANCH BRANCH−IF−ZERO LOOP−IF−NOT−DONE これらの命令は8、16、あるいは24ビットの長さの可
変長アドレスオペランドを取る。マイクロプロセッサ50
の次アドレスロジックはこの三つのオペランドを現在の
プログラムカウンタに加算あるいは減算することによっ
てこれらを同様に取り扱う。マイクロプロセッサ310に
ついては、16および24ビットオペランドはマイクロプロ
セッサ50の16および24ビットオペランドと同様に機能す
る。この8ビットクラスのオペランドはこの命令待ち行
列中で全体が動作するように反転される。したがって、
次のアドレス決定を速く行うことができる。これはアド
レスの32ビットではなく10ビットだけが関係するためで
ある。10ビット以降では桁上げも借りも発生しない。
8.マイクロプロセッサ310のCPU 316は狭いDRAMダイ312
上に載る。チップサイズを可能な限り小さくするため、
マイクロプロセッサ50のDMAプロセッサ72をより一般的
なDMAコントローラ314に置き換えた。DMAはマイクロプ
ロセッサ310に用いて次の機能を実行する。
CRTへのビデオ出力 多重プロセッサのシリアル通信 8ビットパラレル入出力 DMA コントローラ314はシリアル転送とパラレル転送
の両方を同時に維持することができる。以下のDMAの出
所および行先がマイクロプロセッサ310によって支援さ
れる。
三つの出所は別の1024ビットバッファと別の入出力ピ
ンを用いる。したがって、この三つはすべて干渉し合う
ことなく同時に活動状態になりうる。
マイクロプロセッサ310は、単一の多重プロセッサシ
リアルバッファあるいは各チャンネルのための別個の送
受信バッファのいずれかを用いて実施することができ、
これによって6個のプロセッサ間での同時双方向通信が
可能である。
図10と図11はマイクロプロセッサ50に用いられるPROM
DMAの詳細を示す。マイクロプロセッサ50の実行は最高
速のPROM以外のいかなるものより速い。PROMはマイクロ
プロセッサ50のシステムにおいてプログラムの部分ある
いはプログラム全体を記憶するのに用いられる。マイク
ロプロセッサ50は低コストの低速PROMから高速DRAMへの
実行のためのプログラムのローディングを可能とする電
源投入時の機能を提供する。この機能を実行するロジッ
クはDMAメモリコントローラ118の一部である。この動作
はDMAに近いが同一ではない。これは四つの8ビットバ
イトをマイクロプロセッサ50上にアセンブルし、次にDR
AM 150に書き込まなければならないためである。
マイクロプロセッサ50は三重多重化データおよびアド
レスバス350を介してDRAM 150と直接インターフェース
する。この三重多重化データおよびアドレスバス350はR
ASアドレス、CASアドレスおよびデータを搬送する。一
方、EPROM 260は非多重化バスによって読み出される。
したがって、マイクロプロセッサ50はデータおよびアド
レスラインの多重化を解きEPROMデータの8ビットを読
み出す特殊モードを有する。四つの8ビットバイトはこ
のようにして読み出される。多重化データバス350は再
びオンされ、DRAM 150にデータが書き込まれる。
マイクロプロセッサ50がRESET状態を検出すると、プ
ロセッサはメインCPU 70を停止させ、モードO(PROM L
OAD)命令をDMA CPU 72命令レジスタに送る。このDMA命
令はメモリコントローラにEPROM 260のデータをメモリ
の通常のアクセス時間の8倍で読み出すように指令す
る。50MHzのマイクロプロセッサ50を想定すると、これ
は320nsecのアクセス時間を意味する。この命令はまた
次のことを示す。
ロードすべきEPROM 260の選択アドレス、 転送すべき32ビットワードの数、 転送先のDRAM 150のアドレス、 一つの32ビットワードをEPROM 260からDRAM 150に転
送する動作のシーケンスは次の通りである。
1. RASが352でローになり、上位アドレスビットからの
EPROM 260選択情報をラッチする。
2. (通常DRAM CASアドレスと呼ばれるものからなる)
12のアドレスビットと2バイトの選択ビットがEPROM260
のアドレスピンに行くバス350に乗せられる。これらの
信号はEPROM 260からのデータがマイクロプロセッサ50
に読み込まれるまでライン上に残る。第1のバイトにつ
いては、バイト選択ビットは2値的には00である。
3. CASが354でローになり、EPROM 260のデータを外部
アドレス/データバス350の下位の8ビット上にイネー
ブルする。このサイクルのこの部分においては外部アド
レス/データバス350の下位の8ビットは入力として機
能するが、バスの残りの部分は依然として出力として働
いていることを認識することが重要である。
4. マイクロプロセッサ50はこれらの八つの最下位ビッ
トを内部的にラッチし、それらを8ビット左にシフトし
てそれらを次の有意バイト位置にシフトする。
5. バイトアドレス01でステップ2、3および4が繰り
返される。ラッチし、それらを8ビット左にシフトし 6. バイトアドレス10でステップ2、3および4が繰り
返される。ラッチし、それらを8ビット左にシフトし 7. バイトアドレス11でステップ2、3および4が繰り
返される。
8. CASが356でハイになり、EPROM 260をデータバスか
ら取り外す。
9. CASが358でハイになり、EPROM 260をアクセスの終
了を示す。
10. RASが360でローになり、上位アドレスビットから
のDRAM選択情報をラッチする。同時に、RASアドレスビ
ットがDRAM 150にラッチされる。DRAM 150が選択され
る。
11. CASが362でローになり、DRAM 150 CASアドレスを
ラッチする。
12. マイクロプロセッサ50が前にラッチされたEPROM 2
60の32ビットデータを外部アドレス/データバス350に
乗せる。Wが364でローになり、この32ビットをDRAM 15
0に書き込む。
13. Wが366でハイになる。CASが368でハイになる。こ
の過程が次のワードに対して続けられる。
図12はマイクロプロセッサ50のメモリコントローラ11
8の詳細を示す。動作中には、バス要求はそれらがサー
ビスされるまで存在し続ける。CPU 70の要求には370に
おいて、1:パラメータスタック、2:リターンスタック、
3:データ取り出し、4:命令取り出しの順に優先順位が付
けられる。その結果得られるCPU要求信号およびDMA要求
信号はバス要求として374でバス許可信号を提供するバ
ス制御372に供給される。内部アドレスバス136とDMAカ
ウンタ376はマルチプレクサ378に入力を提供する。列ア
ドレスとカラムアドレスのいずれかがマルチプレクサ37
8からの出力である多重化されたアドレスバス380への出
力として提供される。多重化アドレスバス380と内部デ
ータバス90はそれぞれマルチプレクサ382へのアドレス
入力とデータ入力を提供する。シフトレジスタ384はラ
イン390および392上にマルチプレクサ386への列アドレ
スストローブ(RAS)1と二つの制御信号を、またマル
チプレクサ388へのカラムアドレスストローブ(CAS)1
と二つの制御信号を供給する。シフトレジスタ384もま
た出力イネーブル(OE)信号と書き込み(W)信号をラ
イン394および396上に、また制御信号をマルチプレクサ
382へのライン398上に供給する。シフトレジスタ384は
ライン400上のRUN信号を受取り、メモリサイクルを発生
し、アクセスが完了したときライン402上にMEMORY READ
Y信号を供給する。
スタック/レジスタアーキテクチャ ほとんどのマイクロプロセッサは変数の一時記憶用に
オンチップレジスタを用いる。オンチップレジスタはオ
フチップRAMより高速にデータにアクセスする。一時記
憶にオンチップ後入れ先出しスタックを用いるマイクロ
プロセッサはごくわずかである。
スタックは出所レジスタと行先レジス他の選択を不要
とするため、オンチップレジスタに比べ高速に動作する
という利点を有する。(数理動作あるいは論理動作には
常に上の二つのスタック項目が出所として、またスタッ
クの上部が行先として用いられる。)このスタックの欠
点はある種の動作が繁雑になることである。特に、ある
種のコンパイラアクティビティでは効率上オンチップレ
ジスタを必要とする。
図13に示すように、マイクロプロセッサ50はオンチッ
プレジスタ134とスタック74の両方を提供し、この両者
の利点を有する。
利点: 1. スタックの演算とロジックの速度は等価なレジスタ
だけを有する機械でえられる速度の二倍である。ほとん
どのプログラマーおよび最適化コンパイラはこの機能を
利用することができる。
2. 16のレジスタをローカル変数の記憶に用いることが
でき、ローカル変数は計算を行うためにスタックに転送
することができる。変数のアクセス速度は厳密なスタッ
ク機械で可能な速度の三倍から四倍である。
スタック74/レジスタ134の組合せアーキテクチャはこ
れまで最適化コンパイラおよび転送と数理/ロジック命
令の混合をコンピュータの設計者たちが的確に理解して
いなかったために用いられなかった。
適応メモリコントローラ マイクロプロセッサは小さなメモリ構成あるいは大き
なメモリ構成で機能するように設計しなければならな
い。データライン、アドレスラインおよび制御ラインに
加えられるメモリ負荷が増えるにつれて、信号のスイッ
チング速度は低下する。マイクロプロセッサ50はアドレ
ス/データバスを三様に多重化し、したがって位相間の
タイミングが重要である。この問題の対する従来のアプ
ローチは、バスの位相の間に大きな時間マージンを設け
てシステムがそれに接続された少数あるいは多数のメモ
リチップとともに機能するようにするというものであ
る。この場合速度を50%も犠牲にしなければならない。
図14に示すように、マイクロプロセッサ50はフィード
バック技術を用いて、プロセッサがメモリバスのタイミ
ングを小さな負荷に対しては速く、大きな負荷に対して
は遅く調整することを可能とする。マイクロプロセッサ
50からの出力イネーブル(OE)ライン152は回路基板上
のすべてのメモリ150に接続されている。マイクロプロ
セッサ50への出力イネーブルライン152上のローディン
グは接続されたメモリ150の数に直接関係している。OE1
52が読み出しの後どれだけ急速にハイになるかをモニタ
ーすることによって、マイクロプロセッサ50はいつデー
タホールド時間が満足されたかを判定し、バス上に次の
アドレスを置く。
OEライン152のレベルはマイクロプロセッサのメモリ
コントローラへのライン上に内部READY信号を発生するC
MOS入力バッファ410によってモニターされる。図15のグ
ラフのカーブ414および416は負荷の軽いメモリシステム
と負荷の大きいメモリシステムに見られる立ち上がり時
間の相違を示す。OEライン152がREADY信号を発生する所
定のレベルに達したとき、ドライバ418はOEライン152上
に出力イネーブル信号を発生する。
命令キャッシュ中のスキップ マイクロプロセッサ50は各メモリサイクルで四つの8
ビット命令を取り出し、図16に示すようにそれらを32ビ
ット命令レジスタ108に記憶する。あるクラスの“テス
トおよびスキップ”命令は四つの命令キャッシュ内で非
常に高速なジャンプ動作を非常に急速に実行することが
できる。
スキップ条件: always ACCはゼロではない ACCは負 桁上げフラグ=論理1 never ACC=ゼロ ACCは正 桁上げフラグ=論理0 スキップ命令の位置は32ビット命令レジスタ108中の
四つのバイト位置のどれであってもよい。テストが成功
である場合、スキップは命令レジスタ108中の残りの一
つ、二つあるいは三つの8ビット命令を飛び越え、次の
四つの命令のグループのレジスタ108へのローディング
を発生させる。図示するように、このスキップ動作はラ
イン422上で2ビットマイクロ命令カウンタ180をゼロに
リセットし、同時に次の命令グループをレジスタ108に
ラッチすることによって実施することができる。命令レ
ジスタ中のスキップに続くいかなる命令も新しい命令に
よって重ね書きされ実行されない。
スキップの利点は最適化コンパイラおよびスマートプ
ログラマがより長い条件つきのジャンプ命令の代わりに
それを頻繁に用いることができるという点である。スキ
ップはまたループがカウントダウンするとき、あるいは
スキップが次の命令グループにジャンプするとき出るマ
イクロループを可能とする。その結果非常に高速なコー
ドが得られる。
(PDP−8やData GeneralのNOVAといった)他の機械
は単一の命令をスキップする能力を提供する。マイクロ
プロセッサ50は最大で三つの命令をスキップする能力を
提供する。
命令キャッシュ中のマイクロループ マイクロプロセッサ50は命令レジスタ108中の一つか
ら三つの命令を繰り返し実行するためのマイクロループ
命令を提供する。このマイクロループ命令は内部データ
バス90に接続されたループカウンタ92(図2)と連動し
て機能する。マイクロループを実行するために、プログ
ラムがループカウンタ92中の計数値を記憶する。マイク
ロループは命令レジスタ108の第1、第2、第3あるい
は最終バイト420に入れることができる。第1の位置に
入れた場合、実行によってループカウンタ92に記憶され
た数にマシンサイクルを掛けたものに等しい遅延が作成
されるだけである。第2、第3あるいは最終バイト420
に入れられた場合、マイクロループ命令が実行されると
ループ計数値がゼロであるかどうかがテストされる。ゼ
ロである場合、次の命令が継続して実行される。ゼロで
ない場合、ループカウンタ92が減分され、2ビットマイ
クロ命令カウンタがクリアされ、命令レジスタ中の前の
命令が再度実行される。
マイクロループはブロック移動と探索動作に有用であ
る。命令レジスタ108の外への完全なブロック移動を実
行することによって、移動速度が二倍になる。これはメ
モリサイクルが命令取り出しと共用されるのではなく、
そのすべてが移動に用いられるためである。このような
マイクロループのハードウエアによる実施態様は、相当
する機能を有する従来のソフトウエアによる実施よりは
るかに高速である。
最適CPUクロックスキーム 高速マイクロプロセッサの設計者は広い温度範囲、広
い電圧揺動範囲、および半導体加工の大きなばらつきに
対しても動作する製品を作らなければならない。温度、
電圧および加工はすべてトランジスタの伝搬遅延に影響
する。従来、CPUの設計はこの三つのパラメータが悪い
場合に回路が定格クロック速度で動作するように成され
る。その結果、設計は論理上の最高性能の半分の速度で
クロックしなければならないようなものになり、悪い条
件でも適切に動作する。
マイクロプロセッサ50は図17−図19に示す技術を用い
てシステムクロックとそれに要する位相を発生する。ク
ロック回路430は処理性能をテストするのに用いられる
周知の“リングオシレータ”である。クロックはマイク
ロプロセッサ50の他の部分と同じシリコンチップ上に製
作される。
リングオシレータの周波数は温度、電圧および加工の
パラメータによって決まる。室温では周波数は100MHz近
辺である。摂氏70度では速度は50MHzである。リングオ
シレータ430はシステムクロックとして有用であり、そ
の段431は図19に示す位相0−位相3の出力433を生成す
る。これはその性能が同じシリコンダイ上の他のすべて
のトランジスタに同じ影響を及ぼすパラメータを反映す
るためである。リングオシレータ430からシステムタイ
ミングを発生することによって、CPU 70は常に可能な最
大周波数で動作するが速くなりすぎることはない。たと
えば、あるダイの加工が不良でトランジスタ速度が低い
場合、マイクロプロセッサ50のラッチとゲートは通常よ
り低速で動作する。マイクロプロセッサ50のリングオシ
レータクロック430はラッチやゲートと同じダイ上の同
じトランジスタから作られるため、これもまた低速で動
作し(低い周波数で発振する)、チップのロジックの残
りが適正に動作することを可能とする補償を提供する。
非同期/同期CPU ほとんどのマイクロプロセッサはすべてのシステムタ
イミングを一つのクロックから発生する。この場合の問
題点は、システムの異なる部分がすべての動作の速度を
低下させる可能性があることである。マイクロプロセッ
サ50は図17に示すようなデュアルクロックスキームを提
供し、CPU 70はメモリコントローラ118(図2)の一部
をなすI/Oインターフェース432と非同期に動作し、I/O
インターフェース432はメモリとI/O装置の外界と同期し
て動作する。CPU 70は適応リングカウンタクロック430
を用いて可能な最高の速度で動作する。速度は温度、電
圧および加工に応じて四倍に変化する。ビデオ表示更新
やディスクドライブ読み出しおよび書き込み等の動作に
ついては外界はマイクロプロセッサ50に同期していなけ
ればならない。この同期はI/Oインターフェース432によ
って行われ、I/Oインターフェース432の速度は従来の水
晶クロック434によって制御される。インターフェース4
32はマイクロプロセッサ50からのメモリアクセス要求を
処理し、I/Oデータの存在を確認する。マイクロプロセ
ッサ50は一つのメモリサイクル中で最大で四つの命令を
取り出し、別のメモリアクセスを要求する前に非常に有
用な作業を行うことができる。CPU 70の可変速度をI/O
インターフェース432の固定速度から減結合することに
よって、それぞれが最適な性能を達成することができ
る。CPU 70とインターフェース432の再結合はライン436
上のハンドシェーク信号によって行われ、データ/アド
レスはバス90、136を通過する。
DRAMチップに埋め込まれた非同期/同期CPU DRAM 311とCPU 314(図9)が同じダイに配置される
とき、システム性能はさらに増強される。トランジスタ
の近接性はDRAM 311とCPU 314のパラメータが互いに密
接に追従しあうことを意味する。室温では、CPU 314が1
00MHzで動作するだけではなく、DRAM 311はそれに対応
するに十分な速度でアクセスする。I/Oインターフェー
ス432によって行われる同期はDMAとI/Oポートの読み出
しおよび書き込みのためのものである。システムによっ
ては(たとえば計算機のように)I/O同期を全く必要と
しないものもあり、I/Oクロックはリングカウンタクロ
ックに結合される。
可変幅オペランド 多くのマイクロプロセッサは可変幅オペランドを提供
する。マイクロプロセッサ50は同じ演算コードを用いて
8、16、あるいは24ビットのオペランドを処理する。図
20には32ビット命令レジスタ108と8ビット命令を選択
する2ビットマイクロ命令レジスタ180を示す。二つの
クラスのマイクロプロセッサ50の命令は8ビットより大
きい場合がある。すなわち、ジャンプクラスと即時クラ
スである。ジャンプあるいは即時演算コードは8ビット
であるが、オペランドの長さは8、16あるいは24ビット
である場合がある。これが起こりうるのは、オペランド
は命令レジスタ中で右寄せされなければならないためで
ある。これはオペランドの最下位ビットが常に命令レジ
スタの最下位ビットに位置することを意味する。マイク
ロ命令カウンタ180は実行すべき8ビット命令を選択す
る。ジャンプあるいは即時命令が復号されると、2ビッ
トマイクロ命令カウンタの状態が必要な8、16、あるい
は24ビットのオペランドをデータバスのアドレス上に選
択する。選択されなかった8ビットバイトには復号器44
0とゲート442の動作によってゼロがロードされる。この
技術の利点は他のマイクロプロセッサ中の異なるオペラ
ンドサイズを指定するのに必要な演算コードの数を節約
できることである。
三倍長スタックキャッシュ コンピュータの性能はシステムメモリの帯域幅に直接
関係している。メモリが高速であるほどコンピュータも
高速である。高速メモリは高価であり、したがって少量
の高速メモリをそれが必要とされるメモリアドレスに移
動させる技術が開発されている。多量の低速メモリが高
速メモリによって恒常的に更新され、それによって大き
な高速メモリアレーの外観を呈している。この技術の一
般的な実施態様は高速メモリキャッシュとして知られて
いる。このキャッシュはメモリアクセスの衝撃を和らげ
る高速で動作するショックアブソーバと考えることがで
きる。ショックを吸収できる以上のメモリが必要とされ
るとき、これは底をつき低速メモリがアクセスされる。
大半のメモリ動作はこのショックアブソーバ自体で処理
することができる。
マイクロプロセッサ50のアーキテクチャは上部の二つ
のスタック位置76および78に直接結合されたALU 80(図
2)を有する。したがってスタック74のアクセス時間は
プロセッサの実行速度に直接影響を及ぼす。マイクロプ
ロセッサ50のスタックアーキテクチャは図21に示す三倍
長キャッシュ技術に特に適しており、この三倍長キャッ
シュ技術はオンチップラッチ450の速度で動作する大き
なスタックメモリの外観を呈する。ラッチ450はこのチ
ップ上に設けられる最高速の形態のメモリ素子であり、
わずか3nsecでデータを送る。しかし、ラッチ450は多数
のトランジスタを必要とする。オンチップRAM 452はラ
ッチより少ないトランジスタしか要しないが、速度は5
分の1である(15nsecアクセス)。オフチップRAM 150
は最も低速の記憶装置である。マイクロプロセッサ50は
スタックメモリの階層を三つの相互接続されたスタック
450、452および454として組織する。ラッチスタック450
は最高速であり、最も頻繁に用いられる。オンチップRA
Mスタック452がその次である。オフチップRAMスタック4
54が最低速である。スタック変調はスタックの有効アク
セス時間を決定する。一群のスタック動作が決してスタ
ック上の四つ以上の連続する項目をプッシュもプルもし
ない場合、動作は3nsecのラッチスタック内ですべて行
われる。四つのラッチ456がすべていっぱいになったと
き、ラッチスタック450の下部にあるデータはオンチッ
プRAMスタック452の上部に書き込まれる。オンチップRA
Mスタック452中の16の位置458がいっぱいのとき、オン
チップRAMスタック452の下部にあるデータはオフチップ
RAMスタック454の上部に書き込まれる。いっぱいのスタ
ック450からデータを取り出すとき、ラッチスタックポ
インタ462からのスタック空きライン460がオンチップRA
Mスタック452からのデータを転送する前に四回の取り出
しが行われる。より低速のオンチップRAMアクセスを行
う前にラッチスタック450が空になるのを待つことによ
って、ラッチ456の高い有効速度がプロセッサに利用可
能となる。オンチップRAMスタック452とオフチップRAM
スタック454に同じ方法が用いられる。
多項式発生命令 多項式はエラー修正、暗号化、データ圧縮、およびフ
ラクタルの発生に有用である。多項式は一連のシフトお
よび排他的論理和動作によって発生する。従来技術では
この目的のために特殊なチップが設けられる。
マイクロプロセッサ50はALU 80の動作の態様を少し変
更することによって外部ハードウエアを用いることなく
高速で多項式を発生することができる。図21に示すよう
に、多項式は“順序”(フィードバック項としても知ら
れる)をCレジスタ470にロードすることによって発生
する。値31(32の繰り返しが起こる)がダウンカウンタ
427にロードされる。レジスタ474にゼロがロードされ
る。レジスタ476には開始多項式値がロードされる。多
項式命令が実行されると、Cレジスタ470がBレジスタ4
76の最下位ビットが1である場合、Aレジスタ474で排
他的論理和を取られる。あるいは、Aレジスタ474の内
容が変更されずにALU 80を通過する。このAとBの組合
せは次にシフタ478と480で右シフトされる(2で割られ
る)。この動作が指定された繰り返し数だけ自動的に繰
り返され、その結果得られる多項式がAレジスタ474に
残る。
高速乗算 ほとんどのマイクロプロセッサは16×16あるいは32×
32の乗算命令を提供する。乗算は順次1ビットあたり1
シフト/加算を要する、あるいは32ビットのデータに対
して32サイクルを要する。マイクロプロセッサ50は少な
いサイクル数を用いて小さな数による乗算を可能とする
高速乗算を提供する。図23はこの高速アルゴリズムの実
施に用いるロジックを示す。乗算を行うには、乗数のサ
イズ−1がダウンカウンタ472に入れられる。4ビット
の乗数に対しては数3がダウンカウンタ472に記憶され
る。Aレジスタ474にゼロがロードされる。この乗数は
ビット反転してBレジスタ476に書き込まれる。たとえ
ば、ビット反転された5(2値では0101)がBに1010と
して書き込まれる。被乗数がCレジスタ470に書き込ま
れる。高速乗算命令を実行すると、計数が終了したとき
Aレジスタ474にその結果が残る。この高速乗算命令は
多くのアプリケーションにおいて一つの数をそれよりは
るかに小さい数でスケーリングするという点で重要であ
る。32×32ビットの乗算と32×4ビットの乗算の間の速
度の差は8倍である。乗数の最下位ビットが“1"である
場合、Aレジスタ474とCレジスタ470の内容が加算され
る。乗数の最下位ビットが“0"である場合、Aレジスタ
474の内容が変更されずにALU 80を通過する。ALU 80の
出力は繰り返しのたびにシフタ482によって左シフトさ
れる。Bレジスタ476の内容は繰り返しのたびにシフト4
80によって右シフトされる。
命令実行の考え方 マイクロプロセッサ50は速度が重要である領域のほと
んどにおいて高速Dラッチを用いている。低速のオンチ
ップRAMは二次記憶装置として用いられている。
マイクロプロセッサ50の命令実行の考え方は次のよう
な速度の階層を作成することにある。
ロジックおよびDラッチ転送 1サイクル 20nsec 計算 2サイクル 40nsec 取り出し/記憶オンチップRAM 2サイクル 40nsec 現在のRASページにおける 取り出し/記憶 4サイクル 80nsec RASサイクルでの 取り出し/記憶 11サイクル 220nsec 50MHzクロックでは、多くの動作を20nsecで行うこと
ができ、他のほとんどすべての動作を40nsecで行うこと
ができる。
速度を最大化するために、プロセッサ設計におけるあ
る種の技術が用いられた。それには次のものが含まれ
る。
アドレスに関する算術演算の排除、 1メモリサイクルあたり最大四つの命令取り出し、 パイプラインを用いない命令復号、 必要となる前に結果を発生すること、 3レベルのスタックキャッシングの使用 パイプラインの考え方 コンピュータ命令は通常たとえば取り出し、復号、レ
ジスタ読み出し、実行、および記憶というような順次の
断片に細分化される。各断片には一つのマシンサイクル
を要する。大半の低減命令セットコンピュータ(RISC)
チップにおいて、命令は3サイクルから6サイクルを要
する。
RISC命令は非常に並列的である。たとえば、SPARC(S
un ComputerのRISCチップ)の70の異なる命令はそれぞ
れが5サイクルを有する。“パイプライニング”と呼ば
れる技術を用いて、連続する命令の異なる段階を重ねる
ことができる。
パイプライニングを理解するために5軒の家屋を建て
る場合を考えてみる。それぞれの家屋には基礎工事、か
まち組、建て入れおよび配線、屋根ぶき、および内装工
事を順次行わなければならない。それぞれの工事に一週
間かかるものとする。1軒の家屋を建てるには5週間必
要である。
しかし、各部分全体を作りたい場合はどうであろう
か。それぞれの作業に従事する作業員グループは一つず
つであるが、基礎工事を行うグループが1軒目を終えた
ときすぐに彼らに2軒目に着工させることができる、他
も同様である。5週間後には1軒目が完成しており、さ
らに5軒分の基礎工事がすでに終わっている。かまち
組、建て入れおよび配線、屋根ぶき、内装工事を行う各
作業員をすべて作業させていた場合、5週間目以降は毎
週1軒ずつ新しい家が完成することになる。
SPARC等のRSICチップはこのような方法で一つの命令
を一つのマシンサイクル中に実行する。実際には、RISC
チップは各マシンサイクルで五つの命令のうちの5分の
1を実行する。そしてこの五つの命令が順に行われる場
合、それぞれのマシンサイクルで一つの命令が完了す
る。
パイプラインの問題点はパイプを命令でいっぱいにし
ておけるかどうかということである。分岐や呼び出しと
いったシーケンス外の命令が発生するたびに、パイプを
次のシーケンスで再度満たさなければならない。この結
果生じるパイプラインを再充填するための無駄時間は、
IF/THEN/ELSEの文あるいはサブルーチンが多数発生する
場合にはかなり大きくなる。
パイプライン法 マイクロプロセッサ50はこのようなパイプラインは持
っていない。速度を上げるためにこのマイクロプロセッ
サので用いている方法は、命令取り出しを前に取り出さ
れた命令の実行に重ねて行うというものである。これに
よって命令(最も一般的なもの)の半分以上が20nsecの
単一のマシンサイクル中に完全に実行される。これが可
能なのは次の理由による。
1. 命令復号は2.5nsecで終了する。
2. 増分/減分された値および他の数値はそれらが必要
になる前に計算され、その実行にはラッチング信号を要
するのみである。
3. 低速のメモリは4nsecでアクセスする高速Dラッチ
による高速動作から隠されている。
チップの設計がより複雑であるとき、このマイクロプ
ロセッサには問題がある。このチップのユーザーにとっ
ての利点はパイプラインの停止が起こりえないことから
最終的なスループットがより高速になることである。使
用可能性フラグビットを用いたパイプラインの同期やそ
の他の同様なパイプライン処理はこのマイクロプロセッ
サには不要である。
たとえば、RISCマシンの中には状態ビットをテストす
る命令が前の命令によてセットされたフラグがテスト可
能になるまで最大で4サイクル待たなければならないも
のもある。ハードウエアおよびソフトウエアデバッギン
グもいくぶん簡単である。それはユーザーがパイプ中で
五つの命令を同時に見る必要がないためである。
重複する命令取り出し/実行 マイクロプロセッサ50が実行する処理手順の中で再低
速のものはメモリへのアクセスである。メモリはデータ
が読み出されるか書き込まれるときにアクセスされる。
メモリはまた命令が取り出されるとき読み出される。マ
イクロプロセッサ50は次の命令の取り出しを前に取り出
された命令の実行の背後に隠すことができる。マイクロ
プロセッサ50は命令を4バイトの命令グループとして取
り出す。一つの命令グループは一つから四つの命令を含
むことができる。命令グループの実行に要する時間量は
簡単な命令の場合の4サイクルから乗算の場合の64サイ
クルまでの範囲に及ぶ。
新しい命令グループが取り出されると、マイクロプロ
セッサの命令復号器がその四つのバイトすべての最上位
ビットを見る。命令の最上位ビットがメモリアクセスが
必要であるかどうかを決定する。例えば、呼び出し、取
り出し、および記憶はすべてメモリアクセスの実行を必
要とする。四つのバイトすべてが非ゼロの最上位ビット
を有する場合、マイクロプロセッサは次の4バイト命令
グループのメモリ取り出しを開始する。グループ中の最
後の命令の実行が終了すると、次の4バイトの命令グル
ープが実行可能であり、データバス上で待機しており、
命令レジスタにラッチされるのを待つばかりとなってい
る。この4バイトの命令グループの実行に四つ以上のサ
イクルを要し、次の順次のアクセスがカラムアドレスス
トローブ(CAS)サイクルであった場合、この命令取り
出しは完全に実行と重複している。
内部アーキテクチャ マイクロプロセッサ50のアーキテクチャは以下のもの
からなる。
ループカウンタ(32ビット、2で増分可能) テストおよびループ命令のクラスで使用。
Xレジスタ(32ビット、4で増分あるいは減分可能) RAM位置の指示に使用。
プログラムカウンタ(32ビット、4で増分) RAM中の4バイト命令グループ。
命令レジスタ(32ビット) 4バイトの命令グループが復号あるいは実行されてい
る間それをホールドする。
*数理および論理演算にはオペランドとしてトップ項目
およびトップの次のパラメータスタック項目を用いる。
その結果はパラメータスタック上にプッシュされる。
*サブルーチンからのリターンアドレスがリターンスタ
ックに載せられる。YレジスタはRAM位置へのポインタ
として用いられる。Yレジスタはリターンスタックのト
ップ項目であるため、インデックスのネスティングは簡
単である。
モード−モードおよび状態ビット付きレジスタ モード−ビット: −“1"の場合メモリアクセスを8だけ減速する。
“0"の場合全速で実行。(低速EPROMへのアクセス用
に設けられる。) −“1"の場合システムクロックを1023で割って電力消費
を低減する。“0"の場合全速で実行。(このビットがセ
ットされている場合オンチップカウンタは減速する。) −外部割込み1をイネーブルする。
−外部割込み2をイネーブルする。
−外部割込み3をイネーブルする。
−外部割込み4をイネーブルする。
−外部割込み5をイネーブルする。
−外部割込み6をイネーブルする。
−外部割込み7をイネーブルする。
オンチップメモリ位置: モード−ビット DMA−ポインタ DMA−カウンタ スタック−ポインタ −パラメータスタックへのポイ
ンタ。
スタック−深さ−オンチップパラメータスタックの深
さ。
Rスタック−ポインタ−リターンスタックへのポイン
タ。
Rスタック−深さ−オンチップリターンスタックの深
さ。
アドレス指定モード高ポイント データバスの幅は32ビットである。メモリ取り出しお
よびメモリ記憶はすべて32ビットである。メモリバスア
ドレスは30ビットである。最下位の2ビットはある種の
アドレス指定モードにおいて4バイトのうちの1バイト
の選択に用いられる。プログラムカウンタ、Xレジス
タ、およびYレジスタはDラッチとして実施され、その
出力はメモリアドレスバスとバス増分器/減分器に行
く。これらのレジスタのうちの一つの増分は迅速に発生
可能である。これは増分された値がすでに増分/減分ロ
ジックを介してリップルされており、ラッチにクラック
するだけでよい。分岐および呼び出しは32ビットワード
境界で行われる。
命令セット 32ビット命令フォーマット 32ビット命令はCALL、BRANCH、BRANCH−IF−ZERO、LO
OP−IF−NOT−DONEである。これらの命令は有効アドレ
スの計算を必要とする。多くのコンピュータにおいて、
有効アドレスは現在のプログラムカウンタに対してオペ
ランドを加算あるいは減算することによって計算され
る。この数理演算を行うには4から7のマシンサイクル
を要し、マシンの実行を確実に停滞させてしまう。この
マイクロプロセッサの方法は必要な数理演算をアセンブ
ル時あるいはリンキング時に実行しまたランタイムにお
いてはるかに簡単な“次のページへの増分”あるいは
“前のページへの減分”動作を行う。その結果、このマ
イクロプロセッサは一つのサイクル中に実行を分岐す
る。
24ビットオペランド形式: 24ビットオペランドで、現在のページはプログラムカ
ウンタの上位6ビットによって定義される。
16ビットオペランド形式: QQQQQQQQ −WWWWWW XX −YYYYYYYY −YYYYYYYY 16ビットオペランドで、現在のページはプログラムカ
ウンタの上位14ビットによって定義される。
8ビットオペランド形式: QQQQQQQQ −QQQQQQQQ −WWWWWW XX −YYYYYYYY 8ビットオペランドで、現在のページはプログラムカ
ウンタの上位22ビットによって定義される。
QQQQQQQQ−任意の8ビット命令 WWWWWW −命令演算コード XX−アドレスビットの使用方法を選択: 00 −すべての上位ビットをゼロにする(ページゼ
ロアドレス指定) 01 −上位ビットをを増分する(次のページを使
用) 10 −上位ビットを減分する(前のページを使用) 11 −上位ビットを変更しない(現在のページを使
用) YYYYYYYY−アドレスオペランドフィールド。このフィー
ルドは常に2ビット左シフトされ(バイトアドレスでは
なくワードを発生し)、プログラムカウンタにロードさ
れる。マイクロプロセッサ命令復号器はこの四つのバイ
ト内の命令演算コードの位置によってこのオペランドフ
ィールドの幅を計算する。
コンパイラあるいはアセンブラは通常所望のアドレス
に到達するのに必要な最短のオペランドを用い、先行バ
イトが他の命令をホールドするのに用いることができる
ようにしている。有効アドレスは次のものを組み合わせ
ることによって計算される。
現在のプログラムカウンタ、 命令中の8、16、あるいは24ビットアドレスオペラン
ド、四つの可能なアドレス指定モードのうちの一つを用
いる。
有効アドレス計算の例 例1: バイト1および2の“QQQQQQQQ"は呼び出し命令の前
に二つの他の命令の実行をホールドすることのできる4
バイトメモリ取り出し中のスペースを示す。バイト3は
(11ビットで示される)現在のページ内の呼び出し命令
(000000)を示す。バイト4は16進数98がプログラムカ
ウンタのビット2からビット10に入れられることを示
す。(呼び出しあるいは分岐は常にワード境界に向か
い、したがって二つの最下位ビットは常にゼロにセット
される。)この命令の効果は現在のページのワード位置
16進数98においてサブルーチンを呼び出すことである。
プログラムカウンタの上位22ビットは現在のページを定
義し、変更されない。
例2: プログラムカウンタが16進数00000156であったと仮定
すると、これは2種で表すと次の通りである。
00000000 00000000 00000001 01010110 =古いプ
ログラムカウンタ バイト1は分岐命令の演算コード(000001)を示し、ま
た“01"は次のページの選択を表す。バイト2、3、お
よび4はアドレスオペランドである。これらの24ビット
は左に二つシフトされ、ワードアドレスを定義する。16
進数0156を左に二つシフトすると16進数0558になる。こ
れは24ビットオペランド命令であるため、プログラムカ
ウンタの上位6ビットは現在のページを定義する。これ
らの6ビットは増分されて次のページを選択する。この
命令を実行すると、プログラムカウンタに16進数0400 0
558がロードされる。これは2値で表すと次の通りであ
る。
00000100 00000000 00000101 01011000=新しいプ
ログラムカウンタ 命令 CALL−LONG 0000 00XX −YYYYYYYY−YYYYYYYY−YYYYYYYY プログラムカウンタに指定された有効ワードアドレス
をロードする。現在のPC内容をリターンスタック上にプ
ッシュする。
他の効果:桁あげあるいはモード、効果なし。オンチ
ップリターンスタックがいっぱいである場合、リターン
スタックが外部メモリサイクルを強制する。
BRANCH 0000 01XX −YYYYYYYY−YYYYYYYY−YYYYYYYY プログラムカウンタに指定された有効ワードアドレス
をロードする。
他の効果:なし BRANCH−IF−ZERO 0000 10XX −YYYYYYYY−YYYYYYYY−YYYYYYYY パラメータスタック上のトップ値をテストする。この
値がゼロに等しいとき、プログラムカウンタに指定され
た有効ワードアドレスをロードする。トップ値がゼロに
等しくないとき、プログラムカウンタを増分し、次の命
令を取り出し実行する。
他の効果:なし LOOP−IF−NOT−DONE 0000 11YY−(XXXX XXXX)−(XXXX XXXX)−(XXXX XXXX) ループカウンタがゼロでない場合、プログラムカウン
タに指定された有効ワードアドレスをロードする。ルー
プカウンタがゼロである場合、ループカウンタを減分
し、プログラムカウンタを増分し、次の命令を取り出し
実行する。
他の効果:なし 8ビット命令の考え方 マイクロプロセッサ50中の作業のほとんどは8ビット
命令によって行われる。このマイクロプロセッサで8ビ
ット命令が可能であるのは、暗示スタックアドレス指定
を多く用いているためである。32ビットアーキテクチャ
の多くは実行すべき動作の指定に8ビットを用いるが、
二つの出所と一つの行先を指定するには別の24ビットを
用いる。
数理演算および論理演算に関しては、マイクロプロセ
ッサ50は出所オペランドをトップスタック項目および次
のスタック項目として指定することによって、スタック
に固有の利点を生かしている。数理演算および論理演算
が行われ、オペランドがスタックから取り出され、結果
がスタックに戻される。この結果命令ビットおよびレジ
スタを非常に有効に活用することができる。このような
状況がHewlett Packardの計算機(これはスタックを用
いる)とスタックを用いないTexas Instrumentの計算機
の間に存在する。HP製品での同じ動作をするとTIの場合
のキーストロークの1/2か1/3のキーストロークしか要し
ない。
8ビット命令を利用できることで、さらに別のアーキ
テクチャ上の技術革新が可能となる。すなわち、単一の
32ビットメモリサイクルでの四つの命令の取り出しであ
る。複数命令取り出しの利点は次の通りである。
低速メモリを用いても高い実行速度が得られる。
費用をかけずにHarvard(別のデータバスおよび命令
バス)と同様の性能が得られる。
命令のグループを最適化する機会がある。
このミニキャッシュ内でループを行うことができる。
四つの命令グループ内部のマイクロループは探索とブロ
ック移動に有効である。
スキップ命令 マイクロプロセッサ50は4バイト命令グループと呼ば
れる32ビットのかたまりの中の命令を取り出す。これら
の四つのバイトは四つの8ビット命令あるいは8ビッ
ト、16ビットあるいは24ビットの命令が混合したものを
含む場合がある。マイクロプロセッサ中のスキップ命令
は4倍と命令グループ中の残りの命令すべてをスキップ
して次の4バイト命令グループを得るメモリ取り出しを
発生させる。条件つきスキップを3バイト分岐と組み合
わせると条件つき分岐が作成される。またスキップはあ
る4命令グループ中の残りのバイトを使用することがで
きない状況でも用いることができる。スキップは一つの
サイクルで実行され、三つのNOPのグループは三つのサ
イクルを要する。
SKIP−ALWAYS −この4バイト命令グループ中の残りの
いかなる命令もスキップする。プログラムカウンタの最
上位の30ビットを増分し、次の4バイト命令グループの
取り出しに進む。
SKIP−IF−ZERO−パラメータスタックのトップ項目がゼ
ロである場合、4バイト命令グループ中の残りのいかな
る命令もスキップする。プログラムカウンタの最上位の
30ビットを増分し、次の4バイト命令グループの取り出
しに進む。トップ項目がゼロでない場合、次の順次命令
を実行する。
SKIP−IF−POSITIVE−パラメータスタックのトップ項目
が“0"に等しい最上位ビット(符号ビット)を有する場
合、4バイト命令グループ中の残りのいかなる命令もス
キップする。プログラムカウンタの最上位の30ビットを
増分し、次の4バイト命令グループの取り出しに進む。
トップ項目が“0"でない場合、次の順次命令を実行す
る。
SKIP−IF−NO−CARRY−シフトあるいは算術演算からの
桁あげフラグが“1"に等しくない場合、4バイト命令グ
ループ中の残りのいかなる命令もスキップする。プロプ
ログラムカウンタの最上位の30ビットを増分し、次の4
バイト命令グループの取り出しに進む。桁あげが“1"に
等しい場合、次の順次の命令を実行する。
SKIP−NEVER−次の順次の命令を実行する(1マシンサ
イクル遅延する)。
SKIP−IF−NOT−ZERO−パラメータスタックのトップ項
目が“0"に等しくない場合、4バイト命令グループ中の
残りのいかなる命令もスキップする。プログラムカウン
タの最上位の30ビットを増分し、次の4バイト命令グル
ープの取り出しに進む。トップ項目が“0"に等しい場
合、次の順次命令を実行する。
SKIP−IF−NEGATIVE−パラメータスタックのトップ項目
の最上位ビット(符号ビット)が“1"にセットされてい
る場合、4バイト命令グループ中の残りのいかなる命令
もスキップする。プログラムカウンタの最上位の30ビッ
トを増分し、次の4バイト命令グループの取り出しに進
む。トップ項目の最上位ビット(符号ビット)が“0"に
セットされている場合、次の順次命令を実行する。
SKIP−IF−CARRY−シフトあるいは算術演算の結果桁あ
げフラグが“1"にセットされている場合、4バイト命令
グループ中の残りのいかなる命令もスキップする。プロ
グラムカウンタの最上位の30ビットを増分し、次の4バ
イト命令グループの取り出しに進む。桁あげフラグが
“0"である場合、次の順次命令を実行する。
マイクロループ マイクロループはこのマイクロプロセッサアーキテク
チャに特有の機能であり、4バイト命令中での制御され
たルーピングを可能とする。マイクロループ命令はルー
プカウンタが“0"であるかどうかをテストし、また別の
テストを行うこともできる。ループカウンタが“0"でな
く、またテストに合格した場合、4バイト命令グループ
の第1の命令に対して命令実行が継続され、ループカウ
ンタは減分される。マイクロループ命令は通常4バイト
命令グループの最終バイトであるが、これは任意のバイ
トとすることができる。ループカウンタが“0"である、
あるいはテストに合格しない場合、次の命令に対して命
令実行が継続される。マイクロループ命令が通常4バイ
ト命令グループの最終バイトである場合、プログラムカ
ウンタの最上位の30ビットが増分され、次の4バイト命
令グループがメモリから取り出される。“0"に等しいル
ープカウンタ上のループが終了すると、ループカウンタ
は“0"にとどまる。マイクロループは移動や探索といっ
た短い繰り返し作業をメモリからの取り出し命令を減速
することなく行うことを可能にする。
例: バイト1 FETCH−VIA−X−AUTOINCREMENT バイト2 STORE−VIA−Y−AUTOINCREMENT バイト3 ULOOP−UNTIL−DONE バイト4 QQQQQQQQ この例はブロック移動を行う。転送を開始するにはX
に出所の開始アドレスがロードされる。Yには行先の開
始アドレスがロードされる。ループカウンタには移動す
べき32ビットワードの数がロードされる。このマイクロ
ループはそれがゼロに達するまで取り出しと記憶を行い
ループカウンタをカウントダウンする。QQQQQQQQはいか
なる命令も続きうることを意味する。
マイクロループ命令 ULOOP−UNTIL−DONE−ループカウンタが“0"でない場
合、4バイト命令グループ中の第1の命令について実行
を継続する。ループカウンタを減分する。ループカウン
タが“0"である場合、次の命令の実行を継続する。
ULOOP−IF−ZERO−ループカウンタが“0"でなく、パラ
メータスタックのトップ項目が“0"である場合、4バイ
ト命令グループ中の第1の命令について実行を継続す
る。ループカウンタを減分する。ループカウンタが“0"
である場合、あるいはトップ項目が“1"である場合、次
の命令の実行を継続する。
ULOOP−IF−POSITIVE−ループカウンタが“0"でなく、
最上位ビット(符号ビット)が“0"である場合、4バイ
ト命令グループ中の第1の命令について実行を継続す
る。ループカウンタを減分する。ループカウンタが“0"
である場合、あるいはトップ項目が“1"である場合、次
の命令の実行を継続する。
ULOOP−IF−NOT−CARRY−CLEAR−ループカウンタが“0"
でなく、トップと次で発見された浮動小数点の指数の位
置が合っていない場合、4バイト命令グループの第1の
命令について実行を継続する。ループカウンタを減分す
る。ループカウンタが“0"である場合、あるいはこれら
の指数の位置が合っている場合、次の命令の実行を継続
する。この命令は二つの浮動少数点数を位置合わせする
ための特殊なシフト命令と組み合わせるように特に設計
したものである。
ULOOP−NEVER−(DECREMENT−LOOP−COUNTER) ループカウンタを減分する。次の命令の実行を継続す
る。
ULOOP−IF−NOT−ZERO−ループカウンタが“0"でなく、
パラメータスタックのトップ項目が“0"である場合、4
バイト命令グループ中の第1の命令について実行を継続
する。ループカウンタを減分する。ループカウンタが
“0"である場合、あるいはトップ項目が“1"である場
合、次の命令の実行を継続する。
ULOOP−IF−NEGATIVE−ループカウンタが“0"でなく、
パラメータスタックのトップ項目の最上位ビット(符号
ビット)が“1"である場合、4バイト命令グループ中の
第1の命令について実行を継続する。ループカウンタを
減分する。ループカウンタが“0"である場合、あるいは
パラメータスタックの最上位ビットが“0"である場合、
次の命令の実行を継続する。
ULOOP−IF−CARRY−SET−ループカウンタが“0"でな
く、トップと次で発見された浮動少数点数の指数の位置
が合っていない場合、4バイト命令グループの第1の命
令について実行を継続する。ループカウンタを減分す
る。ループカウンタが“0"である場合、あるいはこれら
の指数の位置が合っている場合、次の命令の実行を継続
する。
サブルーチンあるいは割込みからのリターン サブルーチンの呼び出しおよび割込み応答によって通
常のプログラム実行の再指令が発生する。いずれの場合
も、現在のプログラムカウンタがリターンスタック上に
プッシュされ、マイクロプロセッサはサブルーチンある
いは割込みサービスルーチンを実行した後、プログラム
中の位置に戻ることができる。
注:サブルーチンの呼び出しおよび割込み応答の際に
は、プログラムカウンタはすでに増分されており、現在
実行中の4バイトグループに続く4バイト命令グループ
を指示している。命令復号ロジックはマイクロプロセッ
サが1サイクルでテストを行い、そのテストの結果を条
件とするリターンを実行することを可能とする。リター
ンはリターンスタックからアドレスを取り出し、それを
プログラムカウンタに記憶する。
リターン命令 RETURN−ALWAYS −リターンスタックからトップ項目を
取り出し、それをプログラムカウンタに転送する。
RETURN−IF−ZERO−パラメータスタックのトップ項目が
“0"である場合、リターンスタックからトップ項目を取
り出し、それをプログラムカウンタに転送する。そうで
ない場合、次の命令を実行する。
RETURN−IF−POSITIVE−パラメータスタックのトップ項
目の最上位ビット(符号ビット)が“1"である場合、リ
ターンスタックからトップ項目を取り出し、それをプロ
グラムカウンタに転送する。そうでない場合、次の命令
を実行する。
RETURN−IF−NOT−CARRY−CLEAR−トップと次で発見さ
れた浮動小数点の指数の位置が合っていない場合、リタ
ーンスタックからトップ項目を取り出し、それをプログ
ラムカウンタに転送する。そうでない場合、次の命令を
実行する。
RETURN−NEVER−次の命令を実行する。
(NOP) RETURN−IF−NOT−ZERO−パラメータスタックのトップ
項目が“0"でない場合、リターンスタックからトップ項
目を取り出し、それをプログラムカウンタに転送する。
そうでない場合、次の命令を実行する。
RETURN−IF−NEGATIVE−パラメータスタックのトップ項
目の最上位ビット(符号ビット)が“1"である場合、リ
ターンスタックからトップ項目を取り出し、それをプロ
グラムカウンタに転送する。そうでない場合、次の命令
を実行する。
RETURN−IF−CARRY−SET−トップと次で発見された浮動
小数点数の指数の位置が合っている場合、リターンスタ
ックからトップ項目を取り出し、それをプログラムカウ
ンタに転送する。そうでない場合、次の命令を実行す
る。
ダイナミックRAMからのメモリの処理 マイクロプロセッサ50は任意のRISC型アーキテクチャ
と同様に、チップ上で可能な限り多くの動作を最大速度
で処理するよう最適化されている。外部メモリ動作はオ
ンチップメモリの速度が4nsecから30nsecであるのに対
して80nsecから220nsecを要する。外部メモリをアクセ
スしなければならない時間がある。
外部メモリは三つのレジスタを用いてアクセスされ
る。
Xレジスタ−メモリアクセスに用いることができ、同
時に増分あるいは減分することのできる30ビットメモリ
ポインタ。
Yレジスタ−メモリアクセスに用いることができ、同
時に増分あるいは減分することのできる30ビットメモリ
ポインタ。
プログラムカウンタ−通常4バイト命令グループを指
示するのに用いられる30ビットメモリポインタ。外部メ
モリはPCに対するアドレスでアクセスすることができ
る。オペランドは他のコンピュータでは“即時”あるい
は“直定数”と呼ぶこともある。メモリポインタとして
用いられるときは、各動作の後PCも増分される。
メモリロードおよび記憶命令 FETCH−VIA−X−Xによって指示された32ビットメモリ
の内容を取り出し、それをパラメータスタック上にプッ
シュする。Xは変更されない。
FETCH−VIA−Y−Yによって指示された32ビットメモリ
の内容を取り出し、それをパラメータスタック上にプッ
シュする。Yは変更されない。
FETCH−VIA−X−AUTOINCREMENT−Xによって指示され
た32ビットメモリの内容を取り出し、それをパラメータ
スタック上にプッシュする。取り出しの後、Xの最上位
の30ビットを増分し、次の32ビットワードアドレスを指
示する。
FETCH−VIA−Y−AUTOINCREMENT−Yによって指示され
た32ビットメモリの内容を取り出し、それをパラメータ
スタック上にプッシュする。取り出しの後、Yの最上位
の30ビットを増分し、次の32ビットワードアドレスを指
示する。
FETCH−VIA−X−AUTODECREMENT−Xによって指示され
た32ビットメモリの内容を取り出し、それをパラメータ
スタック上にプッシュする。取り出しの後、Xの最上位
の30ビットを減分し、前の32ビットワードアドレスを指
示する。
FETCH−VIA−Y−AUTODECREMENT−Yによって指示され
た32ビットメモリの内容を取り出し、それをパラメータ
スタック上にプッシュする。取り出しの後、Yの最上位
の30ビットを減分し、前の32ビットワードアドレスを指
示する。
STORE−VIA−X−パラメータスタックのトップ項目を取
り出し、それをXによって指示された記憶場所に記憶す
る。Xは変更されない。
STORE−VIA−Y−パラメータスタックのトップ項目を取
り出し、それをYによって指示された記憶場所に記憶す
る。Yは変更されない。
STORE−VIA−X−AUTOINCREMENT−パラメータスタック
のトップ項目を取り出し、それをXによって指示された
記憶場所に記憶する。記憶の後、Xの最上位の30ビット
を増分し、次の32ビットワードアドレスを指示する。
STORE−VIA−Y−AUTOINCREMENT−パラメータスタック
のトップ項目を取り出し、それをYによって指示された
記憶場所に記憶する。記憶の後、Yの最上位の30ビット
を増分し、次の32ビットワードアドレスを指示する。
STORE−VIA−X−AUTODECREMENT−パラメータスタック
のトップ項目を取り出し、それをXによって指示された
記憶場所に記憶する。記憶の後、Xの最上位の30ビット
を減分し、次の32ビットワードアドレスを指示する。
STORE−VIA−Y−AUTODECREMENT−パラメータスタック
のトップ項目を取り出し、それをYによって指示された
記憶場所に記憶する。記憶の後、Yの最上位の30ビット
を減分し、次の32ビットワードアドレスを指示する。
FETCH−VIA−PC−プログラムカウンタによって指示され
た32ビットメモリの内容を取り出し、それをパラメータ
スタック上にプッシュする。取り出しの後、プログラム
カウンタの最上位の30ビットを増分し、次の32ビットワ
ードアドレスを指示する。
*注:この命令が実行されるとき、PCはこの命令に続く
記憶場所を指示している。これには32ビット即時オペラ
ンドをローディングする効果がある。これは8ビット命
令であり、したがって4バイト命令取り出し中に他の8
ビット命令と結合される。ひとつの4バイト命令取り出
しで一つから四つまでのFETCH−VIA−PC命令を持つこと
ができる。PCはFETCH−VIA−PCが実行されるたびに増分
し、、したがってスタック上に即時オペランドをプッシ
ュすることが可能である。この四つのオペランドはこの
命令に続く四つの記憶場所で発見される。
BYTE−FETCH−VIA−X−Xの最上位の30ビットによって
指示された32ビットメモリの内容を取り出す。Xの二つ
の最下位ビットを用いて32ビットメモリ取り出しからの
四つのバイトのうちの一つを選択し、そのバイトを32ビ
ットフィールドで右寄せし、選択されたバイトを前に先
行ゼロを付けてパラメータスタック上にプッシュする。
BYTE−STORE−VIA−X−Xの最上位の30ビットによって
指示された32ビットメモリの内容を取り出す。パラメー
タスタックからトップ項目を取り出す。Xの二つの最下
位ビットを用いて最下位バイトを32ビットメモリデータ
に入れ、その32ビットのエンティティXの最上位の30ビ
ットによって指示された場所に書き込む。
メモリアクセス命令の他の効果 いかなる取り出し命令もある値をパラメータスタック
74上にプッシュする。オンチップスタックがいっぱいで
ある場合、このスタックはオフチップメモリスタックに
オーバーフローし、その結果メモリサイクルが増える。
いかなる記憶命令もパラメータスタック74からある値を
取り出す。オンチップスタックが空である場合、オフチ
ップメモリスタックから値を取り出すためのメモリサイ
クルが生成される。
オンチップ変数の処理 高レベル言語はローカル変数の作成の可能であるもの
が多い。これらの変数は特定の作業手順に用いられ放棄
される。ネスティングされた作業手順の場合には、これ
らの変数の層を維持しなければならない。オンチップ記
憶装置はオフチップRAMより最大で5倍高速であり、し
たがってローカル変数をチップ上に維持する手段があれ
ば動作をより高速にすることができる。マイクロプロセ
ッサ50はローカル変数のオンチップ記憶、およびリター
ンスタックを介した複数レベルの変数のネスティングの
両方の能力を提供する。
リターンスタック134は16のオンチップRAM位置として
実施される。リターンスタック134の最も一般的な用途
はサブルーチンおよび割込み呼び出しからのリターンア
ドレスを記憶することである。このマイクロプロセッサ
はこれらの16の位置をアドレス指定可能なレジスタとし
て用いることを可能にする。これえらの16の位置は0−
15からのリターンスタック関連アドレスを示す二つの命
令によって読み出しおよび書き込みすることができる。
高レベル作業手順がネスティングされると、現在の作業
手順変数が前の作業手順変数をさらにリターンスタック
134にプッシュする。最後に、リターンスタックはオフ
チップRAMに自動的にオーバーフローする。
オンチップ変数命令 READ−LOCAL−VARIABLE XXXX−リターンスタックのトッ
プに対してXXXX番目の位置を読み出す(XXXXは0000−11
11の2値の数である)。この項目読み出しをパラメータ
スタックにプッシュする。
他の効果:パラメータスタックがいっぱいである場合、
このプッシュ動作はスタックの1項目が外部RAMに自動
的に記憶されるとき一つのメモリサイクルを発生させ
る。この位置を選択するロジックはモジュロ16減算を行
う。四つのローカル変数がすでにリターンスタック上に
プッシュされており、ある命令が5番目の項目を読み出
そうとする場合、未知のデータが返される。
WRITE−LOCAL−VARIABLE XXXX−リターンスタックのト
ップ項目を取り出し、それをリターンスタックのトップ
に対してXXXX番目の位置に書き込む。(XXXXは0000−11
11の2値の数である)。
他の効果:パラメータスタックが空である場合、このポ
ップ動作は外部RAMからパラメータスタック項目を取り
出すためのメモリサイクルを発生させる。この位置を選
択するロジックはモジュロ16減算を行う。四つのローカ
ル変数がすでにリターンスタック上にプッシュされてお
り、ある命令が5番目の項目への書き込みを行おうとす
る場合、リターンアドレスを破壊する、あるいは他の大
きな破壊が発生する可能性がある。
レジスタおよびフリップフロップ転送およびプッシュ命
令 DROP−パラメータスタックからトップ項目を取り出しそ
れを放棄する。
SWAP−トップパラメータ位置のデータをネクストパラメ
ータスタックのデータと交換する。
DUP−パラメータスタックのトップ項目を複製し、それ
をパラメータスタック上にプッシュする。
PUSH−LOOP−COUNTER−ループカウンタ中の値をパラメ
ータスタック上にプッシュする。
POP−RSTACK−PUSH−TO−STACK−リターンスタックから
トップ項目を取り出し、それをパラメータスタック上に
プッシュする。
PUSH−X−REG−Xレジスタ中の値をパラメータスタッ
ク上にプッシュする。
PUSH−STACK−POINTER−パラメータスタックの値をパラ
メータスタック上にプッシュする。
PUSH−RSTACK−POINTER−リターンスタックの値をリタ
ーンスタック上にプッシュする。
PUSH−MODE−BITS−モードレジスタの値をパラメータス
タック上にプッシュする。
PUSH−INPUT−10の専用入力ビットを読み出し、その値
(右寄せされ先行ゼロが加えられる)をパラメータスタ
ック上にプッシュする。
SET−LOOP−COUNTER−パラメータスタックからトップ項
目を取り出し、それをループカウンタに記憶する。
POP−STACK−PUSH−TO−RSTACK−パラメータスタックか
らトップ項目を取り出し、それをリターンスタックにプ
ッシュする。
SET−X−REG−パラメータスタックからトップ項目を取
り出し、それをXレジスタに記憶する。
SET−STACK−POINTER−パラメータスタックからトップ
項目を取り出し、それをスタックポインタに記憶する。
SET−RSTACK−POINTER−パラメータスタックからトップ
項目を取り出し、それをリターンスタックポインタに記
憶する。
SET−MODE−BITS−パラメータスタックからトップ値を
取り出し、それをモードビットに記憶する。
SET−OUTPUT−パラメータスタックからトップ項目を取
り出し、それを10の専用出力ビットに出力する。
他の効果:パラメータスタックあるいはリターンスタッ
クをプッシュする、あるいは取り出す命令はスタックが
オンチップメモリとオフチップメモリの間でオーバーフ
ローするときメモリサイクルを発生させることがある。
短い直定数のローディング レジスタ転送命令の特殊なケースが8ビット直定数を
パラメータスタック上にプッシュするのに用いられる。
この命令はこのプッシュすべき8ビットが4バイト命令
グループの最終バイトにあることを必要とする。直定数
をロードするこの命令の演算コードは命令グループ中の
他の三つのバイトのうちのいずれにあってもよい。
例: この例ではQQQQQQQQは任意の他の8ビット命令を示
す。バイト1が実行されるときバイト4からの2値0000
1111(16進数の0f)がパラメータスタック上にプッシュ
される(右寄せされ先行ゼロが付けられる)。次にバイ
ト2とバイト3の命令が実行される。マイクロプロセッ
サの命令復号器はバイト4を実行しないことを知ってい
る。三つの同じ8ビットの値を次のようにプッシュする
ことが可能である。
SHORT−LITERAL−INSTRUCTION LOAD−SHORT−LITERAL−現在の4バイト命令グループの
バイト4で発見した8ビットの値をパラメータスタック
上にプッシュする。
ロジック命令 論理演算および数理演算ではスタックを一つあるいは
二つのオペランドの出所用に、また結果の行先として用
いた。スタックの構成は式の評価に特に便利な構成にな
っている。トップはパラメータスタック74のトップの値
を示す。ネクストはパラメータスタック74のトップの値
の次の値を示す。
AND−パラメータスタックからトップとネクストを取り
出し、これらの二つのオペランドに論理積演算を行いそ
の結果をパラメータスタック上にプッシュする。
OR−パラメータスタックからトップとネクストを取り出
し、これらの二つのオペランドに論理和演算を行い、そ
の結果をパラメータスタック上にプッシュする。
XOR−パラメータスタックからトップとネクストを取り
出し、これらの二つのオペランドに排他的論理和演算を
行い、その結果をパラメータスタック上にプッシュす
る。
BIT−CLEAR−パラメータスタックからトップとネクスト
を取り出し、ネクストのすべてのビットをトグルし、ト
ップに論理積演算を行い、その結果をパラメータスタッ
ク上にプッシュする(この命令を理解する別の方法とし
ては、これをネクストにセットされたトップの中のすべ
てのビットをクリアするものと考えることである)。
数理命令 数理命令はオペランドとして用いるためにパラメータ
スタック74のトップ項目とトップの次の項目を取り出
す。その結果はパラメータスタックにプッシュされる。
桁あげフラグがALU結果の“33番目のビット”をラッチ
するのに用いられる。
ADD−パラメータスタックからトップ項目とトップの次
の項目を取り出し、その値を加算し、その結果をパラメ
ータスタックにプッシュする。桁あげフラグを変更する
こもできる。
ADD−WITH−CARRY−パラメータスタックからトップ項目
とトップの次の項目を取り出し、その値を加算する。桁
あげフラグが“1"である場合、その結果を増分する。最
終結果をパラメータスタックにプッシュする。桁あげフ
ラグを変更することもできる。
ADD−X−パラメータスタックからトップ項目を取り出
し、パラメータスタックのトップから三番目の項目を読
み出す。その値を加算し、その結果をパラメータスタッ
クにプッシュする。桁あげフラグを変更することもでき
る。
SUB−パラメータスタックからトップ項目とトップの次
の項目を取り出す。トップからネクストを引き、その結
果をパラメータスタックにプッシュする。桁あげフラグ
を変更することもできる。
SUB−WITH−CARRY−パラメータスタックからトップ項目
とトップの次の項目を取り出す。トップからネクストを
引く。桁あげフラグが“1"である場合、その結果を増分
する。最終結果をパラメータスタックにプッシュする。
桁あげフラグを変更することもできる。
SUB−X SIGNED−MULT−STEP− UNSIGNED−MULT−STEP− SIGNED−FAST−MULT− FAST−MULT−STEP− UNSIGNED−DIV−STEP− GENERATE−POLYNOMINAL− ROUND− COMPARE−パラメータスタックからトップ項目とトップ
の次の項目を取り出す。トップからネクストを引く。そ
の結果が“0"に等しい最上位ビットを有する(結果は正
である)場合、その結果をパラメータスタックにプッシ
ュする。その結果が“1"に等しい最上位ビットを有する
(結果は負である)場合、トップの古い値をパラメータ
スタックにプッシュする。桁あげフラグが影響されるこ
ともある。
SHIFT/ROTATE SHIFT−LEFT−トップパラメータスタック項目を左に1
ビットシフトする。桁あげフラグはトップの最下位ビッ
トにシフトされる。
SHIFT−RIGHT−トップパラメータスタック項目を右に1
ビットシフトする。トップの最下位ビットが桁あげフラ
グにシフトされる。ゼロがトップの最上位ビットにシフ
トされる。
DOUBLE−SHIFT−LEFT−パラメータスタックのトップ項
目を64ビット数の最上位ワードとして、ネクストスタッ
ク項目を最下位ワードとして扱うと、結合された64ビッ
トのエンティティは左に1ビットシフトされる。桁あげ
フラグはネクストの最下位ビットにシフトされる。
DOUBLE−SHIFT−RIGHT−パラメータスタックのトップ項
目を64ビット数の最上位ワードとして、ネクストスタッ
ク項目を最下位ワードとして扱うと、結合された64ビッ
トのエンティティは右に1ビットシフトされる。ネクス
トの最下位ビットは桁あげフラグにシフトされる。ゼロ
はトップの最上位ビットにシフトされる。
他の命令 FLUSH−STACK−すべてのオンチップパラメータスタック
位置をオフチップRAMに移す(この命令は多重タスク化
アプリケーションに有用である)。この命令はオンチッ
プスタックの深さを保持するカウンタにアクセスし、0
から16までの外部メモリサイクルを要することがある。
FLUSH−RSTACK−すべてのオンチップリターンスタック
位置をオフチップRAMに移す(この命令は多重タスク化
アプリケーションに有用である)。この命令はオンチッ
プリターンスタックの深さを保持するカウンタにアクセ
スし、0から16までの外部メモリサイクルを要すること
がある。
当該技術に精通するものにはここに図示じ説明したこ
の発明の態様および細部にさまざまな変更を加えうるこ
とは明らかであろう。かかる変更は添付クレームの精神
と範囲に含まれるものである。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ムーア チャールズ エイチ アメリカ合衆国 カリフォルニア州 94062 ウッドサイド スター ヒル ロード 410 (72)発明者 フィッシュ ラッセル エイチ ザ サ ード アメリカ合衆国 カリフォルニア州 94043 マウンテン ヴィュー スウィ ート 85 ショアライン ブールヴァー ド 750 (56)参考文献 特開 昭57−20979(JP,A) 特開 昭57−196334(JP,A) 特開 昭63−200235(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 9/38 G06F 9/34

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】算術論理装置、前記の算術論理装置に接続
    された第1の後入れ先出しスタック、及びレジスタファ
    イルからなり、前記の第1の後入れ先出しスタックが前
    記の算術論理装置の第1の入力に接続されたトップ項目
    を記憶する手段と前記の算術論理装置の第2の入力に接
    続されたネクスト項目を記憶する手段を含み、前記の算
    術論理装置が前記のトップ項目を記憶する手段に接続さ
    れた出力を有し、前記のトップ項目を記憶する手段が前
    記のレジスタファイルに入力を提供するように接続され
    たマイクロプロセッサシステム。
  2. 【請求項2】中央処理装置、メモリ、前記の中央処理装
    置を前記のメモリに接続するバスからなり、前記の中央
    処理装置は算術論理装置と前記の算術論理装置に接続さ
    れた後入れ先出しスタックを含み、前記の後入れ先出し
    スタックが前記の算術論理装置の第1の入力に接続され
    たトップ項目を記憶する手段と前記の算術論理装置の第
    2の入力に接続されたネクスト項目を記憶する手段を含
    み、前記の算術論理装置が前記のトップ項目を記憶する
    手段に接続された出力を有し、前記の後入れ先出しスタ
    ックがラッチとして構成された第1の複数のスタック要
    素と、ランダムアクセスメモリとして構成された第2の
    複数のスタック要素とを有し、前記の第1および第2の
    複数のスタック要素と前記の中央処理装置が単一の集積
    回路内に設けられ、前記の後入れ先出しスタックがさら
    に前記の単一の集積回路の外部のランダムアクセスメモ
    リとして構成された第3の複数のスタック要素を有する
    マイクロプロセッサシステム。
  3. 【請求項3】単一の集積回路中のメイン中央処理装置と
    別の直接メモリアクセス中央処理装置とからなるマイク
    ロプロセッサであり、前記のメイン中央処理装置は算術
    論理装置、前記の算術論理装置に入力を提供するように
    接続されたトップ項目レジスタとネクスト項目レジスタ
    付きの第1の後入れ先出しスタックを有し、前記の算術
    論理装置の出力は前記のトップ項目レジスタに接続さ
    れ、前記のトップ項目レジスタはまた内部データバスに
    入力を提供するように接続され、前記の内部データバス
    はループカウンタに双方向に接続され、前記のループカ
    ウンタは減分器に接続され、前記の内部データバスはス
    タックポインタ、リターンスタックポインタ、モードレ
    ジスタ、および命令レジスタに双方向に接続され、前記
    の内部データバスはメモリコントローラ、リターン後入
    れ先出しスタックのYレジスタ、Xレジスタおよびプロ
    グラムカウンタに接続され、前記のYレジスタ、Xレジ
    スタおよびプログラムカウンタは内部アドレスバスへの
    出力を提供し、前記の内部アドレスバスは前記のメモリ
    コントローラへのと増分器への入力を提供し、前記の増
    分器は前記の内部データバスに接続され、前記の直接メ
    モリアクセス中央処理装置は前記のメモリコントローラ
    への入力を提供し、前記のメモリコントローラはアドレ
    ス/データバスとランダムアクセスメモリへの接続のた
    めの複数の制御ラインを有するマイクロプロセッサ。
  4. 【請求項4】マイクロプロセッサシステムにおいて後入
    れ先出しスタックを動作させる方法であって、ラッチと
    して構成された第1の複数のスタック要素、ランダムア
    クセスメモリとして構成された第2の複数のスタック要
    素を提供し、第1および第2の複数のスタック要素をマ
    イクロプロセッサとともに単一の集積回路内に設け、こ
    の単一の集積回路の外部のランダムアクセスメモリとし
    て構成された第3の複数のスタック要素を提供し、後入
    れ先出しスタックに項目を記憶させ、第2の複数のスタ
    ック要素にアクセスすることなく第1の複数のスタック
    要素から第1の複数の項目を取り出し、第1の複数のス
    タック要素が空であるときは第2の複数のスタック要素
    から第1の複数の項目を取り出し、第3の複数のスタッ
    ク要素にアクセスすることなく第2の複数のスタック要
    素から第2の複数の項目を取り出し、第2の複数のスタ
    ック要素が空であるときは第3の複数のスタック要素か
    ら第2の複数の項目を取り出す方法。
JP2511130A 1989-08-03 1990-08-02 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法 Expired - Lifetime JP2966085B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/389,334 US5440749A (en) 1989-08-03 1989-08-03 High performance, low cost microprocessor architecture
US389,334 1989-08-03

Publications (2)

Publication Number Publication Date
JPH05502125A JPH05502125A (ja) 1993-04-15
JP2966085B2 true JP2966085B2 (ja) 1999-10-25

Family

ID=23537828

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2511130A Expired - Lifetime JP2966085B2 (ja) 1989-08-03 1990-08-02 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法

Country Status (6)

Country Link
US (7) US5440749A (ja)
EP (2) EP0497772A4 (ja)
JP (1) JP2966085B2 (ja)
AU (1) AU6067290A (ja)
DE (1) DE69033568T2 (ja)
WO (1) WO1991002311A1 (ja)

Families Citing this family (168)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04293124A (ja) * 1991-03-20 1992-10-16 Hitachi Ltd データ処理プロセッサ
US5659797A (en) * 1991-06-24 1997-08-19 U.S. Philips Corporation Sparc RISC based computer system including a single chip processor with memory management and DMA units coupled to a DRAM interface
EP0638183B1 (en) * 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
JPH06150023A (ja) * 1992-11-06 1994-05-31 Hitachi Ltd マイクロコンピュータ及びマイクロコンピュータシステム
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
JP3904244B2 (ja) 1993-09-17 2007-04-11 株式会社ルネサステクノロジ シングル・チップ・データ処理装置
US5535417A (en) * 1993-09-27 1996-07-09 Hitachi America, Inc. On-chip DMA controller with host computer interface employing boot sequencing and address generation schemes
JPH07152721A (ja) * 1993-11-29 1995-06-16 Mitsubishi Electric Corp マイクロコンピュータ
US5752011A (en) 1994-06-20 1998-05-12 Thomas; C. Douglas Method and system for controlling a processor's clock frequency in accordance with the processor's temperature
US7167993B1 (en) * 1994-06-20 2007-01-23 Thomas C Douglass Thermal and power management for computer systems
JP3693367B2 (ja) * 1994-07-28 2005-09-07 富士通株式会社 積和演算器
US6735683B2 (en) 1994-09-14 2004-05-11 Hitachi, Ltd. Single-chip microcomputer with hierarchical internal bus structure having data and address signal lines coupling CPU with other processing elements
US5590078A (en) * 1994-10-07 1996-12-31 Mukesh Chatter Method of and apparatus for improved dynamic random access memory (DRAM) providing increased data bandwidth and addressing range for current DRAM devices and/or equivalent bandwidth and addressing range for smaller DRAM devices
US5611068A (en) * 1994-12-27 1997-03-11 Motorola, Inc. Apparatus and method for controlling pipelined data transfer scheme between stages employing shift register and associated addressing mechanism
JP3739797B2 (ja) * 1995-10-06 2006-01-25 パトリオット サイエンティフィック コーポレイション 縮小命令セット・コンピューター・マイクロプロセッサーの構造
US5603047A (en) * 1995-10-06 1997-02-11 Lsi Logic Corporation Superscalar microprocessor architecture
US5815673A (en) * 1996-03-01 1998-09-29 Samsung Electronics Co., Ltd. Method and apparatus for reducing latency time on an interface by overlapping transmitted packets
JPH1091443A (ja) * 1996-05-22 1998-04-10 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器
GB9613538D0 (en) * 1996-06-27 1996-08-28 Switched Reluctance Drives Ltd Matrix interpolation
US5774694A (en) * 1996-09-25 1998-06-30 Intel Corporation Method and apparatus for emulating status flag
JPH10112199A (ja) * 1996-10-03 1998-04-28 Advantest Corp メモリ試験装置
JP3743789B2 (ja) * 1996-10-24 2006-02-08 株式会社ルネサステクノロジ メモリとプロセサとが同一チップ上に形成されたマイクロコンピュータ
US6697931B1 (en) * 1996-10-31 2004-02-24 Stmicroelectronics Limited System and method for communicating information to and from a single chip computer system through an external communication port with translation circuitry
FR2762424B1 (fr) * 1997-04-17 2003-01-10 Gemplus Card Int Carte a puce avec compteur, notamment compteur d'unite ou de gratifications, et procede de mise en oeuvre
WO1999009469A1 (en) * 1997-08-18 1999-02-25 Koninklijke Philips Electronics N.V. Stack oriented data processing device
US6314513B1 (en) * 1997-09-30 2001-11-06 Intel Corporation Method and apparatus for transferring data between a register stack and a memory resource
US6263401B1 (en) 1997-09-30 2001-07-17 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for transferring data between a register stack and a memory resource
US5958039A (en) * 1997-10-28 1999-09-28 Microchip Technology Incorporated Master-slave latches and post increment/decrement operations
US5938744A (en) * 1997-11-04 1999-08-17 Aiwa/Raid Technlogy, Method for managing multiple DMA queues by a single controller
US6065131A (en) * 1997-11-26 2000-05-16 International Business Machines Corporation Multi-speed DSP kernel and clock mechanism
US7587044B2 (en) * 1998-01-02 2009-09-08 Cryptography Research, Inc. Differential power analysis method and apparatus
US6148391A (en) * 1998-03-26 2000-11-14 Sun Microsystems, Inc. System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses
US6088787A (en) * 1998-03-30 2000-07-11 Celestica International Inc. Enhanced program counter stack for multi-tasking central processing unit
US6108768A (en) * 1998-04-22 2000-08-22 Sun Microsystems, Inc. Reissue logic for individually reissuing instructions trapped in a multiissue stack based computing system
JP2002525751A (ja) * 1998-09-23 2002-08-13 インフィネオン テクノロジース アクチエンゲゼルシャフト プログラミング制御されるユニット
EP0992881A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. A processor
US6826749B2 (en) 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US20050149694A1 (en) * 1998-12-08 2005-07-07 Mukesh Patel Java hardware accelerator using microcode engine
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US7225436B1 (en) 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
JP2001084138A (ja) * 1999-09-13 2001-03-30 Mitsubishi Electric Corp 半導体装置
US7085914B1 (en) * 2000-01-27 2006-08-01 International Business Machines Corporation Methods for renaming stack references to processor registers
US7284064B1 (en) 2000-03-21 2007-10-16 Intel Corporation Method and apparatus to determine broadcast content and scheduling in a broadcast system
JP2001331341A (ja) * 2000-05-19 2001-11-30 Fujitsu Ltd マイクロコンピュータ
US6816750B1 (en) * 2000-06-09 2004-11-09 Cirrus Logic, Inc. System-on-a-chip
KR100348275B1 (ko) * 2000-07-28 2002-08-09 엘지전자 주식회사 유기 el 구동 제어회로
US6691219B2 (en) * 2000-08-07 2004-02-10 Dallas Semiconductor Corporation Method and apparatus for 24-bit memory addressing in microcontrollers
GB2367653B (en) 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
GB2367654B (en) 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
EP1197847A3 (en) * 2000-10-10 2003-05-21 Nazomi Communications Inc. Java hardware accelerator using microcode engine
GB2369464B (en) 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
US7076771B2 (en) 2000-12-01 2006-07-11 Arm Limited Instruction interpretation within a data processing system
WO2002048333A2 (en) * 2000-12-12 2002-06-20 Lexicon Genetics Incorporated Novel human kinases and uses thereof
US20020108064A1 (en) * 2001-02-07 2002-08-08 Patrick Nunally System and method for optimizing power/performance in network-centric microprocessor-controlled devices
GB2376099B (en) * 2001-05-31 2005-11-16 Advanced Risc Mach Ltd Program instruction interpretation
GB2376097B (en) 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
GB2376100B (en) * 2001-05-31 2005-03-09 Advanced Risc Mach Ltd Data processing using multiple instruction sets
GB2376098B (en) * 2001-05-31 2004-11-24 Advanced Risc Mach Ltd Unhandled operation handling in multiple instruction set systems
DE10131084A1 (de) * 2001-06-27 2003-01-09 Klaus Schleisiek Vorrichtung zur Datenverarbeitung
US6625716B2 (en) * 2001-06-28 2003-09-23 Intel Corporation Method apparatus, and system for efficient address and data protocol for a memory
DE10133913A1 (de) * 2001-07-12 2003-01-30 Infineon Technologies Ag Programmgesteuerte Einheit
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US8943540B2 (en) 2001-09-28 2015-01-27 Intel Corporation Method and apparatus to provide a personalized channel
US20030212878A1 (en) * 2002-05-07 2003-11-13 Chen-Hanson Ting Scaleable microprocessor architecture
US9311673B2 (en) * 2002-06-05 2016-04-12 Nasdaq, Inc. Security transaction matching
US8244622B2 (en) * 2002-06-05 2012-08-14 The Nasdaq Omx Group, Inc. Order matching process and method
US7895112B2 (en) * 2002-06-05 2011-02-22 The Nasdaq Omx Group, Inc. Order book process and method
JP3698123B2 (ja) * 2002-06-25 2005-09-21 セイコーエプソン株式会社 情報処理装置及び電子機器
US7493607B2 (en) 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US7519990B1 (en) 2002-07-19 2009-04-14 Fortinet, Inc. Managing network traffic flow
US7131118B2 (en) * 2002-07-25 2006-10-31 Arm Limited Write-through caching a JAVA® local variable within a register of a register bank
EP1387253B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Dynamic translation and execution of instructions within a processor
US7042301B2 (en) * 2002-10-15 2006-05-09 Marvell International Ltd. Crystal oscillator emulator
US7791424B2 (en) * 2002-10-15 2010-09-07 Marvell World Trade Ltd. Crystal oscillator emulator
US7148763B2 (en) * 2002-10-15 2006-12-12 Marvell World Trade Ltd. Integrated circuit including processor and crystal oscillator emulator
US7760039B2 (en) * 2002-10-15 2010-07-20 Marvell World Trade Ltd. Crystal oscillator emulator
US20060113639A1 (en) * 2002-10-15 2006-06-01 Sehat Sutardja Integrated circuit including silicon wafer with annealed glass paste
US7768360B2 (en) * 2002-10-15 2010-08-03 Marvell World Trade Ltd. Crystal oscillator emulator
US20060267194A1 (en) 2002-10-15 2006-11-30 Sehat Sutardja Integrated circuit package with air gap
GB2399897B (en) * 2003-03-26 2006-02-01 Advanced Risc Mach Ltd Memory recycling in computer systems
EP3321769A1 (en) 2003-05-07 2018-05-16 Conversant Intellectual Property Management Inc. Managing power on integrated circuits using power islands
JP2005049970A (ja) * 2003-07-30 2005-02-24 Renesas Technology Corp 半導体集積回路
US7118352B2 (en) * 2003-09-17 2006-10-10 Oil-Rite Corporation Hydraulic metering device
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7227383B2 (en) 2004-02-19 2007-06-05 Mosaid Delaware, Inc. Low leakage and data retention circuitry
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
GB2412192B (en) * 2004-03-18 2007-08-29 Advanced Risc Mach Ltd Function calling mechanism
US7802080B2 (en) 2004-03-24 2010-09-21 Arm Limited Null exception handling
US7930526B2 (en) 2004-03-24 2011-04-19 Arm Limited Compare and branch mechanism
US7350059B2 (en) * 2004-05-21 2008-03-25 Via Technologies, Inc. Managing stack transfers in a register-based processor
US20080140921A1 (en) * 2004-06-10 2008-06-12 Sehat Sutardja Externally removable non-volatile semiconductor memory module for hard disk drives
US20070094444A1 (en) * 2004-06-10 2007-04-26 Sehat Sutardja System with high power and low power processors and thread transfer
US7634615B2 (en) * 2004-06-10 2009-12-15 Marvell World Trade Ltd. Adaptive storage system
US7730335B2 (en) 2004-06-10 2010-06-01 Marvell World Trade Ltd. Low power computer with main and auxiliary processors
US7702848B2 (en) * 2004-06-10 2010-04-20 Marvell World Trade Ltd. Adaptive storage system including hard disk drive with flash interface
US20070083785A1 (en) * 2004-06-10 2007-04-12 Sehat Sutardja System with high power and low power processors and thread transfer
US7788427B1 (en) 2005-05-05 2010-08-31 Marvell International Ltd. Flash memory interface for disk drive
US7617359B2 (en) * 2004-06-10 2009-11-10 Marvell World Trade Ltd. Adaptive storage system including hard disk drive with flash interface
US20050289329A1 (en) * 2004-06-29 2005-12-29 Dwyer Michael K Conditional instruction for a single instruction, multiple data execution engine
US7346759B1 (en) 2004-08-06 2008-03-18 Xilinx, Inc. Decoder interface
US7200723B1 (en) 2004-08-06 2007-04-03 Xilinx, Inc. Access to a bank of registers of a device control register interface using a single address
US7243212B1 (en) 2004-08-06 2007-07-10 Xilinx, Inc. Processor-controller interface for non-lock step operation
US7590823B1 (en) 2004-08-06 2009-09-15 Xilinx, Inc. Method and system for handling an instruction not supported in a coprocessor formed using configurable logic
US7546441B1 (en) 2004-08-06 2009-06-09 Xilinx, Inc. Coprocessor interface controller
US7590822B1 (en) 2004-08-06 2009-09-15 Xilinx, Inc. Tracking an instruction through a processor pipeline
US20060095719A1 (en) * 2004-09-17 2006-05-04 Chuei-Liang Tsai Microcontroller having partial-twin structure
GB2418272A (en) * 2004-09-17 2006-03-22 Marconi Comm Ltd Processor arrangement having a stack memeory
US7406592B1 (en) * 2004-09-23 2008-07-29 American Megatrends, Inc. Method, system, and apparatus for efficient evaluation of boolean expressions
CN1300676C (zh) * 2004-10-27 2007-02-14 上海大学 堆栈区域扩充方法
US7852098B2 (en) * 2005-08-01 2010-12-14 Marvell World Trade Ltd. On-die heating circuit and control loop for rapid heating of the die
US7872542B2 (en) * 2005-08-01 2011-01-18 Marvell World Trade Ltd. Variable capacitance with delay lock loop
US7375597B2 (en) * 2005-08-01 2008-05-20 Marvell World Trade Ltd. Low-noise fine-frequency tuning
GB2430052A (en) * 2005-09-07 2007-03-14 Tandberg Television Asa CPU with a buffer memory directly available to an arithmetic logic unit
US7734901B2 (en) * 2005-10-31 2010-06-08 Mips Technologies, Inc. Processor core and method for managing program counter redirection in an out-of-order processor pipeline
US7711934B2 (en) * 2005-10-31 2010-05-04 Mips Technologies, Inc. Processor core and method for managing branch misprediction in an out-of-order processor pipeline
US8977836B2 (en) * 2006-02-03 2015-03-10 Russell H. Fish, III Thread optimized multiprocessor architecture
US8984256B2 (en) * 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
EP1821202B1 (en) 2006-02-16 2011-01-12 VNS Portfolio LLC Execution of instructions directly from input source
US7913069B2 (en) * 2006-02-16 2011-03-22 Vns Portfolio Llc Processor and method for executing a program loop within an instruction word
WO2007098024A2 (en) 2006-02-16 2007-08-30 Vns Portfolio Llc Allocation of resources among an array of computers
US7904615B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7752422B2 (en) * 2006-02-16 2010-07-06 Vns Portfolio Llc Execution of instructions directly from input source
US7934075B2 (en) * 2006-02-16 2011-04-26 Vns Portfolio Llc Method and apparatus for monitoring inputs to an asyncrhonous, homogenous, reconfigurable computer array
US20070204139A1 (en) 2006-02-28 2007-08-30 Mips Technologies, Inc. Compact linked-list-based multi-threaded instruction graduation buffer
US7721071B2 (en) * 2006-02-28 2010-05-18 Mips Technologies, Inc. System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor
TW200817925A (en) * 2006-03-31 2008-04-16 Technology Properties Ltd Method and apparatus for operating a computer processor array
US7337272B2 (en) * 2006-05-01 2008-02-26 Qualcomm Incorporated Method and apparatus for caching variable length instructions
US20080016326A1 (en) 2006-07-14 2008-01-17 Mips Technologies, Inc. Latest producer tracking in an out-of-order processor, and applications thereof
US7370178B1 (en) * 2006-07-14 2008-05-06 Mips Technologies, Inc. Method for latest producer tracking in an out-of-order processor, and applications thereof
US20080263324A1 (en) * 2006-08-10 2008-10-23 Sehat Sutardja Dynamic core switching
US7657708B2 (en) * 2006-08-18 2010-02-02 Mips Technologies, Inc. Methods for reducing data cache access power in a processor using way selection bits
US7650465B2 (en) 2006-08-18 2010-01-19 Mips Technologies, Inc. Micro tag array having way selection bits for reducing data cache access power
US8032734B2 (en) * 2006-09-06 2011-10-04 Mips Technologies, Inc. Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor
US7647475B2 (en) * 2006-09-06 2010-01-12 Mips Technologies, Inc. System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US7594079B2 (en) 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US8078846B2 (en) 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
US9946547B2 (en) * 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US8006069B2 (en) * 2006-10-05 2011-08-23 Synopsys, Inc. Inter-processor communication method
US7917788B2 (en) * 2006-11-01 2011-03-29 Freescale Semiconductor, Inc. SOC with low power and performance modes
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US20080154379A1 (en) * 2006-12-22 2008-06-26 Musculoskeletal Transplant Foundation Interbody fusion hybrid graft
JP2008204249A (ja) * 2007-02-21 2008-09-04 Renesas Technology Corp データプロセッサ
US8103698B2 (en) 2007-02-28 2012-01-24 Jianwen Yin Methods, apparatus and media for system management of object oriented information models
US7809972B2 (en) 2007-03-30 2010-10-05 Arm Limited Data processing apparatus and method for translating a signal between a first clock domain and a second clock domain
US7555637B2 (en) * 2007-04-27 2009-06-30 Vns Portfolio Llc Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
US20080270751A1 (en) 2007-04-27 2008-10-30 Technology Properties Limited System and method for processing data in a pipeline of computers
US20080282062A1 (en) * 2007-05-07 2008-11-13 Montvelishsky Michael B Method and apparatus for loading data and instructions into a computer
JP4497184B2 (ja) * 2007-09-13 2010-07-07 ソニー株式会社 集積装置およびそのレイアウト方法、並びにプログラム
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
US8275978B1 (en) 2008-07-29 2012-09-25 Marvell International Ltd. 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
JP5350049B2 (ja) * 2009-04-03 2013-11-27 セミコンダクター・コンポーネンツ・インダストリーズ・リミテッド・ライアビリティ・カンパニー インターフェース回路
CN201421494Y (zh) * 2009-05-11 2010-03-10 中山大洋电机股份有限公司 一种微处理器时钟检测电路及直流无刷电机的单片机mcu时钟检测电路
US8472278B2 (en) 2010-04-09 2013-06-25 Qualcomm Incorporated Circuits, systems and methods for adjusting clock signals based on measured performance characteristics
US10262365B2 (en) 2012-04-16 2019-04-16 Nasdaq Technology Ab Method and a computerized exchange system for processing trade orders
US9230690B2 (en) 2012-11-07 2016-01-05 Apple Inc. Register file write ring oscillator
US9083725B2 (en) * 2013-08-12 2015-07-14 Fred Korangy System and method providing hierarchical cache for big data applications
US9983990B1 (en) * 2013-11-21 2018-05-29 Altera Corporation Configurable storage circuits with embedded processing and control circuitry
US9645936B1 (en) * 2014-03-26 2017-05-09 Marvell International Ltd. System and method for informing hardware to limit writing in a memory hierarchy
US9582473B1 (en) * 2014-05-01 2017-02-28 Cadence Design Systems, Inc. Instruction set to enable efficient implementation of fixed point fast fourier transform (FFT) algorithms
US10560475B2 (en) 2016-03-07 2020-02-11 Chengdu Haicun Ip Technology Llc Processor for enhancing network security
US10489590B2 (en) 2016-03-07 2019-11-26 Chengdu Haicun Ip Technology Llc Processor for enhancing computer security
US10714172B2 (en) 2017-09-21 2020-07-14 HangZhou HaiCun Information Technology Co., Ltd. Bi-sided pattern processor
US10620881B2 (en) * 2018-04-23 2020-04-14 Microchip Technology Incorporated Access to DRAM through a reuse of pins

Family Cites Families (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3603934A (en) * 1968-07-15 1971-09-07 Ibm Data processing system capable of operation despite a malfunction
US3849765A (en) * 1971-11-30 1974-11-19 Matsushita Electric Ind Co Ltd Programmable logic controller
US3878513A (en) * 1972-02-08 1975-04-15 Burroughs Corp Data processing method and apparatus using occupancy indications to reserve storage space for a stack
GB1441816A (en) * 1973-07-18 1976-07-07 Int Computers Ltd Electronic digital data processing systems
US3944985A (en) * 1973-10-19 1976-03-16 Texas Instruments Incorporated Workspace addressing system
US4050058A (en) * 1973-12-26 1977-09-20 Xerox Corporation Microprocessor with parallel operation
US3911405A (en) * 1974-03-20 1975-10-07 Sperry Rand Corp General purpose edit unit
US4042972A (en) * 1974-09-25 1977-08-16 Data General Corporation Microprogram data processing technique and apparatus
US3969706A (en) * 1974-10-08 1976-07-13 Mostek Corporation Dynamic random access memory misfet integrated circuit
US3980993A (en) * 1974-10-17 1976-09-14 Burroughs Corporation High-speed/low-speed interface for data processing systems
US4003028A (en) * 1974-10-30 1977-01-11 Motorola, Inc. Interrupt circuitry for microprocessor chip
US4050096A (en) * 1974-10-30 1977-09-20 Motorola, Inc. Pulse expanding system for microprocessor systems with slow memory
US4037090A (en) * 1974-11-19 1977-07-19 Texas Instruments Incorporated Multiphase clocking for MOS
US3967104A (en) * 1974-11-26 1976-06-29 Texas Instruments Incorporated Direct and indirect addressing in an electronic digital calculator
CA1059639A (en) * 1975-03-26 1979-07-31 Garvin W. Patterson Instruction look ahead having prefetch concurrency and pipe line features
US4090247A (en) * 1975-08-11 1978-05-16 Arthur D. Little, Inc. Portable data entry device
US4003033A (en) * 1975-12-22 1977-01-11 Honeywell Information Systems, Inc. Architecture for a microprogrammed device controller
US4067059A (en) * 1976-01-29 1978-01-03 Sperry Rand Corporation Shared direct memory access controller
US4112490A (en) * 1976-11-24 1978-09-05 Intel Corporation Data transfer control apparatus and method
US4079455A (en) * 1976-12-13 1978-03-14 Rca Corporation Microprocessor architecture
JPS5378742A (en) * 1976-12-23 1978-07-12 Toshiba Corp Multiplication control system
GB1561961A (en) * 1977-04-20 1980-03-05 Int Computers Ltd Data processing units
US4128873A (en) * 1977-09-20 1978-12-05 Burroughs Corporation Structure for an easily testable single chip calculator/controller
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
JPS54107643A (en) * 1978-02-13 1979-08-23 Toshiba Corp Operation control method and unit executing structured program
FR2461301A1 (fr) * 1978-04-25 1981-01-30 Cii Honeywell Bull Microprocesseur autoprogrammable
US4255785A (en) * 1978-09-25 1981-03-10 Motorola, Inc. Microprocessor having instruction fetch and execution overlap
US4315308A (en) * 1978-12-21 1982-02-09 Intel Corporation Interface between a microprocessor chip and peripheral subsystems
CA1078430A (en) * 1979-01-17 1980-05-27 Benjamin Bronstein Pick-up truck edge protector and anchor member
US4300195A (en) * 1979-08-09 1981-11-10 Motorola, Inc. CMOS Microprocessor architecture
NL7906416A (nl) * 1979-08-27 1981-03-03 Philips Nv Rekenmachinesysteem, waarbij het programmageheugen geschikt is om doorlopen te worden waarbij niet tot een instruktie behorende gegevens apart gedetekteerd worden.
US4354225A (en) * 1979-10-11 1982-10-12 Nanodata Computer Corporation Intelligent main store for data processing systems
US4354228A (en) * 1979-12-20 1982-10-12 International Business Machines Corporation Flexible processor on a single semiconductor substrate using a plurality of arrays
US4335447A (en) * 1980-02-05 1982-06-15 Sangamo Weston, Inc. Power outage recovery method and apparatus for demand recorder with solid state memory
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor
US4398265A (en) * 1980-09-15 1983-08-09 Motorola, Inc. Keyboard and display interface adapter architecture
US4463421A (en) * 1980-11-24 1984-07-31 Texas Instruments Incorporated Serial/parallel input/output bus for microprocessor system
US4450519A (en) * 1980-11-24 1984-05-22 Texas Instruments Incorporated Psuedo-microprogramming in microprocessor in single-chip microprocessor with alternate IR loading from internal or external program memories
US4390961A (en) * 1980-12-24 1983-06-28 Honeywell Information Systems Inc. Data processor performing a decimal multiply operation using a read only memory
US4484300A (en) * 1980-12-24 1984-11-20 Honeywell Information Systems Inc. Data processor having units carry and tens carry apparatus supporting a decimal multiply operation
US4403303A (en) * 1981-05-15 1983-09-06 Beehive International Terminal configuration manager
US4541045A (en) * 1981-09-21 1985-09-10 Racal-Milgo, Inc. Microprocessor architecture employing efficient operand and instruction addressing
US4503500A (en) * 1982-02-11 1985-03-05 Texas Instruments Incorporated Microcomputer with bus interchange module
US4577282A (en) * 1982-02-22 1986-03-18 Texas Instruments Incorporated Microcomputer system for digital signal processing
US4538239A (en) * 1982-02-11 1985-08-27 Texas Instruments Incorporated High-speed multiplier for microcomputer used in digital signal processing system
US4453229A (en) * 1982-03-11 1984-06-05 Grumman Aerospace Corporation Bus interface unit
US4539655A (en) * 1982-03-16 1985-09-03 Phoenix Digital Corporation Microcomputer based distributed control network
US4586127A (en) * 1982-11-03 1986-04-29 Burroughs Corp. Multiple control stores for a pipelined microcontroller
FR2536200B1 (fr) * 1982-11-15 1987-01-16 Helen Andre Unite de stockage temporaire de donnees organisee en file d'attente
US4680698A (en) * 1982-11-26 1987-07-14 Inmos Limited High density ROM in separate isolation well on single with chip
US4488227A (en) * 1982-12-03 1984-12-11 Honeywell Information Systems Inc. Program counter stacking method and apparatus for nested subroutines and interrupts
US4607332A (en) * 1983-01-14 1986-08-19 At&T Bell Laboratories Dynamic alteration of firmware programs in Read-Only Memory based systems
US4649471A (en) * 1983-03-01 1987-03-10 Thomson Components-Mostek Corporation Address-controlled automatic bus arbitration and address modification
US4626988A (en) * 1983-03-07 1986-12-02 International Business Machines Corporation Instruction fetch look-aside buffer with loop mode control
US4553201A (en) * 1983-03-28 1985-11-12 Honeywell Information Systems Inc. Decoupling apparatus for verification of a processor independent from an associated data processing system
NL8302731A (nl) * 1983-08-02 1985-03-01 Philips Nv Halfgeleiderinrichting.
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US4777591A (en) * 1984-01-03 1988-10-11 Texas Instruments Incorporated Microprocessor with integrated CPU, RAM, timer, and bus arbiter for data communications systems
US5179734A (en) * 1984-03-02 1993-01-12 Texas Instruments Incorporated Threaded interpretive data processor
US4562537A (en) * 1984-04-13 1985-12-31 Texas Instruments Incorporated High speed processor
US4868735A (en) * 1984-05-08 1989-09-19 Advanced Micro Devices, Inc. Interruptible structured microprogrammed sixteen-bit address sequence controller
US4720812A (en) * 1984-05-30 1988-01-19 Racal-Milgo, Inc. High speed program store with bootstrap
JPH0690700B2 (ja) * 1984-05-31 1994-11-14 富士通株式会社 半導体集積回路
US4709329A (en) * 1984-06-25 1987-11-24 Data General Corporation Input/output device controller for a data processing system
US4670837A (en) * 1984-06-25 1987-06-02 American Telephone And Telegraph Company Electrical system having variable-frequency clock
US4665495A (en) * 1984-07-23 1987-05-12 Texas Instruments Incorporated Single chip dram controller and CRT controller
JPH0731603B2 (ja) * 1984-11-21 1995-04-10 ノビツクス Forth特定言語マイクロプロセサ
JPS61175845A (ja) * 1985-01-31 1986-08-07 Toshiba Corp マイクロプロセツサシステム
US4713749A (en) * 1985-02-12 1987-12-15 Texas Instruments Incorporated Microprocessor with repeat instruction
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
CA1226960A (en) * 1985-06-28 1987-09-15 Gregory F. Hicks Rate adaptation circuit and method for asynchronous data on digital networks
US4945479A (en) * 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
JPS6243764A (ja) * 1985-08-21 1987-02-25 Nec Corp バス・ステ−ト制御回路
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US4736291A (en) * 1985-11-22 1988-04-05 Texas Instruments Incorporated General-purpose array processor
DE3752017T2 (de) * 1986-03-20 1997-08-28 Nippon Electric Co Mikrorechner mit Zugriffsfähigkeit auf einen internen Speicher mit gewünschter variabler Zugriffszeit
US4722050A (en) * 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
US4835738A (en) * 1986-03-31 1989-05-30 Texas Instruments Incorporated Register stack for a bit slice processor microsequencer
US4797850A (en) * 1986-05-12 1989-01-10 Advanced Micro Devices, Inc. Dynamic random access memory controller with multiple independent control channels
JPS638971A (ja) * 1986-06-30 1988-01-14 Nec Corp 多項式ベクトル演算実行制御装置
JPS6326753A (ja) * 1986-07-21 1988-02-04 Hitachi Ltd メモリ−バス制御方法
US4803621A (en) * 1986-07-24 1989-02-07 Sun Microsystems, Inc. Memory access system
US4787032A (en) * 1986-09-08 1988-11-22 Compaq Computer Corporation Priority arbitration circuit for processor access
EP0337368B1 (en) * 1988-04-12 2001-03-07 Canon Kabushiki Kaisha Controller
JP2595314B2 (ja) * 1988-06-30 1997-04-02 三菱電機株式会社 誤書き込み防止機能を備えたicカ―ド
JP2628194B2 (ja) * 1988-07-28 1997-07-09 株式会社日立製作所 データ処理装置
US4924384A (en) * 1988-09-21 1990-05-08 International Business Machines Corporation Method for controlling the peer-to-peer processing of a distributed application across a synchronous request/response interface using push-down stack automata
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US4931986A (en) * 1989-03-03 1990-06-05 Ncr Corporation Computer system clock generator for generating tuned multiple clock signals
US5379438A (en) * 1990-12-14 1995-01-03 Xerox Corporation Transferring a processing unit's data between substrates in a parallel processor

Also Published As

Publication number Publication date
US5659703A (en) 1997-08-19
WO1991002311A1 (en) 1991-02-21
US5784584A (en) 1998-07-21
US5809336A (en) 1998-09-15
DE69033568D1 (de) 2000-07-20
US5440749A (en) 1995-08-08
EP0497772A4 (en) 1993-08-04
EP0497772A1 (en) 1992-08-12
EP0786730A1 (en) 1997-07-30
DE69033568T2 (de) 2001-03-01
JPH05502125A (ja) 1993-04-15
EP0786730B1 (en) 2000-06-14
US6598148B1 (en) 2003-07-22
US5530890A (en) 1996-06-25
AU6067290A (en) 1991-03-11
US5604915A (en) 1997-02-18

Similar Documents

Publication Publication Date Title
JP2966085B2 (ja) 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法
US5822606A (en) DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US6088783A (en) DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
KR101121606B1 (ko) 스레드 최적화 멀티프로세서 아키텍처
US6807614B2 (en) Method and apparatus for using smart memories in computing
KR101120398B1 (ko) 스레드 최적화된 멀티프로세서 구조
US5689677A (en) Circuit for enhancing performance of a computer for personal use
CN103777923A (zh) Dma向量缓冲区
US20060179198A1 (en) Micro interrupt handler
CN112486908A (zh) 层次化的多rpu多pea的可重构处理器
Dolle et al. A 32-b RISC/DSP microprocessor with reduced complexity
Ebeling et al. RaPiD-a configurable computing architecture for compute-intensive applications
KR100267092B1 (ko) 멀티미디어신호프로세서의단일명령다중데이터처리
Gray et al. Viper: A vliw integer microprocessor
US6334180B1 (en) Processor coupled by visible register set to modular coprocessor including integrated multimedia unit
Goodenough et al. A general purpose, single chip video signal processing (VSP) architecture for image processing, coding and computer vision
Zhou et al. Reconfigurable instruction-based multicore parallel convolution and its application in real-time template matching
Foster Computer architecture
Vlahos et al. GaAs microprocessors and digital systems: an overview of R&D efforts
Holmann et al. A media processor for multimedia signal processing applications
Nakamura et al. Real-time multimedia data processing using VLIW hardware stack processor
Naused et al. A 32-Bit, 200-MHz GaAs RISC for High-Throughput Signal Processing Environments
Paar et al. A novel predication scheme for a SIMD system-on-chip
Araújo Intelligent RAM: a radical solution?
Laborie et al. VLSI Digital signal processor (PSI)

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20070813

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080813

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080813

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080813

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080813

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090813

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100813

Year of fee payment: 11

EXPY Cancellation because of completion of term