JP2009205698A - 縮小命令セット・コンピュータ・マイクロプロセッサーの構造 - Google Patents

縮小命令セット・コンピュータ・マイクロプロセッサーの構造 Download PDF

Info

Publication number
JP2009205698A
JP2009205698A JP2009141967A JP2009141967A JP2009205698A JP 2009205698 A JP2009205698 A JP 2009205698A JP 2009141967 A JP2009141967 A JP 2009141967A JP 2009141967 A JP2009141967 A JP 2009141967A JP 2009205698 A JP2009205698 A JP 2009205698A
Authority
JP
Japan
Prior art keywords
memory
bit
stack
address
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009141967A
Other languages
English (en)
Other versions
JP2009205698A5 (ja
Inventor
George W Shaw
ジョージ ダブリュー ショー
Martin G Mcclurg
マーティン ジー マックルッグ
Bradley D Jensen
ブラッドリー ディー ジェンセン
Russel H Fish Iii
ラッセル エイチ ザ サード フィッシュ
Charles H Moore
チャールズ エイチ ムーア
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.)
Patriot Scientific Corp
Original Assignee
Patriot Scientific Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Patriot Scientific Corp filed Critical Patriot Scientific Corp
Publication of JP2009205698A publication Critical patent/JP2009205698A/ja
Publication of JP2009205698A5 publication Critical patent/JP2009205698A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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
    • 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/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect 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/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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/126The frame memory having additional data ports, not inclusive of standard details of the output serial port of a VRAM

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Computer Graphics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

【課題】本発明は、改良された形態の、単純化された縮小命令セット・コンピューター(RISC)マイクロプロセッサーに関する。特に、スタック構造をとるマイクロプロセッサーに関する。
【解決手段】本発明のある態様では、マイクロプロセッサーシステムはマイクロプロセッシングユニットと入出力プロセッサー(IOP)とを含んでいる。大域メモリーユニットは中央処理装置及びIOPと連結されている。ある手段が、中央処理装置及びIOPの大域メモリーユニットへのアクセスを裁定する。ある形態では大域メモリーユニットは複数の大域レジスタを含んでいる。
【選択図】図1

Description

関連出願に対するクロス・リファレンス
本発明は、現米国特許5,440,749即ち、1989年8月3日出願の米国出願番号07/389,334、及び上記出願の1995年6月7日に出願された以下の分割出願即ち、出願番号08/480,462、08/480,911、08/480,015、08/485,031、08/484,918、08/484,230、08/484,920、08/480,206、08/484,935、08/482,185、08/480,901、08/486,454において開示及び/又は請求された発明の改良をするためのものであり、1995年10月6日出願の米国仮特許出願番号60/005,408に基づいている。
本発明は、改良された形態の、単純化された縮小命令セット・コンピューター(RISC)マイクロプロセッサーに関する。特に、スタック構造をとるマイクロプロセッサーに関する。
上記関連出願に記載されているマイクロプロセッサーの発明は、全て、ここに参考資料として包含されている共通の開示に基づいているものであるから、改良は、そのマイクロプロセッサーにおいて、その性能と生産性を上げるために行われている。以下の記述では、これらの改良を、そのマイクロプロセッサーの現在好適とされている実施例を背景に開示する。
本発明のある態様では、マイクロプロセッサーシステムはマイクロプロセッシングユニットと入出力プロセッサー(IOP)とを含んでいる。大域メモリーユニットは中央処理装置及びIOPと連結されている。ある手段が、中央処理装置及びIOPの大域メモリーユニットへのアクセスを裁定する。ある形態では大域メモリーユニットは複数の大域レジスタを含んでいる。
本発明の別の態様では、マイクロプロセッサーシステムはマイクロプロセッシングユニットと入出力プロセッサー(IOP)とを含んでいる。メモリーインタフェースユニットが、中央処理装置及びIOPをシステムバスに選択的に連結する。ある手段が、IOPがシステムバスに決められた間隔でアクセスするのを許可する。
本発明の又別の態様では、マイクロプロセッサーシステムは、スタックキャッシュと連結された算術論理演算装置を含むマイクロプロセッシングユニットを有している。ある手段が、算術論理演算装置及びスタックキャッシュと連結され、スタックキャッシュの少なくとも1個のセルに値が含まれているかそして少なくとも他の1個のセルが空であるかを確認することによってスタックキャッシュ資源の可用性を決定する。ある手段が、スタックキャッシュ資源の可用性を決定する手段と連結され、スタックキャッシュ資源の可用性に基づいて算術論理演算装置による命令の実行を選択的に禁止する。
本発明の更に又別の態様では、マイクロプロセッサーシステムは、スタックキャッシュと連結された算術論理演算装置を含むマイクロプロセッシングユニットを有している。スタックキャッシュはシステムメモリーの少なくとも第1の部分に割り当てられている。ある手段が、マイクロプロセッシングユニット及びスタックキャッシュと連結され、スタックキャッシュのスタックポインタがシステムメモリーの第1の部分の境界領域内にアドレスを仮定するとスタック管理トラップを実行する。スタック管理トラップはシステムメモリーの少なくとも1個の他の部分の可用性を決定する。ある手段が、スタック管理トラップ実行の手段と連結され、スタックポインタがアドレスを境界領域内には含まれないシステムの第1の部分の定義済みの領域内に仮定するまでは、スタック管理トラップの他の実行を妨げる。
本発明の又更に別の態様では、マイクロプロセッサーシステムは、マイクロプロセッシングユニットとマイクロプロセッシングユニットをシステムのランダムアクセスメモリー(RAM)に連結するメモリーインタフェースユニットとを有している。マイクロプロセッサーシステムは、メモリーインタフェースユニットと連結されて、システムRAMを使って仮想システムメモリーを定義できるように、マイクロプロセッシングユニットにより供給された論理行アドレスをシステムRAMの物理行アドレスに変換するための方法を含んでいる。
本発明の又更に別の態様では、マイクロプロセッサーシステムは、レジスタユニットを含んでいる。レジスタユニットはメモリーアドレスとして翻訳されるべき値を含む少なくとも1個の記憶位置を有している。メモリーインタフェースユニットはレジスタユニットと連結される。メモリーバスはメモリーインタフェースユニットと連結される。システムメモリーはメモリーバスによってメモリーインタフェースユニットと連結される。メモリーインタフェースユニットは、メモリーアドレスを増加させ、そして、メモリーアドレスを使用してのシステムメモリーに対するメモリーバス処理の後、増加後のメモリーアドレスが、nを負でない整数として、2nの偶数倍である値を持つときに境界検出信号を作り出す転送論理を含んでいる。
本発明の又更に別の態様では、マイクロプロセッサーシステムは、中央処理装置とその中央処理装置と連結されたビット入力レジスタとを含んでいる。ビット入力レジスタは少なくとも1個のビットラインで論理入力を受け取る。ビット入力レジスタは少なくとも1個のビットラインと連結されたラッチを有しており、これは最初に少なくとも1個のビットラインをその論理レベルを決めるためにサンプリングする。ゼロ持続制御ユニットが、少なくとも1個のビットラインに割り当てられたレジスタにおける論理レベルを記憶するためラッチに接続される。
論理レベルは、中央処理装置によって定義済みの信号がゼロ持続制御ユニットに供給されるまでは、レジスタの中に記憶され続ける。
本発明のもう一つの態様では、マイクロプロセッサーシステムは、マイクロプロセッシングユニットと、入出力プロセッサー(IOP)と、前記マイクロプロセッシングユニットと前記IOPとをシステムバスに選択的に接続するメモリーインタフェースユニットとから成り、そのIOPはシステムアドレス情報を前記メモリーインタフェースユニットに提供するためのプログラムカウンター手段を含んでいる。
本発明の更なる態様では、マイクロプロセッサーシステムは、スタックキャッシュを持ったマイクロプロセッシングユニットを含んでいる。浮動小数点数学命令に影響を及ぼすシステムは、スタックキャッシュのセル内の値に従って浮動小数点演算を行うための算術論理ユニット手段を含んでいる。ある手段が、算術論理ユニット手段と連結されて、選択された浮動小数点演算の一つの性能に応じて浮動小数点例外を作り出す。モードレジスタ手段は、算術論理ユニット手段及び浮動小数点例外発生手段と連結されて、マイクロプロセッシングユニットが浮動小数点例外に応じて、定義済みの浮動小数点ルーチンを実行できるようにする。
本発明の更にもう一つの態様では、マイクロプロセッサーシステムは、スタックキャッシュを持ったマイクロプロセッシングユニットを含んでいる。区切り点命令を実行する方法は、区切り点命令のメモリーアドレスをスタックキャッシュにプッシュする段階と、区切り点サービスルーチンを実行する段階とから成っている。
本発明の又更なる態様では、マイクロプロセッサーシステムは、システムメモリーと、1つか又はそれ以上の内部レジスタを持ったマイクロプロセッシングユニットとを含んでいる。システムメモリーはマイクロプロセッシングユニットとの交信のため第1のアドレス空間を割り当てられる。マイクロプロセッシングユニット内でデータを転送する方法は、1つか又はそれ以上の内部レジスタに第1のアドレス空間とは異なる第2のアドレス空間を割り当てる段階と、第2のアドレス空間内でアドレスによって識別された1つか又はそれ以上の内部レジスタの部分へそしてその部分からデータを転送する段階とから成る。
本発明の又更にもう一つの態様では、マイクロプロセッサーシステムは、スタックキャッシュを持ったマイクロプロセッシングユニットを含んでいる。アドレス演算の方法は、第1のアドレス値をスタックキャッシュの第1のセルに記憶する段階と、第2のアドレス値をスタックキャッシュの第2のセルに記憶する段階と、第1のアドレス値を第2のアドレス値に加え、結果合計値をスタックキャッシュの第1のセルに記憶する段階とから成る。
本発明の又更なる態様では、マイクロプロセッサーシステムは、スタックキャッシュを持ったマイクロプロセッシングユニットを含んでいる。コピーバイト動作を行うための方法は、セルに記憶されている複数のデータバイトの最下位のものを読む段階と、複数のデータバイトの少なくとも他の一つを前記の最下位のデータバイトに置き換える段階とから成る。
本発明の又更にもう一つの態様では、マイクロプロセッサーシステムは、スタックキャッシュとキャリィレジスタを持ったマイクロプロセッシングユニットを含んでいる。テストバイト動作を行うための方法は、スタックキャッシュのセル内に記憶されている複数のバイトの各々を読む段階と、バイトの何れもがゼロ値であるときはキャリィレジスタに第1の論理値を記憶し、そうでないときはキャリィレジスタに第2の論理値を記憶する段階とから成る。
本発明の又更にもう一つの態様では、マイクロプロセッサーシステムは、システムメモリーと、そのシステムメモリーに連結されたマイクロプロセッシングユニットとを含んでいる。スタックキャッシュはシステムメモリーと連結され、プログラムカウンターがスタックキャッシュと連結されている。シングルステッププロセッシングシステムは、スタックキャッシュ及びプログラムカウンターと連結されて、第1のメモリーアドレスをスタックキャッシュの第1のセルからプログラムカウンターへロードする一つの手段を含んでいる。ある手段は、マイクロプロセッサーシステムのシステムメモリーの第1のメモリーアドレスに対応する位置に記憶されている第1の命令を実行するため、プログラムカウンターに連結される。ある手段はシングルステップトラップルーチンを実行し、その間に第2メモリーアドレスが第1セルにロードされ、第1の命令に続く第2の命令がシステムメモリー内の第2のメモリーアドレスに対応する位置に記憶される。
本発明のもう一つの態様では、マイクロプロセッサーシステムは、システムメモリーと、スタックキャッシュを持ったそのシステムメモリーに連結されたマイクロプロセッシングユニットとを含んでいる。スタックキャッシュ管理システムは、スタックキャッシュと連結され、スタックキャッシュ内に現在含まれているセルの数を決定するための方法を含んでいる。ある手段は、セルの数を決定するための前記手段と連結されて、セルの数をスタックキャッシュの定義済みの深さと比較する。ある手段は、比較を実行するための前記手段と連結され、その比較に基づいて現在のスタック深さの表示を提供する。
本発明の更なる態様では、マイクロプロセッサーシステムは、システムメモリーと、スタックキャッシュを持ったそのシステムメモリーに連結されたマイクロプロセッシングユニットとを含んでいる。スタックキャッシュ管理システムは、前記スタックキャッシュと連結され、前記スタックキャッシュ内に現在含まれているセルの数を決定するためのスタック深さ手段を含んでいる。ある手段は、スタック深さ手段と連結されて、スタック深さの表示を提供する。
本発明のもう一つの態様では、マイクロプロセッサーシステムは、システムメモリーと、スタックキャッシュを持ったマイクロプロセッシングユニットを含んでいる。スタックキャッシュ管理システムは、スタックキャッシュと連結され、スタックキャッシュ内の現在のセルの数を決定するための手段を含んでいる。ある手段は、現在のセルの数を決定するための手段と連結されて、現在のセルの数を最大スタック深さと比較して、スタックキャッシュに追加できるセルの数を計算する。ある手段は、スタックキャッシュ内の現在のセルの数にスタックキャッシュに追加できるセルの数と等しいセルの数を追加するために、スタックキャッシュ及びスタックキャッシュに追加できるセルの数を計算するための手段と連結される。
本発明の更にもう一つの態様では、マイクロプロセッサーシステムは、算術論理ユニットを持ったマイクロプロセッシングユニットと、その算術論理ユニットに連結された後入れ先出しスタックとを含んでいる。算術論理ユニットはビットを桁送りするためのビットシフティング手段を含んでいる。ビットシフティング手段は、ビットのカウントを1つ又はそれ以上の部分シフトでシフトし、各部分シフトでシフトされたビットの数だけカウントを減じる。シフティングは複数のビットで、カウントがその複数のビットより大きい間、行われる。その複数のビットの数はそれから少なくなり、シフティングとカウントの減少はカウントがゼロになるまで繰り返す。
本発明によるマイクロプロセッサー中央処理装置(CPU)のブロック線図である。 図1に示すマイクロプロセッサーCPUのマイクロプロセッシングユニット(MPU)部のブロック線図である。 図2に示すMPU部のレジスタの図解的表示である。 図3に示すレジスタの幾つかを使った加算演算の図解的表示である。 図1に示すCPUのためのメモリーマップの図解的表示である。 図1に示すCPUのためのメモリーにおけるスタック例外領域の図解的表示である。 図2のMPUのための命令形式の図解的表示である。 図2のMPUで使われる浮動小数点数形式の図解的表示である。 図5に示すモードレジスタのより詳細な図解的表示である。 図1に示す入出力プロセッサー(IOP)のブロック線図である。 図8のIOPにおけるレジスタ使用の図解的表示である。 図8のIOPのための命令形式の図解的表示である。 図1に示す直接記憶アクセス制御装置(DMAC)のブロック線図である。 図1のマイクロプロセッサーで利用される入出力(I/O)チャネル転送データ形式の図解的表示である。 図1に示す割り込み制御装置(INTC)のブロック線図である。 図8に示すビット入力レジスタioinのためのビット入力のブロック線図である。 図8に示すビット出力レジスタiooutのためのビット出力のブロック線図である。 図1のマイクロプロセッサーによるメモリーアクセスに使われるグループ選択及びバンク選択ビットの図解的表示である。 図1のマイクロプロセッサーを用いるシングルメモリーバンクシステムのブロック線図である。 図1のマイクロプロセッサーを用いるマルチメモリーバンクシステムのブロック線図である。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図1に示すオンチップ資源レジスタの図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図20に示すオンチップ資源レジスタと予約されたレジスタアドレスのより詳細な図解的表示である。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図17−18のシステムを使うメモリーアクセスのための信号タイミング線図のセットである。 図1のマイクロプロセッサーを包含するシステムのブロック線図である。 図1のマイクロプロセッサーを包含するシステムのブロック線図である。 図1のマイクロプロセッサーを包含するシステムのブロック線図である。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。 図1のマイクロプロセッサーの動作を理解するのに役立つ信号タイミング線図のセットである。
特定の実施例の説明
ShBoomTMマイクロプロセッサー100(図1)は高度に集積された32ビットのRISCプロセッサーで、広範囲な埋込型アプリケーションに対し安いシステムコストで高い性能を提供する。内部100MHzでプロセッサーは100MIPSのピーク性能を発揮する。32ビットのレジスタ102、104及びデータ経路106は32ビットのアドレスとデータタイプを完全にサポートする。プロセッサー100は4ギガバイトまでの物理メモリーをアドレス指定し、外部マッピングロジックを使って仮想メモリーをサポートする。
従来の高性能マイクロプロセッサーは、大きなレジスタセット付きのレジスタベースのものであり、パイプライン型か超スカラーかである。これら複雑な構造は多重オペランド命令、多重実行ユニット、或いは非常に長い実行パイプラインにより高価なシリコンを消費する。これらの特性は全て各命令の最速可能実行速度を低くし、シリコンサイズを大きくし、その結果チップのコストを高くする。
ShBoomTMCPU100の構造哲学は、単純化と使用の効率化である。ゼロオペランド設計は大多数のオペランドビットと、それが必要とする復号時間と命令空間とを不要にする。命令は8ビットに縮小され、命令の帯域幅は十分に増やされプログラムのサイズは低減された。パイプラインや超スカラーによる実行を利用していないことにより制御が単純化した結果、従来の命令キャッシュ無しに、単一クロック内で、そして各クロックサイクル毎に、命令を発行し終了するための実行の速度が上がっている。チップを確実に低コストにするため、データキャッシュととそのコストも又、レジスタキャッシュの効率化を優先し削除された。
ShBoomTMCPU100は、高速及び低速メモリーのいかなる所望の混成をも許容しながら、20nsから810nsまでのプログラム可能なバス構成4グループまでを処理する。最少システムコストは削減され、システム設計者が必要に応じて、システムコストと性能を引き替えることができるようにしている。
多くのオンチップシステム機能と「非接着」バスインタフェースを組み込むことによって、サポートチップが削減され、更にシステムコストを低減している。
CPU100はMPU108、入出力プロセッサー110、DMA制御装置112、割り込み制御装置114、ビット入力116,ビット出力118、プログラム可能メモリーインタフェース120を含んでいる。32ビット幅又は8ビット幅のメモリー及び装置で作動する。最少のシステムは、ShBoomTMCPU、8ビット幅EPROM、オシレーター、それにオプションで1個のx8又は2個のx16メモリー、の合計4又は5個の稼働構成要素で構成される。ただの137,500のトランジスターを含む小さなダイが、高性能低コストCPUを作り、高水準の集積が高性能低コストシステムを作る。
特徴
マイクロプロセッシングユニット(MPU)108(図2)
ゼロオペランド、双スタック122及び124構造
10ns命令サイクル
52汎用32ビットレジスタ
16大域データレジスタ(g0−g15)104
16局所レジスタ(r0−r15)は復帰スタックキャッシュ124として2倍になる r0は指標レジスタ128で前減分、後増分
自動局所レジスタスタック124スピルそしてリフィル
18オペランドスタックキャッシュレジスタ(s0−s17)122
s0はアドレスレジスタ130
自動オペランドスタックスピルそしてリフィル
指標レジスタ(x)132で前減分、後増分
カウントレジスタ(ct)134
スタックページングトラップ
キャッシュ管理命令
MPU108はDMA112及びIOP110と大域レジスタ104経由で通信する
ハードウェア単精度及び倍精度IEEE浮動小数点サポート
高速乗算
高速ビットシフター
ハードウェア単一ステップ及び区切り点
仮想メモリーサポート
通知書き込み
パワーオンリセットフラグ
命令空間セーブ8ビットオプコード
直接記憶アクセス制御装置(DMAC)(図11)
8個の優先化されたDMAチャネル
固定又は循環式DMA優先順位
バイト、4バイト、又はセルDMA装置
単一又は背中合わせDMAリクエスト
200MB/秒までの転送速度
チャネル毎にプログラム可能なタイミング
転送境界/カウント達成での割り込みMPU
転送境界/カウント達成での終了DMA
チャネルは事象カウンターとして構成可能
DMA112はMPU108及びIOP110と大域レジスタ104経由で通信する
入出力プロセッサー(IOP)
MPU108とは独立に命令の流れを実行
確定的実行
実行タイミング、同期データ転送、ビット出力操作に使用される
DRAMリフレッシュ
8個の転送チャネル
バイト、4バイト、又はセル装置転送
チャネル毎にプログラム可能なタイミング
転送境界/カウント達成での割り込みMPU
出力ビットをセット/リセット
MPU割り込みをセット
インプットビットでテストと分岐
ループ命令
転送アドレス、方向、境界での割り込みをロード
IOP110はDMA112及びMPU108と大域レジスタ104又はメモリーを経由して通信する
チャネルはタイマとして構成可能
命令空間セーブ8ビットオプコード
入出力116及び118/割込
8入力116ビット
ビットはゼロ保持として構成できる
レジスタ及びビットのアドレス指定可能
8出力118ビット
レジスタ及びビットのアドレス指定可能
入出力ビットピンで使用可能、又はバスで多重化
8個の優先化され方向付けられた割込
プログラム可能メモリーインタフェース(MIF)120
1/4外部クロックへのプログラム可能バスインタフェースタイミング
4つの独立構成可能メモリーグループ
32ビットと8ビット装置の全組み合わせ
EPROM、SRAM、DRAM、VRAMの全組み合わせ
殆ど全てのDRAMサイズ/構成
各DRAMグループへの高速ページモードアクセス
グループ毎に1メモリーバンク非接着サポート
16メモリーバンクまでデコーディングするメモリーバンク当たり1.25ゲート(メモリーグループ当たり4)
仮想メモリーサポート
DRAMリフレッシュサポート
DRAMサポートにはDSF、OE(バー)、WE(バー)、RAS(バー)制御前Cas(バー)を含む
図1に示す信号を以下の表1に示す。
Figure 2009205698

Figure 2009205698
注: I:入力オンリーピン
O:出力オンリーピン
I/O:双方向ピン
A():非同期入力
S(sym):同期入力はセットアップと合致し、記号に関し要件を保持せねばならない。
I(H):リセットで高値
I(L):リセットで低値
I(Z):リセットで高インピーダンス
ナショナルセミコンダクター・タイプVJG/VJU100ピン・プラスチック・クアッド・フラット・パッケージに実装されたとき、シングルチップマイクロプロセッサー100からピンアウトする信号を以下の表2に示す。
Figure 2009205698
目的
以下の資料にShBoomTMマイクロプロセッサー100の構造、ハードウェアインタフェース、プログラミングを述べる。本プロセッサーは高MPU性能、低システムコストを必要とする埋込型アプリケーションに的を絞ったものである。レーザープリンター、グラフィクスアクセレレーター、点火制御装置、ネットワークルーター、パーソナルディジタル用具、セットトップケーブル制御装置、ビデオゲームその他多くのアプリケーションがこれに当たる。本資料は、MPU108及びIOP110両方のプログラミングをはじめ、機能的容量、電気的特性及び定格値、実装規定を含めた、ShBoomTMCPU100を使用する製品を設計するに必要な情報を提供する。
概要
ShBoomTMマイクロプロセッサー100は高集積32ビットRISCプロセッサーであり、100MHz内部クロック周波数で100MIPSのピーク性能を発揮する。CPU100は特に、MPU性能とシステムコストが選択決定可能な要素となる埋込型アプリケーションに使用するために設計されている。
ShBoomTMCPUの命令セットはハードワイヤ式で、殆どの命令が、パイプラインや超スカラー構造を使うことなく、単一サイクルで実行できる。「フロースルー」設計のため、前の命令が終了する前に次の命令を開始でき、性能が向上している。
ShBoomTMMPU108(図2参照)は、16個の大域データレジスタ104、1個の指標レジスタ132、1個のカウントレジスタ134、1個の16深度アドレス指定可能レジスタ/復帰スタック124、1個の18深度オペランドスタック122を始めとする52の汎用目的レジスタから成っている。両スタックはトップエレメントに指標レジスタ128又は130を含んでおり、チップでキャッシュされ、必要な場合は自動的に外部メモリーにスピルし、リフィルされる。スタックはレジスタベースの構造で、典型的なデータの移動を最小化し、呼び出し、パラメータパス、変数割付の間のメモリーアクセスをも最小化する。更に、このMPUは1個のモード/ステータス・レジスタ136と、入出力、制御、構成、ステータスのための41個の局所アドレス指定レジスタとから成っている。
主要な特徴
2重プロセッサー構造:CPU100は、高性能、ゼロオペランド、2重スタック構造のマイクロプロセッシングユニット(MPU)108と、データを転送し、事象をカウントし、時間を計測し、他のタイミング依存機能を実行するための命令を実行する入出力プロセッサー(IOP)の両方を含んでいる。
ゼロオペランド構造:多くのRISCは貴重な命令空間を、しばしば1命令当たり15ビット以上を、各命令当たり3つの可能なオペランドを規定するのに費やしている。ゼロオペランド(スタック)構造はこれらのオペランドビットを削除し、命令を大幅に、典型的には1/4に短縮し、高い命令実行帯域幅と小さなプログラムサイズとを実現している。スタックも又レジスタセーブを最小化し、プロシジャ内及びプロシジャを超えてロードし、これにより短い命令シーケンスと、高速の実行コードを実現する。
高速、単純な命令:従来のRISCプロセッサーと比較して命令はデコードし実行するのにより単純であり、ShBoomTMMPU100及びIOP110は単一クロックサイクル内で命令を発行し終了する。両者ともピークの実行能力が100MIPSである。
4命令バッファ:8ビットのオプコードを使用しているので、CPU100は各命令をフェッチ又はプリフェッチする際に、4個までの命令をメモリーから受け取る。これらの命令はメモリーから再読み出しすること無しに繰り返すことができる。これによって、直接DRAMに接続する場合、キャッシュを消費することなく高性能が維持できる。
局所及び大域レジスタ:局所及び大域レジスタはデータメモリーへのアクセス回数を最小化する。局所レジスタスタック124は自動的に16個までのレジスタをキャッシュし、オペランドスタック122は18までのレジスタをキャッシュする。スタックすると、割り当てられたデータ空間はプロシジャ呼び出しに応じて効率的にネスト、アンネストする。16個の大域レジスタ104は共用データに記憶装置を提供する。
通知書き込み:メモリーへのデータ書き込みからプロセッサーを切り離し、書き込みが通知された後、プロセッサーが命令実行を継続できるようにする。
プログラム可能メモリー/バス・インタフェース:価格感度の高いシステムでより低いコストのメモリーとシステムとが利用できるようにする。本インタフェースは、DRAM装置4グループまででの高速ページモードを始めとする、多くの形式のEPROM/SRAM/DRAM/VRAMを直接サポートする。RASサイクルOE(バー)及びWE(バー)、RAS前CAS、DSF信号のオンチップサポートにより外部ハードウェアを追加することなくVRAMが使える。プログラム可能なバスタイミングとドライバ能力により、設計者は各プロジェクトに対し時間、性能予算の要求に応じ、システム設計に挑戦的に取り組む広範な解を得たことになる。
クロック乗数:内部的に外部クロックを2倍、4倍化する。オンチップPLL回路により典型的な厳密なオシレーター仕様が不要となり、低価格のオシレーターが利用できるようになる。
完全に静的な設計:完全に静的な設計なので、DCから定格速度までのクロックを実行できる。クロック速度が低くなると電力消費を大幅に削減できる。
ハードウェア・デバッギングサポート:区切り点及びシングルステップ能力の両方ともデバッギングプログラムを援助する。
仮想メモリー:外部マッピングSRAM及びサポートロジックの仕様を通してサポートされている。
浮動小数点サポート:特別の命令が効率のよい単精度及び倍精度のIEEE浮動小数点演算を実行する。
割込制御装置:8つまでの優先化されたレベルを8つの2Xクロックサイクルの速さの割込応答でサポートする。
8ビット入力116及び8ビット出力118:MPU及びIOPアプリケーション使用に対し、外部ハードウェアの必要性を減じながら、入出力ビットが利用できる。
中央処理装置
ShBoomTMCPU100の構造哲学は、単純化と使用の効率化であり、問題を適切に解き、存在する資源の最善の活用を計る最も単純な解を実行する。ハードウェアにおいては、これは使用するトランジスターの数を減らし、それによってCPUが低コストになることと同じである。
初期のRISCプロセッサーはCISCプロセッサーに比べてトランジスターの数を減じコストを低減し性能を改善した。今日、トランジスター間の相互接続が多くのCPUのシリコンの量を決めている。ShBoomTMMPUの構造哲学は、トランジスターをより少なくすることに加えて、レジスタベースのMPUと比べ相互接続を最小化するという結論に達している。
資源:ShBoomTMCPU100(図1)は10個の主要機能ユニットを含んでいる。それは、マイクロプロセッシングユニット(MPU)108、入出力プロセッサー(IOP)110、大域レジスタ104、直接記憶アクセス制御装置(DMAC)112、割込制御装置(INTC)114、オンチップ資源102、ビット入力116、ビット出力118、プログラム可能メモリインタフェース(MIF)120、クロック140である。一面では、ShBoomTMCPUはこれらのユニットの中及び間で資源の共用化を行うことによりシリコンサイズを小さくし、能力を獲得している。例えば以下のようにである。
大域レジスタ104は、MPU108、IOP110、MIF120の中の転送ロジック142によって共用されている。この大域レジスタ104は、MPU108ではデータ記憶とDMAC112及びIOP110との制御通信とに用いられ、IOP110では転送情報、ループカウント、ディレーカウントに用いられ、DMAC112では転送情報に用いられている。更に、転送情報はMIF120の中の転送ロジックで用いられ、IOP110とDMAC112によって共用されている。
MIF120はシステムバスへのアクセスのために、MPU108、IOP110、DMAC112、ビット出力118、ビット入力116によって共用されている。バストランザクションの要求は、IOP110の確定的実行を一時的に保証するため、MIF120によって仲裁、優先化される。
DMAC112転送終了ロジックは、終了動作を要領よく行うため、特別の終了条件及びMPU108との密接な連結を用いることによって、十分に削減されている。
INTC114は、MPU108への割込要求のため、ビット入力116、IOP110、DMAC112(MIF120転送ロジック142経由で)によって共用されている。
ビット出力118は、オンチップ資源レジスタ102を通しシステムで利用できるようになる。ビット出力118は、プログラム化された出力のため、MPU108とIOP110によって共用化され、ビットアドレス指定可能である。
複雑なIOP110プログラム、多くの割込源、多くの入力ビット、多くの出力ビット、全ての利用できるチャネル、MPU108の最大計算能力を必要とする最高度使用ケースでは資源の不足が生じるかもしれないが、そのようなことは常時あるわけではない。機能ユニット間での資源の共用はトランジスタ数、パッケージピン数、その結果としてシリコンサイズとコストを大幅に減らし、CPUの容量と柔軟性を増やす。利用できる資源の中から選択する能力のおかげで、他のCPUの固定資源セットと比較して、ShBoomTMCPU100はより広範なアプリケーションへ使用できる。
クロック速度
CPUのクロック速度はその性能を予言するものではない。例えば、パワーPC604はDECアルファ21064Aの半分の速度で走るが、‘95ベンチマーク性能では略同等の仕様を達成している。この点では、ShBoomTMCPU100はパワーPCよりももっとDECアルファに近い。しかし、ShBoomTMCPU100はこれらのCPUのどれとも可成り異なる設計哲学に基づいている。
大部分のプロセッサーは歴史的にシステムの設計者に対し、CPU実行速度、メモリー帯域幅、入出力帯域幅の三角形のバランスを取るように強要してきた。しかし、システムのクロック速度が上がるにつれて、バスの速度も、キャッシュメモリーの速度も上がり、システムインタフェースのコストも上がってきた。そして又、CPUのコストも上がり、このバランスを維持するために数千のトランジスタが追加された。
ShBoomTMCPU100は、低システムコストを維持しながら、システム設計者に望みの性能レベルを選択させるものである。これは先の三角形を幾らか傾かせるであろうが、コストは三角形バランス方程式の一部にはない。ShBoomTMCPUのプログラム可能なメモリインタフェースは広範囲なメモリー速度の使用を可能とし、システムが必要に応じ低速或いは高速のメモリーを使えるようにした。低速メモリーがシステムの性能を低下させるのは明らかだが、ShBoomTMCPUの高速内部クロック速度によって、内部演算は素早く完了する。このように多重サイクルの乗算及び除算命令は、単一サイクルの乗算ユニットのようにシリコンを消費することなく、速やかに実行される。単一サイクル乗算ユニットと競合する部分のクロック速度の8倍までで、乗除性能における差は消え、一方アプリケーションの残りの部分はこれに対応して高速で実行する。ある場合には、多数のトランジスターをそのように機能させるため専用化すれば高性能が得られるかもしれないが、シリコンのコストが増え、コストの増加はShBoomTMCPU100のこのバージョンの設計目標には合致しない。
マイクロプロセッサーユニット
MPU108(図2)は、幾つかの互いに相関するやり方での基本設計を通して、ShBoomTMCPUの単純化と使用の効率化の構造哲学を支えている。
大部分のRISCプロセッサーが高いクロック速度で実行するために、パイプライン及び超スカラー実行を用いているのに対して、ShBoomTMMPU108はどちらも使っていない。単純な構造にすることによって、ShBoomTMMPUは大部分の命令を単一クロックサイクル内で発行、終了する。そこには詰め込むべきパイプラインも、プログラムの流れの中で変更の間にフラッシュすべき何物もない。時にはもっと多くの命令が、ShBoomTMMPUコードで同じプロシジャを実施するように要求されているが、このMPUは同等のシリコンサイズ及び技術の他のプロセッサーよりも高いクロック周波数で作動し、同等の性能を十分に低減したコストで実現する。
マイクロプロセッサーの性能は、しばしば、メモリーから命令をいかに早く供給され得るかで制限される。MPU108は、8ビット命令を使い4つまでの命令(1命令グループ)を各メモリーアクセス毎に得ることができるようにして、このボトルネックを少なくしている。各命令は、典型的には、実行するのに一つの2Xクロックサイクルを取り、それ故、命令グループを実行するのには4つの2Xクロックサイクルを必要とする。メモリーアクセスは4つの2Xクロックサイクルを取ることができるので次の命令グループが終了する。これにより、命令キャッシュにコストを掛け複雑化すること無しに、最大命令実行帯域幅でプロセッサーに命令を供給できるようになる。
ゼロオペランド(スタック)構造は8ビット命令を可能にする。このスタック構造は、命令毎にソースと行き先のオペランドを指定する必要性を取り除く。オペランド仕様に対する命令の度毎にオプコードビットを使うことがないことによって、機能演算の帯域幅が大幅に、4倍にまで広がる。典型的RISCMPU命令帯域幅の倍を例示するShBoomTMMPU命令シーケンスの例を図3に示す。ShBoomTMMPU上の命令シーケンスは命令ビットの半分を必要とし、命令バンド幅が増加した結果からキャッシュされていない性能の利益が生まれる。
Figure 2009205698
スタックMPUはこのようにレジスタベースMPUよりも単純であり、ShBoomTMMPU108は2つのハードウェアスタック122及び124即ち、オペランドスタック122と局所レジスタスタック124を持つ利点を有する。単純化は広く行き渡り、スタックが実行中に使用されるという効率的なやり方で反映されている。
ALU150は本来一つの入力ソース、オペランドスタック122のトップ130、からのデータを処理する。ALU150は又、分岐アドレス計算にも使われる。データ伝送はこのように非常に削減され単純化されている。中間結果は典型的には無制限の深さに「スタックアップ」し、特別のレジスタ割付と管理を要求するよりはむしろ、必要に応じ直接利用される。スタック122と124は独立してキャッシュされ、自動的にスピルしリフィルし、他のRISCプロセッサーで典型的なスタック操作のためのソフトウェアオーバヘッドは取り除かれている。機能パラメータはオペランドスタック122にパスされ直接消費されてオフされ、大部分のスタックフレーム管理の必要性は取り除かれている。追加の局所記憶装置が必要な場合、局所レジスタスタック124は、ファンクションを超えて効率よくネスト、アンネストするレジスタを供給する。スタックなので、スタックレジスタ空間は実際に記憶されているデータに割り付けられるだけで、固定サイズレジスタウィンドウズ(登録商標)を使う構造とは違って、レジスタがスピル、リフィルされるときに記憶装置の活用とバスの帯域幅は最大となる。スタック速度コンテクストは、レジスタが使用前に明確にセーブされる必要が無く、必要に応じ追加のスタック空間が割り付けられるので、割込サービスのように切り替わる。このように、スタックは要求されない限り明確にアドレス指定可能なレジスタの数を減らし、データ位置指定と移動を減じることにより高速で実行する。スタックの記憶装置は本来局所的なものであるので、大域レジスタ104は要求された際に非局所レジスタ資源を供給する。
8ビットオプコードは多量の結合データを収めるには小さすぎる。即時値と分岐オフセットのためには追加のバイトが必要である。しかし、可変長命令は通常デコーディングを複雑にし、連結データのアクセスパスを複雑化し長くする。問題を単純化するため、グループ内でのバイトリテラルオプコードの位置に関わらず、命令グループの最右端のバイトからだけバイトリテラルデータが取られる。同様に、分岐オフセットはオプコード位置に関わらず、全てのビットが分岐オプコードの右に取られる。32ビットリテラルデータに対して、データはその次のメモリーセルから取られる。これらの設計選択の結果、必要なデータが内部データバスでの配置に対して確実に常に右側に位置合わせされるようになり、相互接続を減らし、単純化し、実行速度を早くする。
大部分の命令は単一のクロックサイクルでデコードされ実行されるので、データ演算に使用される同じALU150も又利用可能で、分岐アドレス計算に使用される。これにより、通常、分岐オフセット計算に必要とされるALU全体が削減される。
MPU108はクロック速度が速いので、単一サイクルの乗積算ユニットのためにチップ領域を消費するというよりはむしろ、通常の多重サイクルの乗除算の実行時間を短縮する。効率的に定数を乗ずるため、高速乗算命令は特定された数のビットだけを乗ずることになる。
カウントされたビットシフト演算は、バレルシフタのためにチップ領域を消費するというよりはむしろ、バイトによる第1のシフトに、そしてビットで必要なサイクルを最小化するのに「高性能」である。シフト演算はセル2つ(64ビット)シフトすることもでき、ビット循環命令を合成しやすくしている。
浮動小数点数学は有用で時には必要であるが、埋込型アプリケーションでは頻繁に使われるわけではない。MPUの命令は、浮動小数点ユニットのためにチップ領域を消費するというよりはむしろ、単精度及び倍精度の両方において、基本的IEEE浮動小数点数学演算の最も時間を消費する態様を効率的に実行するために供給される。この演算は必要なサイクルを低減するために「高性能」シフタを使用する。
バイトの読みとり及び書き込み動作は使用可能ではあるが、バイト値に対しスキャンするとき、個々のバイトを通しての循環は遅い。このタイプの動作は、セル内の全てのバイトで一時に作動する命令によってもっと効率化することができる。
アドレス空間
MPU108は全てのプログラムとデータ操作に対し、線形4ギガバイトアドレス空間を完全にサポートしている。入出力装置はそれをメモリーアドレスにマッピングすることによって選択されている。規定により、もっとも上のアドレスビットが、外部ハードウェアでデコードされた入出力装置アドレスを選定する。この規定は、2ギガバイトを超えるスパースアドレス空間を持った2ギガバイトの連続する線形プログラム及びデータの空間を作り出す。これは又、入出力装置と入出力チャネル転送のためのメモリーアドレスの同時アドレス指定ができるようにしている。以下のメモリー及び装置アドレス指定を参照されたい。
幾つかの演算命令はアドレスが4バイト(セル)境界に整列するのを期待している。このアドレスはセル整列していると称される。アドレスの上位30ビットだけがデータを置くために使用され、最下位の2アドレスビットは無視される。セル内では、高順位のバイトは低バイトアドレスに置かれる。次に低い順位のバイトは次に高いアドレスにあり、以下それに準ずる。例えば、値0x12345678はメモリーのバイトアドレスでは低アドレスから高アドレスへ12 34 56 78のように存在する。
レジスタとスタック
レジスタセットは、52個の汎用レジスタ122、124、104、132、134(図3)、モード/ステータスレジスタ136と、入出力、コンフィギュレーション、ステータスに使用される41個の局所アドレスマップされたオンチップ資源レジスタ102(図20)とを含んでいる。
オペランドスタック122は18個のレジスタs0−s17を含んでおり、後入れ先出しスタックとして作動し、上位3個のレジスタ(s0−s2)に直接アドレスする。これらのレジスタと残りのレジスタ(s3−s17)は共にスタックキャッシュとして作動する。算術、論理、データ移動動作は、中間結果処理と同じく、オペランドスタック上で実行される。スタックフレームを構築したり、必然的に他のレジスタ及びフレームの間でデータを移動すること無しに、パラメータはプロシジャにパスされ、結果はスタック上のプロシジャから帰ってくる。真のスタックなので、レジスタは、使用可能な記憶装置を有効に活用ため、必要なときだけ割り付けられる。
局所レジスタ124は16個のレジスタr0−r15を含んでおり、最初の15個のレジスタ(r0−r14)への直接アドレスを備えた後入れ先出しスタックとして作動する。これらのレジスタと残りのレジスタ(r15)は共にスタックキャッシュとして作動する。スタックなので、これらはサブルーチン復帰アドレスを保持し自動的に局所レジスタのデータをネストするのに使われる。
キャッシュされたスタック122と124は共に自動的にメモリーにスピルしメモリーからリフィルされ、任意の深さを持つことができる。更に、s0とr0とはメモリーアクセスに使用できる。以下のスタックとスタックキャッシュを参照されたい。
スタックキャッシュされたオペランドと局所レジスタを使えば、コンテクストをセーブし復元するために必要なオーバヘッドを削除することによって(大域レジスタだけが使用できるプロセッサーと比べ)、性能を改善できる。このことによって、非常に効率的な割込とサブルーチン処理ができるようになる。
スタックに加えて、16個の大域レジスタ104と、3個の他のレジスタがある。大域レジスタ(g0−g15)は、MPU乗除算命令(g0)とIOP110用のオペランド記憶装置として、データ記憶に使用される。これらのレジスタは共用されているので、MPU108及びIOP110はこれらのレジスタを通して通信することもできる。残っているのは、モード及びステータスビットを含むモードレジスタ136と、指標レジスタ(s0とr0に加えて)であるxレジスタ132と、ループカウンタであり且つ浮動小数点演算にも参加するctレジスタ134とである。
プログラミングモデル
アメリカ国家規格フォース(ANSフォース)又は、逆ポーランド記法(RPN)として知られている接尾辞表記法を使用するヒューレットパッカード計算機をよく知っている人にとっては、ShBoomTMMPUのプログラミングはいろんな面で非常に取り付きやすいだろう。
MPUアーキテクチュアは、命令形式内で規定されるオペランドの数によりクラス分けできる。代表的な16ビット及び32ビットのCISC及びRISCのMPUは通常2又は3オペランドのアーキテクチュアであるが、より小さなマイクロプロセッサーは1オペランドのアーキテクチュアである。各命令において、2又は3オペランドのアーキテクチュアは1つのソースと宛先か、2つのソースと1つの宛先を規定するが、1オペランドのアーキテクチュアは1つのソースだけを規定し、暗黙の宛先、大抵はアキュムレータを有している。アーキテクチュアは又通常純ではない。例えば、1オペランドのアーキテクチュアは、レジスタ間のデータ移動のためソースと宛先両方を規定する2オペランドの命令をしばしば持っている。
ShBoomTMMPU100はゼロオペランドアーキテクチュアでスタックコンピューターとして知られている。オペランドのソースと宛先はオペランドスタックのトップにあると仮定されており、これは又アキュムレータでもある。図3aを参照されたい。加算のような演算の場合、オペランドスタック122のトップから両方のソースオペランドを使い、それらを152に示してあるように加え、結果をオペランドスタック122のトップに帰し、こうしてオペランドスタック深さにおいて1つの正味削減効果を出す。
大抵のALU150の演算は同様の挙動を示し、2つのソースオペランドを使い、1つの結果オペランドをオペランドスタックへ戻す。幾つかのALUの演算では、1つのソースオペランドを使い、1つの結果オペランドをオペランドスタックへ戻す。あるALU及び他の演算でも非スタックレジスタを必要とし、ある限られた演算ではオペランドスタックを全く使わないものもある。
非ALU演算も又同様である。ロード(メモリー読み出し)ではオペランドスタック上か指定されたレジスタか何れかにあるアドレスを使用する。記憶(メモリー書き込み)ではオペランドスタック上かレジスタか何れかにあるアドレスを使用し、オペランドスタックからのデータを使用する。データ移動動作ではデータをレジスタからオペランドスタックにプッシュするか、又はデータをスタックからレジスタへポップする。
一旦データがオペランドスタック上に来れば、そこのあるデータを必要とするいかなる命令にも利用できる。例えば加算の結果は次の命令で要求されるまでは無制限にスタック上に置いておける。前記表3を参照されたい。命令は又、要求されたときに前の結果にアクセスできるように、データをオペランドスタックのトップの幾つかのセルに再順序づけするのにも利用できる。スタックエレメントを後で再順序づけするのを最小化或いは省略するために、データをオペランドスタックから取り除いたり、局所又は大域レジスタに置くこともできる。データをオペランドスタックからポップし、それを局所レジスタスタックにプッシュして再スタックすることもできる。
計算は、最も深くネストされた計算を第1に実行し、中間結果をオペランドスタック上に置き、次に中間結果を計算アンネストとして組み合わせることによって、通常最も効率的に実行することができる。計算のネスティングが複雑であるか、又は中間結果を、他のデータがオペランドスタックに追加された後、しばらく後で使用する必要があるような場合、中間結果をオペランドスタックから取り除き大域又は局所レジスタに記憶させることもできる。
大域レジスタは直接使用され、データを無制限に維持する。局所レジスタは局所レジスタスタックキャッシュ内のレジスタであり、スタックとして、最初に割り付けられねばならない。割付は、データをオペランドスタックからポップし、それを局所レジスタスタックに一度に1セルだけプッシュすることによって行うことができる。これは、一度に、初期化されていないスタックレジスタの1ブロックを割り付けすることによって行うこともでき、初期化されていないレジスタはそれからデータをどの様な順序ででもレジスタに、一度に1セルだけ、ポップすることによって初期化される。割り付けられた局所レジスタは、データをオペランドスタックにプッシュし、それを、一度に1セルだけ、局所レジスタスタック外にポップし、不必要なデータをオペランドスタックから捨てることによって割付解除することができる。替わりに、割り付けられた局所レジスタは、最初にレジスタから必要とされるデータを全てセーブし、次に、一度に、レジスタのブロックを割付解除することによって、割付解除することもできる。選択する方法は、必要なレジスタの数、オペランドスタック上のデータが必要な順序通りであるか否か、によって決まる。
スタック122及び124の双方にあるレジスタは、スタックのトップに関係して参照され、それゆえ有効範囲は局所的である。例えば、r0においてアクセスできたものは、1つのセルが局所レジスタスタック124にプッシュされた後では、r1としてアクセスでき、新しくプッシュされた値はr0としてアクセスできる。
パラメータは、オペランドスタック122にあるサブルーチンへパスされ、そこから戻される。この方法で無制限な数のパラメータをパスし、戻すことができる。無制限な数の局所レジスタ割付を行うこともできる。パラメータ及び割り付けられた局所レジスタは、サブルーチンとプログラム基本ブロックを超えて、このように便利にネストアンネストする。
サブルーチンの復帰アドレスは局所レジスタ124上にプッシュされ、サブルーチンへの入口にr0として指定され、前のr0はr1として、以下順次繰り上がって、アクセスできる。データがスタック上にプッシュされ、利用できるレジスタの空間が一杯になると、必要に応じレジスタはメモリーにスピルする。同様に、データがスタックから取り除かれレジスタ空間が空になると、必要に応じレジスタがメモリーからリフィルされる。このように、プログラムの見方からすれば、スタックレジスタは常に利用できることになる。
命令セット概観
表4はMPU命令をリストにしたものであり、後出の表34、37はニモニックとオプコードをリストにしたものである。全ての命令が、中間データを必要とするものを除き、8ビットで構成されている。このため、各命令フェッチ毎に4命令(1命令グループ)までを得ることができ、32ビット命令を持った典型的RISC機に比べメモリー帯域幅要件を低減できる。この特性によって、メモリーからの追加の命令フェッチ無しに1つの命令グループ上でループできるようになり(ミクロループ)、更に効率を上げる。命令形式を図6に示す。
Figure 2009205698
ALU演算
殆ど全てのALU演算はオペランドスタック122のトップ、s0,必要ならs1、で行われる。幾つかのオペランドは、g9,ct134又はpcも使う。
唯一のALUステータスビット、キャリィ、だけが維持されモード136で記憶される。他にALSステータスビットはないので、他の条件演算は全てs0を浮動でテストすることによって実行される。s0のゼロ/非ゼロ状態を反転するためにeqzが用いられる。大部分の算術演算はs0のビット31から作り出された結果からのキャリィを修正したものである。pc関係データの参照を行うにはadd pcが利用できる。addはキャリィを変更することなくアドレス算術を行うのに役に立つ。他の演算は演算の結果の一部としてキャリィを修正している。
s0及びs1は共にダブルセルシフトに使用でき、s0は64ビット値のより上位のセルを含みs1はより下位のセルを含む。シングルセルシフト、ダブルセルシフト両方とも、ビットをキャリィとs0のビット31の間で転送する。ダブルセルシフトで構成されるシングルセル回転を表現するコードを以下に示す。
全てのALU命令オプコードはエンコードされたフィールドを持っていない8ビット値としてフォーマットされる。
Figure 2009205698
Figure 2009205698
Figure 2009205698
分岐、スキップ、ループ(表7)
br、bz、call、dbr命令は各々可変長である。オプコードの最下位からの3ビット及びオプコード右側の現在の命令グループ内の全てのビットは相対分岐オフセットに使用される。図6参照。分岐宛先アドレスは、オフセットの範囲と宛先で実行されることになる命令の数を最大化するために、セル整列されている。オフセットは3、11、19又は27ビット長さであり、現在の命令グループ内でのオプコードの位置に依る。宛先のアドレスは、分岐オプコードを含むセルの始まりのアドレスからオフセットしている。オフセットは各々+12/−16、+4092/−4096、+1048572/−1048576、及び+268435452/−268435456バイトの範囲を持っている。オフセットのサイズが、分岐が宛先に届くだけ十分でない場合、分岐は、もっとオフセットビットが使用でき或いはbr[]又はcall[]が使える命令グループに移されなければならない。
br[]及びcall[]でレジスタ間接分岐が利用できる。これらはs0からの絶対バイトアドレスを使用する。算出pc相対分岐が要求された際にはadd pc命令が使用できる。
mloop 命令はマイクロループと呼ばれる。指定されれば、条件がテストされ、ctが減少する。終了条件が合わなければ、現在の命令グループの始めで実行が継続する。マイクロループは、メモリーから命令を再フェッチすることなく短い命令シーケンスを再実行するのに使われる。表10参照。
bzによってゼロで分岐する以外に、他の条件分岐がskip によって行われる。これらは、現在の命令グループの実行を終了し、次の命令グループの始めで実行を継続する。これらは付加的な制御の流れ動作を作り出すために、br、call、dbr、ret(或いは他の命令)と組み合わせることができる。
Figure 2009205698
リテラル(表8)
オプコード帯域幅を最大化するために、3つのサイズのリテラルを使うことができる。4ビット(ニブル)リテラル用の、−7から+8の範囲を持ったデータはオプコードの4つの最下位ビットでエンコードされ、数は、+8としてデコートされる2進値1000により、2の補数値としてエンコードされる。8ビット(バイト)リテラル用の、0から255の範囲を持ったデータは、命令グループ内でのオプコードの位置に関わらず命令グループの最も右のバイトに置かれる。32ビット(長、又はセル)リテラル用のデータは、命令の流れの中で命令グループに続くセルに置かれる。同じ命令グループ内の多重プッシュ1命令は命令グループに直接続く連続したセルにアクセスする。図6参照。
Figure 2009205698
ロードと記憶(表9)
r0及びxはレジスタ間接アドレス指定及び、事前減分4又は事後増分4でレジスタ間接アドレス指定をサポートする。これらのモードによって、メモリー参照動作が効率的に行えるようになる。コード表示メモリーの移動とフィルの動作を表10に示す。
レジスタ間接アドレス指定はs0のアドレスでも行うことができる。他のアドレス指定モードはaddaを使って実行することができる。表11に複雑なメモリー参照動作用のコードを示す。
上記例に示したメモリーアクセスは、セル整列で、メモリーアドレスの2つの最下位ビットを無視している。メモリーはバイトアドレスにおいてld、b[]でも読むことができ、バイトアドレスにおいてx及びreplbを使って書くこともできる。バイト動作を参照のこと。
MPUは1レベル通知書き込みを含んでいる。これによって、MPUは通知書き込みが行われている間も実行し続けることができ、実行時間を十分に減らすことができる。メモリーの一貫性は、通知書き込みにMPUバスリクエストを超えて優先バスアクセスを与えることにより維持され、このようにして書き込みが無限に遅らされることはない。表10のコード例において、ループ実行オーバヘッドは通知書き込みを使う場合ゼロである。通知書き込みはmspweをセットすることにより使用可能になる。
全てのロードと記憶の命令オプコードはエンコードされたフィールドを持っていない8ビット値としてフォーマットされる。
Figure 2009205698
Figure 2009205698
Figure 2009205698
データ移動(表12)
レジスタのデータは、最初にレジスタをオペランドスタックにプッシュし、次にそれを宛先レジスタにポップすることによって移動される。メモリーデータは同様にして移動される。上記ロードと記憶参照のこと。
gi及びriにアクセスするデータ移動命令用のオプコードは、4つの最下位ビットにエンコードされたレジスタ番号の付いた8ビット値である。他のデータ移動命令オプコードは全て、エンコードされたフィールドを持っていない8ビット値としてフォーマットされる。
Figure 2009205698
スタックデータ管理(表13)
オペランドスタックデータはスタックのトップから使われ、処理時に通常消費される。これは、スタックデータを複写、廃棄、再順序づけするための命令の使用を要求できる。データは、一時的に経路外に置くため、或いはスタックアクセス順序を反転するため、或いは直接アクセスのために局所レジスタにおくため、局所レジスタスタックに移動させることもできる。表10のコード例を参照。
2、3個より以上のスタックデータ管理命令が、与えられたオペランドスタックセルにアクセスすることを要求される場合、通常、データを局所又は大域レジスタに置くことによって性能改善が図れる。しかし、大域レジスタと局所レジスタの供給は限られており、ある点ではメモリーにスピルする。データは、そうするのが効率的な間だけ、オペランドスタック上に維持されるべきである。一般的に、プログラムがs2より深いオペランドスタックにあるデータに頻繁にアクセスすることを要求する場合、そのデータ又は他のもっとアクセスしやすいデータを直接アドレス指定可能なレジスタに置き、アクセスを単純化すべきである。
局所レジスタスタックを利用するためには、データをオペランドスタックからポップし局所レジスタスタック上にプッシュするか、局所レジスタスタックからポップしてオペランドスタック上にプッシュすることもできる。このメカニズムは、結果オペランドスタックオーダーが受け入れられるときには、あと2,3のセルを移動させるのに便利である。もっと多くのデータを移動させる場合、或いはオペランドスタック上のデータ順序が要求通りでない場合、lframeを使って必要な局所レジスタを割付、割付解除でき、そうすればレジスタは直接書き込み呼び出しできるようになる。lframeを使えば、スタックをバストランザクションの連続シーケンスとしてスピルすることによって、必要とされる局所レジスタスタック空間を使用可能にでき、こうすれば、DRAMに書き込む際に必要とされるRASサイクルの数を最小化することになる。
sframe命令はlframeと同様に挙動し、基本的にはオペランドスタックから数多くのセルを廃棄するのに使用される。
全てのスタックデータ管理命令オプコードはエンコードされたフィールドを持っていない8ビット値としてフォーマットされる。
Figure 2009205698
スタックキャッシュ管理(表14)
初期化及び可能性があるとすれば関連するトラップを経由してのオーバーフローとアンダーフローのモニタリング以外では、スタックキャッシュはアクティブな管理を必要としない。キャッシュを効率的に処理するために幾つかの命令が設けられていて、コンテクストの切替、ステータスのチェック、スピルとリフィルのスケジューリングを行う。
depth命令を使ってスタックキャッシュのSRAM部内のセルの数を決めることができる。この値を使って、現在キャッシュにある値を廃棄し、_cacheでキャッシュ深さを復元し、或いは全オンチップ及び外部スタック深さを計算することができる。
cache命令は、データがキャッシュの中にあること、或いはデータのための空間がキャッシュの中にあることの何れかを保証するのに使用でき、スピルとリフィルは優先時間に起こることになる。このことにより、キャッシングプロセスをより以上に制御できるようになり、プログラム実行プロセスの間、より高次の決定ができるようになる。この方法でスタックのスピルとリフィルをスケジューリングすれば、スタックメモリーアクセスのため必要となるRASサイクルを最小化することによって性能を改善することもできる。
frame命令は、スタックのSRAM部のトップで初期化されていないレジスタ空間のブロックを割り付け、或いは最早不必要になった際にはそのようなレジスタのブロックを廃棄するのに使うことができる。 frame命令は cache命令同様に、スタックメモリーアクセスのため必要となるRASサイクルを最小化することによって性能を改善するため、グループスタックのスピルとリフィルをするのに使うことができる。
これ以上のことについては、スタック及びスタックキャッシングを参照されたい。
全てのスタックキャッシュ管理命令オプコードは、エンコードされたフィールドを持っていない8ビット値としてフォーマットされる。
Figure 2009205698
バイト演算(表15)
表16に示すコードを使って、バイトはアドレス指定してメモリーから直接読み出すことができ、アドレス指定してメモリーに書き込むことができる。
Figure 2009205698
Figure 2009205698
セル内でバイトを処理するのに命令が使用できる。バイトはセルを超えて複写でき、セル内のバイトはゼロのテストが行え、セルは1バイト左又は右へシフトできる。指定されたバイトのスキャニング、空のバイトのスキャニング、セルサイズユニットでの空終了ストリングの移動を示すコード例を、表17−19に示す。
全てのバイト演算命令オプコードはエンコードされたフィールドを持っていない8ビット値としてフォーマットされる。
Figure 2009205698
Figure 2009205698
Figure 2009205698
浮動小数点数学(表20)
上述した命令は、基本数学関数(+、−、*、/)のための効率的な単精度及び倍精度IEEE浮動小数点ソフトウェアを実施するために、及び浮動小数点ライブラリルーチンの開発の援助のために使用される。これらの命令は主として、普通にプログラムされている場合には実行時が長くなる標準化、標準化解除、指数演算、丸め、及び例外の数及び状態の検出を遂行する。「浮動小数点数学支援」を参照されたい。
全ての浮動小数点数学命令演算コードは、エンコードされたフィールドを持たない8ビット値としてフォーマットされる。
Figure 2009205698
デバッギング機能(表21)
これらの各命令は、例外を信号し、プログラムのデバッギングを助けるためにアプリケーションにより供給された実行・監視プログラムをトラップする。「デバッギング支援」を参照されたい。
両デバッギング命令演算コードは、エンコードされたフィールドを持たない8ビット値としてフォーマットされる。
Figure 2009205698
オンチップ資源(表22)
これらの命令によって、オンチップ周辺装置、状態レジスタ、及び構成レジスタへアクセスすることができる。全てのレジスタへは、ldo[]及び sto[]命令を用いてアクセスすることができる。最初の6つのレジスタは各々8ビットを含み、これらは ldo.i[]及び sto.i[]を用いてアドレス可能なビットでもある。「オンチップ資源レジスタ」を参照されたい。
全てのオンチップ資源命令演算コードは、エンコードされたフィールドを持たない8ビット値としてフォーマットされる。
Figure 2009205698
雑(表23)
割込み禁止及び割込み可能化命令は、単なるシステム制御命令である。これらは、割込みをより効率的にするために与えられる。他のシステム制御機能は、モード内の、またはオンチップ資源レジスタ内のビットをセットまたはクリアすることによって遂行される。
分割命令は 32 ビット値を、それぞれが元の値の 16 ビットを含む2つのセルに分離する。
全ての雑命令演算コードは、エンコードされたフィールドを持たない8ビット値としてフォーマットされる。
スタック及びスタックキャッシュ
スタックキャッシュは、プログラムされた、または例外文脈切換え(呼出しサブルーチン実行及びトラップまたは割込みサービシングのような)中のレジスタの割当て及び保存に必要なオーバヘッドを最小にすることによって、スタックレジスタ資源の使用を最適化する。
ローカルレジスタスタック124(図3)は、普通の後入れ先出し待ち行列として挙動するようにアドレスされるオンチップSRAMアレイからなっている。ローカルレジスタr0 −r15はスタックの現在のトップに対して内部的にアドレスされる。レジスタr0 −r14は個々にアドレス可能であり、常に次々に割当てられ、満たされる。もしキャッシュ内にないあるレジスタがアクセスされれば、次のデータセットを確保するために、より低い順序の全てのレジスタが読み込まれよう。
オペランドスタック122は同じように構成されているが、ALUに入力を供給するために、SRAMスタックキャッシュアレイの前に2つのレジスタが追加されている。これらのレジスタはs0 及びs1 で示され、SRAMアレイはs2 −s17で示されている。レジスタs0 、s1 、及びswだけは個々にアドレス可能であるが、それ以外は、オペランドスタックはローカルレジスタスタックに似た挙動をする。SRAMアレイs2 −s17は「空」になることができる(以下に説明する)が、s0 及びs1 は常にデータを含むものと考えられる。
スタックキャッシュは、暗示スタックメモリ演算を発生させることが要求される前に、常に現演算を実行して完了させることができるように設計されている。どの命令も(スタック管理命令を除く)、何れかのスタックから1つより多くのセルを明示的にプッシュしたり、または明示的にポップしたりしない。従って、実行を完了できるようにするために、スタックキャッシュ論理は、命令実行の前に、常に各スタックキャッシュ内の1つまたはそれ以上のセルが一杯であり、1つまたはそれ以上のセルが空であるようにする(後述するように、電源投入直後を除く)。もし、ある命令を実行した後に、それが何れのスタックの場合でもなければ、対応するスタックキャッシュは自動的にメモリへあふれ出るか、またはメモリから再充填されて、次の命令を実行できるようになる前にこの状態に到達する。同様に、スタックキャッシュ深さを明示的に変化させる命令、 cache 、 frame 、pop sa、及び pop la が実行されて完了し、次いで上述した状態が存在するようにされる。
以上のようにある命令の実行によってr15及びs17を満たすことはできるが、それらは次の命令が実行される前にあふれ出る。同様に、r0 及びs2 はある命令の実行によって空にすることはできるが、それらは次の命令が実行される前に充填される。
スタックは任意の深さであることができる。スタックがあふれ出ると、データはスタックポインタ内のアドレスに書き込まれ、次いでスタックポインタが4だけデクレメントされる(ポストデクレメンテッド・スタックポインタ)。反対にスッタックが再充填されると、ポインタは4つだけインクリメントされ、次いでデータがメモリから読み出される(プレインクリメンテッド・スタックポインタ)。オペランドスタックのためのスタックポインタは sa であり、ローカルレジスタスタックのためのスタックポインタは la である。
スタックは動的に割当てられるメモリ領域であるから、メモリ領域がオーバフローまたはアンダーフローしないようにある量の計画または管理が必要である。代替として、スタックメモリは、スタック・ページ例外を使用して動的に割当てまたは監視することができる。
スタック・ページ例外
スタック・ページ例外は、何れかのスタックキャッシュメモリが何れかの 1024 バイトメモリページの境界付近にアクセスすると発生し、オーバフロー及びアンダーフロー保護、及びスタックメモリ管理を可能にする。ページ境界領域のマージン付近のスタック・ページ例外を防ぐために、一旦境界領域がアクセスされて対応するスタック・ページ例外が信号されると、スタックポインタは別のスタック・ページ例外が信号される前にそのスタックページの中央領域へ移動しなければならない。図5を参照されたい。
スタック・ページ例外は、現スタックページの縁に到達した時にスタックメモリページを再割当てするか、または再位置付けすることを可能にすることによってスタックメモリを管理可能にする。スタックページの境界領域は、 cache または frame 命令でさえも実行して完了させることを可能ならしめ、対応するスタックキャッシュをメモリに対して空にすることができる各ページの端から探知された 32 のセルである。スタック・ページ例外を使用するには、所与の時点に2KBだけのアドレス可能なメモリ、即ち現スタックページ及び最も新しく侵害された境界付近のページを各スタックに割振ることが必要である。
各スタックは、スタックページオーバフロー及びスタックページアンダーフロー例外を支援する。これらの例外状態は、命令実行モードを実行する間の対応するスタックあふれ出し、または再充填がローカルスタックオーバフロー、ローカルスタックアンダーフロー、オペランドスタックオーバフロー、及びオペランドスタックアンダーフローを信号しているビット、及び対応するトラップ可能化ビットを含んでいる時に、アクセスされるメモリアドレスに対して試験される。
スタックページ例外は、全てのトラップの最高優先順位を有している。これは、スタックページ境界がその実行中に侵されないように、スタックトラップハンドラコードのスタック効果を注意深く考えることが重要であることを暗示している。
Figure 2009205698
スタック初期化(表24)
CPUがリセットした後に、両MPUスタックは残余の対応スタックポインタがロードされるまで初期化されていないものと見做すべきであり、これはMPUによって遂行される第1の動作の1つであるべきである。
リセット後、スタックは異常に空である。即ち、r0 及びs2 は割当てられておらず、対応するスタックへの最初のプッシュ動作で、またはそのスタックポインタ初期化時に割当てられる。しかしながら、プッシュされたセルをポップすると、スタックは空にされて再び充填することが必要になる。従って、最初にプッシュされたセルがそのスタック上に残されるべきであるか、またはそのスタックが更に使用される前に対応するスタックポインタを初期化すべきである。
スタック深さ
各スタック上のセルの合計数は、メモリへあふれ出たセルの数と、オンチップキャッシュ内のセルの数とを加算することによって容易に決定できる。表25を参照されたい。
Figure 2009205698

Figure 2009205698
スタックフラッシュ及び回復
文脈切換えを遂行する時、スタックキャッシュに新しい文脈を再ロードできるようにするために、スタックキャッシュ内のデータをメモリへあふれ出させる必要がある。常にオンチップに維持されているスタックキャッシュの部分r0 及びs0 −s2 をスタックキャッシュのあふれ可能な領域へ押しやり、それらをメモリへ書き込むことができるように注意を払わなければならない。キャッシュをフララッシュし、回復するためのコード例を、それぞれ表26及び27に示す。
Figure 2009205698

Figure 2009205698
Figure 2009205698
Figure 2009205698

Figure 2009205698
例外及びトラッピング
例外処理は精密であり、低メモリ内の実行可能コードベクトルにトラッピングすることによって管理される。各32ビットベクトル位置は、4命令までを含むことができる。これにより、これらの4命令内の、またはより長いトラップルーチンへの分岐によって、トラップにサービスすることができる。トラップは、適切な処理を行うために優先順位付けされ、入れ子にされる( nested )。トラップ名及び実行可能なベクトル位置が図4に示されている。
例外は、例外を生じさせるための定義された状態が存在する場合に信号されると言われる。もしトラップが可能にされれば、トラップが処理される。トラップはトラップ論理によって処理され、呼出しサブルーチンに関連する実行可能なコードベクトルをアドレスさせる。多重トラップが同時に発生する場合には、最低優先順位のトラップが先ず処理されるが、実行可能なコードベクトルが実行される前に次に高い優先順位のトラップが処理される等々、最高優先順位のトラップが処理されるまで続く。次いで、最高優先順位のトラップの実行可能なコードベクトルが実行される。各トラップハンドラが retを実行する度に、入れ子にされた実行可能なベクトルの復帰アドレスがアンネスト( unnest )し、優先順位付けられたトラップ実行を発生する。
トラップ処理及びネスティング中は、ある命令が命令グループの1つをバイトで実行し始めるまで、割込みは不能にされる。割込みは、INTCレジスタ内にそれらの要求状態が維持されているので、トラップを用いて入れ子にする必要はない。
表29は各トラップの優先順位をリストしたものである。処理されたデータ、または実行された命令によって明示的に発生することができるトラップは、表30にリストされている。システムの現在の状態によって、表30と同時に発生することができるトラップは表28にリストされている。
Figure 2009205698

Figure 2009205698
Figure 2009205698

Figure 2009205698
浮動小数点数学支援
MPUは単精度( 32 ビット)及び倍精度( 64 ビット)IEEE浮動小数点数学ソフトウェアを支援する。浮動小数点ユニット及びそれが要求するシリコン領域ではなく、MPUは、基本浮動小数点数学演算をプログラムする時に要求される時間を消費する殆どの演算を遂行する命令を含んでいる。コアとなる加算、減算、乗算、除算機能を与えるために、存在整数数学演算が使用される。更に、トップの1つまたは2つの(精度に依存する)スタックセルへの3ビット拡張を使用して丸めを援助し、所要の精度及び例外信号動作を与える。
データフォーマット
単精度及び倍精度IEEEフォーマットはMPUの透視( perspective )から支援されるが、一時に 32 ビット値しか操作されない(ダブルシフティングを除く)。図6aを参照されたい。MPU命令は図示された標準化データフォーマットを直接的に支援する。関係付けられた標準化解除フォーマットは testexpによって検出され、ソフトウェアで完全に支援可能である。
状態及び制御ビット
モードレジスタ136は、浮動小数点精度、丸めモード、例外信号、及びトラップ可能化をセットする 13 ビットを含んでいる。図7を参照されたい。
Figure 2009205698
GRS拡張ビット
IEEE標準によって要求される精度を維持するために、IEEEフォーマット数内に保持されるよりも多くのシグニフィカンド( significand )ビットが必要である。これらの特別ビットは、シグニフィカンドの右からシフトしたビットを保持するために使用される。これらは、付加的な精度を維持し、処理中に精度が失われたか否かを決定し、そして丸めを行うべきか否かを決定するために使用される。3ビットはモードで現れるので、これらを保存し、回復し、そして操作することができる。個々には、これらのビットはガードビット、丸めビット、及びスティッキービットと名付けられている。幾つかの命令がこれらのビットを操作、または変更する。表31を参照されたい。
denorm及び normrがビットをGRS拡張内にシフトさせる時、ビットの出所は常にシグニフィカンドの最下位ビットである。単精度モードでは、GRS拡張ビットはs0 から取出され、倍精度モードではビットはs1 から取出される。普通の右シフトの場合、GRS拡張ビットは常に、シフトの最下位ビット(即ち、もし単シフトならばs0 、もし倍シフトならばs1 )から到来する。命令 normlはビットをGRS拡張からシフトさせるだけの命令であり、ビットは単精度モードではs0 内に、倍精度モードではs1 内にシフトする。普通の左シフトは常に0をシフトさせ、GRS拡張ビットに影響は与えない。
Figure 2009205698

Figure 2009205698
丸め
GRS拡張は、小数点結果を発生させながら、3つの特別精度ビットを維持する。これらのビットは、宛て先フォーマットに適合させるために、結果をどのように丸めるかを決定するのに使用される。もし誰かがビットを、あたかもそれらが2進小数点の右にあるものと見れば、ガードビットは半分の位置値を有し、丸めビットは 1/4の位置値を有し、そしてスティッキービットは 1/8の位置値を有している。fp round modeによって選択された丸め操作は、GRS拡張ビット及び ct の符号ビットを使用してどのように丸めを行うべきかを決定する。もしガードビットが0であれば、GRS拡張の値は半分未満である。もしガードビットが1であれば、GRS拡張の値は半分またはそれ以上である。GRS拡張ビットは宛て先フォーマットの一部ではないから、操作が完了した時にはそれらは破棄される。この情報は、命令 rndの動作のための基礎である。
rnd による殆どの丸め調整は、「何もしない」か、または「s0 をインクリメントさせる」ことを含む。これが切上げなのか、または切捨てなのかは ct 内の loating-int結果の符号に依存する。もしGRS拡張ビットが0でなければ「何もしない」は、もし結果が正ならば「切捨て」の効果を有し、もし結果が負ならば「切上げ」の効果を有している。同様に、「結果をインクリメントする」は、もし結果が正ならば「切上げ」の効果を有し、もし結果が負ならば「切捨て」の効果を有している。もしGRS拡張ビットが0であれば、結果は正しかったのであり、丸めを必要としない。表32を参照されたい。
実際には、シグニフィカンド(または倍精度シグニフィカンドの低位セル)はs0 内にあり、符号及び指数は ct 内にあり、もし遂行された rndからs0 のビット 31 がインクリメントされればキャリーがセットされ、そうでなければキャリーはクリアされる。これにより、キャリーは倍精度シグニフィカンドの上位セル内に伝播できるようになる。
例外
処理をスピードアップするために、浮動小数点命令によって検出された例外状態は例外信号ビットをモードで、及びもし可能化されていれば、トラップをセットする。以下のトラップが支援される。
* 指数 testexp から信号される
* アンダーフロー norml、addexp、subexp から信号される
* オーバフロー normr、addexp、subexp から信号される
* 標準化 denorm、norml、normr から信号される
* 丸め済み rnd から信号される。
例外は、命令が完了した時に優先順位付けされ、同時に発生する他の何れかのシステム例外またはトラップと共に処理される。「例外及びトラッピング」を参照されたい。
* 指数トラップ:特別例指数を検出する。もし試験された指数が全て0であるか、全て1であれば、キャリーがセットされ、例外が信号される。キャリーをセットすることによって、トラップを処理せずに結果を試験することができる。
* アンダーフロートラップ:計算またはシフト中のデクレメントによって小さくなり過ぎた指数を検出する。
* オーバフロートラップ:計算またはシフト中のインクリメントによって大きくなり過ぎた指数を検出する。
Figure 2009205698

Figure 2009205698
* 例外標準化:GRS拡張へのシフトによって失われたビットを検出する。例外状態は命令実行の終わりに試験され、もしGRS拡張内の何れかのビットがセットされていれば信号される。この時点で試験することによって、後刻浮動小数点命令によって試験させ、信号させるためにGRS拡張をセットするのに使用される正常の右シフトが可能になる。
* 丸められた例外:丸めによるs0 のビット0の変化を検出する。
ハードウェアデバッギング支援
MPU 100は、中断点命令 bkpt 、及びシングルステップ命令 step の両方を含んでいる。命令 bkpt は、中断点トラップを実行して bkpt 演算コードのアドレスをトラップハンドラへ供給する。これにより、プロセッサは中断点までその全速で実行することが可能になり、中断点以降はプログラム制御された手法で実行する。 step は、供給されたアドレスにおいて命令を実行し、次いでシングルステップトラップを実行する。シングルステップトラップは命令毎の実行を効率的に監視する。
中断点
命令 bkpt は、復帰アドレスが bkpt 演算コードのアドレスであることを除いて、アドレス0×134 への呼出しサブルーチンと類似の動作を遂行する。命令 push.1 に起因して、呼出しサブルーチンのアドレスは常にその復帰アドレスからは決定することができないので、この挙動が必要なのである。
一般に、 bkpt はデバッギングについての関心点におけるアプリケーション内の命令を一時的に置換するために使用される。 bkpt のためのトラップハンドラは、典型的には、元の命令を回復し、ユーザに対して情報を表示し、そしてコマンドを待機する。もしくは、トラップハンドラは、終了状態(この特定の中断点のレジスタ値または実行数のような)を調べ、この状態に合致するまでアプリケーションの実行を継続することによって、条件付き中断点を実現することができる。 bkpt が step に優る点は、アプリケーションが中断点間を全速で実行することである。
シングルステップ
命令 step は、一時に1つの命令をアプリケーションプログラムに実行させるために使用される。これは、復帰アドレスにおける1つの命令の実行の後にアドレス0×138 が発生することを除いて、サブルーチンからの復帰に極めて似た動作である。トラップからの復帰アドレスは、次の命令のアドレスである。stepのためのトラップハンドラは、典型的には、ユーザに対して情報を表示し、コマンドを待機する。または代わりに、トラップハンドラは、終了状態(この特定の位置のレジスタ値または実行数のような)を調べ、この状態に合致するまでアプリケーションの実行を継続することができる。
stepは、他の例外トラップと同様に処理され、優先順位付けされる。これは、全てのトラップが step トラップの前に実行することを意味している。その結果は、 step が他のトラップハンドラのプログラムコードを通して直接シングルステップできないことである。命令 step は、通常はオペレーティングシステムレベルより下であると考えられているので、スタックページトラップのようなオペレーティングシステム機能はその介入なしに実行しなければならない。
より高い優先順位のトラップハンドラは、ソフトウェアにおいてそれらに再優先順位付けすることによって、シングルステップさせることができる。対応する実行可能なトラップベクトルからのより高い優先順位のトラップハンドラを直接実行するのではなく、ベクトルは復帰スタック上の復帰アドレスを再配列するコードへ分岐してトラップハンドラの結果的な実行シーケンスを変化させる。種々の準備(ハウスキーピング)タスクも遂行しなければならず、種々のハンドラはスタックメモリ領域境界が再優先順位付けされたハンドラによって侵されないようにしなければならない。
仮想メモリ支援
MPU 100は、論理メモリアドレスを物理メモリアドレスに翻訳する外部マッピング論理の使用を通して仮想メモリを支援する。MPU RASメモリサイクル中にCPUから供給される論理行アドレスは、外部SRAMによって物理行アドレス及びメモリページ故障ビットに翻訳される。メモリページ故障ビットはメモリサイクル中にサンプルされ、メモリ内の翻訳されたページが有効か、無効かを決定する。DRAMメモリサイクルの通常のRASプリチェンジ部分には、メモリのサイクル時間オーバヘッドを要せずに論理ページを物理ページにマップするための充分な時間が存在する。
無効メモリページ指示は、メモリ故障例外を信号させ、もし可能化されていればトラップに故障状態へのサービスを実行させる。通知された書き込み故障はトラップルーチン内で完了し、他の型の故障動作はトラップルーチンから復帰させてそれらを再実行することによって完了する。故障が読み出し動作からなのか、または書き込み動作からなのかは mflt write によって指示される。故障アドレス及びデータ(もし書き込みであれば)は mfltaddr 及び mfltdta内に格納される。メモリ故障トラップは mflt trap enによって可能化される。表34のコード例を参照されたい。
Figure 2009205698

Figure 2009205698
Figure 2009205698

Figure 2009205698
ビデオRAM支援
ビデオRAM(VRAM)は、DRAMアレイへの直列アクセスを提供する第2のポートを有するDRAMである。これによって、DRAMアレイへの通常のMPUアクセスを行いながら、ビデオデータをメモリから直列にクロックアウトして表示させることができる。DRAMアレイのアクセス競争を防ぐために、MPUは周期的に読み出し転送要求を発行して選択されたDRAMの行を直列転送バッファへコピーする。読み出し転送同期問題を排除するために、多くのVRAMは分割転送バッファを有しており、それらによってMPUの読み出し転送動作のタイミングの柔軟性を大きくすることを可能にしている。MPUは、時間RASバーが立ち下がっている間のVRAMのOEバー、WEバー、及びDSF(デバイス特別機能)の状態についてコマンドをエンコードすることによって、VRAMに命令して読み出し転送、または分割読み出し転送を遂行させる。これらの動作は、vramを書き込み、所望のVRAMメモリアドレスに適切な読み出しまたは書き込みを遂行することによってエンコードされる。
若干のVRAMは、ライン充填、ブロック充填、及び bit-blts のようなより進歩した動作を有しており、これらはWEバー、OEバー、DSF、RASバー、及びCASバーの他の組合せと共にエンコードされている。動作及びコマンドの基本セットは製造者の間では共通であるが、より進歩した機能のためのコマンドは変化する。MPUは、考え得るエンコーディングの 32 の全ての組合せを支援する。
モードレジスタ
モードは、MPUの状態及び実行オプションを指示するいろいろなビットを含んでいる。前述したものを除いて、全てのビットは書き込み可能である。レジスタを図7に示す。
mflt write
メモリ故障が信号された後に、メモリ書き込みによって故障が発生したことを指示する。

guard bit
浮動小数点数を丸めるのを援助するのに使用されるs0 (もしfp precision がセットされていれば、s1 )の最下位ビットの下の3ビット拡張の最上位ビット。

round bit
浮動小数点数を丸めるのを援助するのに使用されるs0 (もし fp precision がセットされていれば、s1 )の最下位ビットの下の3ビット拡張の中央ビット。

sticky bit
浮動小数点数を丸めるのを援助するのに使用されるs0 (もし fp precision がセットされていれば、s1 )の最下位ビットの下の3ビット拡張の最下位ビット。ビットの直接シフトまたは書き込みに起因してセットされると、このビットは、たとえそれを通して0ビットが右シフトしても、それが明示的にクリアされるか、または0が書き込まれるまでセットされ続ける。

mflt trap en
もしセットされていれば、メモリ故障トラップを可能化する。

mflt exc sig
もしセットされていれば、メモリ故障が検出される。

ls boundary
スタックのあふれ、または再充填の結果としてls ovf exc sig 、またはls unf exc sig がセットされれば、セットされる。スタックのあふれ、または再充填の結果として la 内のアドレスが 1024 バイトメモリページの中央領域に入れられると、クリアされる。ローカルレジスタスタックトラップ論理によって使用され、ローカルレジスタスタックが 1024 バイトメモリページ境界付近で繰り返しあふれ、及び再充填を行う場合に、不要なスタックオーバフロー、及びアンダーフローを防ぐ。書き込みは不能である。

ls unf trap en
もしセットされていれば、ローカルレジスタスタックアンダーフロー例外が信号された後に、ローカルレジスタスタックアンダーフロートラップが発生することを可能にする。

ls unf exc sig
もしローカルレジスタスタック再充填が発生し、ls boundaryがクリアされ、そしてアクセスされたメモリアドレスが 1024 バイトメモリページの最後の 32 のセル内にあれば、セットされる。

ls ovf trap en
もしセットされていれば、ローカルレジスタスタックオーバフロー例外が信号された後に、ローカルレジスタスタックオーバフロートラップが発生することを可能にする。

ls ovf exc sig
もしローカルレジスタスタックあふれが発生し、ls boundaryがクリアされ、そしてアクセスされたメモリアドレスが 1024 バイトメモリページの最初の 32 のセル内にあれば、セットされる。

os boundary
スタックのあふれ、または再充填の結果としてos ovf exc sig 、または os unf exc sig がセットされれば、セットされる。スタックのあふれ、または再充填の結果として sa 内のアドレスが 1024 バイトメモリページの中央領域に入れられると、クリアされる。オペランドスタックトラップ論理によって使用され、オペランドスタックが 1024 バイトメモリページ境界付近で繰り返しあふれ、及び再充填を行う場合に、不要なスタックオーバフロー、及びアンダーフローを防ぐ。書き込みは不能である。

os unf trap en
もしセットされていれば、オペランドスタックアンダーフロー例外が信号された後に、オペランドスタックアンダーフロートラップが発生することを可能にする。

os unf exc en
もしオペランドスタック再充填が発生し、os boundaryがクリアされ、そしてアクセスされたメモリアドレスが 1024 バイトメモリページの最後の 32 のセル内にあれば、セットされる。

os ovf trap en
もしセットされていれば、オペランドスタックオーバフロー例外が信号された後に、オペランドスタックオーバフロートラップが発生することを可能にする。

os ovf exc sig
もしオペランドスタックあふれが発生し、os boundaryがクリアされ、そしてアクセスされたメモリアドレスが 1024 バイトメモリページの最初の 32 のセル内にあれば、セットされる。

carry
アキュムレータからのキャリービットを含んでいる。キャリーを保存し、回復するために保存及び回復モードを使用することができる。

power fail
電源投入中にセットされ、電源障害が発生したことを指示する。モードへの何等かの書き込みによってクリアされる。それ以外は書き込み不能である。

interrupt en
もしセットされていれば、割込みがグローバルに可能にされる。命令 ei によってセットされ、 di によってクリアされる。

fp rnd exc sig
もしセットされていれば、 rndの先行実行がs0 (もしfp precision がセットされていれば、s1 )の最下位ビットに変化をもたらしている。

fp rnd trap sig
もしセットされていれば、浮動小数点丸め例外が信号された後に、浮動小数点丸めトラップが発生することを可能にする。

fp nrm exc sig
もしセットされていれば、denorm、norml 、または normrの先行実行の後に、ガードビット、丸めビット、及びスティッキービットの1つまたはそれ以上がセットされる。

fp nrm trap en
もしセットされていれば、浮動小数点標準化例外が信号された後に、浮動小数点標準化トラップが発生することを可能にする。

fp ovf exc sig
もしセットされていれば、normr 、addexp、または subexp の先行実行が指数フィールドを全て1に、またはそれを越えて増加させている。

fp ovf trap en
もしセットされていれば、浮動小数点オーバフロー例外が信号された後に、浮動小数点オーバフロートラップが発生することを可能にする。

fp unf exc sig
もしセットされていれば、norml 、addexp、または subexp の先行実行が指数フィールドを全て0に、またはそれを越えて減少させている。

fp unf trap en
もしセットされていれば、浮動小数点アンダーフロー例外が信号された後に、浮動小数点アンダーフロートラップが発生することを可能にする。

fp exp exc sig
もしセットされていれば、testexp の先行実行が、全て1または全て0を含む指数フィールドを検出している。

fp exp trap en
もしセットされていれば、浮動小数点指数例外が信号された後に、浮動小数点指数トラップが発生することを可能にする。

fp round mode
MPU命令 rndによって遂行される丸めの型を含んでいる。

fp precision
もしクリアされていれば浮動小数点命令はIEEE単精度( 32 ビット)フォーマットのスタック値を操作する。もしセットされていれば浮動小数点命令はIEEE倍精度( 64 ビット)フォーマットのスタック値を操作する。
MPUリセット
リセットの後にIOP 110は、MPUが実行を開始する前にアドレス0×80000004において実行を開始する。IOPは、MPUがバスにアクセスして実行を開始できるようになる前に、遅延を実行するようにプログラムされていなければならない。一旦IOPが遅延を実行すると、MPUはアドレス0×80000008において実行を開始する。種々の起動構成の詳細に関しては、後に「プロセッサ起動」で詳述する。
割込み
CPU 100は 24 の割込み資源から異なる8つまでの割込みレベルを支援する優先順位付けされたオンチップ割込みコントローラ114を含んでいる。割込みは、I/Oチャネル転送から、IOPからビット入力を通して受けることができるか、または ioin へ書き込むことによってソフトウェア内へ押しやることができる。割込み及びそれらのサービシングの完全な詳細に関しては、後述する「割込みコントローラ」を参照されたい。
ビット入力
CPU 100は、INTC 114及びDMAC 112と(これらのサービスの要求により)共用される8つの汎用ビット入力116を含んでいる。これらのビットはINバー[ 7:0 ]から取出されるか、または、もしそのように構成されていれば、バス上のAD[ 7:0 ]からサンプルされる。バスからサンプルすることによって、CPUのためにより小さい、高価ではないパッケージの使用が可能になる。またそれは、分離したビット入力バスを経路指定するのではなく、ADバスの再使用を通してPWB領域の要求を減少させることもできる。
ビット出力
CPU 100は、MPU 108またはIOP 110によって書き込むことができる8つの汎用ビット出力118を含んでいる。これらのビットはOUTバー[ 7:0 ]上の出力であり、RASバーが不活動の間AD[ 7:0 ]上で使用可能でもある。バスからビットを取出すことによって、CPUのためにより小さい、高価ではないパッケージの使用が可能になる。またそれは、分離したビット出力バスを経路指定するのではなく、ADバスの再使用を通してPWB領域の要求を減少させることもできる。後述する「ビット出力」を参照されたい。
オンチップ資源
CPU 100の非MPUハードウェア機能は、一般的にそれら自身のアドレス空間に位置している1組の 41 レジスタ102を通してMPU 108によってアクセスされる。分離したアドレス空間を使用すると実施が簡易化され、演算コードが保存され、そして正常なメモリアドレス空間と周辺装置との混乱が防がれる。まとめて「オンチップ資源」として知られているこれらのレジスタ102によって、ビット入力、ビット出力、INTC、DMAC、MIF、システム構成、及びIOPの若干の機能へのアクセスが可能になる。これらのレジスタ及びそれらの機能は、このマニュアルを通して参照されており、後述する「オンチップ資源レジスタ」に詳述されている。
命令参照
スタックをベースとするMPUアーキテクチャのように、ShBoom MPU命令は米国規格協会(ANSI)標準フォース( Forth )のようなスタックをベースとするプログラミング言語に類似するドキュメンテーション要求を有している。驚くには当たらないが、多くの米国標準規格(ANS)フォースコア動作は、ShBoom MPU上の命令である。その結果、言語ドキュメンテーションのために使用されるANSフォーススタック表記法が、ShBoom MPU命令を記述するのに有用である。ShBoom MPUに適用される基本表記法は、
( input operands--output operands )
( L : input operands--output operands )
ここに、「 -- 」は命令の実行を指示する。「入力オペランド」及び「出力オペランド」は、オペランドスタック上の値(省略時)か、またはローカルレジスタスタック上の値(“L”を前置)のリストである。これらは、常に同一ではないが、命令ニーモニック内に表すことができる出所及び宛て先オペランドに類似している。スタックレジスタのトップ(s0 またはr0 )内に保持されている値は常にオペランドリストの右にあり、より高い順のレジスタ内に保持されている値は左(例えば、s2 、s1 、s0 )に現れる。オペランドリスト内の唯一のアイテムは、その命令に関連するものである。他の値はスタックのこれらの下に存在することができる。全ての入力オペランドは、スタックからポップされ、動作が遂行され、そして出力オペランドがスタック上にプッシュされるものと考えられる。例えば、記号式
n1 n2 -- n3
は2つの入力オペランドn1 及びn2 と、出力オペランドn3 とを表している。命令 addの場合、n1 (s1 から取出された)がn2 (s0 から取出された)に加算され、結果はn3 である(s0 内に残される)。もし何れかのダイヤグラムの左の値の名前が右の値の名前と同一であれば、その値は要求されたのではあるが不変である。名前はオペランドの型を表している。同一の型の異なる、または変化したオペランドを指示するために、数値サフィックスが付加される。値は、バイト、整数、浮動小数点数、アドレス、または単一の 32 ビットセル内に配置することができる他の何等かの型の値であることができる。
addr アドレス
byte 文字またはバイト(上側 24 ビット0)
r 実数(浮動小数点数)
flag 真/偽フラグ(非0=真)
n 整数または 32 任意ビット
other text 整数または 32 任意ビット
ANSフォースは、他のオペランド型及び1スタックセルより多くを占有するオペランド(ここでは、これらは使用されない)を定義している。
典型的には、全てのスタック動作は表記法によって記述され、テキスト内に明示的に記述されることはないことに注目されたい。もし複数の考え得る成果が存在すれば、それらの成果オプションは分離したライン上にあり、個々の場合として考えるべきである。もし他の領域またはメモリ変数が変更されれば、その効果はテキスト内にドキュメントされる。
スタックダイヤグラムライン上には、キャリーに対する効果(もしあれば)、並びに右マージン内の演算コード及び実行時間が指示されている。mを伴うタイミングは、指定された所要メモリサイクルの数を指示している。メモリサイクルのタイミングは、プログラムされたサイクル時間と、RASまたはCASサイクルの何れが発生しているのかとに依存する。
ニーモニックスタックコードに関しては付録Aを参照されたい。
Figure 2009205698
Figure 2009205698
入出力プロセッサ
入出力プロセッサ(IOP)110(図8)は、データをデバイスとメモリとの間で転送し、ダイナミックメモリをリフレッシュし、時間を測定し、ビット入力及びビット出力を操作し、そしてシステムタイミング機能を遂行するために命令を実行する専用処理ユニットである。通常、IOPプログラムは時間的決定性( temporally deterministic )であるように書かれている。効率的な時間的決定性の手法で実行する条件付き実行経路を含むプログラムを書くことは困難、または不可能であり得るから、IOPは計算的な、及び最小意思決定の能力を含んでいない。IOPプログラムは、計算または意思決定を遂行するためにMPU 108への割込みを使用して、比較的簡単であるように企図されている。
時間的決定性を実行させるようにするために、IOPはバスアクセス上で絶対優先権を行使する。バスタイミングは常に決定性でなければならず、ShBoomCPU 100上では待機状態は使用不能でさえある。時間決定論は、IOP実行、及び時間定めされたIOPイベントの間のバスクロックサイクルを計数することによって達成される。IOP 110が遅延を実行していない限りバスアクセスは許可され、それによって指定された時間中にMPU及びDMA要求はバスにアクセスすることが可能になる。従って、メモリアクセスが必要な時には、IOPは精密にプログラムされた瞬間に、単にバスを捕らえて所要動作を遂行するだけである。
MIF 120は、IOP 110がバスを要求した時に、バスが使用可能であることを保証する。MPU 108及びDMAC 112はMIF 120からバスを要求し、MTF 120はこれらの要求を優先順位付けして、IOP 110が遅延を実行している間にバスを許可する。MIF 120は、IOP 110が次にバスを要求する前に、どのようなトランザクションも完了させることを保証する。
データを転送する時、IOP 110は転送すべきどのデータも変更しない。IOP 110は、プログラムされた時間にバストランザクションを発生させるだけである。非同期I/Oチャネル転送を優先順位付けして遂行するDMAC 112とは対比的に、IOP 110は時間同期I/Oチャネル転送を遂行する。どのようにそれらが開始されるか以外は、2つの型の転送は同一である。
使用
IOPプログラムは、拡大的な量の外部論理と、単にシステム設計とを排除するために使用することができる。更に、タイミングに依存するシステム及びアプリケーション動作のためにIOP 110を使用することにより、MPUプログラムに課せられるタイミング制約を排除または大幅に軽減できることが多い。
例えば、約 150バイトのIOPプログラムが、ビデオディスプレイのためのデータ転送及びタイミングを供給する。プログラムは垂直及び水平同期を発生し、データをDRAMからビデオシフトレジスタまたはパレットへ転送する。更に、IOPは柔軟性を与える。メモリの種々の領域からのビデオデータは、隣接するフレームバッファを作成するためにそれらのデータを移動させる必要なく、表示することができる。新しいデータ領域が指定されると、IOP 110が次のビデオフレームのために実行するプログラムを変化させるために、IOP命令はMPU 108によって書き直される。これが実行されている間も、命令を実行しデータを処理するためにMPUは未だにバスにアクセスしており、DMAC 112はデータを転送するために未だにバスにアクセスしている。
他の多くのアプリケーションが可能である。IOP 110は、指定された時間に、データを移動させることを要求するアプリケーション、または発生する他のイベントのために最良に使用される。例えば、
* CD品質のステレオサウンドを演奏するために、ディジタル化された 16 ビットのデータ値を1対のDACへ送る、
* 後刻MPUに処理させるために、指定された時間間隔で入力データからのデータをサンプルする、
* LCDディスプレイ上に画像を表示させるために、ディスプレイ及び制御信号を送る、
* 知的SCSIコントローラのために、同期データブロックを転送する、
* ウェーブテーブル( wave-table )シンセサイザのために、多数チャネルのデータをDACへ送る、
* 直列及びXウィンドウビデオ端末、またはPCビデオアクセラレータのために、ビデオ及びI/Oを制御する、
* プロセス制御環境において時間定めされたイベントを制御する、
* 自動車エンジンのために、点火及び燃料を制御する、または
* PCマルチメディア基板を作成するために、上述した幾つかのアプリケーションを組合せる、
ことが挙げられる。
IOP 110は、バスへのアクセス(時間的決定性実行のために)を指図するように、しかしMPU 108のスレーブであるように設計されている。IOPは状態を
* IOPがアクセスしたデバイス上の状態変化、
* ある値をグローバルレジスタへロード、
* ビット出力をセット、または
* ビット入力を消費、
することによってMPUへ連絡することができる。
MPU 108は、
* IOP命令をメモリ内に再書き込み、
* IOPが使用しているグローバルレジスタを変更、
* ビット入力をクリア、または
* IOPをリセット、
することによってTOP 110を制御することができる。
イベントによる制御は、持続的な一定のレートで発生させる必要はない。10Pは、イベントレートを、1回であろうが、多数回であろうが、一貫して制御しなければならないようなアプリケーションに適切である。前者の例として、10Pはオーディオデータをメモリから取出してそれをDACへ送り、オーディオクリップが持続する間連続的なレートでサウンドを演奏することができる。後者の例として、IOP 110はMPUによって自動車エンジンの回転を同期させることができる。IOP 110が燃料噴射と点火とを時間定めし、MPUがエンジンの動作を監視して同期を定常的に変化させる(グローバルレジスタを変化させるか、またはIOPプログラムを書き直すことによって)。
資源
IOPは、図8に示すように命令デコード及び実行プロセス、及び他のCPU資源への経路の制御からなる。IOP 110及び関連レジスタは次のものを含んでいる。
* ビット入力レジスタ ioin :ビット入力は、DMAまたは割込み要求、または汎用ビット入力として構成されている。図21を参照されたい。
* 割込みペンディングレジスタ ioip :どの割込みが認識されたかを指示するが、優先順位付けされてサービスされるのを待機する。図22を参照されたい。
* ビット出力レジスタ ioout:MPUまたはIOPの何れかによって最後に書かれたビット。図24を参照されたい。
* IOPリセットレジスタ iopreset :何等かの値を書き込むと、IOPはIOPソフトウェアリセットアドレスにおいて実行を開始する。図46を参照されたい。
* グローバルレジスタg1 乃至g7 :遅延によって使用される値を含む。
* グローバルレジスタg8 乃至g15:ループカウントまたはI/Oチャネル転送明細を含む。転送明細は、デバイス及びメモリ転送アドレス、及び制御ビットからなる。図12を参照されたい。
レジスタ使用(図9)
IOP 110はグローバルレジスタg1 乃至g155をMPU 108と共用し、それらをループカウント、遅延初期化カウント、及び情報転送に使用する。ループカウント及び遅延カウントは 32 ビットである。ビット 31 −2 の転送アドレスは、典型的にはセルをアドレスするが、I/Oチャネル構成に依存してバイトもアドレスすることができる。ビット1は、転送がメモリ書き込みであるのか、またはメモリ読み出しであるのかを決定し、ビット0は 1024 バイトメモリページ境界クロッシングへの割込みを可能にする(後述する「割込み」参照)。図12を参照されたい。
MPUは何時でも、IOPによって使用されるどのレジスタをも読み出し、または書き込むことができる。もしMPUとIOPとの間にレジスタアクセス競争が存在すれば、IPOアクセスが完了するまでMPUは遠去けられる。
Figure 2009205698
命令セット
表38は、IOP命令をリストし、表40及び表41はニーモニック及び演算コードをリストしている。命令実行の詳細は、後述する「命令参照」において説明する。
命令フォーマット
全ての命令は、 32 ビット即値データを必要とする ld 、及びページ相対宛て先アドレスを必要とする飛越しを除いて、8ビットからなる。8ビット命令を使用することによって、各命令取出しで4命令(命令グループと呼ぶ)を入手することができ、従って、典型的な 32 ビットプロセッサに比してメモリ帯域幅要求を減少させることができる。この特徴によれば、付加的な命令取出しを行うことなく命令グループ上をループすることができ(マイクロループ)、効率が更に向上する。命令フォーマットを図10に示す。
飛越し
命令 jump は可変長である。 jump 演算コードは命令グループ内のどの位置にも発生することができる。演算コード内の4つの最下位ビット及びその演算コードの右の現命令グループ内の全てのビットは、ページ相対宛て先アドレスのために使用される。図10を参照されたい。これらの宛て先アドレスは、宛て先アドレスビットの範囲、及び宛て先において実行される命令の数を最大にするようにセル整列されている。ページ相対宛て先アドレスは、現命令グループ内の演算コードの位置に依存して4、12、20、または 28 ビット長である。これらのビットは、次のIOPpc内の同一セルアドレスビットを置換するために使用される。次のIOPpcは現命令グループに続くセルアドレスであり、現命令グループ内の jump に先行する各 ld 命令毎にインクリメントされている。宛て先アドレスビットは、命令内のビットの数に依存して、現 64 バイトメモリページ内、現4Kメモリページ内、現1MBメモリページ、または現 256MBメモリページ内のどの位置にも達することができる。もし宛て先アドレスビットが飛越しして宛て先に到達するのに充分な範囲でなければ、 jump はより多くの宛て先アドレスビットが使用可能な命令グループへ移動しなければならない。
リテラル
命令 ld は、 40 ビットを必要とする。8ビットが現命令グループ内の演算コードのためのものであり、現命令グループに続く 32 ビットがリテラルデータのためのものである。 ld 演算コードは、命令グループ内のどこにでも発生することができる。命令グループ内の第1の ld のためのデータはメモリ内の命令グループの直後に続き、その後の ld のための各データは連続する位置を占める。演算コード内の4つの最下位ビットは、そのデータの宛て先であるグローバルレジスタの数を含んでいる。グローバルレジスタ0(g0 )は許容されない。
その他
他の全ての命令は8ビットを要求する。殆どは、レジスタまたは演算コードの3つまたは4つの最下位ビット内にエンコードされたビット数を有している。「命令参照」を参照されたい。
実行タイミング
実行クロックサイクルの計数は、IOPをプログラムするためのキーである。各命令は、「命令参照」に記述してあるように実行時間を必要とする。一般的に言えば命令は、実行するための2×クロックサイクル+何等かの遅延または明示または暗示バストランザクションのための時間を必要とする。バストランザクション時間は、後述する「プログラマブルメモリインタフェース」、及び後述する「バス動作」に記載されているようにプログラムされる。
更に、命令グループの実行の間の命令取出しを考慮しなければならない。10Pには命令先取りは存在しないので、タイミング計算は簡易化される。命令グループ内の命令の実行が完了すると、命令取出しが開始される。これには、バス要求のための2×クロックサイクル+バストランザクション(スロットチェックを含む)のための時間を必要とする。
時間的決定性実行を保証するために、遅延まはたリフレッシュの実行の後に各メモリグループへ最初のIOPアクセスが行われると、たとえそれを要求していなくてもRASサイクルになる。RASサイクルは、他の理由によっても発生する。表49を参照されたい。従って、関係する主タイミングは、アクセスされたメモリアドレス(RASまたはCASの何れのサイクルが暗示的に要求されていようと)、及びメモリグループへの最後のアクセス以降遅延またはリフレッシュが実行されているか、否かである。典型的なリフレッシュルーチンのコード例を表39に示す。
Figure 2009205698
アドレス空間、メモリおよびデバイスアドレッシング
IOP110は、MPU108として同じ32ビットのアドレス空間を用いるが、それ自身のプログラムカウンター154を有し、独立して、同時に実行する。xferの実行中にアドレスされるI/Oデバイスは同じアドレス空間内にある。xferバストランザクションは、それらがどのように初期化されるかに対してを除いてI/Oチャネルバストランザクションと同じである。以下のダイレクトメモリアクセス制御装置を参照されたい。
割り込み
IOP110は、intを実行することによって8つのMPU割り込みの何れかを要求することができる。このIOPは、xferの実行中に1024バイトのメモリページの最後のロケーションにアクセスすることによってMPU割り込みを要求することもできる。xferの転送割り込みとI/Oチャネルの転送割り込みは同一である。更なる情報のために以下のダイレクトメモリアクセス制御装置を参照されたい。MPU108は、IOP110が次に遅れを実行するときに割り込み要求に応答することができる。
バストランザクション
IOP110の命令フェッチバストランザクションは、MPU108のメモリ読み取りバストランザクションと同じである。xferバストランザクションは、それらが如何に初期化されるかを除いてDMAバストランザクションと同じである。以下のバスオペレーションを参照されたい。
ビット入力及びビット出力
ioinにおけるバス入力は、tskipzを有するIOP110によってアクセスされる。この命令は、入力ビットをテストし、それを消費し、且つ命令群の残りを連続的にスキップする。これは、DMAC112とともに利用可能である簡単な非同期の伝送よりポーリングデバイス転送や複雑なデバイスの転送シーケンスを考慮する。以下のビット入力を参照されたい。iskipzは、条件実行を行うので、もし、確定的実行が期待されるなら、iskipzを含むプログラムコードを指定するときに、注意をしなければならない。
iooutにおけるビット出力は、outtとoutfを伴うIOP110によって個々にセットされるか、或いはクリアされることができる。それらは、外部イベントを作動し、同期パルスを発生する等のために用いることができる。
IOPハードウェア及びソフトウェアのリセット
ハードウェハのリセット後、IOP110は、MPU108が実行を開始するまえに、アドレスox80000004の実行を始める。その後、IOPはDRAMを初期化するために必要とされるRASサイクルを行い、MPUがシステムを構成することができるように遅れを実行する前に、DRAMのリフレッシュを維持するためにプログラムループを始めることができる。
一旦MPU108がシステムを構成すると、IOP110は、一般的に、そのアプリケーションプログラムコードの実行を開始するように要求される。A31はセットされ、他のハイアドレスビットがゼロであるので、通常、IOPのパワーオンリセットアドレスは、ブートメモリデバイスを選択する。A31をクリアし、従って非ブートメモリにおいて実行を開始するために、ソフトウェアリセットは、MPUによって発行されなければならない。テーブル39を参照。ソフトウェアリセットはA31をクリアする唯一の方法である。このソフトウェアリセットは、また他の例に用いられることもでき、IOPが新しいプログラムの実行を開始するようにする。以下のプロセッサのスタートアップを参照されたい。
命令リファレンス
以下のテキストは、IOP命令の各々の記述を含む。機能的な記述に加えて、実行するのに必要な操作コード(opcode)と2X−クロックサイクルの数は右のマージンにある。
ニーモニックコード(mnemonic code)のためのアペンディックスBを参照されたい。
Figure 2009205698
Figure 2009205698
ダイレクトメモリアクセス制御装置
ダイレクトメモリアクセス制御装置(DMAC)112(図11)は、I/O装置がMPUの介入のないシステムメモリへ、及びメモリからデータを転送するようにする。DMACは、8つの別々のソースから優先化された8つのI/Oチャネルをサポートする。ダイレクトメモリアクセス(DMA)要求は、ioinを介してビット入力から受け取る。DMAおよびMPUバス要求の優先度は、高い優先要求が低い優先要求を阻止するように固定されるか、あるいは満足されない高い優先要求が低い優先要求を阻止するのを妨げるように働くかの何れかである。
DMAは、セル幅およびバイト幅のメモリの両方にあるセル幅およびバイト幅のデバイスのためにサポートされる。各I/Oチャネルはデバイスおよびバスタイミング要件の型式に関してそれぞれ構成されることができる。バイト幅のデバイスは、1バイトのバイト転送或いは4バイトのバイト伝送デバイスの何れかとして構成されることができる。I/Oチャネルバストランザクションのために要求される転送は、フライバイ(flybys)であるか、バッファされる。テーブル52を参照されたい。DMACおよびIOPxfer転送は、それらが如何に初期化されるかを除いて同じである。DMAC転送は、非同期要求から生じ、一方xfer転送はそれらのプログラムされた時間に生じる。
資源
DMACは、幾つかのレジスタと関連する制御ロジックからなる。レジスタのビットゼロに相当するDMA要求ゼロは、高い優先度を有する。レジスタのビットセブンに相当するDMA要求セブンは、低い優先度を有する。DMACと関連レジスタは:
・ビット入力レジスタ、ioin:DMAとして構成されたビット入力又は割り込み要求、又は一般のビット入力。図21を参照。
・割り込み可能なレジスタ、ioie:どのioinビットが割り込み要求として認識されるべきかを示す。図25を参照。
・DMA可能レジスタ、iodmae:どのioinビットがDMA要求として認識去れるべきかを示す。もし、DMAがioinビット上でイネーブルされるなら、そのビット上のioinによる割り込み可能は無視される。ズ26を参照。
・DMAイネーブル終了レジスタ、iodmaex:どのiodmaeビットがクリアされるかを示し、1024バイトのメモリページがそのチャネル上に生じることを含むDMA伝送に続く。図44を参照。
・全体のレジスタg8−g15:I/Oチャネル転送スペシフィケーションを含む。転送スペシフィケーションはデバイスおよびメモリ転送アドレスおよび制御ビットから成る。図12を参照。
・固定DMA優先ビット、fdmap、レジスタにおけるその他のB、miscb:もし、高い優先要求が満たされることができないなら(即ち、利用可能なバストランザクションスロットは小さすぎる)、低い優先バス要求がバスヘアクセスするために競合するのを避けたり、或いはそれを可能にする。図29参照。
DMA要求
ioinビットは、対応するiodmaeビットがセットされ、対応するioieビットがクリアであるとき(iodmaeがセットされると、ioieは無視されるけれども)、DMA要求資源として構成される。一旦ゼロがioinに達すると、それはDMAI/Oチャネル転移を要求するために利用可能である。iodmaeビットをクリアすることによってI/Oチャネル上のDMA動作を個々にディスエーブルすることは、ioinにおける対応するゼロビットがDMA要求として認識されるのを防ぐが、しかしioinにおける対応するビットのゼローパーシステンスに影響をあたえない。
優先度を与えること
DMA要求は他の未決のDMA要求と共に優先度が与えられ、そして、もし、要求が高い優先度を有しているか、回転する優先シーケンス(以下参照)における次の要求であるなら、その対応するI/Oチャネルはバスを要求するために次の要求である。DMA要求の優先度を与えることは1つの2X−クロックサイクルを完成するように要求する。I/Oチャネルバス要求が行われると、MIF120は、現在のバストランザクションまで待つ。それは、利用可能なバススロットが要求されたI/Oチャネルバストランザクションに対して充分大きいかどうかを決定するために、iopdelayをチェックする。もし、バススロットが充分大きいなら、バスはI/Oチャネルに許可され、バストランザクションが開始する。
IOPは、iopdelayがゼロに減少すると、バスを常に占有する。そうでなければ、DMAI/Oチャネルバス要求とMPU108バス要求は、バスに対して高い優先度を有するDMAI/Oチャネルバス要求と競合する。
もし、fdmapがセットされ、バススロットが小さすぎるなら、DMAI/Oチャネルはバスを獲得しない。小さくなった利用可能なバススロットに適合する高い優先度のDMAI/Oチャネル要求はが行われるまで、バストランザクションは、IOPがバスを占有するまで生じない。IOP110が次に遅れを実行すると、最も高い優先度DMA要求、或いはDMA要求がないならMPU108がバス要求プロセスを繰り返す。
もし、fdmapがクリアで、バススロットが小さすぎるなら、DMAI/Oチャネルはバスを獲得しない。次の低い優先バス要求は、最も低い優先度の要求としてMPU108と共にバスを要求するようにされる。プロセスは、バスが許可されるか、IOP110がバスを占有するまで、繰り返す。IOP110は次に遅れを実行するとき、最も高い優先度のDMA要求、或いはもしDMA要求がなければMPU108がバス要求プロセスを繰り返す。
メモリ及びデバイスアドレッシング
I/Oチャネル伝送のために用いられたアドレスは、T/Oデバイスアドレスおよびメモリアドレスの両方を含む。規約によって、最上位のアドレスビット(A31がセットされたとき)は、I/Oデバイスアドレスを選択し、一方最下位のアドレスビットは伝送のためのメモリソース/行き先を選択する。マルチサイクル転送動作(例えば、バイトデバイスとセルメモリ間を転送すること)は、A31がI/Oデバイスのアドレスデコードの一部であると仮定し、バストランザクション中に必要とされるI/Oデバイスを選択したり、選択しなかったりするために、A31をパス/クリアする。以下のI/Oアドレッシング及びI/Oチャネル転送を参照されたい。
1024バイトメモリページの境界は、I/Oチャネル転送に対して特別な意味を有している。各I/Oチャネルバストランザクションが完了すると、全体のレジスタにおけるメモリアドレスのビット15−2が増加される。新しいアドレスは、1024バイトメモリページの最後のロケーションが転送された(ビット9−2がいまゼロであることを検出することによって)か否かを決定するために評価される。1024バイトメモリページの最後のロケーションが丁度転送されたとき、MPU割り込みは要求され得るか、DMAはディスエーブルされることができる。以下の割り込みおよびDMAI/Oチャネル転送の終了を参照されたい。
割り込み
I/Oチャネル転送が1024バイトメモリページの最後のロケーションをアクセスした後、MPU108は、要求されることができる。要求された割り込みは、I/Oチャネル数と同じであり、そしてもし、割り込みがそのチャネル上でイネーブルされるなら、生じる。(即ちもし、対応する全体のレジスタのビットゼロがセットされるなら)。以下の図12および割り込みコントローラーを参照されたい。これによって、例えば、MPUは、転送が完了したこを知らされる(転送メモリ領域の最後を1024バイトのメモリページに関連することによって)か、あるいは長い転送中にMPUに進行を知らせる。
サービスされるべき割り込みに対して、MPU108は、ISRを実行するために充分な時間バスを得なければならない。もし、IOP110はディレイを実行しないか、連続的なDMA転送が生じるなら、MPUはバスを得ることができない。
バストランザクション型
I/Oデバイスで実行されるバストランザクションの型は、含まれるメモリグループがセル幅かバイト幅であるかに依存し、またデバイスが1バイトのバイト転送、4バイトのバイト転送或いは1セルのセル転送デバイスであるかに依存する。以下のI/Oチャネル転送を参照されたい。
デバイスアクセスタイミング
I/Oチャネル転送中にアクセルされたI/Oデバイスは、プログラムされたバスサイクルの終わりによって転送を完了しなければならない。待ち状態は利用できない。I/Oデバイスは、一般にメモリより長いアクセス時間を有しているので、I/Oチャネルバスサイクル中にアクセルされたメモリグループに対してプログラムされたバスタイミングはmgXebtにおける対応する値に対してioXebtを置き換えることによって変更される。ioXebtは、I/Oデバイスに対して、および転送に含まれるあらゆるメモリグループに対して適切でなければならない。以下のプログラム可能なメモリインターフェースを参照されたい。
最大のバンド幅の転送
ioinに対する外部の入力ソースがINバー〔7:0〕であるとき、最大のバンド幅,バックツーバックDMA転送が可能である。これを達成するために、DMAバストランザクションの終わりに、内部回路は、INバー〔7:0〕上で直接DMA要求ビットをチェックするあめに、入力サンプリング回路をバイパスする;もし、信号がローで、高い優先度の要求が未解決であれば、他のDMAバス要求は、通常のサンプリングと優先度を与えるディレイなく直ちに生じる。これは、外部のDMAハードウェアが、ビットがこの時に有効であることを保証する。図76,78、ページ192を参照されたい。もし、残りのバススロットが充分大きいならば、DMAバス要求は許可され、転送は直ちに開始する。バックツーバックDMAバストランザクションを終了するために、DMA要求入力は、現在のバストランザクションの終わり前にハイにならなければならないか、対応するDMAイネーブルビットはクリアされなければならない。以下、終了するDMAI/Oチャネル転送を参照されたい。最大の可能な転送速度は2つの2X−クロックサイクル毎に4バイトである。例えば、50−MHz 1Xクロックで、最大の転送速度は200MB/秒である。
終了DMAI/Oチャネル転送
DMAI/OチャネルバストランザクションはI/Oチャネル上に生じ、一方DMAはイネーブルされたままであり、DMA要求が受信される。特定された数のトランザクションにDMA転送を制限するために;
・必要とされる最後のデータ転送が1024バイトメモリページにおける最後の位置を用いて生じるように、DMA転送アドレスをプログラムする、及び
・対応するiodmaexビットをセットする。
上記のトランザクションが完了すると、iodmaeにおけるDMAイネーブルビットはクリアされる。もし、転送割り込みが対応するI/Oチャネルのための全体のレジスタにおいてイネーブルされるなら、対応するMPU割り込みも要求されるであろう。
もし、1024バイトより多くが転送されるべきであるなら、対応する全体のレジスタにおけるI/Oチャネルに対して転送割り込みを可能にする。次から最後までの1024バイトページのための全体のレジスタをチェックするために、割り込みサービスルーチンをプログラムし、またその時、対応するiodmaexビットをセットする。クリアされた最後の位置が転送されると、iodmaeにおける対応するビットは、そのチャネル上のDMAをディスエーブルして、クリアされる。これは、バスがDMA転送中にISRを実行するために、MPUに利用可能であることを留意されたい。
他の能力
DMA112はイベントをカウントするために、また与えられた数に達したときにMPU108を中断するために用いられることもできる。これを行うために、イベントは通常のDMAメモリ読み取り要求を生成するように設計され、生じた転送サイクルは対応する全体のレジスタにおいて“アドレス”を増加する。この“アドレス”はイベントカウンターになる。MPUは、如何に多くのイベントが生じたかを決めるために何時でもレジスタを試験することもできる。与えられた数の後、MPUを中断するために、ビット9−2内の負のカウント値に対して全体のレジスタをプログラムし、ページ境界の割り込みを可能にする。MPU108は、カウンターがゼロに達すると、中断される。
割り込み制御装置(INTC)114(図13)は、多重の外部或いは内部の要求が整理された、優先化された方法で、MPUのアテンションを得るようにすることができる。INTCは24のソースから8つの優先化された割り込み要求まで支持する。割り込みは、ioinを介したビット入力から、I/Oチャネル転送から、或いはIOP割り込み命令intから受信される。
資源
INTC114は幾つかのレジスタと関連する制御ロジックからなる。レジスタのビットゼロに対応する割り込みゼロは最も高い優先度を有し;レジスタのビットセブンに対応する割り込みセブンは最も低い優先度を有している。INTC114および関連レジスタは:
・ビット入力レジスタ116,ioin:DMAまたは割り込み要求、あるいは一般のビット入力として構成されるビット入力。図21参照。
・割り込み可能レジスタ158,ioie:どのioinビットが割り込み要求として認識されるかを示す。図25参照。
・割り込み未決レジスタ,ioip:どの割り込みが認識されたか、しかし優先化され、サービスされるために待機しているかを示す。図22参照。
・サービスレジスタの下での割り込み,ioius:どの割り込みが現在サービスされているかを示す。図23参照。
・全体のレジスタg8−g15:I/Oチャネル転送スペシフィケーションを含む。転送スペシフィケーションは、デバイスおよびメモリ転送アドレスおよび制御ビットからなる。ビットゼロは対応するチャネル上のI/Oチャネル転送中に割り込みを可能にする。図12参照。
・DMAイネーブルレジスタ,iodmae:どのioinビットがDMA要求として認識されるべきかを示す。もし、DMAがioinビット上でイネーブルされるなら、そのビット上のioieによって割り込み可能は無視される。図26参照。
Figure 2009205698
動作
各割り込み要求は3つのソースによって共有される。要求は、ioinにおけるゼロビットから(一般には外部の入力ローから)、I/Oチャネル転送割り込みから、あるいはIOP命令intから来ることができる。割り込み要求ゼロはioinビットゼロ、I/Oチャネルゼロ(g8を用いて)、或いはint0から来る;割り込み要求1はioinビット1、I/Oチャネル1(g9を用いて)、或いはint1から来る;他の割り込み要求は同様に割り当てられる。テーブル42を参照。アプリケーションの用法は一般に割り込み要求に対して1つのソースのみを指定するが、これは必要ではない。
外部メモリに位置されている割り込みサービスルーチン(ISR)の実行可能コードベクトルは8つの割り込み要求の各々と関連する。図4参照。与えられた割り込み要求に対する単一のISR実行可能なコードベクトルはその割り込みに関する全ての要求に対して用いられる。それは、実行可能なコード、代表的にはISRへの分岐を含むようにプログラムされる。1つより多いソースが可能のとき、現在のソースは、ioin、ioie、iodmaeおよび全体のレジスタにおける関連ビットを調べることによって決定されてもよい。
割り込み要求サービス
何れかのソースから割り込み要求が起きると、ioipにおける対応ビットがセットされ、割り込み要求は未決割り込みとなる。未決割り込みは、各2X−Kクロックサイクルに優先順位が与えられる。モードにおける割り込み enビットは現在の全体の割り込み可能状態を保つ。それはMPUイネーブル割り込み命令でセットされ,ei;ディスエーブルの割り込み命令でクリアされ、di;或いはモードを変更することによって変えられる。全体的にディエーブルしている割り込みによって、全ての割り込み要求はioipに達するようにするが、ioipにおける未決割り込みがサービスされるのを防止する。
割り込みが可能にされると、割り込みはグループにおける最初の命令の実行直前に、命令グループ間でMPUによって認識される。これによって、短い、アトミックの、割り込むことができない命令シーケンスが割り込み状態をセーブし、リストアし、且つマニュピレートしなければないことなく容易に書き込まれることを可能にする。スタックアーキテクチャは、割り込みサービスルーチンが明白にセーブされるようにレジスタを必要とすることなく実行されるようにし、スタックキャッシュは、追加のレジスタ資源を利用できるようにするとき、必要とされるメモリアクセスを最小にする。
もし、割り込みが全体にイネーブルされ、最も高い優先度のioipビットが最も高い優先度のioiusビットより高い優先度を有しているなら、最も高い優先度のioipビットはクリアされ、対応するioiusビットはセットされ、そしてMPUは命令グループにおける最初の命令の次の実行直前に割り込まれる。これは、割り込みサービスをネストし、未決の割り込みはサービスの下で現在の割り込みとなる。ioipビットは割り込みサービスのために考慮さず、一方、割り込みは全体的にデスエーブルされるか、或いはどのioipビットも最も高い優先度のioiusビットより高い優先度を有しない。
ソフトウェアがioiusを変更しないなら、サービスの下で現在の割り込みは、現在セットされている最も高い優先度のioiusビットによって表現される。retiはISRの最後に用いられて、セットされている最も高い優先度のioiusビットをクリアし、割り込まれたプログラムに戻す。もし、割り込まれたプログラムが低い優先度の割り込みサービスルーチンであったらな、これは割り込みサービスを効率的にネストしない。
外部割り込み
ioinビットは、もし、対応するioieビットがセットされ、対応するiodmaeビットがクリアされているなら、割り込み要求ソースとして構成される。一旦ゼロがioinに達すると、割り込みを要求するように利用可能である。割り込み要求は、対応するioinビットをチェックすることによって、あるいは対応するioipビットをセットすることによって、ソフトウェアで強制される。そのioieビットをクリアすることによって割り込み要求を個々にディスエーブルすることは、ioinにおける対応するゼロビットが割り込み要求として認識されるのを防止するが、他のソースからの対応する割り込み要求に影響しない。
割り込み要求が処理される間、そのISRはretiを実行することによって終了するまで、対応するioinビットはゼロを持続せず、外部入力pinのサンプルレベルに従う。特に、与えられた割り込み要求に対して、そのioinビットがゼロを持続しない。この効果は、非割り込みビット上でゼロを持続しない挙動をディスエーブルするために用いられることができる。
波形に対して、図75と図76を参照されたい。
I/Oチャネル転送割り込み
もし、ioinビットがDMA要求として構成されるか、あるいはそのI/Oチャネルがxferによって使用されるなら、対応する全体のレジスタにビットゼロを備えた、1024バイトメモリページにおいて最後の位置を含くむ伝送がセット(即ち、転送割り込みが可能にされる)された後に、割り込み要求が生じる。その要求は、セットされている対応するioipビットによって生じ、対応するioieビットをクリアすることによってディスエーブルされない。
上記のダイレクトメモリアクセス制御装置、および入力−出力プロセッサを参照されたい。
IOPint割り込み
IOPはintを実行することによって8つの利用できる割り込みのいずれかを直接要求することもできる。その要求は、セットされている対応するioipビットによって生じ、対応するioieビットをクリアすることによってディスエーブルされない。MPUは、IOPが次にdelayを実行するとき、割り込み要求に応答することができるであろう。
ISR処理
割り込み要求がMPUによって認識されると、対応するISRの実行可能なコードベクトルへの呼出しが行われ、割り込みは、命令グループのバイト1において開始する命令が実行されるまで、阻止される。高い優先度の割り込みによって割り込まれることなく割り込みサービスをするために:
・ISR実行可能なコードベクトルは4バイトの分岐を一般的に含み、且つ
・割り込みサービスルーチンの第1の命令グループは割り込みを全体的にディスエーブルする。テーブル43におけるコード例を参照されたい。
もし、割り込みがISRの処理中に全体的にイネーブルされたままにされるなら、高い優先度の割り込みが現在のISRの処理中にMPUに割り込むことができる。
これにより、より速いサービス要件を有するデバイスが、多くの優先レベルにあるしばしば起きる割り込みが生じているときでも、迅速にサービスされることができる。ei,di,或いはpopモードの実行と効果を生じる全体の割り込み可能状態にある変更間に1つの2Xクロックサイクルの遅れがあることに留意されたい。次の命令グループのバイトゼロの前に、全体の割り込み可能状態の変更が効果を生じることを保証するために、状態変更命令は、現在の命令グループにおける最後の命令であってはならない。
もし、全体の割り込み状態はISRによって変更されるべきであるなら、前の全体の割り込み可能状態は、プッシュモード(push mode)でセーブされ、ISR内のポップモード(pop mode)で再蓄積されるべきである。通常、ポップモード、retiシーケンスはISRの終わりにある同じ命令グループに置かれ、retiが実行され、局部のレジスタスタックは、他の割り込みがサービスされる前にネストしないことを保証する。ISRからのリターンアドレスは、常に命令グループのバイトゼロである(この方法のために、割り込みは認識される)ので、他の割り込みは、retiの実行後に直ちにサービスされることができる。テーブル43のコード例を参照されたい。
Figure 2009205698
上述のように、ISR実行可能ベクトルを処理するために、インタラプトリクエストが、同様に、全トラップの実行中にブロックされる。これによって、ソフトウエアは、例えば、ローカル・レジスタ・スタックオーバフロー例外のサービスの間のインタラプトによってローカル・レジスタ・スタック上に更にデータがプッシュされるのを阻止する。並行トラップ及びインタラプトリクエストを分解するとき、インタラプトは最低位のプライオリティを有する。
ビット入力
8個の外部ビット入力が、ビット入力レジスタ116ioin(図14)において使用可能になっている。それらは、インタラプトリクエストとして、DMAリクエストとして、IOPインストラクションtskipzとして、及び、MPUによる一般使用のビット入力として使用できるように共有される。それらは、pkgio の状態によって定められる2つのソースの1つから外部的にサンプリングされる。
リソース
ビット入力は幾つかのレジスタと、パッケージピンと、関連の入力サンプリング回路とから成る。これらのリソースは、以下のものを含んでいる。
・ ビット入力レジスタ116,ioin:DMA又はインタラプトリクエストとして構成されたビット入力、又は汎用のビット入力。図21参照。
・ インタラプトイネーブルレジスタ,ioie:ioinビットがインタラプトリクエストとして認識されるべきものであることを示す。図25参照。
・ インタラプトペンディングレジスタ,ioip:インタラプトが、認識され終えたが、プライオリティ付けされるべきものとして、又はサービスされるべきものとして待機中にあることを示す。図22参照。
・ インタラプトアンダーサービスレジスタ,ioius :インタラプトが現在サービス中であることを示す。図23参照。
・ DMAイネーブルレジスタ,iodmae:ioinビットが、対応するI/OチャンネルのためのDMAリクエストとして認識されるべきものであることを示す。DMAがioinビット上でイネーブルであると、そのビット上のioieによるインタラプトイネーブルが無視される。図26参照。
・ パッケージI/Oピンビット,pkgio :レジスタミスレーニアス(種々のレジスタ)B,miscb :ビット入力が、専用の入力IN〔7:0〕からサンプリングされるか、又は、AD〔7:0〕からマルチプレクスされるかを選択する。図29参照。
入力ソース及びサンプリング
pkgio がクリアされると、ビット入力は、RASバーがローでCASバーがハイである間に、AD〔7:0〕からサンプリングされる。外部ハードウエアは、AD〔7:0〕にそのビット入力を置いて、適当な時にそれらを除去する。ビット入力のためのAD〔7:0〕の使用は、INバー〔7:0〕の使用に比較すると、PWBエリア及びコストを減少することができる。AD〔7:0〕は、以下のときの入力についてサンプリングされる。
・ CASバーがハイである間であって、RASバーがローに遷移した後の4個の2X−クロックサイクルのとき、
・ CASバーがハイのままになっているときであって、4個の2X−クロックサイクル毎に、
・ 最後のサンプリングから少なくとも4個の2X−クロックサイクルが経過した場合のCASバーがローに遷移した直後、及び
・ CASバーがまだハイにある場合の、CASバーがハイに遷移した後の4個の2X−クロックサイクルのとき、である。
これは、以下のことを確保する。
・ サンプリング前にバス上にデータを置くための外部ハードウエアの時間、
・ CASバーがハイである間に連続サンプリング、及び
・ 最後のサンプリングから4個の2X−クロックサイクルが経過した場合の各CASバーバスサイクル毎に、少なくとも1つのサンプリングを行うこと。
所与の状態におけるサンプリングを確保するために、入力ビットは、指定のサンプリング時間において有効でなければならず、最悪の場合のサンプリングインターンバル(上述したように、プログラムしたバスのタイミングと活動に依存する)の間ローのままに維持されねばならない。波形については、図79、81及び原文196ページを参照されたい。
pkgio がセットされると、ビット入力は、4個の2X−クロックサイクル毎にINバー〔7:0〕からサンプリングされる。所与の状態におけるサンプリングを確保するために、入力ビットは、4個の2X−クロックサイクルを少し越える間、有効でなければならない。波形については図78、80及び原文194ページを参照されたい。
全ての非同期的にサンプリングされた信号は、準安定状態に影響を受け易い。ビット入力のサンプリングによる準安定状態の可能性を減少させるため、サンプリングされた信号は4個の2X−クロックサイクルの間保持されて、有効な論理レベルに、それがioinに有用になりCPU内での使用が可能になる前に、分解する。ioinに達するようにAD〔7:0〕から取られたビット入力についての最悪の場合のサンプリングの遅延は、バスサイクル時間に依存する。そのioinに達するようにINバー〔7:0〕からのビット入力についての最悪の場合のサンプリングの遅延は、8個の2X−クロックサイクルである。そのサンプリングの遅延によって、ビット入力コンシューマは、特定の期間についての外部信号変化を検出しない。
ioinに達するビット入力は、通常、ゼロ持続性がある。すなわち、ioinビットがゼロになると、それは、ビットが“消費”及び解法されあるいはMPUによって1が書き込まれるまで、後続のサンプリングのときのビットの状態にかかわらず、ゼロのままに維持される。ゼロ持続性ビットは、エッジ感知性及びレベル感知性入力の両方の利点を有し、エッジ感知性入力のノイズ感受性及び非共有性を無くする。DMAリクエストがサービスされておりioinインタラプトがサービスされている間の一定の状態の下では、ioinビットはゼロ持続性がない。後述のDMA使用法及びインタラプト使用法の各項を参照されたい。INTCの効果は、ビット上のゼロ持続性をディスエーブルするのに使用できる。後述の汎用ビットの項を参照されたい。
DMAの使用法
ioinビットは、その対応のiodmaeビットがセットされるとき、DMAリクエストソースとして構成される。DMAバスの遷移が開始した後、ioinビットは消費される。
ioinの外部入力ソースがINバー〔7:0〕であるとき、最大バンド幅のバックツーバックDMA転送が可能になる。これを達成するために、内部回路が、サンプリング及びゼロ持続回路をバイパスして、通常のサンプリング及びプライオリティ付けの遅延を伴うことなく、INバー〔7:0〕のDMAリクエストビットをDMAバストランザクションの終わりでチェックする。上述の最大バンド幅転送の項を参照されたい。
インタラプトの使用法
ioinビットは、対応のioieビットがセットされ且つ対応のiodmaeビットがクリアされているとき、インタラプトリクエストソースとして構成される。インタラプトリクエストが処理されている間において、そのISRがretiを実行することによって終了するまで、対応のioinビットは、ゼロ持続性でなくなり、外部入力のサンプリングされたレベルに従う。特に、所与のインタラプトリクエストについて、そのioieビットがセットれてそのioipビット又はioius ビットがセットされている間、そのioinビットはゼロ持続性はない。この効果は、非インタラプトビット(後述)上のゼロ持続特性をディスエーブルするのに使用され得る。
Figure 2009205698
汎用ビット
ioinビットが、インタラプトリクエストのために構成されているのでもなく、DMAリクエストのために構成されているのでもない場合、それはゼロ持続性の汎用のioinビットである。それとは別に、INTCの効果を使用することによって、汎用ioinビットは、ゼロ持続性を持つように構成され得る。このように構成された任意のビットは、下位側のプライオリティのインタラプトをブロックしないように、最低位のプライオリティのioinビットとなるべきである。それらは、それらのioie及びioius ビットをセットすることによて構成される。ioius ビットは、ioinビットがゼロを持続するのを阻止し、プライオリティ付けされるのを阻止し、インタラプトリクエストを生じるのを阻止する。表44のコードの例を参照されたい。
IOP使用法
ioinビットは、tskipzへの入力として使用され得る。このインストラクションは、そのビットを、読み出し、テストし、消費する。このioinビットは、IOP110によって書き込むことはできない。汎用ioinビットは、代表的には、tskipzのために使用されるが、使用法においてハードウエア上の制限はない。
MPU使用法
ioin内のビットは、MPU108によって、ldo[ioin]及びsto[ioin]を用いてグループとして読み出されたり書き込まれたりし、あるいは、Ido.i[ioXin-i]及びsto.i[ioXin-i]を用いて、個々に読み出されたり書き込まれたりする。ioinへゼロビットを書き込むことは、サンプリングの遅延がないことを除いて、あたかも外部ビット入力が1サンプリングサイクルの間にローに遷移したのと同じ効果を有する。これによって、ソフトウエアは、外部入力又はDMAリクエストのようなイベントをシミュレートすることができる。ioinへ1のビットを書き込むことは、ビットがゼロ持続性であるときの外部入力からのデータと違って、ゼロの持続を解除して、現在のサンプルを受入れる。書き込まれたデータは、書き込みの完了の直後から使用可能となる。MPUは、ioinの指示とは無関係に且つビットの状態の影響もなく、いつでもioinを読み出すことができる。MPUは、読み出しの間、ioinビットの状態を消費しない。表45のコードの例を参照されたい。
Figure 2009205698
ゼロ持続性ビット上の“リアルタイム”外部ビット入力読み出しを行うため、複数の1のビットが、ioinの読み出しの前にioin内の関係するビットへ書き込まれねばならない。これによって、どんな持続性のゼロも解除され、最も最近に分解したサンプルがラッチされ、その値が読み出される。ゼロ持続性として構成されないビットは、上記の書き込みを必要とはしない。任意の値の読み出しは、2つの最悪の場合のサンプリングの遅延と同じくらいに古いことを注意されたい。外部入力上での現在の値を読み出すことは、ioinに達するための値のための2つの最悪の場合のサンプリング遅延を待つことを必要とする。表46のコードの例を参照されたい。
ビット出力
8個の汎用ビット出力は、MPU又はIOPのいずれかによって、ハイ又はローにセットされ得る。これらのビットは、ビット出力レジスタ118(図15参照)において使用可能である。
リソース
ビット出力は、レジスタと、パッケージピンと、関連の回路とから成る。これらのリソースは以下のものを含んでいる。
・ ビット出力レジスタ,ioout :MPU又はIOPのいずれかによって最後に書き込まれたビットである。図24参照。
・ 出力,OUT〔7:0〕:専用の出力ピン。
・ アドレスデータバス,AD〔7:0〕:RASバーがハイのときこれらのピン上のマルチプレクスされたビット出力。
・ 出力ピンドライバカレントビット,outdrv,ドライバカレントレジスタ中,ドライバ:OUT〔7:0〕のドライブ能力をセットする。図45参照。
使用法
それらのビットは、MPUによって、ldo[ioout]及びsto[ioout]を用いてグループとして読み出されたり書き込まれたりし、あるいは、ldo.i[ioxout-i]及びsto.i[ioXout-i]を用いて、個々に読み出されたり書き込まれたりする。
そのビット出力は、IOPによって、outt及びoutfを用いて個々に書き込まれる。ビット出力はIOPによって読み出されることはできない。
書き込まれるとき、新しい値は、書き込みの完了の直後から使用可能となる。MPUとIOPの両方が同じ2X−クロックサイクルの間に同じビットを書き込む場合、書き込まれた任意の1ビットが優勢となることに注意されたい。
ビットは、OUT〔7:0〕では常に使用可能であり、RASバーがハイのときにはAD〔7:0〕上で使用可能になる。AD〔7:0〕からサンプリングされると、外部ハードウエアはRASがローに下がるとビットをラッチするように要求される。これらのビットは、(定義によって)RASバーサイクルが生じるときアップデートされるだけであることに注意されたい。出力cna のためにAD〔7:0〕を使用することは、OUT〔7:0〕を使用することに比較して、PWAエリア及びコストを減少する。波形について図74を参照されたい。
OUT〔7:0〕のドライブ能力はドライバにおけるプログラムされ得る。
プログラマブルメモリインタフェース
プログラマブルメモリインタフェース(MIF)120によって、CPUバスインタフェースのタイミングと振る舞いが、最少の外部ロジックによって周辺デバイスのニーズに適するようにされ、従って、性能を維持しながらシステムコストを減少させる。いろいろなメモリデバイスが、EPROM、SRAM、DRAM、VRAM、及びいろいろなI/Oデバイスを含めて、支持される。バス上の全てのオペレーションはMIF120によって指示される。バスインタフェースの殆どの特徴は、アドレスセットアップ及びホールドタイムと、データセットアップ及びホールドタイムと、出力バッファイネーブル及びディスエーブルタイムと、書き込みイネーブル活性タイムと、メモリサイクルタイムと、DRAMタイプデバイスアドレスマルチプレクス動作と、及び、DRAMタイプRASサイクルが生じたときを含めて、プログラム可能である。追加の仕様が、データセットアップ及びホールタイムと、出力バッファイネーブル及びディスエーブルタイムと、デバイスの転送タイプ(1バイト、4バイト、又は1セル)とを含めて、I/Oデバイスにとって使用可能である。
リソース
MIFは、幾つかのレジスタとパッケージピンと関連の制御ロジックとから成る。これらのリソースには、以下のものが含まれる。
・ VRAMコントロールビットレジスタ,vram:特別なオペレーションを開始するために、OEバー、LWEバー、CASes、RASes、及びDSFを制御する。図27参照。
・ ミスレーニアス(種々のレジスタ)Aレジスタ,misca :リフレッシュ及びRASサイクルの生成を制御すること。図28参照。
・ ミスレーニアス(種々のレジスタ)Bレジスタ,miscb :各メモリグループのデータ幅(セル幅又はバイト幅)を選択すること、及び、メモリバンク選択アーキテクチャ。図29参照。
・ メモリシステムグループ選択マスクレジスタ,msgsm :アドレスビットがデコードされてメモリデバイスのグループを選択することを示す。図32参照。
・ メモリグループデバイスサイズレジスタ,mgds:各メモリグループのためのメモリデバイスのサイズと構成を示す。図33参照。
・ ミスレーニアスCレジスタ,miscc :RASサイクルの生成とSRAMメモリグループのためのバンク選択アドレスビットの位置とを制御。図34参照。
・ メモリグループX拡張バスタイミングレジスタ,mgXebt :対応するメモリグループのメモリデバイスのために、より長いデータセットアップ及びホールドタイムと出力バッファイネーブル及びディスエーブルタイムとを生成する、メモリサイクル拡張又は伸長値を示す。図35参照。
・ メモリグループXCASバスタイミングレジスタ,mgXcasbt:1バスサイクルのCAS部分について、非拡張及び非伸長アドレス及びデータストローブ活性タイムを示す。図36参照。
・ メモリグループXRASバスタイミングレジスタ,mgXrasbt:RASサイクルを生成するように、1バスサイクルのCAS部分にプリペンドされる、RASプリチャージ及びアドレスホールドタイムを示す。図37参照。
・ I/Oチャンネル伸長バスタイミンクルジスタ,ioXebt:対応するI/Oチャンネル上のI/Oデバイスのために、より長いデータセットアップ及びホールドタイムと出力バッファイネーブル及びディスエーブルタイムとを生成する、メモリサイクル拡張又は伸長値を示す。図38参照。
・ メモリシステムリフレッシュアドレス,mrsa:次のDRAMリフレッシュサイクルの間に使用されるべき行アドレスを示す。図39参照。
・ I/Oデバイス転送タイプAレジスタ,iodtta:I/Oチャンネル0,1,2,3の各々の転送のタイプを示す。図41参照。
・ I/Oデバイス転送タイプBレジスタ,iodttb:I/Oチャンネル4,5,6,7の各々の転送のタイプを示す。図42参照。
・ ドライバカレントレジスタ,driver:種々の出力ドライバの相対的なドライブカレントを示す。図45参照。
メモリシステムアーキテクチャ
MTF120は、種々のメモリと周辺デバイスへの直接接続を支持している。主要な要件は、デバイスのアクセスタイムは決定論的であることであり、待機状態は、IOP110のために非決定論的なタイミングを生成するので、使用可能でないことである。MIF120は、マルチプレクス化されたアドレスデバイス(DRAM、VRAM等)について128MBまでのサイズ、及び、デマルチプレクスされたアドレスデバイス(SRAM、EPROM等)について1MBまでのサイズのワイドなレンジを支持する。DRAMタイプデバイスへのファーストページモードアクセス及びRASのみリフレッシュが支持されている。SRAMタイプデバイスは、RASアドレスビットがなく且つ多数のCASアドレスビットがあるDRAMとしてMIFに現れる。図33参照。
アドレスビットは、パッケージピンカウントを減少するように、ASD〔31:9〕上でCPUからマルチプレクスされる。DRAMタイプデバイスは、行アドレス(上部アドレスビット)及び列アドレス(下部アドレスビット)として参照される2つのピースにおける全メモリアドレスを収集する。それらに関連するバスサイクルは、行アドレスストローブ(RAS)サイクル及び列アドレスストローブ(CAS)サイクルとして参照される。メモリの故障の例外とリフレッシュとRAS前CAS・VRAMサイクルの場合には、RASサイクルは、RASバーの活動期間内に包含されて、CASサイクルを含んでいる。従って、RASサイクルはCASサイクルより長くない。RASサイクルはSRAMタイプデバイスのオペレーションのためには要求されないけれど、RASサイクルは、後述する幾つかの理由によって生じ得る。
I/OデバイスはMPUによるアクセスのためのメモリと同様にアドレスされるけれど、I/Oチャンネルの転送は、I/Oデバイスとメモリロケーションを同時にアドレス操作することを要求する。これは、使用可能な32アドレスビットを、メモリをアドレスする低位アドレスビットとI/Oデバイスをアドレスする高位アドレスビットとの、2つのエリアに分割することによって達成される。この分割のロケーションは、インストールされているアドレス可能なメモリ及びI/Oデバイスの量についての適用の要件に依存する。そのエリアは、必要ならば、I/Oデバイスがデータをメモリの対応エリアとともに転送だけできるという副作用をオーバラップすることができる。これらの高位アドレスビットは後述する。
メモリグループ
MIF120は、最も最近のRASアドレスビットの各々と独特の構成を維持しながら、4つのメモリグループまで動作させる。2つまでのアドレスビットがデコードされて、現在のグループを決定する。この機能のためのアドレスビットは、メモリシステムグループ選択マスクレジスタ,msgsm の中にセットされる。各メモリグループは、デバイスの幅、バスタイミング、及びデバイスサイズ(如何にアドレスビットがAD〔31:9〕上にマルチプレクスされるかを特定する)について、プログラムされる。グループ選択マスクの下部のアドレスビットは、代表的には、メモリデバイス又はI/Oデバイスの一部をアドレスするのに使用されて、グループ選択マスクの上部のビットは、代表的には、I/Oデバイスをアトレスするのに使用される。
メモリバンク
各メモリグループは、バスインタフェースモードに依存するように選択された1又はそれ以上のメモリバンクを持つことができる。1つのメモリグループの全メモリバンクは、そのグループの構成と最も最近のRASアドレスとを共有している。2つのアドレスビットが、現在のメモリバンクを決定するために、デコードされる。
単一メモリバンク(SMB)モード(mmb=0)において、 msgsmが、グループ選択ビットを同じビットになるようにセットする。これによって、1グループにつき1つのバンクにおける4つまでのグループが、計4つのバンク、すなわち、グループ0、バンク0:グループ1、バンク1:グループ2、バンク2:及びグループ3、バンク3となるのを可能にする。MGSxバー/RASxバーは、メモリデバイスへ直接接続するための信号を送る。図17参照。
マルチメモリバンク(MMB)モード(mmb=1)において、 msgsmがバンク選択ビットをオーバラップするかどうかに依存して、1つ、2つ、又は4つのバンクが各グループにおいて選択され得る。これによって、組み合せられた全グループのための16個のバンクまでが許容され、それ以上のバンクが、追加のバンク選択ビットを外部ロジックによって定義することによって、デコードされ得る。現在のメモリバンクを選択するアドレスビットは、(mgXdsが0-0x0eの値となる)DRAMデバイスのための行アドレスビットの直ぐ上部に配置されるか、あるいは、(mgXdsがOx Of の値となる)システム中の全SRAMデバイスのためのmssbs ビットによって特定される。グループ選択されたビットは、(MGSxバー信号を出力する)MGSxバー/RASxバーを決定し、バンク選択ビットは、所与のバスサイクルにおいて活性化するCASxバーを決定する。図20参照。4つのMGSxバー信号を4つのCASxバーによってゲートすることは、16個までのメモリバンク選択を生成する。図18参照。
2つのモードのハイブリッドは、MMBモードを選択し且つmsgsm ビットをバンクビットをオーバラップするように配置することによって、プログラムされ得る。これによって、CASxストローブがメモリデバイスに直接接続され得るよりもSRAMタイプデバイスについてより高速のチップ選択としてMGSxを使用することが可能になり、グループあたりたった1個のNORゲートがそのグループのためのRASを生成するのに必要となるだけである。
デバイスの要件のプログラミング
各メモリグループは、デバイス幅、デバイスサイズ及びバスタイミングの独特の構成を用いてプログラムされ得る。CPUがリセットした後、システムが、可能な最低のバスタイミングを用いて、バイト幅モードで動作し、メモリグループゼロ、普通、外部PROMから実行する。後述のプロセッサのスタートアップの項を参照されたい。通常、PROM内のプログラムコードは、最初に、メモリグループのための適正な構成、I/Oデバイス、及び他のシステムの要件を決定するためのコードを実行する。
デバイスサイズ
メモリデバイスサイズは、mgdsの16個の設定値の1つにプログラムされる。最も現在において使用可能な及び間もなく使用可能なDRAMタイプデバイスサイズが、SRAMタイプのオプションとともに、選択される。デバイスサイズ及び幅の選択は、AD[31:9]のアドレスビットの配置を決定する。表47及び表48を参照されたい。
DRAMについては、RAS及びCASサイクルの両方の間において、高位アドレスの幾つか又は全部が、RAS及びCASアドレスビットのために使用されるAD上のADにある。これらの高位のアドレスビットは、例えば、I/Oデバイスを選択するように外部ハードウエアにデコードする等のような、アプリケーションによって使用され得る。高速CASサイクルを持つ高性能システムには、RASサイクルが、しばしば、I/Oアドレスデコードのために要求される。しかしながら、外部デコードハードウエアが十分に高速であれば、CASサイクルI/Oが可能になる。
SRAMについては、CASサイクルとともにできるだけ多くのメモリをアドレスできるように、CASアドレスタイムの間に現れる高位のアドレスビットは31だけである。I/Oデバイスは、ソフトウエア内でデバイスアドレスビットを下位ビットへトランスレートすることによって(これらのトランスレートされたビットが所望のSRAMメモリアドレス動作を邪魔しないものとする)、まだなお、CASサイクル上で選択され得る。デバイスアドレスビットは、I/Oアドレス動作のために外部でデコードされるAD上にSRAMアクセス中に現れるそれらのアドレスビットにトランスレートされねばならない。
デバイスの幅
メモリデバイスの幅は、8ビット(1バイト)又は32ビット(1セル)のいずれかであり、miscb のmgXdsを用いてプログラムされる。
表47に示されるように、セル幅のメモリグループは、メモリグループをアドレスするためのA1及びA0を使用しない。セル幅のデバイスへの全てのアクセスは、セル配列にされ、全セルを転送する。メモリデバイスアドレスラインは、AD[x:11](xはデバイスサイズによって決定される)上のCPUに取付けられている。
バイト幅メモリグループへのアクセスは、また、セル配列され、セル内の全4バイトを、最上位から最下位(すなわち、0、1、2、3)へ、転送する。唯一の例外は、1バイトのバイト転送デバイスを用いた、I/Oチャンネル転送についてであり、その場合には、1つの任意にアドレスされたバイトだけが転送される。後述のバスオペレーションを参照されたい。
表48に示すように、バイト幅メモリデバイスは、A1及びA0の使用を要求する。DRAMにとって、RAS及びCASメモリデバイスアドレスビットは、同じAD上になければならないので、A31を除いてアドレスラインは、内部において左へ2ビット回転される。これによって、DRAMへの接続のためにAD11上にA0が適正に配置される。しかしながら、このことは、また、I/Oアドレスデコードに用いる高位アドレスビットが、セル幅メモリグループとは違うバイト幅メモリグループのためのAD上に現れることを意味する。I/Oデバイスアドレスデコードハードウエアが固定のADに配線されているので、1つのデバイスにアクセスするのに使用したアドレスビットは、セル幅メモリデバイスを用いてデータを転送するときとは違って、バイト幅メモリデバイスを用いてデータを転送するときとは異なる。
Figure 2009205698
Figure 2009205698
プログラマブル・タイミング
各メモリグループに対するRASとCASのサイクルのタイミングは、各I/Oチャンネルのデータ・セットアップとホールドタイムと同様に、プログラムできる。パラメータに応じて、タイミング・グラニュラリティ(timing granularity)は2X−クロックサイクルもしくは4X−クロックサイクルのいずれかである。ある場合にはタイミングは、イベントを一つの4X−クロックサイクルだけ進めるのに利用できるモディファイアーを有して2X−クロックサイクルで決められる。
タイミング仕様は3つのピースに分けられる。すなわち、RASプリフイックス、基本CASサイクル、そしてCAS延長/拡張タイミングである。すべてのCASサイクルは、基本的なCASサイクルタイミングと適当なCAS延長/拡張タイミングである。この組み合わせはメモリサイクルのCAS部分として参照される。すべてのRASサイクルは、RASプレフイックス+CAS部分から成る。複数バスサイクルのバスでのトランザクション(transaction)は、間合いを詰めて繋がっているRASプレフイックスとCAS部分の所要の連続である。読み取りサイクルもしくは書き込みサイクルだけが個別に分離して実施される。読み取りー修正書き込みサイクルは実施されない。
RASプレフイックス・タイミング
メモリグループのためのこのタイミングは対応mgXrabstにおけるフイールドをプログラムすることによって決められる。RASサイクルのRASプレフイックスは進み2Xクロックサイクル、RASプリチャージ(mgbtras)として参照されるRASの不活性部、そしてRASアドレス・ホールドタイム(mgbtrhld)とから成る。RASサイクル期間の計算のためmgbtrastはmgbtras とmgbtrhld+1との集計を含まなければならない。この時間中DRAMRASアドレスビット、ハイ・アドレスビットそしてビット出力がAD上にある。図37参照。
CAS部のタイミング
メモリグループのためのこのタイミングはmgXcabstとmgXebtとにおけるフイールドをプログラムすることによって決められる。そのサイクルのCASバー部はCASプリチャージ(mgbtcas)として参照されるCAS不活性部のタイミングから始まる。次はCASアドレス・ホールドタイム/データタイムの開始(mgbtdob)であり、そのときDOBバーと、多分OEバーもしくはLWEバーがアクチブとなる。そのとき、CASバー、DOBバーそしてOEバー(もしメモリー読みなら)もしくはLWEバー(もしメモリー書き込みなら)のどちらかが再び不活性もしくはインアクチブになる(mgbtcast)。長いデータセットアップとバッファー時間に対処するためにCASサイクルをDOBバーの立ち下がりで拡張できる(mgebtdobe)。長いデータホールドと出力バッファー・ディスエーブル時間とに対処するためにDOBバーのインアクチブ(mgebtcase)に続いてCASストローブを拡張できる。CASサイクルの始め(もしRASサイクルであればRASバーの立ち上がり前に)、もしくはCASバーの立ち下がり(mgbtewea)のどちらかでEWEバーをアクチブにするようにメモリ書き込みサイクルをプログラムできる。同様に、DOBバーの立ち下がり+拡張、もしくはDOBバーの立ち下がり+拡張もしくはDOBバーの立ち下がり+拡張+一つの4Xクロックサイクル(mgbtlwea)のどれかでアクチブとなるようにLWEバーをプログラムできる。EWEバーはDRAMタイプデバイスを受け入れるのが普通である。更に、インアクティブになるDOBバーはEWEバー/LWEバーもしくはOEバーをトラックし、これらの何れもが延長されていないCAS時間よりも一つの4Xクロックサイクル時間だけ先にインアクティブにされることができ、mgbtcastが mgebtsum に加えられ、後者はmgebtdobe と mgebtcaseの集計を含んでいなければならない。図36と図35を参照。
MPUバス・トランザクションもしくはIOP命令・フェッチのバス・トランザクションが起きるとき、メモリグループのためのバスサイクルタイミングは上に説明したように、mgXebtにおける値を使う。I/Oチャンネルのバス・トランザクションが起きるとき、適当なI/OチャンネルのためのioXebtにおける値をmgXebt値の代わりとする。これらのioXebtの値は、I/Oデバイスと同様、その転送において含まれることになるかもしれないメモリーグループを受け入れるようにプログラムされなければならない。
DRAMリフレッシ
メモリの内容を保持するためメモリデバイス内の各行にDRAMが周期的にアクセスしなければならない。IOP命令リフレッシュにより供給されるRASオンリーリフレッシュモードを含む、幾つかのリフレッシュモードを大抵のDRAMデバイスが支持している。システム内の大抵の限定DRAMに対して十分に短いインターバルでリフレッシを実施できるようIOPをプログラムできなければならない。リフレッシ・サイクル内のタイミングはmsrtg により指示されるメモリーグループのRASサイクルタイミングを利用し、それはシステム内の最も遅いDRAMのリフレッシュサイクルに対して十分長くなければならない。各メモリグループに対するリフレッシュは個別にイネーブルされたり、ディスエーブルされる。図28参照。
msraは各リフレッシュサイクル中使用されるデータを含んでいる。リフレッシュ・サイクルが完了した後リフレッシュはmsrra 内の14ビットの行アドレスをインクレメントする。msra31とmsrha におけるアドレスビットは通常零であるが、その零値がリフレッシュ・サイクル中他のシステムのハードウエアと干渉するのであれば書き込むことができる。
ビデオRAM支持
特殊なVRAM動作モードはvramの使用により支持される。図27と表35とを参照。多くのVRAMモードがRASサイクルを使ってVRAMデバイスに動作状態を設定する。こうして、予期されないRASサイクルが望ましくない結果を生じる。
リフレッシュ・サイクルは予期されないRASサイクルの一つのソースである。これらは適当なmgXrd ビットをセットすることによりVRAMを含むグループでディスエーブルされることができる。図28参照。
ハイアドレス・ビットにおける変化が予期されないRASサイクルの第2のソースである。これらはmsevhacrをセットすることによりメモリグループmsvgrpで生じないようにできる。ハイアドレス・ビットはI/Oデバイスのアドレスとして使用されるのが典型であり、そしてもしmshacdがクリアであって、これらのビットが変化するときRASサイクルを必要とする。VRAMグループのアクセス直前のI/Oチャンネル転送がそのような発生例である。RASサイクルは適正なシステム作動に必要であるかもしれないが、msevhacrを設定することによりRASサイクルをVRAMグループが受けないようにできる。サイクルのRASプリチャージ部がVRAMグループのMGSx/RASxではなくRASとRASバーで生じる。もし一つより多いメモリグループをVRAMに使用すると、この保護は有効ではなくなることに注意されたい。図34参照。
システムの必要条件のプログラミング
RASサイクル発生
ADに新しい行アドレスを持ち込むのにRASサイクルをDRAM型デバイスでは本来必要とする。IOPの一時的に決定した実行を保証するのに、もしくはあるイベントの後正しい作動を保証するのに、ある場合にはRASサイクルは必要である。MIFはこれらの場合を自動的に取り扱う。例えば、I/Oアドレスをデコードするための付加的な時間を供給するようRASサイクルが発生するようにもできる。RASサイクルはCASサイクルよりも長いのが普通であるので、それらの使用を最小とするのが望ましい。RASサイクルの様々なソースを表49に挙げる。
Figure 2009205698
現在と以前のアドレスを比較してRASサイクルが必要か、否かを決めるとき、MIFは以下のルールを使う。
・現在のDRAMRASアドレスビットを、現在のメモリーグループ上で最近のRASサイクルからのDRAMRASアドレスビットと比較する。もしビットが異なっていると、RASサイクルが発生する。
●中間アドレスビットは比較されない(図16参照)。中間アドレスビットは、DRAMに対して、RASアドレスビットより上でmsgsm を含み、msgsm まで、SRAMに対して、A22からmsgsm を含み、msgsm までである。もしもmsgsm が零であると、いずれの場合も中間アドレスはない。もしmsgsm がA31を含んでいると、A31はハイアドレスビットの部分となり、そして任意に比較される。
●現在のハイアドレスビットは、以下に述べるコンフィギュレーションのオプションによって、最近のRASサイクルからのそれらと比較される。ハイアドレスビットのロケーションはmsgsm により変わる。図32参照。
3つのハイアドレスビットのコンフィギュレーションのオプションを使ってハイアドレスビットの比較により生ぜしめられるRASサイクルの発生を最小にできる。
●I/Oデバイスのアドレスに対してハイアドレスビットを使うのが典型であり、それらが変化すると、RASサイクルは外部のハードウエアによるそれらの適正なデコーディングに必要とされる。メモリシステムをハイアドレスビット比較不能にセットすることによりRASサイクル決定からハイアドレスビットを排除できる(mshacd)。図28参照。
●4バイト転送デバイスとセルメモリとの間で、もしくは1セルーセル転送デバイスとバイトメモリとの間でのバスのトランザクション中A31はパスされる(グローバル・レジスタ、通常セットから取られる)か、もしくは(MIFにより)クリアーされて、必要とされるときI/Oデバイスを選択もしくは外す。この目的のための外部でのデコーディングA31は全アドレスデコードよりも迅速に行われることができ、それでこの別個のオプションが利用できる。A31はハイアドレスビット比較に含まれるか、もしくは除外されることができる(msexa31hac)。図34参照。
●I/OデバイスのアドレスをデコードするがA31における変化をデコードしないようにするのにRASサイクルを必要とするシステムにおいて(mshacdクリア、そしてmsexa31hacセット)、もしシステムが大量のメモリとI/Oデバイスとを含んでいれば、メモリアドレスビットとI/Oアドレッシング・ビットとが重なりあうこが必要かもしれない。これがRASサイクルの発生を阻止する。重なりあったアドレスビットのあるものはRAS(中間アドレスビット)を生じないからであり、もしくはRAS(DRAMRASアドレスビット)を必要としないからであり、もしくはRAS(DRAMRASアドレスビット)を、例えそれらが最後のシステムのRASサイクルから変化していても必要しないからである。この場合RASを強制して、I/OデバイスアドレスがA31をセットすることにより(msras31dクリア)デコードされることを確実にする。このオプションもRASサイクルを強制することが望ましい時以外ならいつでも使える。
ドライバー電流
総てのパッケージ出力ドライバーの駆動能力はプログラムできる。図45参照。
メモリー欠陥
仮想メモリページ欠陥検知はmfltイネーブル イン・モードを介して可能化される。pkgmflt の状態に応じて、メモリ欠陥入力はAD8もしくはMFLTバーのどちらかからくることができる。図34参照。
I/Oチャンネルプログラミング
前に説明したように、ノーマルなメモリグループバスタイミングはI/Oチャンネルバストランザクション中、対応するioXebtの値をその取り込まれたメモリグループに対するmgXebtの値の代わりに使うことにより変えられる。このことにより各I/Oチャンネルはデバイスの必要条件を満たすようプログラムされる。データ転送が起きるかもしれないメモリグループと同様、I/Oデバイスに対してioXebtの値は十分でなければならない。図38参照。
タイミングに加えて、各I/Oチャンネル上の転送の型はindttaもしくは iodttb で決められている。転送はバイト巾デバイスに対してトランザクション毎に1バイトもしくは4バイトのどちらかでよく、またはセル巾デバイスに対してトランザクション毎に1セルである。4バイトーバイト転送デバイスは、1バイトーバイト転送デバイスよりバスを争う必要が少ないかもしれない。またセル巾メモリでは、4バイトーバイト転送はセル・整理され、そしてデータをメモリセルに詰め、他方1バイトーバイト転送がメモリセル毎にただ一つのバイトを置いていく。バス動作は以下を参照。
他のI/Oチャンネル転送オプチオンについては、上の、直接メモリアクセスコントローラを参照。
オン・チップリゾースレジスタ
オン・チップリゾースレジスタ102(図20)はMPU108,IOP110,DMAC112,INTC114,MIF120,ビット入力116そしてビット出力118を含むCPU100上の様々な機能ユニットの部分を備えている。これらのレジスタは、レジスタレベルで1do〔〕とsto 〔〕を使用し、もしくはビットレベルで1do.i〔〕と sto.i〔〕を(ビットアドレスを有するレジスタに対して)使用してそれら自身のアドレススペース内のMPUからアドレスされる。他のプロセッサ上でこの形式のリゾースはメモリーマップされているか、オプコード・マップされているかのどちらかである。別のアドレスを使うことによりスペースは整理され、そしてコードは保存される。注意書がしていない、すべてのレジスタは読み取りと、書き込みができる。「リザーブされた零」と記した区域はプログラマブルビットを含んでおらず、そして常に零に戻る。「リザーブされた」と記された区域は使用されていないプログラマブルビットを含んでいる。両区域は将来ファンクショナルなプログラマブルビットを含むことになるかもしれない。
最初の6つのレジスタはレジスタでアドレスできることに加えて、ビットでアドレスできる。このことによりMPUは、IOP,DMACもしくはINTCロジックにより同時に変えられるかもしれない他のビットを害することなく個々のビットを修正できる。
進行中にバスサイクルのタイミングもしくはバスのコンフィギュレーションに影響するレジスタの値を変えるとき無効のバスサイクルを回避するためバスの動作を阻止する。バスの動作は以下のことを確実にすることにより阻止できる。
●DMAリクエストに応じない。
●IOPがバスを捉えない(iopdelayが零になる)。
●書き込みが送られない。
●プリフェッチが生じない。
このことは普通問題ではないのは、関心のあるDMAもしくはIOPの動作が起こったとき丁度パワーアップした後に大抵の変化が生じるからである。書き込みが送られた後でのMPUメモリアクセス(例えば、命令フェッチ)を確実にすることにより送られた書き込みは確実とされる。
ビット入力レジスタioin(図21は、pkgio.joinの値に応じてINバー〔7:0〕もしくはAD〔7:0〕からのサンプルしたデータを含んでいる)はビット入力のすべての消費者に対する入力のソースである。ビットは0が継続しており、ioinで一旦ビットが0になると、それはIOP,DMACもしくはINTCにより消耗されるまで、もしくは1にMPUにより書き込まれるまで0のままである。ある条件ではビットは0のままでいられなくなる。上のビット入力参照。
ビットは個別に読まれ、セットされ、そしてクリヤーされてMPUと他のCPUロジックとの間のレース状態を阻止することができる。
割り込みベンディングレジスタioip(図22)はサービスを受けるのを待っている割り込み請求を含んでいる。優先順位に従って(0が最高、7が最低)割り込みが認められる。I/Oチャンネル転送からの、もしくはint からの割り込み要請は対応するペンデイングビットがセットされることにより生じる。ビットがセットされる、もしくはクリヤーされると割り込み要請が提示され、もしくは撤回される。ioipビットと対応ioieビットがセットされるとき、対応するioinビットでは0は継続しない。上の割り込み制御参照。
ビットは個別に読み取られ、セットされ、そしてクリアーされてMPUとINTCロジックとの間でのレース状態を防ぐ。
インターラプト・アンダーサービス・レジスタioius (図23)は現在の割り込みサービスと優先順位の高いリクエストに応えるため一時的に保留されているものとを含んでいる。割り込みリクエストのためISR実行可能のコードベクトルが実行されるとき、その割り込みリクエストのioius ビットがセットされ、そしてその対応ioius ビットがクリアされる。ISRがretiを実行するとき、優先順位の高いインターラプト・アンダーサービスビットをクリアする。これらのビットを使って割り込みが優先順位の高いISRに割り込まないようにする。ioius ビットと対応するioieビットとがセットされるとき、対応するioinビットの零は永続性はない。割り込みコントローラ参照。
ビットは個別に読まれ、セットされ、そしてクリアされることができて、MPUとINTCロジックとの間でのレース状態を防ぐ。
ビット出力レジスタioout (図24)はMPUとIOPビット・出力動作からのビットを含んでいる。書き込み直後にOUT〔7:0〕に、そしてRASバーがインアクチブである間AD〔7:0〕でビットが現れる。ビット出力参照。
ビットは個別に読まれ、セットされ、そしてクリアされることができて、MPUとINTCロジックとの間でのレース状態を防ぐ。
インターラプト・イネーブルレジスタはioie図25に示されている。もし対応するiodmaeビットがセットされていないと、対応する零ビットioinに、ioin内の対応零ビットにリクエストさせてその対応する割り込みサービスを要求させる。イネーブルされた割り込みリクエストが認識されると、その対応ioipビットがセットされ、そしてもはやその対応ioinビットの零は永続性はない。上の割り込みコントローラ参照。
ビットは個別に読まれ、セットされ、そしてクリアされることができる。このレジスタのためのビットのアドレッサービリティはそのアドレス・スペースにおけるそれの位置のアーティファクト(artifact)であり、そしてこのレジスタにレース状態が存在できることを意味しているものではない。
図26はDMAイネーブルレジスタiodmaeを示している。ioinにおける対応零ビットにその対応するI/OチャンネルのためDMAI/Oチャンネル転送を要求させる。イネーブルされたDMAリクエストが認識されると、ioinにおける対応零ビットがセットされる。もしその対応iodmaex がセットされると、そのiodmaeビットはクリアされ(そのチャンネルからの別のDMAリクエストを不能化させ)、そのときそのチャンネル上のI/Oチャンネル転送は1024バイトメモリーページ内の最後のロケーションにアクセスする。上のダイレクト・メモリアクセスコントローラ参照。iodmaeビットがセットされるときその対応ioieビットは無視される。
図27はVRAMコントロールビットレジスタvramを示す。これらのビットはOEバー、LWEバー、CAS、そしてCASバーの立ち下がり時間におけるDSFを制御する。それらはVRAM上の様々なモードを活性化するための組み合わせにおいて使用されることができる。
次のMPUメモリサイクル中メモリストローブを制御する前にvramからのビットは、隠されたレジスタを通る。この隠されたレジスタ内のmsvgrpのため蓄えられたビットは、どのメモリグループが現在のVRAMメモリグループか、どれのストローブがその隠されたレジスタ内のデータにより影響されるかを決定する。VRAMメモリーグループへのMPUアクセスが生じるまでは、その隠されたレジスタはいったんそれへvramからデータが転送されると、ロックされ、その隠されたレジスタ内のデータを消耗する。
vramへのsto[]が生じ、そしてその隠されたレジスタが現在ロックされていないときvramからのデータは、もし(いずれかのメモリグループへの)ポストされた書き込みが待っていない、もしくはプロセス中ではない、またはそのポストされた書き込みの終わりで、別のポストされた書き込みが待っている、もしくはプロセス中であると、直ちにその隠されたレジスタに転送される。vramへのsto 〔〕が生じ、そしてその隠されたレジスタが既にロックされているとき、vram内のデータは、VRAMメモリーグループへの次のアクセスが生じる後まで転送される(そして置き換えられる)ことはない。VRAMメモリーグループへの次のアクセスがその隠されたレジスタ内のデータを使用し、そしてそのメモリーアクセスが完全であるとき、vram内のデータはその隠されたレジスタへ転送される。
MPUメモリアクセスだけがvramもしくはその隠されたレジスタに影響する。その隠されたレジスタへvramを転送した直後にvramにおけるdsfvras,casbvras,wevras,そしてoevrasがクリアされる。VRAMメモリーグループへのアクセス後別のCASもしくはRASサイクルが、レジスタを書き換えることなくVRAMメモリーグループに生じ、そして現在の(クリアされた)vramデータを使用する。vramへの書き込みが、その要求されたRASもしくはCASタイプのVRAMメモリーグループへの一つ、もしくはそれ以上のアクセスと対にされると、上に説明した内部作動はプログラムに対して透明である。RASプリチャージは適正なVRAM作動の期間中少なくとも3つの2×クロックサイクルでなければならない。上に説明し、そして後でも説明するビデオRAMサポート参照。
msgrp
msgrp はこのレジスタにより制御されるVRAMを含むメモリーグループを説明する。IOPとMPU命令はVRAMのため使用されたメモリーグループから送られるべきではない。VRAM作動は、意図されたVRAMトランザクションではなく命令フェッチ・バス・トランザクションで生じ勝ちであるからである。

dsfvcas
dsfvcas はVRAMメモリーグループ上のメモリーサイクルの次のCAS部分の開始でDSFへ加えられた状態を含んでいる。ビットは永続し、そして隠されたレジスタへ転送された後でそのビットは自動的にクリアされない。VRAMメモリーグループにアクセスしないときはDSFはローである。

dsfvras
dsfvras はVRAMメモリーグループ上で次のRASサイクル中RASバーが立ち上がった後2つの2×クロックサイクルしてDSFへ加えられた状態を含んでいる。行アドレス・ホールドタイムの終わりでDSFはdsfvcas の状態へ変わる。隠されたレジスタへ転送された後自動的にビットはクリアされる。

casbvras
これがセットの場合、VRAMメモリーグループ上での次のRAS サイクル中、全てのCAS 信号は、RAS バーが上昇後の2つの2Xクロックサイクル中は活性であり、通常の期間満了時間では不活性になる。OEバー、EWE バー及びLWE バーは、行アドレスホールド時間が満了した時不活性になる。メモリーグループmsvgrpへの次のアクセスは内部ロジックによってRAS サイクルである様にされる。
全ての読出し及び書込みストローブは、バスサイクル中の通常の活性時間を通して不活性であり、メモリーとのデータI/O は発生できないことに留意。
このサイクルを引き起こすのに使用されるST又はLDと関係するデータは、失われ、且つ未定義となる。casbvrasビットは、隠しレジスタに転送された後自動的にクリアーされる。
wavras
これがセットの場合、VRAMメモリーグループ上での次のRAS サイクル中に、RAS が上昇後の2つの2Xクロックサイクル中、LWE は低く、行アドレスホールド時間の満了時に、高い。他方、VRAMメモリーグループでの次のRAS サイクル中に行アドレスホールド時間が満了する迄、LWE バーは高い。何れの場合も、サイクルLWE バーのCAS 部分中において、LWE バーは通常通り振る舞い、そして転送されたデータは達成された機能の一部である。ビットは、隠しレジスタに転送された後、自動的にクリアーされる。

oevras
これがセットの場合、VRAMメモリーグループ上での次のRAS サイクル中にRASが上昇した後の2つの2Xクロックサイクル中、OEバーは低く、行アドレスホールド時間の満了時に高い。他方、VRAMメモリーグループ上の次のRAS サイクル中の行アドレスホールド時間が満了する迄、OEバーは高い。何れの場合も、そのサイクルのCAS バー部分中OEバーは通常通り振る舞い、転送されたデータは達成された機能の一部である。ビットは、隠しレジスタに転送された後に自動的にクリアーされる。
雑多Aレジスタmisca(Miscellaneous A Register misca)が図28に示されている。
mgXrd
これは、リフレッシュが実行される時に対応するメモリーグループ上でリフレッシュサイクルが発生することを、(これがクリアーの場合)許容し、(これがセットの場合)禁止する。幾つかのメモリーグループ上でのリフリッシュを許容することは、非所望であるか又は適当ではない場合がある。例えば、リフレッシュの第1の副作用は、メモリー装置内にラッチされた現在の行アドレスが 変更されることである。このことは、RAS サイクルが強い動作モード及びアドレスをセットする時は、VRAM装置では望ましくない場合がある。別のリフレッシュの副作用は、動作メモリーの行を再選択するために、メモリーグループへの次のメモリーサイクルがRAS サイクルであることが必要とされることにある。このことは、SRAMで通常は所望されないが、その理由は、レフリッシュが必要とされないからである。リフレッシュ及びRAS サイクルは低速実行のみであり、そうでないと、予測可能なタイミングを予測不可能にする。

msras31d
これがセットの場合、A31 が1の時にnon-RAS サイクルを可能にする。これがクリアーの場合、A31 が1の時に、1バスサイクルトランザクション及び4バスサイクルバイトトランザクションの第1のサクイルの両方でRAS サイクルを生じさせる。I/O 装置アドレッシングビットがグループ、バンク又はDRAM RASにオーバラップする大メモリーシステムにおいては、このオプションは、オプションの無い場合に生じ得えない時に、RAS サイクルを強制する。その理由は、これら種々のビットがRAS 比較ロジックから排除されるか、I /O装置アドレスビットと不注意に一致し得る場合があるためである。RAS サイクルが、I/O デコード及び選択のための充分な時間を可能とする様に設計で要求される場合がある。

mshacd
もしこれがクリアーの場合、高アドレスビットを最新のRAS サイクルのものと比較して、RAS サイクルが生じるかを決めることを可能にする。これがセットの場合、この比較を不可能にする。これらのビットは、外部デコーディングロジックを要求するI/O アドレスとして通常使用されるが、このロジックは、このデコーディング用のRAS サイクルで利用可能な追加の時間を必要とする場合がある。しかしながら、高速ロジックを用いると、CAS サイクル内で利用可能な時間内でI/O アドレスをデコードすることがしばしば可能となり、I/O アクセスが速められる。A31 を、msexa31hacをセットすることによって高速アドレスビット比較から除外することが出来る。

msrtg
これは、メモリーグループの数を含み、このメモリーグループのRAS サイクルタイミングは、リフレッシュによって発生されたリフリッシュサイクルのために使用すべきである。特定されたメモリーグループは、最も制限的(最も遅い)リフレッシュタイミングを有するグループである必要がある。
雑多Bレジスタmiscb(Miscellaneous B Register miscb)が図29に示されている。
mmb
これがクリアーの場合、全メモリーグループに対する単一メモリーバンク(SMB)を選択する。RASxバー信号は対応するパッケードピン上に現われる。バンク選択ビットは、msgsm ビットに対応する。4つ迄のメモリーバング(即ち、メモリグループ毎に一つのメモリーバンク)が、直接接続され且つアクセスされる。図17参照。
これがセットの場合、全メモリーグループに対する多重メモリーバンク(MMB)モードを選択する。MGSxバー信号は対応するパッケージピン上に現われる。バンク選択ビットは、DRAM RASビットの直ぐ上に位置されているかは、又はmssbs 位置内のSRAM用のものである。16迄のメモリーバンク(即ち、メモリーグループ毎に4つのバンク)は、バンク毎に1.25の2つの入力ゲードと接続することが出来る。ゲート毎の追加の入力及び追加のデコーディングを伴って、任意に大きい数のメモリーバンクを容易に接続することが出来る。図20参照。
fdmap
DMA 要求はバスに対して競合する。最高優先順位要求がアクセスの第1番のチャンスを得る。iopdelayが最高優先順位要求によるバスアクセスを可能とするのに充分大きい場合、バスが装置に対して許可される。
fdmap がセットで、且つiopdelayが最高優先権DMA 要求に対して小さ過ぎる場合、DMA 要求がバスを得ることはない。縮み(shrinking)可能バススロットに適合するより高い優先順位DMA 要求が発生しない場合、IOP がバスを占有する迄バストランザクションは発生しない。IOP が次に遅延を実行する時、最高優先順位DMA 要求--又はDMA 要求がない場合はMPU が--バス要求処理を繰り返す。
fdmap がクリアーであり且つiopdelayが最高優先順位DMA 要求に対して小さ過ぎる場合、要求はバスを得ない。次のより低い優先順位のバス要求は、MPU が最低の優先順位要求を有して、次にバスを要求することが許可される。この処理は、バスが許可されるか又はIOP がバスを占有する迄繰り返される。IOP が次に遅延を実行する時、最高優先順位DMA 要求--又はDMA 要求が存在しない場合はMPU --がバス要求プロセスを繰り返す。
pkgio
これがセットの場合、ioinへの入力がINバー〔7:0〕から取られる。これがクリアーの場合、RAS バーが低であり且つCAS が高である時に、ADバー〔7、0〕から取られる。
上述のビット入力を見よ。

oed
これがセットの場合、バスサイクル中にOEバーが活性になるのを不可能にする。これがクリアーの場合、OEバーが通常に振る舞う。CPU リセット上で、OEバー信号は利用不能状態となり、従来通り接続されているメモリーが応答することが阻止される。このことは、I/O 空間内の装置からのブーティング(booting)を可能とする。以下のプロセッサスタートアップを見よ。

mgXbw
これがクリアーの場合、対応するメモリーグループはセル幅であり、バスサイクル毎に32ビット読出し及び書込みが行われる。これがセットの場合、対応するメモリーグループはバイト幅であり、4バスサイクルの1つのバストランザクションで、サイクル毎に1バイトで書込み及び読出しが行われる。
メモリーフォールトアドレスレジスタ(Memory Fault Address Register)は図30に示される。メモリーページフォールト(不在)例外が、メモリー読出し又は書込み中に発生する場合、mfltaddrは例外を発生したアドレスを含む。mfltaddr及びmfltdataの内容は、フォールトの後のmfltaddrの第1の読出し迄、ラッチされる。mfltaddrを読み出した後、mfltaddr及びmfltdata内のデータは最早有効ではない。
メモリーフォールトデータレジスタ(Memory Fault Data Registor)が図31に示される。メモリーページフォールト例外はメモリー書込み中に発生する。mfltdataはmfltaddrに記憶されるデータを含む。mfltdata及びmfltdataの内容は、フオールトの後のmfltaddrの第1の読出し迄、ラッチされる。
メモリーシステムグループ選択マスクレジスタ(Memory System Group-Select Mask Register)は図32に示される。これは、A16 及びA31 間のメモリーグループ選択ビットの位置を決める0、1、又は2つの隣接ビットを含む。
何等のビットもセットされていない時、全てのメモリーアクセスがメモリーグループ0で発生する。メモリーシステム高アドレスビットは、DRAMに対してはメモリーグループゼロDRAM RASアドレスより上で、SRAMに対しては、A21 より上でアドレスビットで発生する。
1ビットがセットされる時、これは、メモリーグループゼロとメモリーグループ1との間でアクセスを選択するアドレスビットを決定する。メモリーシステム高アドレスビットは、選択されたビットよりも高いアドレスビットで発生するが、常にA31 を含む。
2つの隣接ビットがセットされる場合、それらは、アクセスされる4つのメモリーグールプの一つを選択するために、デコードされる。メモリーシステム高アトレスビットは、選択されたビットよりも高いアドレスビット内で発生するが、常にA31 を含む。
メモリーグループ装置サイズレジスタ(Memory Group Device Size Register)が図33に示されている。これは、各メモリーグループ毎に、DRAMアドレスビット構成、又はSRAMを選択する4ビットコードを含む。このコードは、RAS 又はCAS アドレッシング中にどのビットが使用さるかを、そして(DFRAM行アドレス変化のために)RAS サイクルが必要とされるかを決めるためにどのビットが比較されるかを決める。表47及び表48を見よ。
雑多Cレジスタ(Miscellaneous Register)が図36に示される。
pkgmflt
これがセットの場合は、メモリーフォールト入力が、MFLTバーから選択される。これがクリアーの場合、メモリーフォールト入力は、RAS バーが下降する時にAD8 からサンプルされる。図70を見よ。

mspwe
これがセットの場合、1レベルMPU 遅れ書込みバッファを使用可能とし、メモリーへの書き込みが発生した後に、MPU が実行を続けることを可能にする。遅れ書き込みは、後続のMPU 読出しに対して優先して、メモリーコヒーレンシーを維持する。これがクリアーの場合、MPU は、実行の継続以前に、書込みが完了することを待機する必要がある。

msexa31hac
これがセットの場合、A31 は高アドレスビット比較には含まれない。これがクリアーの場合、A31 が高アドレスビット比較内に含まれる。他の情報に付いてはmshacdを見よ。高アドレスビットが、I/O アドレスとして通常使用され、デコーディングのためのRAS サイクルで利用可能な追加の時間を必要とする場合がある外部デコーディングロジックを必要とする。幾つかのバストランザクションは隣接するバスサイクルを含む。このバスサイクルの高アドレスビットはA31 の状態のみだけ異なり、従ってこのビット内の変化のみのためにRAS サイクルを要求する。しかしながら、幾つかのシステム設計では、CAS サイクル内で利用可能な時間でA31 の変化をデコードすることが出来、従って、I/O アクセスが速くされる。

mssbs
多重メモリバンクモードのみに対して、これらのビットは、A14 (バイトモードグループに対するA12 )から、SRAM装置を含むメモリーグループ内のバンクを選択するのに使用される2つのアドレスビット迄のオフセットを含む。典型的には、使用されるSRAM 装置のアドレスビットの直ぐ上にビットを置く様に設定する。
メモリーグループ0−3延長バスタイミングレジスタが図35に示されている。これらの値は、メモリーシステムにおける伝搬、ターンオン、ターンオフ、及び他の遅延を補償する。これらは、各メモリーグループ毎に別々に特定される。I/O チャンネルバストランザクションが発生する時、I/O チャンネル延長ioXebtは対応する値と置き換えられる。I/O チャンネル延長は、I/O チャンネルが転送することの出来る如何なるグールプに対しても充分でなければならない。

mgebtsum
mgebtcase 及び mgebtdobeの和を含む様にプログラムされる。この値はスロットチェック中のみに、バスサイクルに必要とされる全時間を計算するために使用される。

mgebtdobe
これは、特定の時間迄DOB バーのCAS サイクルを延長する。このパラメータは、メモリーグループ遅延、装置アクセス、及び他の操作要求を補償するために使用される。バスサイクルがメモリー読出しサイクルである場合、OEバーが延長される。バスサイクルがメモリー書込みサイクルである場合、EWE バーは延長され、且つLWE バーの下降が特定の時間遅延される。

mgebtcase
これは、延長されたCAS 時間の後特定の量だけCAS サイクルを延長する。DOB バー、OEバー、EWE バー、LWE バーは延長されずに上昇する。このパラメータは、データホールド時間を可能するか、又は装置がそれらの出力ドライバーを利用不可能とすることを可能にするために利用される。
mgbtewe又はmgbteoe と組み合わせて使用される場合、ホールド又は使用不能時間は、4Xクロックサイクルの最大の倍数に設定される。
メモリーグループ0-3 CAS バスタイミングレジスタ(Memory Group 0-3 CAS Bus Timing Registers)は図36に示されている。これらレジスタはCAS のみサイクル及びRAS サイクルのCAS 部分に対する基本タイミングを定めている。タイミングは各メモリーグループ毎に別々に特定される。CAS バーに属する値は、CAS,CASO バー,CAS1バー,CAS2バー及びCAS3バーに好適に与えられる。基本CAS サイクルタイミングはmgXebt及びioXebt値によって引き出される。
mgbtcas
これは、CAS サイクルプリチャージ時間、メモリーサイクルのCAS 時間部分の開始からCAS バーが低下する迄の時間を特定する。

mgbtdob
これは、バス上のアドレス時間(列アドレスホールド)の終了及びデータ時間の開始を、メモリーサイクルのCAS 部分の開始に関して、特定する。これは、CPU が書込みデータをバス上のに設置するか、又はバスから読出しデータの受け取りを開始する時間である。

mgbtcast
これは、全が拡張されていないことを特定し、CAS サイクル、DOB バー、OEバー、EWE バー及びLWE バーの拡張されていない時間は、mgbteoe 又はmgbtewe によって修正されない場合、この時刻に上昇する。この値は、バスサイクルに対して要求される全時間を計算するために、スロットチェック中に、使用される。

mgbtewea
高速SRAMを有するシステムにおいて、各サイクルの開始でのEWE バーの降下が、適当な書き込み可能状態を得るために必要とされる。他の装置は、書込み可能が降下する以前に、それらのアドレスが有効であることを要求する。これらの場合、CAS バー低いが要求される。

mgbtlwea
これは、DOB バー降下の後ゼロ又は1つの4Xクロックサイクルの遅延、プラスLWE 降下に対する延長を特定する。延長はmgebtdobe 又はioebtdobe の値を適当なものとして参照する。システム及び装置の遅延に対する調節を可能にする。例えば、DRAMは、その書込み可能な降下時にデータが有効であることを期待する。小さいシステムにおいては、DOB バープラス4Xクロックサイクル(ゼロの延長を有する)が適当である場合がある。重い負荷が課せられた(又はバッファーされた)LWE バーを有するシステムにおいて、DOB バーが最も高速のメモリサイクルにとって適当である場合がある。より大きな遅延が必要とされる場合、延長値が設定される場合がある。延長タイミングにおいて4Xクロックサイクル一つ分の分解能を可能とする。

mgbteoe
これがセットの場合、OEバーは、延長されないCAS サイクルの終了以前の1つの4Xクロックサイクルで上昇する。これがクリアーの場合、OEバーは、延長されないCAS サイクルの終了と共に上昇する。1つの4Xクロックサイクルは、幾つかの装置にとって充分な出力ドライバー使用不可能時間である。もし、充分でない場合は、出力ドライバー使用不可能時間は、mgebtcase 及びmgbteoe を組み合わせることによって4Xクロックサイクルを最大に増加することで、作り出すことが出来る。

mgbtewe
これがセットの場合、EWE バー及びLWE バーは拡張されていないCAS サイクルの終了以前の1つの4Xクロックサイクルを上昇する。これがクリアーの場合、EWE バー及びLWE バーは拡張されていないCAS サイクルの終了と共に上昇する。1つの4Xクロックサイクルは幾つかの装置に対して充分なホールド時間である。もし充分で無ければ、ホールド時間は、mgebtcase 及びmgbtewe を組み合わせることによって4Xクロックサイクルを最大に増加することで、作り出すことが出来る。
図37は、メモリーグループ0−3RAS バスタイミングレジスタ(Memory Group 0-3 RAS Bus Timing Registers)を示している。これらレジスタはRAS メモリーサイクルのRAS プリフィクス部分a に対するタイミングを決めている。タイミングは各メモリーグループに対して別々に特定去れている。この値は、使用されるメモリ装置に対して要求されるものに選択される。RAS に属するタンミング値は、RAS、RAS0バー、RAS1バー、RAS2バー及びRAS3バーに好適に与えられる。
mgbtrast
mgbtras 及びmghtrhldの和プラス1を含む様にプログラムされる。この時間の終了時に、メモリサイクルのCAS 部分が始まる。この値は、バスサイクルに対して要求される全時間を計算するためのスロットチェック中のみに使用される。

mbgtras
これは、RAS プリーチャージ時間を特定する。時間RAS バーは、RAS サイクルの開始で高い。この時間はmgbterasで短くすることが出来る。

mghtrhld
これは、サイクルのCAS タイミング部分の直前の、RAS サイクルのローアドレスホールド時間を特定する。時間はmgbterasで長くすることが出来る。この時間の直後に、適当ならば、CAS アドレスがバス上に設置される。

mgbteras
これがセットの場合、RAS プリチャージ時間(mgbtrasによって特定される)を減少し、1つの4Xクロックサイクルだけ(mgbtrhld によって特定される)行アドレスホールド時間を延長する。
図38はI/O チャンネル0−7延長バスタイミングレジスタ(I/O Channel 0-7 Extended Bus Timing Resisters)を示す。
これらの値は、メモリー及びI/O システムにおける信号伝搬、ターンオン、ターンオフ、装置及び他の遅延を補償する。これらは、I/O チャンネル転送中に、メモリーグループ値、mgXebtと置き換えられ、従って、I/O 装置、及びI/O 装置が転送を行う如何なるメモリーグループに対しても充分である必要がある。
ioebtsum
ioebtcase 及びioebtdobe の和を含む様にプログラムされる。この値は、バスサイクルに必要とされる全時間を計算するためのスロットチェック期間のみで使用される。

ioebtdone
これは、DOB バーでCAS サイクルを特定の時間だけ延長する。このパラメータは、メモリーグループバッファー遅延、装置アクセス時間、及び他の操作要求を補償するのに使用される。バスサイクルがメモリー読出しサイクルである場合、OEバーは延長される。バスサイクルa がメモリー書込みサイクルである場合、EWE バーが拡張され、特定の時間遅延される場合LWE バーが降下する。

ioebtcase
これは、延長されていないCAS 時間の後の特定された量だけCAS サイクルを延長する。DOB バー、OEバー、EWE バー及びLWE バーは延長されないで上昇する。
このパラメータはデータホールド時間を許容するか、又は装置がそれらの出力ドライバーを使用不可能にすることを許容するために使用される。mgbtewe 又はmgbteoe と組み合わせて使用される時、ホールド又は使用不可能時間は4Xクロックサイクルの最大の整数倍で設定される。
図39はメモリーシステムリフレッシュアドレス(Memory System Refresh Addres)を示す。これは、メモリーシステムリフレッシュ対して使用される次のアドレスを含む。この値は、リフレッシュが実行される時特定のピンに設置される。
そして、msrra は1だけ増大される。リフレッシュサイクルに対する時間タイミングはmstrg によって設定される。リフレッシュされるこれらのメモリーグループはmgXrd によって設定される。
図40はIOP 遅延カウントレジスタ(IOP Delay Count Register) を示す。これは、IOP がバスを占有する迄、2Xクロックサイクルの数を含む。このカウンターは2Xクロックサイクル毎に一度減少される。カウンターは、例えは、IOP がバスを占有する以前に時間クリティカルタスクが完了することが出来るかを決めるため、又は2Xクロックの整数倍の時間を測定するために使用することが出来る。
図41はI/O 装置転送形態Aレジスタ(I/O Device Transfer Types A Register)を示している。図42はI/O 装置転送形態Bレジスタ(I/O Device Transfer Types B Register)を示している。これらのレジスタは、対応するI/O チャンネルに取り付けられた装置に対する3つの転送形態の一つを特定する。
・ 4バイトバイト転送形態:4バイトのデータを、一度に1バイト、単一のバストランザクションで装置とメモリー間で転送する。このトランザクションは、装置にアクセスする4つのバスサイクルと、メモリーがセル幅の場合メモリーにアクセスするための一つの追加のビジーサイクルから成る。全初期転送アドレスは、境界を呼び出すべきである。
・ 1バイトバイト転送形態:単一のバストランザクションで装置とメモリーとの間で1バイトのデータを転送する。このトランザクションは、単一のバスサイクルから成る。セル幅メモリへの転送は、アドレスされたセルのバイトゼロに対してであり、残りの24ビットは未定義である。バイト幅メモリーへの転送は特定のバイトに対してである。
・ 1セルセル転送形態:単一のバストランザクションで1セルのデータを装置とメモリーとの間で転送する。トランザクションは、装置にアクセスするための1バスサイクルと、メモリーがバイト幅である場合にメモリーにアクセルための4つの追加のビジーサイクルから成る。全ての初期転送はセル境界に対するものである。
図43は保存されたレジスターアドレス(Reserved Register Address)を示す。これらのアドレスは保存される。
図44はDMA 使用可能期間満了レジスタ(DMA Enable Expiration Register)を示す。このレジスタはDMA I/O チャンネル転送が、1024バイトメモリーページ内の最後の位置に成された後、iodmae内の対応するDMA 使用可能ビットをクリアーにする。これは対応するI/O チャンネル上のDMA が、所定の数のバイトを転送した後、使用不可能になることを許容する。上述のダイレクトメモリアクセスコントローラを見よ。
図45はドライバー電流レジスタ(Driver Current Resiter )を示す。このレジスタは、パッケージの種々の信号出力を駆動するのに利用可能な電流の相対値をプログラミングすることを可能にする。プログラムされたドライバー電流は種々の効果を有する。
・ 選択された電流の量は、所与の負荷への信号の上昇及び下降時間を決める。
この上昇及び下降時間、PWB ワイヤー長、PWB 構造は、信号が送信ラインとして扱われることが必要とされるか、及び信号の終結が要求されるか否かを決める。
・ より大きなドライバー電流はdi/dt で増加する。従って、パッケージ及びシステム電気ノイズを増大する。ドライバー電流が変化しない時は(同じ負荷がチャージされ、ただより遅いか、速いかであるので)全電流消費が変化しないが、di/dt が減少する時は、より少ないノイズしか発生しない。出力ドライバープリドライバー電流が減少すると、パッケージ及びシステムノイズが減少し、従って、製品の電磁気的な要請の承認を容易にする。
プログラマブルドライバーは、システム設計者が、システム設計の複雑性、システムコスト、及びシステム性能の間で兼ね合いを図ることを可能にする。
出力ドライバーはプリドライバーと出力ドライバーとから成る。出力ドライバーの各部分の電流供給能力は、別々にプログラム出来る。各フィールドの低ビットは、信号をセットするために、プリドライバーにおいて全又は半ドライブ能力を選択する。より上方の1つ又は2つのビットは1/3、2/3、又は全ドライブ能力を選択する。
プリドライバーは、コア論理電力によって供給される。それらの動作によって発生されるノイズは、不適当な電力供給又は切断をもたらし、システム内のCPU の性能に影響を及ぼすことがある。この様なシステムにおいては、プリドライバー電流を低下することにより、システム設計の欠点を補償することが可能である。
ドライバーは、2つの別の電力バス上にある。ADに対するものと、制御信号及び全ての他の出力ピンに対するものである。結果として、パッケージの内部において、ADドライバースイッチングによって引き起こされた電気ノイズは制御信号の質を劣化することを防止する。しかしながら、この分離はパッケージ外部の電力ピン間でノイズが結合することは防止しない。システムの負荷に依存して、出力ドライバーはCPU によって消費される電力を50%乃至95%を占めている。従って、潜在的に大きいノイズ源である。
図46はIOP リセットレジスタ(IOP Reset Register)を示している。何らかの値を書込むことは、現在のメモリーサイクルの終了時に、IOP に、そのソフトウエアーリセット実行可能なコードベクトル(位置0x00000010)で実行を開始させる。これは、ハードウエアリセットの後IOP PCのビット31をクリアーし、IOP を新たな手順の実行に向けるのに使用されるメカニズムである。レジスタの値は、IOP リセットプロセスの間は-1である(即ち、この時から、IOP がソフトウエアーリセット実行可能なコードベクトルの実行を開始する迄にiopresetが書き込まれる。)。他の場合は、その値は0である。
表50はオンチップレジスタクロス参照に対するビットフィールドを示している。
Figure 2009205698
バスオペレーション
MIF120は、システムバスへのアクセスのためのすべてのソースからのリクエストを取り扱う。リクエストは、IOP110、DMAC112およびMPU108から、それぞれ到来して優先順位付けされる。このようなオーダーにより、IOPは常に予想可能なメモリタイミングを有し、DMAはバスアベイラビリティを有し(何故ならば、MPUはバスをサチュレートしうるからである)、MPUに対してメモリコヒーレンシーが維持されるようにすることができる。
オペレーション
MIF120は、暫定的確定IOP実行を保証するために必要とされるときには、直ぐにIOP110へのバスを常に許可しなければならない。こうするために、IOPは、それが遅延を実行しているとき以外は、バスへの排他的アクセスを有する。DMAまたはMPUバスリクエストがなされるとき、MIFは、バストランザクションのタイプを決定し、必要とされる推測時間を計算し(テーブル51参照)、IOPがバスを捕らえるまでの時間量であるIOP遅延とこの推測時間を比較する。この利用しうるバス時間は、スロットと称される。もし、IOP遅延が零である場合には、IOPは、現在、バスを有している。もし、IOP遅延がバストランザクションに対して計算された値よりも大きい場合には、バスは、リクエスタに対して許可される。そうでない場合には、バスは、満足されうるバスリクエストが発生するまで、または、IOPがバスを捕らえるまで、アイドル状態のままである。このスロットチェックは、完了するまでに、1つの2X−クロックサイクルを要する。バスリクエストがスロットチェックを通過したときには、バストランザクションが、次の2X−クロックサイクルにて開始される。
スロットチェック計算は、推測である。何故ならば、I/Oチャンネルバストランザクションに対しては、そのトランザクション中にioXebtおよびmgXebt時間のミックスが使用されうるとしても、ioXebtがその計算のすべての部分について使用されるからである。この簡単化された計算の効果は、リクエストされるスロットが実際に求められバス時間よりも大きくなるということである。実際のバストランザクションが完了するとき、バスは、直ぐに使用できるようになる。
MPU内において、到来するバスリクエストは、最も高い順位から最も低い順位へすなわち、ポステッドライト、インストラクションプレフェッチ、ローカルレジスタスタックスピルまたはリフィル、オペランドスタックスピルまたはリフィル、1d、stおよびインストラクションフェッチの順に優先順位を付けられる。
CPUからのアドレスラインは、パッケージピンカウントを減少させDRAMへのインターフェイスを容易とするために多重化される。DRAMは、2つのピース、すなわち、上方アドレスビットまたは行アドレスおよび下方アドレスビットまたは列アドレスへ分けられたアドレスを有する。このアドレスの2つのピースは、DRAMにおいて、2つの対応するクロック信号、すなわち、RASバーおよびCASバーでクロックされる。AD[31:0]は、また、RASおよびCAS時間中にDRAM行および列アドレスよりも高い順位のアドレスビットを出力し、また、DOBバーがアクティブである間各バスサイクルの最後の部分中データ入力または出力を出力する。ビット出力およびビット入力は、AD[7:0]にても利用しうる。
I/Oアドレッシング
msgsm より上のアドレスビットのすべては、ハイアドレスビットと称される。これらのビットは、典型的には、外部デコーディングハードウエアを有するI/O装置をアドレスするのに使用される。これらは、RASサイクルに含まれ、または、より速いI/Oサイクルに対して排除されるようにコンフィギュレーションされ、外部デコーディングハードウエアのリクワイアメントにマッチするようにコンフィギュレーションされうる。利用しうるコンフィギュレーションオプションについては、前述のシステムリクワイアメントプログラミングを参照のこと。
バストランザクションタイプ
CPUは、セルワイドおよびバイトワイドメモリ、セルワイドおよびバイトワイドデバイス、およびシングルまたはマルチバスサイクルトランザクションをサポートする。これらの種々な組合せが可能である。これらは、0個の、1つのまたは2つのRASサイクルを含みうるバストランザクションを完了するのに1つの、4つのまたは5つのバスサイクルを必要とする。すべてのバスサイクルの基本的な構造は同じである。プログラムされたシステムコンフィギュレーションおよび現在のシステム状態によって、バスサイクルのRASプレフィックスおよびCASパートが組み合わされて、正しいアドレス発生およびメモリデバイスオペレーションを与える。テーブル53は、所与のバストランザクション内にありうるRASおよびCASサイクルの種々な組合せを列挙している。
MPUおよびIOP(non-xfer)メモリサイクル MPUおよびIOPは、セルワイドまたはバイトワイドメモリに記憶されたプログラムを読み取り実行することができる。MPUは、また、セルワイドおよびバイトワイドメモリからデータを読み出したり、セルワイドおよびバイトワイドメモリへデータを書き込みしたりすることもできる。セルワイドまたはバイトワイドメモリへのすべてのアクセスは、セル全体に関わる。したがって、セルワイドメモリへのアクセスは、1つのバスサイクルを必要とし、バイトワイドメモリへのアクセスは、4つのバスサイクルを必要とする。
MPUからのセルメモリ書込み
MPU/IOPへのセルメモリ読出し
テーブル53および参照フィギュアは、これらのバストランザクションに関する詳細を与える。これらのトランザクションは、1つのバスサイクルを必要とする。
MPUからのバイトメモリ書込み
MPU/IOPへのバイトメモリ読出し
テーブル53および参照フィギュアは、これらのバストランザクションに関する詳細を与える。これらのトランザクションは、4つのバスサイクルを必要とする。バイトアドレスビットA1およびA0は、アクセスされるセルの最上位バイトから最下位バイトまでアドレスするために0から3までインクレメントされる。
I/Oチャンネル転送
デバイス転送タイプおよびメモリデバイス幅に依存して、テーブル52に示されるように、I/O装置およびメモリの間で種々なバスサイクル組合せが起こる。トランザクションのためのこれらの開始アドレスは、関係するI/Oチャンネルに対応するグローバルレジスタ(g8は、I/Oチャンネル0に対応し、・・・・・、g15は、I/Oチャンネル7に対応する)から来る。メモリに対する転送の方向は、同じレジスタのビット1によって示される。図12を参照のこと。トランザクションのためのデバイス転送タイプは、iodttaまたはiodttbにおける対応するフィールドから来る。バストランザクションは、テーブル55に挙げられたサイクルおよびストローブで進められる。
4−バイトのバイト転送デバイスからのセルメモリ書込み
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。このトランザクションは、5つのバスサイクルを必要とする。データは、最初の4つのバスサイクル中にデバイスから収集されMIFに記憶され、そして、5番目のバスサイクル中にMIFによってメモリへ書き込まれる。最初の4つのバスサイクル中にデバイスから収集されメモリへ書き込まれるデータは、5番目のバスサイクル中に置換される。A31は、5番目のバスサイクル中にMIFとのコンテンションを阻止するために、I/O装置をデセレクトするためにクリアされる。バイトアドレスビットA1およびA0は、データがそのデバイスから転送されている間に、アクセスされるセルの最上位バイトから最下位バイトまでアドレスするために0から3までインクレメントされる。
テーブル52
4−バイトのバイト転送デバイスへのセルメモリ読出し
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。このトランザクションは、5つのバスサイクルを必要とする。データは、最初のバスサイクル中にメモリから収集されてMIFに記憶され、そして、最後の4つのバスサイクル中にMIFによってそのデバイスへ書き込まれる。OEは、デバイスが書き込まれている間メモリおよびMIFの間のバスコンテンションを阻止するために、最後の4つのバスサイクル中に抑制される。A31は、最初のバスサイクル中にメモリとのコンテンションを阻止するために、I/O装置をデセレクトするためにクリアされる。バイトアドレスビットA1およびA0は、データがそのデバイスへ転送されている間に、アクセスされるセルの最上位バイトから最下位バイトまでアドレスするために0から3までインクレメントされる。
4−バイトのバイト転送デバイスからのバイトメモリ書込み
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。このトランザクションは、4つのバスサクルを必要とする。バイトアドレスビットA1およびA0は、デバイスおよびメモリの両方に関するアクセスされるセルの最上位バイトから最下位バイトまでアドレスするために、0から3までインクレメントされる。
データは、MIFを介在することなく、デバイスからメモリへ直接にバスにて転送される。
4−バイトのバイト転送デバイスへのバイトメモリ読出し
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。トランザクションは、4つのバスサイクルを必要とする。バイトアドレスビットA1およびA0は、デバイスおよびメモリの両者に関してアクセスされるセルの最上位バイトから最下位バイトまでアドレスするために0から3までインクレメントされる。データは、MIFを介在することなく、メモリからデバイスへ直接にバスにて転送される。
1−バイトのバイト転送デバイスからのセルメモリ書込み
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。このトランザクションは、1つのバスサイクルを必要とする。データは、典型的には、AD[7:0]にてデバイスによって供給され、メモリの対応するビットへ書き込まれる。AD[31:8]は、また、メモリへ書き込まれ、もし、外部デバイスによってドライブされない場合には、そのアドレスビットをホールドする。
1−バイトのバイト転送デバイスへのセルメモリ読出し
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与える。このトランザクションは、1つのバスサイクルを必要とする。データは、典型的には、メモリの対応するビットから来るAD[7:0]からデバイスによって取り出される。
他のメモリビットは、メモリによってドライブされるが、典型的にはそのデバイスによって使用されない。
1−バイトのバイト転送デバイスからのバイトメモリ書込み
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。このトランザクションは、1つのバスサイクルを必要とする。グローバルレジスタにおけるアドレスは、通常、セルにアドレスする。何故ならば、最下位の2つのビットは、アドレッシングには使用できないからである。しかしながら、このトランザクションのために、グローバルレジスタにおけるアドレスは、変更バイトアドレスである。すなわち、アドレスは、ADに接続されたバイトワイドメモリに対して正しく位置するように左へ2ビットだけシフトされる(ソフトウエアにおけるプレシフト)。アドレスは、ADに達するまでは、再度シフトされない。A31は、そのままである。A30およびA29は、使用できないようになり、グループビットは、供給されるアドレスにおけるプレシフトにより、それらの通常の位置の右へ2ビットの位置にある。このトランザクションにより、バストランザクション当り1バイトずつ、バイトの転送が行われ、バイトワイドメモリへパックされる。
1−バイトのバイト転送デバイスへのバイトメモリ読出し
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。このトランザクションは、1つのバスサイクルを与える。グローバルレジスタにおけるアドレスは、通常、セルにアドレスする。何故ならば、最下位の2つのビットは、アドレッシングには使用できないからである。しかしながら、このトランザクションの場合には、グローバルレジスタにおけるアドレスは、変更バイトアドレスである。すなわち、アドレスは、ADへ接続されたバイトワイドに対して正しい位置となるように左へ2ビットだけシフトされる(ソフトウエアにおけるプレシフト)。そのアドレスは、ADに達するまでは再度シフトされない。A31は、そのままであり、A30およびA29は、使用できなくなり、グループビットは、供給されるアドレスにおけるプレシフトによりそれらの通常の位置の右へ2ビットの位置にある。このトランザクションにより、トランザクション当り1バイトずつ、バイトの転送が行われ、バイトワイドメモリからデバイスへアンパックされる。
1−セルのセル転送デバイスからのセルメモリ書込み
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。トランザクションは、1つのバスサイクルを必要とする。
1−セルのセル転送デバイスへのセルメモリ読出し
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。このトランザクションは、1つのバスサイクルを必要とする。
1−セルのセル転送デバイスからのバイトメモリ書込み
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。このトランザクションは、5つのバスサイクルを必要とする。データは、最初のバスサイクル中にダバイスから収集され、MIFに記憶され、最後の4つのバスサイクル中にMIFによってメモリへ書き込まれる。最初のバスサイクル中にデバイスから収集されている間にメモリに書き込まれるデータは、2番目のサイクル中に置換される。A31は、最後の4つのバスサイクル中にMIFとのコンテンションを阻止するために、I/O装置をデセレクトするようにクリアされる。バイトアドレスビットA1およびA0は、データがMIFからメモリへと転送されている間にアクセスされるセルの最上位バイトから最下位バイトまでアドレスするために0から3までインクレメントされる。
1−セルのセル転送デバイスへのバイトメモリ読出し
テーブル53および参照フィギュアは、このバストランザクションに関する詳細を与えている。このトランザクションは、5つのバスサイクルを必要とする。データは、最初の4つのバスサイクル中にメモリから収集され、MIFに記憶される。OEバーは、デバイスが書き込まれている間メモリとMIFとの間のバスコンテンションを阻止するために5番目のバスサイクル中に抑制される。A31は、最初の4つのバスサイクル中にメモリとのコンテンションを阻止するために、I/O装置をデセレクトするようにクリアされる。バイトアドレスビットA1およびA0は、データがメモリからMIFへ転送されている間アクセスセルの最上位バイトから最下位バイトまでアドレスするために0から3までインクレメントされる。
バスリセット
外部ハードウエアリセットは、パワーフェイルインモード以外、パワーオンコンフィギュレーションへ全CPUを初期化する。リセットがアクティブ(外部またはパワーオンセルフリセット)である間、ADは、高インピーダンス状態へ行き、OUT[7:0]は、ハイとなり、RASは、アクティブとなり、その他の全ての出力は、インアクティブとなる。波形については図66を参照のこと。
ビデオRAMサポート
VRAMは、主として、ビデオディスプレイにピクセルを表示するのに必要とされるシステムメモリバンド幅を減少させることによって、グラフィックオペレーションの速度を増大させる。VRAMコマンドは、ビデオディスプレイに対してクロックアウトされるようにデータの全行をDRAMアレーから内部シリアルアクセスメモリへ転送するのに使用される。VRAMは、また、グラフィックオペレーションを高めるために他のコマンドをサポートする。VRAMオペレーションは、vram書込みおよび所望のVRAMメモリアドレスへの適当な読出しまたは書込みによりエンコードされる。VRAMバスサイクルのための基本的タイミングは、メモリグループにおける同様のバストランザクションと同じである。図27を参照のこと。リフレッシュおよびRASサイクルは、また、VRAMオペレーションに影響を及ぼしうる。前述のビデオRAMサポートを参照のこと。種々なvramオプションの効果を表す波形は、図72に示されている。
仮想メモリページ故障入力
MIFは、RASサイクルでの故障検出をインテグレートすることにより、MPUメモリアクセスによって引き起こされるメモリページ故障を検出する。したがって、マップされるページサイズは、CASページのサイズである。メモリシステムRASページアドレスは、外部SRAMの使用によるRASプレチャージ中に論理ページアドレスから物理ページアドレスへとマップされる。SRAMから供給されるメモリ故障信号は、RASバーフォール中にサンプルされ、もし、ローであるならば、メモリページ故障が生じたことを示す。図46aを参照のこと。メモリ故障信号は、MFLTバーまたはAD8から入力される。後述の交互メモリ故障入力を参照のこと。
メモリ故障が検出されるとき、バストランザクションは、バスサイクルのCASバーのパート中に実際にはアクティブとならない信号なしに完了する。それから、メモリ故障例外がMPUへ合図され、MPUは、故障状態をサービスするためにトラップを実行する。
波形については、図70を参照のこと。
交互入力および出力
ビット入力、ビト出力、メモリ故障入力およびリセット入力は、専用ピンを使用するのでなく、ADにて多重化される。この特徴は、PWBにてルーティングされるトラックの数を減少させる(PWBサイズおよびコストを減少させる)ために使用され、ShBoomTM CPUがより小さいパッケージにて供給されうるようにする。
交互ビット入力
ビット入力は、RASバーがローであり且つCASバーがハイである間INバー[7:0]またはAD[7:0]からサンプルされうる。ソースは、pkgio によって決定される。前述の図29およびビット入力を参照のこと。
交互ビット出力
ビット出力は、RASバーがハイである間、OUT[7:0]およびAD[7:0]の両方に現れる。それらが両方の位置に現れるので、選択ビットは必要とされない。前述のビット出力を参照のこと。
交互メモリ故障入力
メモリ故障信号は、RASバーフォール中にMFLTバーまたはAD8からサンプルされうる。ソースは、pkgmflt によって決定される。図34を参照のこと。
交互リセット入力
外部ハードウエアリセットは、RESETバーまたはAD8から取られ、決定は、パワーオンでなされる。パワーオンおよびリセットシーケンスは、後述のプロセッサスタートアップに詳述されている。
プロセッサスタートアップ
パワーオンリセット
CPUは、パワーアップをセルフリセットする(後述のリセットプロセスを参照のこと)。CPUは、供給電圧がほぼ3Vに達するまでは、外部ハードウエアリセットに関係なく、内部リセットをアクティブに保持し且つプロセッサがランニングされないようにする内部回路を含む。供給電圧が3Vに達するとき、RESETバーがサンプルされ、アクティブであるならば、CPUのための外部リセットのソースとして使用される。さもなければ、外部リセットは、AD8にて多重化される。この決定は、パワーが再度サイクルされるまで、適用される。もし、リセットのうちの1つがアクティブであるならば、CPUは、そのリセットが継続前にインアクティブとなるまで、待つ。もし、どのリセットソースもアクティブでないならば、プロセッサは、直ぐにリセットシーケンスを開始する。したがって、CLKでのクロック入力は、その時間までは安定でなければならない。
もし、パワー供給が3Vから通常の供給電圧まで上昇したときにシステムがランニングすることができ、システムが外部リセットを必要としないならば、RESETバーは、接続されてはならず、AD8は、リセットソースとしてドライブされてはならい。さもなければ、外部リセットは、リセットが論理ハイへ上昇しCPUがランニングされうるようになる前に適切にパワーアップするために、クロック、パワーおよびその他のシステム構成要素に対して十分長い間ローに保持されねばならない。
パワーオンリセットプロセス中、モードビットパワーフェイルがセットされ、パワーが以前に故障していたことを示す。そのビットは、書込みモードによってクリアされる。
ブートメモリ
CPUは、OEバーアクチベートまたはブートオンリーメモリデバイスとしてコンフィギュレーションされたバイトワイドメモリからのブーティングをサポートする。ブートオンリーメモリコンフィギュレーションは、主として、典型的には遅いブートEPROMが、厳しい状態で使用されるローアドレスメモリページを行わないようにするために使用される。ブートオンリーメモリは、OEまたはメモリバンクまたはグループ特定(RASxまたはCASx)信号を使用せずに、バス上にデータを置くようにシステムにワイヤドされている点で、OEバーアクチベートメモリとは異なる。OEDは、初期的には、CPUリセット中にセットされ、ブートアッププロセス中にOEバーをディスエーブルして記述のオペレーションを行えるようにする。ブートオンリーメモリ選択信号は、外部的に、0×800...を含む最上アドレスビットからデコードされる。使用される最上アドレスビットの数は、システムのI/O装置アドレスデコーディングリクワイヤメントに依存している。最下アドレスビットは、それらが通常のメモリに対するように、個々のバイトおよびセルをアドレスするように接続される。したがって、ブートオンリーメモリデバイスは、どのメモリグループがアクセスされているかに関係なく、選択される。
リセットプロセス
リセットが行われるとき、CPUは、オンチップRAMを初期化されないままとし、リセットシーケンスを助ける意図的に配置されたビット以外、ほとんどのレジスタを零へクリアする。特に、CPUは、最もコンサバティブなシステムコンフィギュレーションへリセットする。テーブル54を参照のこと。モードビットパワーフェイルは、パワーオンリセットプロセスによってのみセットされ、リセットがパワー故障またはリセットアクティブによって起こされたかを決定するためにチェックされる。
リセット後の最初のバストランザクションは、SMBモードにおいてOEバーのディスエーブル状態で、アドレス0×80000000から始まるメモリグループゼロ、メモリバンクゼロにおけるバイトワイドメモリからの4つのバイトのセル読出しである。このアドレスは、I/O装置アドレス0×800...およびメモリデバイスアドレス0×...Nからなる。OEバーはディスエーブルされるので、OEバーアクチベートメモリは応答せず、したがって、ブートオンリーメモリが応答しうる。
CPUは、アドレス0×80000000から戻されるバイトをテストする。もし、そのバイトが0×a5であるならば、ブートオンリーメモリは、応答しており、OEバーがディスエーブル状態で実行が継続する。さもなければ、ブートオンリーメモリは応答していなかったのであり、CPUは、ブーティングがOEバーアクチベートメモリから生じているとする。それから、CPUは、OEDをクリアし、このメモリがその後のバスサイクルにて応答するようにOEバーをアクチベートする。
ブートストラッププログラム
ブートオンリーまたはOEバーアクチベートメモリの場合、バスアクセスは、バイトワイドメモリデバイスからのAMBモードにて継続する。2番目のバストランザクションは、0×80000008でのIOPのためのハードウエアリセットアドレスに対するものである。これは、典型的には、小さなリフレッシュ/遅延ループへのジャンプを含む。遅延により、バスを使用できるようになり、MPUがそのリセットアドレス0×80000008で実行を開始するようにする。
もし、システムがMMBモードにワイヤドされているならば、ブーティングは、ブートオンリーメモリからより簡単に行われる。OEバーアクチベートメモリからのブーティングも可能であるが、メモリグループゼロがアクセスされるときに、メモリグループ1、2および3のバンクゼロが選択されないようにするため外部ゲーティングが必要とされる。
次に、MPUは、実行を開始し、典型的には、システムブートストラップルーチンへブランチするようにプログラムされている。MPUブートストラップは、次のようにプログラムされる。
●システムハードウエアのために必要とされるコンフィギュレーションレジスタをセット●IOPのためのソフトウエアリセットベクトルをセット
●ブートデバイスからメモリ(もし、必要とされるならば)へ初期MPUおよびIOPアプリケーションプログラムをコピー。
●MPUのためのアプリケーションプログラムへブランチ
●IOPプログラム実行を開始するようにソフトウエアにてIOPをリセット。
ここで、システムスタートアップは完了する。
次のページは、いくつかのスタートアップコンフィギュレーションを記述する。実際のコードについては、後述する実例ShBoomTM CPUシステムを参照のこと。後述されるコンフィギュレーションは、次のようである。
●バイトワイドブートオンリーメモリからのブートおよびセルワイドR/Wメモリへのアプリケーションプログラムのコピー。
●セルワイドブートオンリーメモリからのブートおよびセルワイドR/VVメモリへのアプリケーションプログラムのコピー。
●バイトワイドメモリからのブートおよびラン
●セルワイドメモリからのブートおよびランバイトワイドブートオンリーメモリからのブートおよびセルワイドRA/Vメモリへのアプリケーションコードのコピー。
このプロセスは、ブートオンリーメモリが前述したようにアクチベートさせられるようにするために、外部デコーディングハードウエアを必要とする。
ブートオンリーメモリが存在することを示すために、メモリは、位置0に0×a5を有していなければならない。このシグネーチャーバイトは、ブートオンリーメモリからのブートプロセスを継続するためにスタートアップ時に検出されねばならない。
ブートプログラム実行シーケンスは、次のように構成される。
1.IOPは、システムRAMを初期化するために、各メモリグループの8つのRASサイクルを実行するコードへのパワーオンリセット位置からのジャンプを実行する(リフレッシュサイクルを行なうことにより)。それから、IOPは、DRAMのためのリフレッシュおよびMPUの実行を許す遅延を含むマイクロループに入る。マイクロループは、リフレッシュおよび遅延を繰り返し、IOPがコンフィギュレーション遅延中にさらに別の命令のためにバスへアクセスする必要をなくし、MPUバスアクセスにより、さらに別のリフレッシュサイクルが必要とされる前にシステムのコンフィギュレーションを開始することができるようにする。リフレッシュサイクルは、システムがDRAMを含まない場合には、必要とされない。
2.MPUは、システムをコンフィギュレーションするためにそのリセット位置からプログラムコードへのbrを実行する。brは、メモリグループ3にアドレスするビットを含む。これにより、後に、メモリグループ0、1および2がシステムタイミングリクワイヤメントのためにプログラムされている間、メモリグループ3のためのコンフィギュレーションがブートオンリーデバイスアクセスタイミングのために使用される。メモリグループ1または2は、ここに記述する仕方でグループ3の代わりに使用されうるのであるが、説明を簡単とするために、メモリグループ3のみについて説明する。
MPUコンフィギュレーションプログラムコードは、現在のメモリグループおよびグローバルメモリシステムのコンフィギュレーションがバスサイクル中に変更されないように、命令プレフェッチをホールドオフするように構成される。
3.miscb をプログラミングするとき、必要ならば、mmb をセットする。MMBのためにワイヤドされたシステムにおいては、これにより、RASタイプサイクルがすべてのメモリグループにて適切に行われるようにされる。
4.システムが最終的にそれらを有しないとしても、4つのメモリグループを定めるためにmsgsm をセットする。次の命令のフェッチ中に、ブートオンリーメモリは、再び、選択される。しかしながら、ステップ2にてbrによってPCに配置されたメモリグループ3のためのアドレスビットにより、メモリグループ3のためのコンフィギュレーションが使用されるようにさせられる。
5.ブートオンリーメモリへのアクセスを最適化するためにメモリグループ3のタイミングをプログラムする。それから、システムコンフィギュレーションの残りのものをプログラムする。このプロセス中に、IOPは、典型的には、リフレッシュサイクルの3つまたはその程度のセットを実行する。リフレッシュサイクル中に適切なコンフィギュレーションレジスタをMPUが変えることは可能であるが、ブートオンリーメモリのために典型的に使用されるEPROMのバスサイクルは長いので、あまりあり得ないことである。さらにまた、最悪の結果は、単ーリフレッシュサイクルのタイミングが不適当となることであが、これは、実際にはあまり起こらないであろう。何故ならば、DRAMにはまだ保護されるべきデータがないからである。
もし、メモリグループ3がアプリケーションによって使用される場合には、それは、ロードされたアプリケーションコードから後でコンフィギュレーションされる必要がある。
6.ブートオンリーメモリから最終ブートコード(もし、あるならば)およびアプリケーションプログラムを読み出し、RANメモリの適当な位置にそれらを書き込む。全アプリケーションプログラムは、ブートオンリーメモリがランニングしているメモリグループ3のためのパートがあるならば、そのパートを除いて、R/W RAMへロードされうる。
7.O£Oをクリアしアプリケーションプログラムへブランチするプログラミングを含む単一命令グループをレイアウトする。br[]を使用して、A31をクリアし、ブートオンリーメモリがブランチ行き先でアクチベートされないようにする。
8.ここで、アプリケーションプログラムが実行されている。必要ならば、メモリグループ3をコンフィギュレーションする。もし、ブートオンリーメモリからのメモリグループ3のローディングが必要ならば、最初にプレフェッチが完了するように2つの命令グループの間にコードを配列し、OEDをセットし、それから、アプリケーションをメモリグループ3へ転送するためにマイクロループを実行し、マイクロループが完了するときにOEDをリイネーブルさせる。
9.そのアプリケーションプログラムの実行を開始するためにソフトウエアにおいてIOPをリセットする。IOPのソフトウエアリセットにより、それは、O×1Oで実行を開始させられ、結果として、IOP PCからA31をクリアし、ブートオンリーメモリがもはや選択されないようになる。
ブートプロセスは完了する。
セルワイドブートオンリーメモリからブートし、アプリケーションプログラムをセルワイドR/Wメモリへコピーする。
このプロセスは、ブートオンリーメモリが前述したようにアクチベートさせられるようにするために外部デコーディングハードウエアを必要とする。
CPUは、常に、初期的には、バイトワイドメモリからブートする。何故ならば、これは、リセットコンフィギュレーションであるからである。CPUは、現在のメモリグループのためのコンフィギュレーションがセルワイドであるようにプログラムされるまでは、各アドレスのローバイトからの命令を実行する。この点までは、ブートデバイスデータの上方24ビットは使用されない。ブートプロセスは、miscb を書き込むときに、ステップ3を除いて、バイトワイドブートオンリーメモリからのブーティングと同じであり、メモリグループ0および3がセルワイドであるようにセットする。sto to mcbを有する命令グループにおいて、次の命令グループへbrを置く。これは、プレフェッチをホールドオフし、次の命令フェッチがセルワイドであるようにする。ここで注意すべきことは、ブートオンリーメモリは、brの前の命令がバイトワイドとして表され、br後の命令がセルワイドとして表されるように、注意してプログラムされねばならないということである。
バイトワイドメモリからのブートおよびラン
このプロセスは、MGSOバー/RASOバー/CASOバーによってアクチベートされるためにブート/ランメモリデバイスを必要とする。
OEバーアクチベートメモリが存在することを示すために、メモリは、OEバーがアサートされないとき、位置0でのO×a5で応答してはならない。このシグネーチャーバイトの無いことは、スタートアップで検出され、OEバーがブートプロセスを続ける必要があることを示す。OEDは、CPUリセット中にセットされ、ブートアッププロセス中にOEDをディスエーブルし、シグネーチャーバイトO×a5が検出されないときにクリアされ、OEバーをリイネーブルする。次のようにブートプログラム実行シーケンスを構成する。
1.IOPは、システムDRAMを初期化するために、各メモリグループについて8つのRASサイクルを行なうコードへのパワーオンリセット位置からのJUMPを実行する(リフレッシュサイクルを行なうことにより)。それから、それは、DRAMのためのリフレッシュおよびMPUの実行を可能とすると遅延を含むマイクロループに入る。マイクロループは、リフレッシュおよび遅延を繰り返し、さらにリフレッシュサイクルが必要とされる前にシステムのコンフィギュレーションを開始するようにMPUバスアクセスを許すコンフィギュレーション遅延中にさらに別の命令のためにIOPがバスにアクセスする必要を無くしている。リフレッシュサイクルは、システムがDRAMを含まないならば、必要とされない。
2.MPUは、システムをコンフィギュレーションするためそのリセット位置からプログラムコードまでbrを実行する。
MPUコンフィギュレーションプログラムコードは、現在のメモリグループおよびグローバルメモリシステムのコンフィギュレーションがバスサイクル中に変えられないように、命令プレフェッチをホールドオフするように構成される。
3.miscb をプログラミングするとき、必要ならば、mmb をセットする。MMBモードのためにワイヤドされたシステムにおいては、これにより、すべてのメモリグループについて適切にRASタイプサイクルが行われるようにされる。
4.メモリへのアクセスを最適化するために、メモリグループ1のタイミングをプログラムする。それから、システムコンフィギュレーションの残りのものをプログラムする。このプロセス中に、IOPは、典型的には、リフレッシュサイクルの3つまたはその程度のセットを実行する。MPUは、リフレッシュサイクル中に適切なコンフィギュレーションレジスタを変えることは可能であるが、これは、EPROMのバスサイクル時間が長いために起こり難いことである。さらにまた、最悪の結果は、単一リフレッシュについてタイミングが不適当となることであるが、これも実際には起こりにくいことである。何故ならば、まだDRAMには保護されるデータがないからである。
5.そのアプリケーションプログラムの実行を開始するためにソフトウエアにてIOPをリセットする。IOPのソフトウエアリセットにより、それは、0×10での実行を開始させられ、結果として、IOP PCからA31をクリアし、ブートオンリーメモリはもはや選択されないようになる。
6.アプリケーションプログラムの実行を開始する。
ブートプロセスは完了する。
セルワイド/メモリからのブートおよびラン
このプロセスは、MGSOバー/RASOバー/CASOバーによってアクチベートされるためにブート/ランメモリデバイスを必要とする。A31は、ブート/ランメモリを選択するときに、使用されない。CPUは、現在のメモリグループのためのコンフィギュレーションがセルワイドであるようにプログラムされるまでは、各アドレスのローバイトからの命令を実行する。この点までは、ブートデバイスデータの上方24ビットは、使用されない。ブートプロセスは、miscb を書き込むときに、ステップ3を除いて、バイトワイドメモリからのブーティングおよびランニングと同じであり、メモリグループ0がセルワイドであるようにセットする。sto to miscbを有する命令グループにおいて、brを次の命令グループへ置く。これは、プレフェッチをホールドオフし、次の命令フェッチがセルワイドであるようにする。ここで、注意すべきことは、br前の命令がバイトワイドとして表され、br後の命令がセルワイドとして表されるように、注意してプログラムされなければならないということである。
スタック初期化
CPUがMPUの両方をリセットした後は、スタックは、対応するスタックポインタがロードされるまでは、初期化されていないとされる。そして、これは、MPUによって行われる最初のオペレーションのうちの1つである。
リセット後、オペランドスタックは、異常に空である。すなわち、s2は、アロケートされておらず、最初のプッシュオペレーション時にアロケートされる。しかしながら、このアイテムをポッピングすることにより、スタックは空とさせられ、リフィルを必要とする。したがって、最初にプッシュされたアイテムは、スタックに残されるか、または、saは、オペランドスタックがさらに使用される前に初期化されるべきである。
Figure 2009205698
1.iodttaまたはiodttbに特定されたデバイスタイプ参照。
2.データは、デバイスとメモリとの間で転送される。
3.データは、転送のパート中にMIFに記憶される。
4.サイクルの全シーケンスは、自動バストランザクションである。
Figure 2009205698
注:
1.iodttaまたはiodttbにおけるI/Oチャンネル転送タイプ
2.IOPはメモリに書き込みしない。
3.どのバスサイクルにてRASまたはCASサイクルが可能かを指示する。RASサイクルの存在は、システム状態に依存している。R1またはC1は、バスサイクルがioXebtタイミング値を使用することを示す。RMまたはCMは、バスサイクルがmgXcbtタイミング値を使用することを示す。
4.サイクル中のアクティブストローブ(w は、EMEバー/LWEバーであり、または、OEバーであり、または、アクティブストローブではない。
5.A31は、セットされるとき、I/O装置を選択し、クリアのときI/O装置をデセレクトする(a=プログラム供給値、0=強制ゼロ)
6.データは、最初の4つのサイクル中にデバイスから収集されMIFに記憶され、5番目のサイクル中にMIFによってメモリへ書き込まれる。最初の4つのサイクル中に書き込まれたデータは、5番目のサイクル中に置換される。
7.データは、最初のサイクル中にメモリからMIFへ収集され、最後の4つのサイクル中にMIFによってデバイスへ書き込まれる。OEバーは、メモリがバスをドライブしないようにするために、最後の4つのサイクル中に抑制される。
8.データは、最初のサイクル中にデバイスから収集され、MIFに記憶され、最後の4つのサイクル中にMIFによってメモリへ書き込まれる。最初のサイクル中に書き込まれたデータは、2番目のサイクル中に置換される。
9.データは、最初の4つのサイクル中にメモリからMIFへ収集され、最後のサイクル中にMIFによってデバイスへ書き込まれる。OEバーは、メモリがバスをドライブしないようにするために、5番目のサイクル中に抑制される。
Figure 2009205698
CPUリセット状態は、次のようなコンフィギュレーションを発生する。
スタックは初期化されていない
すべての割込み、トラップ、故障、DMAsおよびDMAエクスパイアレイションディスエーブル
VRAMメモリグループは、メモリグループ3に対してセット、VRAMオプションはセットされていない
RASサイクルを引き起こすハイアドレスビット比較に含まれるVRAMメモリグループ
リフレッシュは、メモリグループ0タイミングを使用するすべてのグループについてイネーブルされる、ゼロで開始するリフレッシュアドレスビット
ポステッドライトディスエーブル
A31=1のときRASサイクルを起こす
ハイアドレスビット変更のときRASサイクルを起こす
ハイアドレスビット比較に含まれるA31
1つのメモリグループを有するメモリグループ(SMB)モード当りの単一メモリバンク
入力ビットは、バスから取られる
メモリ故障は、ADSから取られる
OEバーはディスエーブルされる
すべてのメモリグループはバイトワイドである
すべてのメモリサイズはSRAMに対してセット
メモリバスサイクルは最大長さに対してセット、実際のCASサイクル長は、8つの4X−クロックサイクルのCASプレチャージでの51個の2X−クロックサイクルにセット(xxebtsmum レジスタは、実際に必要とされるようも長いスロットをリクエストする最大にセット)。8つの4X−クロックサイクルのCASアドレスホールドタイム。CASバーフォールでのEWEバーフォール。15の2X−クロックサイクルのLWEバーフォールに対するメモリ書込みデータスタートアップタイム。39の2X−クロックサイクルのEWEバーおよびLWEバーライズに対するメモリ書込みデータセットアップタイム。39の2X−クロックサイクルのOEバーアクティブタイム。4の2X−クロックサイクルに対するデータホールドタイム/バッファディスエーブルタイム。16の2X−クロックサイクルのRASプレチャージ。2X−クロックサイクルのRASアドレスホールドタイム。
すべてのI/Oチャンネルタイミングは、最大長さに対してセット(前述のメモリと同じバスサイタル)
リボルビィングDMA優先順位
デバイス転送タイプのすべては、4バイトのバイト転送デバイスに対してセット
実例としてのシーブーム(ShBoomTM)CPUシステム
実例としてのシステム 1
メモリー・グループ0における8ビット巾のEPROMと、256Kの8ビット巾のDRAMとを有する最小システムを図68に示す。メモリー・グループ0とメモリー・グループ1とは使用しているデバイスに適当なタイミングで形成されるべきであり、そして使用しているデバイスに適当にmglds は0×02に、そしてmglds は0×02(256K DRAM)にセットされている。他の仕方としては、ディフォルト(default)システムが適当である。このシステムはEPROMから直接ブート(boot)でき、そして作動できる。もしくは、EPROMはDRAMよりも遅いのが普通であるので、迅速なコード実行のためEPROMをDRAMにコピーできる。
実例としてのシステム 2
メモリー・グループ0における32ビット巾のDRAMと、ブート・オンリ・メモリーデバイスとしての8ビット巾のEPROMと、I/Oアドレス・デコーダとを有する最小システムを図69に示す。I/Oアドレス・デコーディングは74HC137,ラッチ付き3−8デコーダにより実行される。A31がセットされると、このデコーダは4つのデバイス・セレクトに接続されて供給し、そしてA31がクリヤーであると別の4つのデバイス・セレクトに接続されて供給する。4つのセレクトのセットはRASプリチャージ中ラッチされ、そしてCASバーアクチブの間はイネーブルされる。それらは、32ビット巾メモリー・グループが含まれているときA30とA29とからデコードされ、そして8ビット巾メモリー・グループが含まれているときA28とA27とからデコードされる。A31がセットされ、そしてその他のデコードされたアドレスビットがクリヤーであるときそのデバイス・セレクトを使用してブート・オンリ・メモリーデバイスとしてEPROMを選択する。
EPROMはロケーション0で0×a5でプログラムされなければならない。メモリー・グループ0は使用しているデバイスに適当なタイミングで構成されるべきであり、mg0bw は0(セル巾)に、そしてmg0ds は0×02(256K DRAM)にセットされる。
RASを使用してI/Oアドレスをラッチするので、msras31dとmshacdと、msexa31hacはそれらのクリヤーなディフォルト・コンフィギュレーションに残っている。
実例としてのシステム 3
メモリー・グループ0における32ビット巾のSRAMと、メモリー・グループ1における1MBの32ビット巾のDRAMと、ブート・オンリ・メモリーデバイスとしての8ビット巾のEPROMと、I/Oアドレス・デコーダとを有するシステムを図70に示す。SRAMのためのCASアドレスのアドレスラッチングは2つの74ACT841透明ラッチにより行われる。DRAMとEPROMのアドレス入力は対応するADへ接続できるけれども、そのようにはせずDRAMとEPROMのアドレス入力もラッチの出力へ接続する。ラッチされたCASアドレスビットを使って、74FCT138A,3−iデコーダによりI/Oアドレス・デコーディングを行う。このデコーダは、A31がセットされるとき、8つのデバイス・セレクトに接続されて供給する。これらのセレクトはCASバーがアクチブな間可能化される。それらは、DRAMメモリ・グループが含まれているときA30とA29とからデコードされ、そしてSRAMメモリ・グループが含まれているときA20とA21とからデコードされる。EPROMが8ビット巾であるので、それらのセレクトはデコードされ、クリヤーなアドレスビットを使ってブート・オンリ・メモリーデバイスとしてEPROMを選択する。
0×a5をロケーション0に置いてEPROMをプログラムしなければならない。mg0bw とmg1bw とを0(セル巾)にセットし、mg0ds を0×0f(SRAM)にセットし、そしてmg1ds を0×02(256K DRAM)にセットし、使用されているデバイスに適当なタイミングでメモリーグループを構成しなければならない。I/OアドレスをラッチするのにRASを使わないので、I/Oに含まれるRASサイクルの数を減少するようmsras31d,mashacd そしてmsexa31hacをセットできる。
電気的な特性
電力と接地
平均電力要請が少ないとシーブームCPUをCMOSに装備する。しかし、CPUのクロック周波数能が高いと、出力の負荷によっては11アンペアにもなる大きなスイッチング電流を必要とするようになる。こうして、すべてのVccとVssとは十分な電力分布のためにはPWB(プリンテッド・ワイヤー・ボード)内の面に接続されるべきである。
cVccとcVssとが要求するスイッチング電流の特性は内部クロックと出力ドライバーの前置ドライバーによって決められる。内部クロックは、クロック遷移毎に5GHzの周波数成分で約500mAを必要とする。出力ドライバーの前置ドライバーは、出力の遷移毎に1GHzの周波数成分を有する3Aもの電流を必要とする。パッケージ・ダイアグラムはcVccとcVssのどちらが内部クロック・ドライバーに近いかを示す。
ctrVccと ctr1Vssとにより必要とされるスイッチング電流は供給される出力ドライバーと外部に取り付けた負荷とによって特徴づけられる。16本のピンが一時に切り換わるのと100pFの平均負荷という最悪の場合を考える。その場合これらのドライバーは出力の遷移毎に300MHzの周波数成分を持つ2.67Aを必要とする。スイッチング電流要請は外部負荷の減少に実質的に比例して減少する。
ad Vccと adVssが必要とするスイッチング電力は供給される出力ドライバーと外部取付け負荷とによって特徴づけられる。32本のピンが一時に切り換わるのと100pFの平均負荷という最悪の場合を考える。その場合これらのドライバーは出力の遷移毎に300MHzの周波数成分を有する5.33Aを必要とする。スイッチング電流要請は外部負荷の減少に実質的に比例して減少する。
パワー・デカップリング
上に説明したようなスイッチング特性であるので、CPUにおけるパワー・デカップリングを必要とするのが典型である。ESRの低い表面装着キャパシタが好ましい。一般的に、小型で、値の小さいキャパシタの周波数特性の方が大型で、値の大きいキャパシタの周波数特性よりも良く(すなわち、直列インダクタンスは少なく、自己共振周波数は高くなる)、小さいのから大きいキャパシタ値を寄せ集めて使うのが好ましい。最小値のキャパシタとPWBパワー・プレーンにおけるローカル・チャージ(典型的には約100pF/in2)がスイッチング信号の初期の最高周波数成分の電流要請に応えて供給し、他方最大キャパシタは低い周波数成分を供給する。適当なデカップリングもEMCの問題を小さくする。
デカップリング・キャパシタが必要とする電荷供給はC=I/(fΔV)から計算できる。ここで、Iは必要とされる電流、fは周波数、ΔVは許容電圧降下であって、典型的には0.1Vである。cVccと cVssとは内部クロックに対して100pFを必要とし、そして出力ドライバーの前置ドライバーに対して0.03μFを必要とし、他方ctr1Vccと ctr1Vssとはad Vccと adVssと一緒になって0.24μFを必要とする。これらの要請は、以下のようにしてほぼ満たされる:
4つの100pFNPOキャパシタもしくは同容量の小型キャパシタを一つづつcVccとcVssのセットの各々にできるだけ近づけてシーブームCPUパッケージとPWBの同じ側に、適当に装着し、
4つの4700pF×7RキャパシタをシーブームCPUパッケージとは反対のPWBの側に適当に装着し、
4つの4700pF×7RキャパシタをシーブームCPUパッケージとは反対のPWBの側に、上に述べたように装着し、そして
6つの0.047μF×7Rキャパシタをctr1Vccと ctr1Vssの周りに、そしてad Vccと adVssの中に、これらのピンへできるだけ近づけて分散させて、装着する。
上記は本質的に最悪の場合の要件を表している。もし平均出力ドライバーの負荷が100pFではなく50pFであると、6つの0.047μF×7Rキャパシタを3つないし4つに減らすことができる。これに代わる他の技術的に等価な仕方でもよい。
シーブームCPUパッケージと同じPWBの側にキャパシタを取り付けることにより長さ約25ミルの接続トレースにでき、他方反対のPWBの面にキャパシタを取り付けると長さ約100ミルを越えるトレースを必要とする。上記のスイッチング周波数ではトレースの長さの差がデカップリング効果にかなりの差異をつくりだす。パッケージとキャパシタパワーと接地接続とを、同じ理由で、できれば、VIP(via-in-pad)でつくるべきである。
推奨する接続
総ての出力ドライバーはメモリシステムの重い容量性負荷を直接駆動するように分担させられていて、バッファリング・ロジックに関連の外部要素と進行遅延を最小とする。しかしながら、負荷が増すと消費電力も増すことになり、そしてシーブームCPUの作動温度が作動限界を越えないことを保証する手段を講じなければならなくなる。重いCPUバス負荷を有するシステムはヒート・シンクもしくは強制換気を必要とすることがある。出力ドライバー電流を小さくすることは全消費電力を小さくすることにはならない。電力消費は出力負荷によって変わり、信号変遷エッジ・レートによって変わらないからである。
システムのコストを低減するため総ての入力の内部回路はもし入力が使われなければ、安定した入力電圧を与える。こうして、使用されていない入力はプル・アップを必要としない。
RESETバーはcVccに対し約10Kオームのプル・アップを含んでおり、そしてRESETバーはCMOSシュミット・トリガである。
MFLTバーはcVccに対し約20Kオームのプル・アップを含んでいる。
IN〔7:00〕はそれぞれcVccに対しTBDKオームのプル・アップを含んでいる。
ADはそれぞれ、cVccとcVssに対し約5Kオームのインピーダンスを持つリピータを有している。これらは最後のバス状態を、ピンがその他の仕方で駆動されていないとき、維持する。
クロック
シーブームCPUはプロセッサの周波数の半分の外部CMOS発振器を必要とする。この発振器は内部で倍になって(2×クロック・サイクル)、MPUとIOPとを作動し、そして再び倍になって微粒のプログラマブルなバスタイミング(4×クロック・サイクル)を与える。
経済的な発振器は60/40だけの保証されたデューティ・サイクルを有しているのが典型である。クロックサイクルのどうにか半分がCPUが作動していると見られるクロック周期において現れるのが普通である。こうして、100−MHzCPUは60/40発振器で80MHzへ制限されるであろう。80MHz、2×−クロックではその40%クロック周期は10nsとなるからである。100−MHzの速度を得るには遥に高価な発振器を必要とする。システムのコストを低減し、そしてシステムの性能を高めるにはCPUの内部に位相ロック・ループ回路を使って発振器入力を50/50デューティ・サイクルでロックして安定させる。
選択された2×−クロック周波数は用途とシステムのハードウエアの要請によって変わる。IOPが適当なタイミングをつくれるよう、もしくはMIFがバスタイミングを最適化するようクロック周波数を選定する。例えば、もしもシステムが35nsバスサイクルを必要とするのであれば、2×−クロックサイクルの4倍の長さのサイクル(40ns)で100MHzで作動するよりも2×−クロックサイクルの3倍の長さのサイクル(35.7ns)で84MHzで作動する方が有効である。
Figure 2009205698
Figure 2009205698
Figure 2009205698
Figure 2009205698
Figure 2009205698

Figure 2009205698

Figure 2009205698
Figure 2009205698
Figure 2009205698
Figure 2009205698
Figure 2009205698
Figure 2009205698
Figure 2009205698
Figure 2009205698
Figure 2009205698
Figure 2009205698
Figure 2009205698
付録Cのブートコードを参照のこと。
ここに組み込まれていない発明の範囲についての、本発明のこの実施形態の更なる詳細は、「ShBoomTMマイクロプロセッサ」(Poway CA 92064,1995,Patriot Scientific Corporation)から入手可能である。この明細書に示した全ての出版物及び特許出願は、各個々の出版物又は特許出願がリファレンスとして組み入れられるように特に示されているように、同じ範囲がリファレンスとしてここに組み入れられる。
本発明は十分に記載されているが、添付した特許請求の範囲の精神又は範囲を逸脱せずに多くの変形及び修正をすることができることは当業者にとって明らかであろう。

Claims (22)

  1. マイクロプロセシングユニットと該マイクロプロセシングユニットをシステムランダムアクセスメモリ(RAM)に接続するメモリインターフェースユニットとを備え、
    前記マイクロプロセッサシステムは、前記システムRAMを使用する仮想システムメモリを定義するために前記マイクロプロセシングユニットによって与えられた論理列アドレスを前記システムRAMの物理的列アドレスに変換する手段を備えていることを特徴とするマイクロプロセッサシステム。
  2. さらに、前記メモリインターフェースユニットに接続され、前記システムRAMにアクセスする手段を備え、
    各列アドレスストローブ(RAS)サイクルがRASプレチャージインターバルを有しており、前記論理列アドレスが前記RASプレチャージインターバルの間に前記システムRAMの前記物理アドレスに変換されることを特徴とする前記請求項2に記載のマイクロプロセッサシステム。
  3. 中央処理ユニットと前記中央処理ユニットに接続されたビットインプットレジスタとを備え、前記ビットインプットレジスタが少なくとも一つのビットラインからロジカルイップットを受け取るようになったマイクロプロセッサシステムにおいて、 前記少なくとも1つのビットラインに接続され、そのロジックレベルを判断するために前記少なくとも1つのビットラインを最初にサンプリングするラッチ手段と、 前記ラッチ手段に接続され、前記少なくとも一つのビットラインにアサインされたレジスタに前記ロジックレベルをストアするゼロパーシステンスコントロールユニットとを有し、 前記ゼロパーシステンスコントロールユニットが前記中央処理ユニットによって定義済の信号を具備するまで、前記ロジックレベルが前記レジスタにストアされた状態になっていることを特徴とするマイクロプロセッサシステム。
  4. さらに、前記ゼロパーシステンスコントローラに接続されたダイレクトメモリアクセスコントローラ(DMAC)を備え、前記DMACは前記定義済の信号を発生させる手段を備えていることを特徴とする請求項3に記載のマイクロプロセッサシステム。
  5. マイクロプロセシングユニット、IOP、及び前記中央処理ユニット及びIOPを前記システムバスに選択的に接続するメモリインターフェースユニットとを備え、
    前記IOPが前記メモリインターフェースユニットにシステムアドレス情報を与えるプログラムカウンタ手段を備えていることを特徴とするマイクロプロセッサシステム。
  6. さらに、前記IOP及びシステムバスに接続され、所定のインターバルで前記システムバスへの前記IOPのアクセスを許容する手段を備えていることを特徴とする請求項5に記載のマイクロプロセッサシステム。
  7. 前記IOPが前記システムバスに接続され、前記システムバスから受け取ったデータをラッチするラッチ手段を備えていることを特徴とする請求項5に記載のマイクロプロセッサシステム。
  8. 前記IOPが前記プログラムカウンタ手段によって制御されるマルチプレクサ、命令ラッチ、及びデコード/実行モジュールとを備え、
    前記マルチプレクサが前記命令ラッチ及び前記デコード/実行モジュールとの間に接続されていることを特徴とする請求項5に記載のマイクロプロセッサシステム。
  9. スタックキャッシュを有するマイクロプロセシングユニットを備えたマイクロプロセッサシステムにおいて、フローチングポイントマスマティカル命令を可能にするシステムが、
    前記スタックキャッシュのセル内の値によりフローチングポイントオペレーションを実行するアリスメティックロジックユニット手段と、
    前記アリスメティックロジックユニット手段に接続され、前記フローチングポイントオペレーションの選択された実行に応答してフローチングポイントイクセプションを発生する手段と、
    前記アリスメティックロジックユニット手段及び、前記フローチングポイントイクセプションを発生する手段に接続され、前記フローチングポイントイクセプションに応答して、前記マイクロプロセシングユニットが定義済のフローチングポイントルーチンを実行できるようにするモードレジスタ手段とを備えたことを特徴とするマイクロプロセッサシステム。
  10. 前記フローチングポイントオペレーションを実行する手段が、前記スタックキャッシュに接続され、テストイックスポーネント、イクストラクトイクスポーネント、アッドイクスポーネント、及び回復イクスポーネント命令を備えていることを特徴とする請求項9に記載のシステム。
  11. スタックキャッシュを有するマイクロプロセシングユニットを備えたマイクロプロセッサシステムにおいて、ブレイクポイント命令を実行する方法が、
    前記ブレイクポイント命令のメモリアドレスを前記スタックキャッシュに押し込むステップと、
    ブレイクポイントサービスルーチンを実行するステップとを備えていることを特徴とする方法。
  12. システムメモリと1つ以上のインターナルレジスタを有するマイクロプロセシングユニットとを備えたマイクロプロセッサシステムであって、前記システムメモリが前記マイクロプロセシングユニットと通信するための第1アドレススペースを割り当てられているものにおいて、前記マイクロプロセシングユニット内にデータを伝送する方法が、
    前記一つ以上のインターナルレジスタを前記第1アドレススペースとは異なる第2アドレススペースに割り当て、
    前記第2アドレススペース内のアドレスによって識別される前記1つ以上のインターナルレジスタの部分に及びこれらからのデータを伝送するステップとを備えたことを特徴とする方法。
  13. スタックキャッシュを有するマイクロプロセシングユニットを含むマイクロプロセッサシステムにおいて、アドレスアリスメティックのための方法が、
    前記スタックキャッシュの第1のセルの第1のアドレス値をストアし、
    記スタックキャッシュの第2のセルに第2のアドレス値をストアし、
    前記第1アドレス値を前記第2アドレス値に加算して、前記スタックキャッシュの前記第1セル内に結果としての合計値をストアするステップとを備えたことを特徴とする方法。
  14. スタックキャッシュを有するマイクロプロセシングユニットを備えたマイクロプロセッサシステムにおいて、コピーバイトオペレーションを実行する方法が、
    セル内にストアされた複数のデータバイトのうちの少なくともの1つの意味のあるものを読み取り、
    前記複数のデータバイトの少なくとも他の1つを前記少なくとも1つの意味を有するデータバイトで置換するステップとを備えたことを特徴とする方法。
  15. スタックキャッシュとキャリーレジスタとを有するマイクロプロセシングユニットを備えたマイクロプロセッサシステムにおいて、テストバイトオペレーションを遂行する方法が、
    前記スタックキャッシュのセル内にストアされた複数のバイトのそれぞれを読み取り、
    任意の前記バイトがゼロ値であるとき、前記キャリーレジスタに第1論理値をストアし、
    別途前記キャリーレジスタに第2論理値をストアすることを特徴とする方法。
  16. システムメモリ、前記システムメモリに接続され、前記システムメモリに接続されたスタックキャッシュ及び前記スタックキャッシュに接続されたプログラムカウンタを有するマイクロプロセシングユニットとを備えたマイクロプロセッサシステムにおいて、
    単一のステッププロセシングシステムが、
    前記スタックキャッシュ及び前記プログラムカウンタに接続され、前記スタックキャッシュの第1セルからの第1メモリアドレスを前記プログラムカウンタにロードする手段と、
    前記プログラムカウンタに接続され、前記第1メモリアドレスに対応するロケーションにおいて、前記マイクロプロセッサシステムの前記システムメモリにストアされた第1命令を実行する手段と、
    この間に第2メモリアドレスが前記第1セルにロードされる単一ステップトラップルーチンを実行する手段とを備え、
    前記第1命令につづく第2命令が、前記第2メモリアドレスに対応する前記システムメモリのロケーションにストアされるようになっていることを特徴とするシステム。
  17. システムメモリ、及びスタックキャッシュを有する前記システムメモリに接続されるマイクロプロセシングユニットとを有するマイクロプロセッサシステムにおいて、
    スタックキャッシュマネージングシステムが、
    前記スタックキャッシュ内に現に含まれるセルの数を判断する手段と、
    前記セルの数を判断する前記手段に接続され、スタックキャッシュの定義済の深さと前記セルの数との比較を実行する手段と、
    前記比較の実行手段に接続され、前記比較に基づき現在のスタック深さの指示を与える手段とを備えたことを特徴とするシステム。
  18. システムメモリと、スタックキャッシュを有する前記システムメモリに接続されたマイクロプロセシングユニットとを備えたマイクロプロセッサシステムにおいて、
    スタックキャッシュマネージングシステムが、
    前記スタックキャッシュに接続され、前記スタックキャッシュ内に現に含まれるセルの数を判断するスタック深さ手段と、
    前記スタック深さ手段に接続され、前記スタック深さの指示を与える手段とを備えたことを特徴とするシステム。
  19. システムメモリと、スタックキャッシュを有するマイクロプロセシングユニットを有するマイクロプロセッサシステムにおいて、
    スタックキャッシュマネージングシステムが、
    前記スタックキャッシュに接続され、前記スタックキャッシュ内の現存する数のセルを判断する手段と、
    前記セルの現在の数を判断する手段に接続され、前記セルの現存の数とスタック深さとを比較することによって前記スタックキャッシュに付加することかできるセルの数を計算する手段と、
    前記スタックキャッシュ及び前記スタックキャッシュに付加することができるセルの数を計算する手段に接続され、前記スタックキャッシュに付加することができる前記セルの数に等しい前記セルの数を前記スタックキャッシュ内の前記現存のセルに付加する手段とを備えたことを特徴とするシステム。
  20. さらに、前記スタックキャッシュに接続され、前記スタックキャッシュ内の前記セルの付加的な数を前記スタックキャッシュの前記現有のセルの数から除外する手段と、
    前記システムメモリから前記スタックキャッシュに新しいセルの前記付加的な数をロードする手段とを備えたことを特徴とする請求項19に記載のシステム。
  21. アリスメティックロジックユニットと該アリスメティックロジックユニットに接続されたプッシューダウンスタックとを有するマイクロプロセシングユニットを備えており、
    前記アリスメティックロジックユニットはビットをシフトするビットシフト手段を有しており、
    該ビットシフト手段は1つ以上の部分シフトでビットのカウントをシフトするようになっており、前記カウントが各部分シフトでシフトされた数だけ減少し、前記シフトが、前記カウントがビット倍数より大きい間、ビット倍数だけ実行され、前記倍数がその後減少し、かつその後前記カウントがゼロになるまで前記カウントのシフト及び減少が反復されるようになっていることを特徴とするマイクロプロセッサ。
  22. 前記倍数が最初は8であり、前記倍数は前記カウントが8より小さくなったとき1に減少することを特徴とする請求項21に記載のマイクロプロセッサ。
JP2009141967A 1995-10-06 2009-06-15 縮小命令セット・コンピュータ・マイクロプロセッサーの構造 Pending JP2009205698A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US540895P 1995-10-06 1995-10-06

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006276681A Division JP4859616B2 (ja) 1995-10-06 2006-10-10 縮小命令セット・コンピュータ・マイクロプロセッサーの構造

Publications (2)

Publication Number Publication Date
JP2009205698A true JP2009205698A (ja) 2009-09-10
JP2009205698A5 JP2009205698A5 (ja) 2010-07-15

Family

ID=21715705

Family Applications (5)

Application Number Title Priority Date Filing Date
JP51584897A Expired - Lifetime JP3739797B2 (ja) 1995-10-06 1996-10-04 縮小命令セット・コンピューター・マイクロプロセッサーの構造
JP2005240441A Expired - Fee Related JP3955305B2 (ja) 1995-10-06 2005-08-22 縮小命令セット・コンピュータ・マイクロプロセッサーの構造
JP2006276681A Expired - Lifetime JP4859616B2 (ja) 1995-10-06 2006-10-10 縮小命令セット・コンピュータ・マイクロプロセッサーの構造
JP2008290229A Pending JP2009080827A (ja) 1995-10-06 2008-11-12 マイクロプロセッサシステム
JP2009141967A Pending JP2009205698A (ja) 1995-10-06 2009-06-15 縮小命令セット・コンピュータ・マイクロプロセッサーの構造

Family Applications Before (4)

Application Number Title Priority Date Filing Date
JP51584897A Expired - Lifetime JP3739797B2 (ja) 1995-10-06 1996-10-04 縮小命令セット・コンピューター・マイクロプロセッサーの構造
JP2005240441A Expired - Fee Related JP3955305B2 (ja) 1995-10-06 2005-08-22 縮小命令セット・コンピュータ・マイクロプロセッサーの構造
JP2006276681A Expired - Lifetime JP4859616B2 (ja) 1995-10-06 2006-10-10 縮小命令セット・コンピュータ・マイクロプロセッサーの構造
JP2008290229A Pending JP2009080827A (ja) 1995-10-06 2008-11-12 マイクロプロセッサシステム

Country Status (6)

Country Link
US (6) US20070271441A1 (ja)
EP (1) EP0870226B1 (ja)
JP (5) JP3739797B2 (ja)
AT (1) ATE241170T1 (ja)
DE (1) DE69628326D1 (ja)
WO (1) WO1997015001A2 (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376820B2 (en) * 2000-03-16 2008-05-20 Fujitsu Limited Information processing unit, and exception processing method for specific application-purpose operation instruction
WO2002010994A1 (en) * 2000-07-28 2002-02-07 Delvalley Limited A data processor
JP3857614B2 (ja) 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
US8612992B2 (en) * 2003-04-09 2013-12-17 Jaluna Sa Operating systems
US8136096B1 (en) * 2004-07-23 2012-03-13 Green Hills Software, Inc. Backward post-execution software debugger
FR2896600B1 (fr) * 2006-01-24 2008-03-28 Atmel Nantes Sa Sa Dispositif de traitement en notation polonaise inversee pour la manipulation de tableau, et circuit integre electronique comprenant un tel dispositif de traitement
FR2896601B1 (fr) * 2006-01-24 2008-08-15 Atmel Nantes Sa Dispositif de traitement en notation polonaise inversee, et circuit integre electronique comprenant un tel dispositif de traitement.
US7913069B2 (en) 2006-02-16 2011-03-22 Vns Portfolio Llc Processor and method for executing a program loop within an instruction word
US7617383B2 (en) 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
KR101334172B1 (ko) * 2007-01-05 2013-11-28 삼성전자주식회사 임베디드 시스템의 스택 오버플로우 방지 방법 및 장치
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
US8151349B1 (en) 2008-07-21 2012-04-03 Google Inc. Masking mechanism that facilitates safely executing untrusted native code
US7957216B2 (en) 2008-09-30 2011-06-07 Intel Corporation Common memory device for variable device width and scalable pre-fetch and page size
US20100164971A1 (en) * 2008-12-29 2010-07-01 Celio Technology Corporation Graphics processor
US8209523B2 (en) * 2009-01-22 2012-06-26 Intel Mobile Communications GmbH Data moving processor
GB2471138B (en) * 2009-06-19 2014-08-13 Advanced Risc Mach Ltd Handling integer and floating point registers during a context switch
US8572357B2 (en) * 2009-09-29 2013-10-29 International Business Machines Corporation Monitoring events and incrementing counters associated therewith absent taking an interrupt
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US20120059866A1 (en) * 2010-09-03 2012-03-08 Advanced Micro Devices, Inc. Method and apparatus for performing floating-point division
US10838886B2 (en) 2011-04-19 2020-11-17 Micron Technology, Inc. Channel depth adjustment in memory systems
US9910823B2 (en) 2011-05-16 2018-03-06 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) having an instruction set optimized to minimize memory fetch
US9588881B2 (en) 2011-05-16 2017-03-07 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) for code space and a portion of the stack memory space having an instruction set optimized to minimize processor stack accesses
US8949514B2 (en) * 2011-05-16 2015-02-03 Cypress Semiconductor Corporation Stack processor using a ferroelectric random access memory (F-RAM) for both code and data space
US8560997B1 (en) * 2012-07-25 2013-10-15 Taiwan Semiconductor Manufacturing Company Limited Conditional cell placement
WO2014085267A1 (en) 2012-11-30 2014-06-05 Intel Corporation Apparatus, method and system for providing termination for multiple chips of an integrated circuit package
US9535697B2 (en) * 2013-07-01 2017-01-03 Oracle International Corporation Register window performance via lazy register fills
US9734326B2 (en) 2014-02-04 2017-08-15 Nxp Usa, Inc. Dynamic interrupt stack protection
US9411747B2 (en) * 2014-02-04 2016-08-09 Freescale Semiconductor, Inc. Dynamic subroutine stack protection
JP6128013B2 (ja) * 2014-02-27 2017-05-17 株式会社デンソー 回転角検出装置、および、これを用いた電動パワーステアリング装置
JP6183251B2 (ja) * 2014-03-14 2017-08-23 株式会社デンソー 電子制御装置
WO2016076934A2 (en) 2014-08-22 2016-05-19 Thomas John K Verification system for secure transmission in a distributed processing network
US9389796B1 (en) 2015-02-23 2016-07-12 International Business Machines Corporation Efficient register preservation on processors
US10459727B2 (en) 2015-12-31 2019-10-29 Microsoft Technology Licensing, Llc Loop code processor optimizations
US10592252B2 (en) 2015-12-31 2020-03-17 Microsoft Technology Licensing, Llc Efficient instruction processing for sparse data
US11042878B2 (en) 2016-01-19 2021-06-22 Priv8Pay, Inc. Network node authentication
US10649786B2 (en) * 2016-12-01 2020-05-12 Cisco Technology, Inc. Reduced stack usage in a multithreaded processor
US10761999B1 (en) * 2019-05-30 2020-09-01 Western Digital Technologies, Inc. Storage device with predictor engine of host turnaround time
CN111091544B (zh) * 2019-12-12 2020-10-16 哈尔滨市科佳通用机电股份有限公司 铁路货车转向架侧面一体架构断裂故障检测方法
US11099848B1 (en) * 2020-01-30 2021-08-24 Arm Limited Overlapped-immediate/register-field-specifying instruction
TWI764311B (zh) * 2020-10-08 2022-05-11 大陸商星宸科技股份有限公司 記憶體存取方法及智慧處理裝置
CN112416637A (zh) * 2020-11-03 2021-02-26 中国航空工业集团公司西安航空计算技术研究所 一种基于栈技术的故障诊断方法
DE112021006877T5 (de) * 2021-04-27 2023-11-30 Microchip Technology Inc. System mit mehreren stapeln in einem prozessor ohne effektiven adressgenerator
US11782871B2 (en) 2021-04-27 2023-10-10 Microchip Technology Inc. Method and apparatus for desynchronizing execution in a vector processor
CN116627865B (zh) * 2023-04-26 2024-02-06 安庆师范大学 具有多个存储装置的计算机的访问方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01134544A (ja) * 1987-11-20 1989-05-26 Hitachi Ltd メモリアクセス方式
JPH03203087A (ja) * 1989-12-28 1991-09-04 Canon Inc メモリアクセス制御装置
JPH0628239A (ja) * 1990-11-29 1994-02-04 Sun Microsyst Inc メモリアクセス時間を短縮したコンピュータシステム及びメモリアクセス時間を短縮する方法
JPH06215559A (ja) * 1993-01-14 1994-08-05 Fuji Xerox Co Ltd ページメモリアクセス方式

Family Cites Families (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253425A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
US4092937A (en) * 1977-03-21 1978-06-06 The Singer Company Automatic stitching by programmable sewing machine
US4100865A (en) * 1977-03-21 1978-07-18 The Singer Company Programmable sewing machine operable in a plurality of modes
US4104976A (en) * 1977-03-21 1978-08-08 The Singer Company Programmable sewing machine
US4108090A (en) * 1977-03-21 1978-08-22 The Singer Company Programmable variable speed for sewing machine
US4222103A (en) * 1978-09-25 1980-09-09 Motorola, Inc. Real time capture registers for data processor
US4326247A (en) * 1978-09-25 1982-04-20 Motorola, Inc. Architecture for data processor
US4255785A (en) * 1978-09-25 1981-03-10 Motorola, Inc. Microprocessor having instruction fetch and execution overlap
US4374418A (en) * 1979-06-27 1983-02-15 Burroughs Corporation Linear microsequencer unit cooperating with microprocessor system having dual modes
US4287560A (en) * 1979-06-27 1981-09-01 Burroughs Corporation Dual mode microprocessor system
US4306287A (en) * 1979-08-31 1981-12-15 Bell Telephone Laboratories, Incorporated Special address generation arrangement
US4348720A (en) * 1979-08-31 1982-09-07 Bell Telephone Laboratories, Incorporated Microcomputer arranged for direct memory access
US4346437A (en) * 1979-08-31 1982-08-24 Bell Telephone Laboratories, Incorporated Microcomputer using a double opcode instruction
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor
JPS5792475A (en) * 1980-11-25 1982-06-09 Nec Corp Multiple stack device
JPS57182852A (en) * 1981-05-07 1982-11-10 Nec Corp Stack device
US4922414A (en) * 1982-12-17 1990-05-01 Symbolics Inc. Symbolic language data processing system
US4887235A (en) * 1982-12-17 1989-12-12 Symbolics, Inc. Symbolic language data processing system
JPH0731603B2 (ja) * 1984-11-21 1995-04-10 ノビツクス Forth特定言語マイクロプロセサ
US4794521A (en) * 1985-07-22 1988-12-27 Alliant Computer Systems Corporation Digital computer with cache capable of concurrently handling multiple accesses from parallel processors
US4783736A (en) * 1985-07-22 1988-11-08 Alliant Computer Systems Corporation Digital computer with multisection cache
GB2188759B (en) * 1986-04-05 1990-09-05 Burr Brown Ltd Data processing with op code early comparison
JPS62256058A (ja) * 1986-04-30 1987-11-07 Toshiba Corp アドレス変換バツフア制御方式
US4811208A (en) * 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
JPS62277006A (ja) * 1986-05-24 1987-12-01 Hitachi Ltd 電気車用制御装置
US4803621A (en) * 1986-07-24 1989-02-07 Sun Microsystems, Inc. Memory access system
JPS6356449U (ja) * 1986-09-26 1988-04-15
US5091846A (en) * 1986-10-03 1992-02-25 Intergraph Corporation Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency
GB2217058A (en) * 1988-03-23 1989-10-18 Benchmark Technologies Processing integral transform operations
US5056015A (en) * 1988-03-23 1991-10-08 Du Pont Pixel Systems Limited Architectures for serial or parallel loading of writable control store
EP0340901A3 (en) * 1988-03-23 1992-12-30 Du Pont Pixel Systems Limited Access system for dual port memory
US5428754A (en) * 1988-03-23 1995-06-27 3Dlabs Ltd Computer system with clock shared between processors executing separate instruction streams
JPH01255035A (ja) * 1988-04-05 1989-10-11 Matsushita Electric Ind Co Ltd プロセサ
US5187799A (en) * 1988-05-17 1993-02-16 Calif. Institute Of Technology Arithmetic-stack processor which precalculates external stack address before needed by CPU for building high level language executing computers
US5261057A (en) * 1988-06-30 1993-11-09 Wang Laboratories, Inc. I/O bus to system interface
US5109514A (en) * 1988-07-28 1992-04-28 Sun Microsystems, Inc. Method and apparatus for executing concurrent CO processor operations and precisely handling related exceptions
KR0136594B1 (ko) * 1988-09-30 1998-10-01 미다 가쓰시게 단일칩 마이크로 컴퓨터
US4951194A (en) * 1989-01-23 1990-08-21 Tektronix, Inc. Method for reducing memory allocations and data copying operations during program calling sequences
US5214767A (en) * 1989-02-07 1993-05-25 Compaq Computer Corp. Full address and odd boundary direct memory access controller which determines address size by counting the input address bytes
US5768575A (en) * 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
US5781753A (en) * 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
JPH02239329A (ja) * 1989-03-14 1990-09-21 Toshiba Corp スタック管理システム
US5107457A (en) * 1989-04-03 1992-04-21 The Johns Hopkins University Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack
US5142635A (en) * 1989-04-07 1992-08-25 Intel Corporation Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer
JPH02284253A (ja) * 1989-04-26 1990-11-21 Hitachi Ltd データ転送装置
JPH02304624A (ja) * 1989-05-19 1990-12-18 Hitachi Ltd 情報処理装置
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5546551A (en) * 1990-02-14 1996-08-13 Intel Corporation Method and circuitry for saving and restoring status information in a pipelined computer
US5280615A (en) * 1990-03-23 1994-01-18 Unisys Corporation Out of order job processing method and apparatus
CA2045705A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites In-register data manipulation in reduced instruction set processor
JPH04308953A (ja) * 1991-04-05 1992-10-30 Kyocera Corp 仮想アドレス計算機装置
US5410654A (en) * 1991-07-22 1995-04-25 International Business Machines Corporation Interface with address decoder for selectively generating first and second address and control signals respectively in response to received address and control signals
JPH0553801A (ja) * 1991-08-28 1993-03-05 Seiko Epson Corp スタツク消費検索方式
DE69228980T2 (de) * 1991-12-06 1999-12-02 National Semiconductor Corp., Santa Clara Integriertes Datenverarbeitungssystem mit CPU-Kern und unabhängigem parallelen, digitalen Signalprozessormodul
JPH05181778A (ja) * 1991-12-27 1993-07-23 Nec Corp 入出力処理装置
GB2266606B (en) * 1992-04-27 1996-02-14 Intel Corp A microprocessor with an external command mode
US5522051A (en) * 1992-07-29 1996-05-28 Intel Corporation Method and apparatus for stack manipulation in a pipelined processor
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
US5590359A (en) * 1992-08-05 1996-12-31 Intel Corporation Method and apparatus for generating a status word in a pipelined processor
US5600584A (en) * 1992-09-15 1997-02-04 Schlafly; Roger Interactive formula compiler and range estimator
US5826069A (en) * 1993-09-27 1998-10-20 Intel Corporation Having write merge and data override capability for a superscalar processing device
US5369617A (en) * 1993-12-21 1994-11-29 Intel Corporation High speed memory interface for video teleconferencing applications
US5537559A (en) * 1994-02-08 1996-07-16 Meridian Semiconductor, Inc. Exception handling circuit and method
US5696955A (en) * 1994-06-01 1997-12-09 Advanced Micro Devices, Inc. Floating point stack and exchange instruction
US5636362A (en) * 1994-09-28 1997-06-03 Intel Corporation Programmable high watermark in stack frame cache using second region as a storage if first region is full and an event having a predetermined minimum priority
US6216200B1 (en) * 1994-10-14 2001-04-10 Mips Technologies, Inc. Address queue
US5717952A (en) * 1994-11-16 1998-02-10 Apple Computer, Inc. DMA controller with mechanism for conditional action under control of status register, prespecified parameters, and condition field of channel command
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
US5930820A (en) * 1996-03-18 1999-07-27 Advanced Micro Devices, Inc. Data cache and method using a stack memory for storing stack data separate from cache line storage
US5953741A (en) * 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US6085307A (en) * 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof
US6167488A (en) * 1997-03-31 2000-12-26 Sun Microsystems, Inc. Stack caching circuit with overflow/underflow unit
US6009499A (en) * 1997-03-31 1999-12-28 Sun Microsystems, Inc Pipelined stack caching circuit
US6289418B1 (en) * 1997-03-31 2001-09-11 Sun Microsystems, Inc. Address pipelined stack caching method
US6131144A (en) * 1997-04-01 2000-10-10 Sun Microsystems, Inc. Stack caching method with overflow/underflow control using pointers
US5923892A (en) * 1997-10-27 1999-07-13 Levy; Paul S. Host processor and coprocessor arrangement for processing platform-independent code
US7139877B2 (en) * 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing speculative load operation from a stack memory cache
US7139876B2 (en) * 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache
US7805573B1 (en) * 2005-12-20 2010-09-28 Nvidia Corporation Multi-threaded stack cache

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01134544A (ja) * 1987-11-20 1989-05-26 Hitachi Ltd メモリアクセス方式
JPH03203087A (ja) * 1989-12-28 1991-09-04 Canon Inc メモリアクセス制御装置
JPH0628239A (ja) * 1990-11-29 1994-02-04 Sun Microsyst Inc メモリアクセス時間を短縮したコンピュータシステム及びメモリアクセス時間を短縮する方法
JPH06215559A (ja) * 1993-01-14 1994-08-05 Fuji Xerox Co Ltd ページメモリアクセス方式

Also Published As

Publication number Publication date
EP0870226B1 (en) 2003-05-21
DE69628326D1 (de) 2003-06-26
US20080077911A1 (en) 2008-03-27
US20070271441A1 (en) 2007-11-22
US20070271442A1 (en) 2007-11-22
JP2009080827A (ja) 2009-04-16
JP3739797B2 (ja) 2006-01-25
JP2006024233A (ja) 2006-01-26
JP4859616B2 (ja) 2012-01-25
US20080072021A1 (en) 2008-03-20
US20080091920A1 (en) 2008-04-17
JP2007042131A (ja) 2007-02-15
EP0870226A2 (en) 1998-10-14
WO1997015001A2 (en) 1997-04-24
JPH11513825A (ja) 1999-11-24
JP3955305B2 (ja) 2007-08-08
EP0870226A4 (en) 2001-08-08
ATE241170T1 (de) 2003-06-15
WO1997015001A3 (en) 1998-04-09
US20080071991A1 (en) 2008-03-20

Similar Documents

Publication Publication Date Title
JP4859616B2 (ja) 縮小命令セット・コンピュータ・マイクロプロセッサーの構造
KR100403405B1 (ko) 분산형버스액세스및제어조정에따라다수개의내부신호버스를공유하는다수개의회로기능요소를갖는집적회로
KR100578437B1 (ko) 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘
US8583894B2 (en) Hybrid prefetch method and apparatus
US10621100B1 (en) Unified prefetch circuit for multi-level caches
US20140282312A1 (en) Hardware simulation controller, system and method for functional verification
JPH05502125A (ja) 後入れ先出しスタックを備えるマイクロプロセッサ、マイクロプロセッサシステム、及び後入れ先出しスタックの動作方法
EP0859320A1 (en) A configurable expansion bus controller
WO2015009376A1 (en) Access map-pattern match based prefetch unit for a processor
US9009420B2 (en) Structure for performing cacheline polling utilizing a store and reserve instruction
US5809514A (en) Microprocessor burst mode data transfer ordering circuitry and method
US9983874B2 (en) Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling
US20060248318A1 (en) Method and apparatus for sharing memory among a plurality of processors
WO2009032186A1 (en) Low-overhead/power-saving processor synchronization mechanism, and applications thereof
US6006288A (en) Method and apparatus for adaptable burst chip select in a data processing system
EP0380291A2 (en) Pump bus to avoid indeterminacy in reading variable bit field
EP0772829A1 (en) A pipelined microprocessor that makes memory requests to a cache memory and an external memory controller during the same clock cycle
JPH1083343A (ja) メモリをアクセスする方法
US9135157B2 (en) Integrated circuit device, signal processing system and method for prefetching lines of data therefor
US20090100220A1 (en) Memory system, control method thereof and computer system
WO1996037843A1 (en) A pipelined microprocessor that prevents the cache from being read when the contents of the cache are invalid
JPS6014435B2 (ja) 記憶装置
JP2003015861A (ja) 半導体集積回路及びコンピュータ読取り可能な記録媒体

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090715

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120628

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120927

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121002

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121220