JPH0731603B2 - Forth特定言語マイクロプロセサ - Google Patents

Forth特定言語マイクロプロセサ

Info

Publication number
JPH0731603B2
JPH0731603B2 JP60262356A JP26235685A JPH0731603B2 JP H0731603 B2 JPH0731603 B2 JP H0731603B2 JP 60262356 A JP60262356 A JP 60262356A JP 26235685 A JP26235685 A JP 26235685A JP H0731603 B2 JPH0731603 B2 JP H0731603B2
Authority
JP
Japan
Prior art keywords
register
parameter
memory
stack
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP60262356A
Other languages
English (en)
Other versions
JPS61182138A (ja
Inventor
エイチ.ムーア チヤールズ
ダブリユー.マーフイー ロバート
Original Assignee
ノビツクス
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ノビツクス filed Critical ノビツクス
Publication of JPS61182138A publication Critical patent/JPS61182138A/ja
Publication of JPH0731603B2 publication Critical patent/JPH0731603B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Description

【発明の詳細な説明】 本発明はマイクロプロセサに関するものであって、更に
詳細にはクロックサイクル毎に1命令でアセンブリ命令
を非同期的に実行すべく構成されたマイクロプロセサア
ーキテクチャに関するものである。本マイクロプロセサ
アーキテクチャ及びアセンブリ命令はFORTH(フォー
ス)として知られている言語を使用することを簡単化す
べく構成されている。
集積回路マイクロプロセサを有するコンピュータアーキ
テキチャは従来究極的にそれらを動作させ制御するのに
使用されるプログラミング言語には殆ど関与すること無
しに設計されていた。これと反対に、以前のマイクロ処
理又は設計目的はマイクロプロセサのアーキテクチャが
実際的に任意のタイプのプログラミング言語で動作する
とが可能な様にすることであった。
数例としてCOBOLやBASICやPASCALやFORTH等の高レベル
プログラミング言語と呼称されるものとマシンコード
(実際マイクロプロセサに適用される「0」「1」)と
の間のインターフェースはアセンブリ言語であることが
屡々である。アセンブリ言語で書かれたプログラムは屡
々非常に高速で、能率的で且つ小型であるという利点を
持っている(即ち、特定の操作を実行する為に使用され
るマシン言語の命令数は他のタイプのプログラミングの
場合よりも著しく少ない)。然し乍ら、アセンブリ言語
でのプログラミングは厄介であり、正確で、且つこの言
語に熟練している者にとっても雑用がかなり必要とな
る。プログラマーは屡々、それがコンピュータであろう
とマイクロプロセサであろうと、プログラムされるデバ
イスのアーキテクチャを詳細に知得しておらねばならな
い。
更に、前に示した如く、従来のマイクロプロセサのアー
キテクチャは可及的に多くの異なったタスク又は操作を
実行することが可能であるという点に目を向けて開発さ
れており、即ちマイクロプロセサを出来るだけ「汎用」
とさせることがマイクロプロセサの開発における設計目
的であることが多い。この設計目的は通常設計の中に多
様のレジスタ、ラッチ、その他のメモリ要素でその内容
が現在または爾後のマイクロプロセサ操作を制限し、指
示を与え、発生させる為に屡々使用されるものを組み込
むことによって実施されている。
この様な設計手法は同期操作を必要とする傾向となり、
命令実行当り多数の(クロック動作される)ステップが
必要とされ、それは内部マイクロコードの様な形態であ
る。マイクロコード設計がマイクロプロセサアーキテク
チャ内に固定されると、多大の困難性無しにはそれを変
更することは通常不可能である。更に、この設計上の複
雑性はプログラマーに負担を与えている。設計によって
支配されるアセンブリ言語プログラミングは、アーキテ
クチャ自身の知識に加えて、或る命令が実行される場合
に、この様なレジスタ等の内容を継続的に知得している
ことを必要とする。
更に、この様な集積化したマイクロプロセサを使用した
アセンブリ言語は極めて任意的であることが可能であ
り、その様であるから、より高レベルのプログラミング
言語の場合には通常プログラマーに与える比較的修得し
易い論理的接続性を与えるものではない。更に、アセン
ブリ言語のプログラムに誤りが存在する場合には、それ
を探し出し訂正するとは極めて困難である。この困難性
は何れのコンピュータ言語に対してもアセンブリ言語は
論理的関係を欠乏しているということから発生してい
る。連続するアセンブリ言語のステップ間の論理的関連
性は明らかではない。
多くのコンピュータに関してのFORTHの適用は付加的な
困難性を有している。コンピュータのメモリは3つの個
別の部分で使用されねばならない。これらの個別の部分
は、少なくとも、リターンスタックと、パラメータスタ
ックと、メインメモリである。特定のメモリエリアを制
限すべく努力が払われているが、FORTH言語では、これ
らの3つの個別部分の何れかにループ及びその他のオー
バーフローが発生することが通常である。何れか1つの
部分へのオーバーフローも通常コンピュータメモリの残
りの部分の上に重ね書きがなされる。この様な重ね書き
はメモリの消去を発生させ且つコンピュータ全体を「ク
ラッシュ」させる。この後者の現象はコンピュータ内の
情報を略無用のものとさせ、通常オペレーテイングシス
テム全体の再ロードが必要となる。更に、この様な「ク
ラッシュ」の原因を正確に突き止めるには困難性が伴
う。通常、メインメモリへのオーバーフローはそのオー
バーフローを発生させたプログラミングエラーを抹消す
るか又はアクセス不能なものとする。
本発明は、以上の点に鑑みてなされたものであって、上
述した如き従来技術の欠点を解消し、改良したマイクロ
プロセサを提供し、FORTHとして知られているコンピュ
ータ言語の使用を簡単化することを主目的とするもので
ある。
従って、本発明は、高レベルFORTHプログラミング言語
と実質的に同一のアセンブリ言語に応答して動作すべく
特に設計され且つ構成されたマイクロプロセサアーキテ
クチャを提供するものである。
通常、本発明のマイクロプロセサアーキテクチャには、
本マイクロプロセサと外部データ要素との間でデータワ
ードを通信する為に少なくとも3個の別個独立の入出力
ポートが具備されており、その1つはデータのみならず
命令ワードを記憶即ちストアする為のメモリ要素とする
ことが可能である。これら3個の入出力ポートの第1の
ものは命令を受け取る為に接続すべく採用されている。
他の2つの入出力ポートは、そこを通過するデータに多
様な演算及び論理操作を実行する為の演算論理ユニット
(ALU)を有する2方向データ経路によって互いに接続
されている。この2方向データ経路は、命令を受け取る
と(第1ポートで受け取る)、入出力ポートの1つが未
処理データを同期的に受け取ることを許容し、且つその
データをALUを介して通過させてそれを処理済データと
してALUに接続されている他方の入出力ポートに提供す
る。
本発明の好適実施例においては、前述した2方向通信を
確立する態様で各々が夫々入出力ポートの1つをALUへ
接続して一対のデータレジスタが設けられており、且つ
入出力ポートの各々は独立した外部メモリ要素に接続さ
れ、多数の逐次的な順序とされたデータワードを記憶す
る為の一対の後入れ先出し(ライトインファーストアウ
ト、即ちLIFO)データスタックを形成している。プログ
ラムカウンタはアドレス情報を発生し、それは第3(メ
イン)メモリに供給され、そこにはマイクロプロセサ命
令及びデータがストアされる。アドレスマルチプレクサ
は、プログラムカウンタの内容又はマイクロプロセサの
或る内部レジスタの内容をアドレスバスへ選択的に通信
し、該アドレスバスはそのアドレスバスとメインメモリ
とを相互接続させている。命令デコードユニットはメイ
ンメモリからアクセスされた命令を受け取り且つデコー
ドしてそこから必要な制御信号を供給し、該信号は多様
な多重(マルチプレクス)操作を介して所望のレジスタ
及びラッチへ情報を「パイプ」動作させ且つデコーダさ
れた命令によって支配される如く、これらのレジスタ及
びラッチのローデイングを行わせる。
本発明の好適実施例は、更に、該レジスタのどれか1つ
とALUの内部レジスタとの間で1サイクル情報「スワッ
プ(交換)」を許容する態様で該レジスタとALUとを相
互接続する論理を有している。この特徴は、一対の入出
力データポート間のALUを介しての2方向データ経路と
共に、FORTHプログラミング言語の操作特性と構造を包
含するアセンブリ言語の設計に独得に適合させたマイク
ロプロセサアーキクチャを提供している。
最後に、本発明の好適実施例は、マイクロプロセサが使
用されるシステムのLIFOスタックを形成する外部メモリ
要素に接続したアドレス用回路を有している。このアド
レス用回路は、(1)該メモリ要素に書き込まれた最後
のデータ要素におけるメモリ位置と、(2)次のメモリ
要素が書き込まれる次に使用可能のメモリ位置、のアド
レス(「ポインタ」)を維持する。これらのポインタ
は、データがスタックに書き込まれたり(即ち、「プッ
シュ」される又はそこから読み取られる(即ち、「ポッ
プ」される)と、自動的にインクリメント又はデクリメ
ントされ、その際にマイクロプロセサ自身の直接的な介
在無しにスタック構造を維持する。
FORTHの構造及び操作に取って基本的な概念であるスタ
ック構造はFORTHプログラミングによって広範に使用さ
れ、サブルーチンアドレスからの「リターン」をストア
する。FORTHは屡々「ビルデイングブロック」言語とし
て言及され、標準的なFORTH辞書単語(「原子語(primi
tives)」)を使用して、メタ言語(metawords)、メタ
‐メタ言語等を構成することが可能である。この(及び
その他の)概念を実施するには、広範なサブルーチンプ
ログラムを形成することが必要であり、その多くは屡々
他のサブルーチン内に深くネストされており、又そのサ
ブルーチンが更にその他のサブルーチンの中にネストさ
れていることが多い。更に、これらのサブルーチンの幾
つかは反復的即ちリカーシヴでもあることもある。1つ
又は幾つかのサブルーチンの開始点へリターンすること
が可能である為には、リターンアドレス、それは通常そ
のサブルーチンをコールしたものに引き続く次の命令を
収納するメモリ位置のアドレスであり、はストアされね
ばならない。従って、屡々、又特に深くネストしたサブ
ルーチンの場合には、リターン経路を与える為にはリタ
ーンアドレスの連続リストが維持されねばならない。こ
のリストは、本発明のマイクロプロセサ及び外部メモリ
要素によって実行することの可能なシステムのLIFOスタ
ックの1つの中にストアする為に個別的に適合させる。
サブルーチンのコール即ち呼出しは、必要なリターンア
ドレスのリターンスタック上への自動的なプッシュを起
させる。
「リターンスタック」内にリターンアドレスのリストを
自動的に維持することの前述した特徴を補完すること
は、特定のメモリ(又はその他の)処理無しでリターン
操作を実施するのに使用する本発明の為に設計されたマ
シン言語命令の特定のビット位置を取り分けておくこと
である。本発明のこの側面に拠れば、このマイクロプロ
セサ命令のこの特定ビットを所定の状態へ設定すること
は、自動的に最後にストアされたリターンアドレスがメ
インメモリ(その中に命令が記憶されている)をアドレ
スするために使用され且つ次の順番の命令に対して該ス
タックを「ポップ」させる。この特徴は付加的な利点を
提供する。即ち、単に如何なるこの様な最後の命令の
「リターンビット」をリターン又は所定の状態へ設定す
ることによって、全てのサブルーチンの最後の命令を、
サブルーチンリターンと結合された操作とすることが可
能である(例えば、演算論理操作、データ転送等)。
本発明から多数の利点が得られる。第1に重要なもの
は、本発明のここに開示されるアーキテクチャは、その
為に開発されたアセンブリ言語がFORTHプログラミング
言語の「原子語」(標準語)の多くを実施する様に構成
されているという事実である。各原子語(或る場合に
は、複数個の原子語)の実行には単に1マシンサイクル
を必要とするだけであり、例外は或る種のデータ転送命
令(フェッチ及びストア)であり、それは2つのマシン
サイクルで動作する。これは与えられた適用に対して小
型のオブジェクトコードとすることを可能とし、更にそ
のコードの極めて迅速な実行を提供する。これらの利点
は、部分的には、スタック構成とそれらのALUとの相互
接続から実現されている。FORTHプログラミング言語は
通常2つのスタックから動作する。第1スタックは、演
算的に及び/又は論理的に結合されるか又は別の方法で
処理させるべきパラメータをストアし、第2スタックは
通常上述したリターンアドレスをストアする為に使用さ
れる。本マイクロプロセサアーキテクチャはALUによる
スタックの使用を可能としており、データ処理を行いか
なりの速度でストアすることを可能とすることによって
多大の柔軟性を与えている。データをストアする為にメ
インメモリをアクセスすることの要件は自動的に減少さ
れている。
ALUは出力バッファとして使用されるレジスタを有して
いる(又、或る場合には、アキュムレータとしても機能
する)。本発明のマイクロプロセサはこのレジスタを前
述したLIFOスタックの1つの上部のものとして使用する
(「パラメータ」スタック)。該スタックの次の位置も
又レジスタを介して実行され、且つ該スタックの後続の
位置は外部メモリの1つに見出される。これら2つのレ
ジスタは相互接続されており、従って「スワップ」を両
者間で実施することが可能である。即ち、各レジスタの
内容を他方のレジスタへ転送し逆の転送も同時的に行っ
て、その際にFORTH「スワップ」原子語を実行する。他
方のスタックも、この同じスワップ能力を与える態様で
ALUのアキュムレータに接続されているマイクロプロセ
サの内部レジスタを持っている。
前述した2つのスタックの対応する1つを受け取ること
に加えて、ALUオペランド入力も、本マイクロプロセサ
の他方の内部レジスタの多くを選択的に受け取るべく構
成されており、その際にその内容に関して演算論理操作
を実行する。
本発明の目的は、特にFORTHコンピュータ言語を収容す
べく構成されたマイクロプロセサアーキテクチャを提供
することである。従って、4個のメインレジスタと、3
個のメインアドレス用マルチプレクサと、4個の入出力
ポートとを具備するマイクロプロセサが開示される。こ
れらのレジスタは各々1つのパラメータを保持乃至はホ
ールドすべく構成されており、且つ本マイクロプロセサ
を操作する為のデコードレジスタL及び付加した演算論
理ユニットを具備する中央レジスタTを有している。演
算論理ユニット(ALU)は次パラメータレジスタ回路N
を介してパラメータスタックへ接続しており、且つイン
デックスレジスタ回路Iを介してリターンスタックへ接
続している。これらの接続は、Tレジスタ及びIとNレ
ジスタ回路との間手同時的なパラメータのスワップを行
うことを可能とする経路に沿ってなされており、夫々の
LIFOリターンメモリスタック及びLIFO次パラメータメモ
リスタックに対してスタックプッシュ及びポップが行わ
れる。これらの後者のスタックは、自動デクリメント動
作を許容すると共に該スタックからの適宜のデータ排出
と共にインクリメントするデータ書込動作を可能とする
簡単化したカウンタを持っている。メインメモリのアド
レス操作は、マルチプレクサを介して許容され、そのマ
ルチプレクサは、命令ラッチL(絶対的ジャンプ用)か
らのデータ、レジスタT内の演算論理ユニットからのデ
ータ(メモリへのデータのフェッチとストア用)、イン
デックスレジスタIからのデータ(サブルーチンからの
リターン用)、プログラムカウンタからのデータを受け
付ける。その結果得られるマイクロプロセサは、実行す
る為に2サイクルを必要とする或るフェッチアンドスト
アの例外を除いて、そのアセンブリ言語命令は1マシン
サイクルで実行される。
本発明のここに開示されるマイクロプロセサアーキテク
チャの別の目的とするところは、少なくとも3個の離隔
し分離し個別的なメモリ島状部(アイランド)の機能乃
至サービスを提供することであり、これらはメインプロ
グラムメモリ(典型的に、32Kデータ及びプログラム命
令、及び32K付加的データ)及びリターンスタックとパ
ラメータスタック(各々は通常256個のアドレス可能の
メモリ位置を有している)である。これらの個別的なメ
モリ島状部は高速であり、役に立たされ、且つ順次サイ
クル無しで同時的に使用することが可能である。
個別メモリ空間の別の利点としては、オーバーフローに
起因する問題はエラーが発生したメモリの個別部分に少
なくとも隔離することが不可能であるということであ
る。スタックオーバーフローはメインメモリを侵略した
りそれをオーバーフローさせたりすることはない。更
に、何れかのスタックがオーバーフローすると、最後の
オーバーフローが残ってデバック用のプログラミングの
手掛りを与える。従って、プログラマーはメインメモリ
をリストし且つFORTHクラッシュの主な原因であるスタ
ック及び/又はメモリオーバーフローを発生させている
バック欠陥を識別することを可能とする。
本発明の更に別の利点としては、パラメータスタックと
リターンスタックの両方がポップ又はプッシュの為に使
用可能であり、且つメインメモリは同時的にアクセス可
能であるということである。典型的には、メインメモリ
の速度のみが制限的であり、パラメータスタックとリタ
ーンスタックは高速であり、典型的にはメモリアクセス
を制限することはない。
本マイクロプロセサの個別のメモリの付加的な利点は、
共通にアクセス可能なメモリへの48ビット幅経路(パ
ス)が設けられており、そのメモリへの経路は3個の別
々の16ビット幅経路とすることが可能であり、それらは
全て同時的にマイクロプロセサ操作でアクセス可能であ
る。
本発明の更に別の利点では、Tレジスタ内に包含されて
いるALUは実効的にメインメモリから切り離されている
ということである。この演算論理ユニットはI及びNレ
ジスタ近くのパラメータから動作し、その際に高速非同
期操作を確保する。
本マイクロプロセサアーキテクチャの更に別の利点は、
メインメモリへのメモリ経路及びスタックが常にアクテ
ィブであるということである。逐次、メインメモリ、リ
ターンメモリ、及びパラメータメモリの異なる部分への
順次のサイクルにおけるシフトは必要とはされない。
本発明の別の目的とするところは、所謂「スワッピン
グ」経路がレジスタ間のデータの交換を可能とするマイ
クロプロセサを提供することである。インデックスレジ
スタI、ALUレジスタT、次パラメータレジスタNは相
互接続されて、TレジスタからI又はNレジスタの何れ
かへのデータのスワップ動作を可能としている。FORTH
原子語の実行は迅速化され、多くの場合に、単一サイク
ルに取り込まれる。
これらのレジスタ及びそれらのスワップ経路の利点は、
本マイクロプロセサに関する命令の実行は基本形に非同
期であるということである。本マイクロプロセサに関す
る個別レジスタ間上で操作が同時的に進行することが可
能であり、個別サイクルで順次的にサイクル動作される
ことが必要ではない。
別の利点は、ジャンプ命令を定義するのに単一ビット
(命令の最大桁ビット又はMSB)を使用して、本マイク
ロプロセサのアーキテクチャ位置決めがサブルーチン内
への単一サイクルのエントリーを可能とする点である。
更に、全てのジャンプ命令は、命令自身内でそれに対し
てジャンプがされるアドレスを有している。更に、本マ
イクロプロセサアーキテクチャはリターンアドレスの保
留と同時的にジャンプを行うことを可能としている。サ
イクル終端命令はサブルーチンからリターンすることを
要求するに過ぎない。本マイクロプロセサの個別サイク
ルはサブルーチンリターンには必要とはされない。
本発明の別の利点は、本マイクロプロセサの多数の内部
レジスタからの入力を容易に可能とするメインメモリに
対するアドレス用マルチプレクサがある点である。この
側面に拠れば、アドレス用マルチプレクサAは、絶対的
ジャンプ用の命令ラッチLからの直接経路、実行すべき
次のプログラムまたはサブルーチンステップをストア又
は読み取る為のプログラミングカウンタPへの書込読取
経路、次のリターンをアドレス用マルチプレクサに配置
させる為のインデックスレジスタIからの直接経路、及
びメインメモリからのデータの2サイクルフェッチ及び
ストアの為のTレジスタからアドレス用マルチプレクサ
への直接経路、を有している。そこで得られるマイクロ
プロセサは、単一サイクルで、将来のステップに対して
のメモリ位置をセットアップすることが出来、非同期状
態で現在のステップの命令実行を行う一方次のステップ
に対するメインメモリからのメモリ命令をラッチするこ
とが可能である。従って、マイクロプロセサ操作の実行
がオーバーラップして行われ、速度が向上される。
本発明の別の目的とするところは、リターンスタックの
付随するプッシュと共に、サブルーチンへの単一サイク
ルジャンプを提供することである。従って、プログラム
カウンタPはそのインクリメントしたカウントをプッシ
ュでリターンスタックに書き込む。同時に、アドレスマ
ルチプレクサが命令ラッチLから次の命令ルーチンを直
接に受け取る。単一サイクルサブルーチンエントリーが
得られる。
Tレジスタと共にここに開示するI又はインデックスレ
ジスタの別の利点は、FORTH及びその他の言語において
極めて一般的な技術であるルーピングはこのレジスタの
制御下で約65,536回発生することが可能である。命令を
繰り返すことが可能である。更に、メモリに対するスト
ア・フェッチはIレジスタ内のカウントとデータシーケ
ンス、例えば次パラメータLIFOメモリスタック内にスト
アされているストリームのデータを使用してストリーム
化させることが可能であり、各データエントリーの個別
アドレス動作は必要ではない。
本発明の更に別の目的は、そのアセンブラ言語がFORTH
に直接的に類推可能であり且つ理解可能であるマイクロ
プロセサを具備することである。
FORTHと直接的に類似したアセンブラの利点は、パブリ
ックドメインに対するFORTHにおける1,000人年以上のプ
ログラムが本マイクロプロセサの適用で容易に得られる
ということである。要するに、本マイクロプロセサは正
確なプログラムで容易にプログラムすることが可能であ
る。
本発明の別の利点は、多くのその他の実現するプログラ
ム言語をFORTHプログラム言語で実施することが可能で
あるということである。
本アーキテクチャの更に別の利点は、コンピュータ言語
FORTHが先に設計され且つ本マイクロプロセサのアーキ
テクチャは2番目に設計されFORTHとして知られている
言語に適合されているということである。従って、ソフ
トウエア設計から流れるアーキテクチャは著しく簡単化
され迅速にサイクル動作するマイクロプロセサとなって
いる。
本アセンブラがFORTH言語に類似しているということの
更に別の利点としては、アセンブラでのプログラミング
は極めて簡単化されているということである。この簡単
化は必要とされるプログラミング技術のレベル、プログ
ラミングに必要とされる時間、プログラム自身の複雑性
の量に関して発生する。従って、本マイクロプロセサに
「オペレーテイングシステム」を設けることは、従来の
アセンブラで必要とされる時間及び努力の約1/10で行う
ことが可能である。更に、アセンブラ言語はそれと共に
FORTHのワードを持っているので、リストしたものを読
むに当り、プログラマーはFORTH言語の論理に従って進
み、オペレーテイングシステム内のエラーをデバッグす
るか探し出すことが可能である。従って、デバッギング
時間及び努力は非常に減少される。
本マイクロプロセサの別の利点は、FORTH原子語命令の
終りに5ビット短リテラルを有する操作コードである。
この様な短リテラルは、レジスタ特に本マイクロプロセ
サ内のTレジスタの調節可能なインクリメント動作及び
デクリメント動作用に使用することが可能である。例え
ば、インクリメント動作及びデクリメント動作は、各サ
イクルを0乃至31の範囲内で調節可能である。更に、メ
モリの底部32位置は共通に使用されるデータのより高速
のフェッチ及びストアを供給することが可能である。
本マイクロプロセサの更に別の目的は、FORTH辞書をサ
ブルーチンスレデッドコードを持つものとして寄託させ
ることを許容するリターンスタックと協働するマイクロ
プロセサアーキテクチャを提供することである。特に、
辞書設計はワード、即ち次のワードへのリンク、を持っ
ており、且つその後に一連のサブルーチンが走らされて
該ワードを実行するものとして記載されている。ワード
又はサブルーチンのアドレスの間接的なアドレスが使用
される間接的なアドレススレッディングは最早必要とは
されない。この機能はリターンスタックと直接協働し、
実行速度を向上させる。
この辞書構成の利点としては、FORTHワード定義内に含
まれる各ワードを実行する上で少なくとも1サイクル全
体だけより高速であるということである。
本発明の更に別の利点としては、単一の命令内に完全に
取り込まれたループ及びジャンプを提供する点である。
本発明のこの側面に拠れば、ジャンプは4Kメモリ「ペー
ジ」内でジャンプすることの可能な12ビットアドレスを
有している。この様なループ及びジャンプには単一マシ
ンサイクルが必要とされるに過ぎない。
以下、添付の図面を参考に、本発明の具体的実施の態様
に付いて詳細に説明する。
一般的説明 図面を参照し、特に第1図を参照すると、本発明のマイ
クロプロセサを参照番号10で示してある。図示した如
く、本マイクロプロセサは、アドレスマルチプレクサA,
出力端子15,及びアドレスバスA−BUSを介してメインメ
モリ12へ通信されるアドレスを発生させる為のプログラ
ムカウンタPを有している。アドレスが発生され且つメ
インメモリ12へ印加されると、命令、及び場合によって
はデータワード、がアクセスされ、マイクロプロセサ10
をI/O端子13でメインメモリ12と相互接続させるDATABUS
によってマイクロプロセサ10のメインメモリポートMへ
接続される。命令はメインメモリポートMによってマイ
クロプロセサ10の命令デコードユニット14内に設けられ
ている命令ラッチL(第3図)へ通過される。
命令デコードユニット14によってデコードされた命令
は、マイクロプロセサ10の内部回路に渡って分散されて
いる多数の内部ゲート動作及びコマンド信号の1つ又は
それ以上のものを作動させ、本マイクロプロセサ内で且
つそれにより情報の流れ及び情報処理の指示を行う。
マイクロプロセサ10は又第11A図及び第11B図で示した外
部的に発生されるCLOCK信号を受け取る。このCLOCK信号
から、内部クロック(CLK)が発生され、それは以下に
詳細に説明する種々のコーデイング及びラッチング動作
を実行する。この時点で命令デコードユニットによって
行われる或るオーバーラップ動作を認識することが重要
である。命令がCKOCK信号の各上昇端18(第11A図)で命
令デコードユニット14内ラッチされ、ラッチされた命令
はその信号の各高状態の間にデコードされ、命令デコー
ド動作は好適にはCLOCK信号の各下降端20で完了する。
従って、CLCOK信号の各連続する上昇端18の前に、次の
逐次命令又はデータワード(それは、理解される如く、
幾つかの供給源から得ることが可能である)のメインメ
モリ12内のメモリ位置に関しての決定が成されている。
命令デコード時間が完了した後、その命令はCLOCK信号
の次に続く上昇端18の前に実行される。このことは、2
つの基本的なマイクロプロセサ操作、即ちアドレス形成
と命令実行、がオーバーラップすることを許容する。
これら2つの独立的な操作は、CLOCK信号の各期間の間
に行われ、次に続く命令(又は、データフェッチの場合
には、データ)に対するアドレスが形成され、その命令
によって支配される操作が実行される。従って、ラッチ
時間T0(第11A図)において、命令が命令デコードユニ
ット内にラッチされ、その位置は他の命令実行と同時に
なされる前の命令決定によって決定されている。同様
に、ラッチ時間T0とラッチ時間T1との間の時間中に、別
のアドレスが形成され、且つA−BUSへ印加され、一方
その間にラッチ時間T0で受けとられた命令が実行さてい
れる。
命令ワード(又、或る場合には、アドレス)を受け取り
且つ命令デコードユニット14へ通過させることに加え
て、メインメモリポートMは選択的にデータワードを2
方向データ経路37を介して次のパラメータレジスタNへ
通信し、該経路はメインメモリポートMとNレジスタ回
路との間でデータの同時的2方向転送を許容すべく構成
されている。演算論理ユニット(ALU)からのみなら
ず、Nレジスタ回路からメインメモリポートMによって
受けとられたデータは、メインメモリ112へ選択的に通
信されて記憶されることが可能である。
メインメモリポートMに接続されていることに加えて、
Nレジスタ回路も2方向データ経路36によってALUへ又
入出力(I/O)ポート22へ接続されている。更に、ポー
ト22は好適には16ビットS−BUSによって外部パラメー
タメモリ24へ接続されている。パラメータメモリ24と共
に、Nレジスタ回路は、逐次順序のデータワードの1次
元アレイをストアする為の後入れ先出し(LIFO)パラメ
ータスタックSを形成する。同様のLIFOスタックは、リ
ターンスタックRと呼ばれ、外部リターンメモリ26と関
連してリターン/インデックス(I)レジスタによって
形成されている。リターンメモリ26は16ラインR−BUS
によってマイクロプロセサ10(それには、Iレジスタも
接続されている)の(16)入出力(I/O)端子28に接続
している。リターンメモリ26は、パラメータメモリ24と
同様に、Iレジスタと共に動作され、データワードを逐
次順番をなし1次元アレイ又はスタックにストアする。
リターンスタックRへのエントリーはIレジスタを介し
てである。パラメータスタックSへのエントリーはNレ
ジスタ回路を介し「上部(top)パラメータ」レジスタ
T(第9図)を介して、又は更に詳細に以下に説明する
如くNレジスタ回路自身を介して行うことが可能であ
る。スタック操作はスタックポインタJ/Kで維持され、
各々(Jポインタ及びKポインタ)は夫々パラメータメ
モリ24及びリターンメモリ26へのアドレス信号を発生す
る。パラメータ及びリターンスタックS及びRの操作
は、スタックポインタの操作を第8図に関して行う時に
更に詳細に説明する。
最後に、マイクロプロセサ10は、21個の個別入出力(I/
O)端子を具備する入出力ポート30を有している。これ
らの端子の5個はX−BUSへ接続しており、残りの16本
はB−BUSへ接続している。これら21個のI/O端子は、関
連する5ビット及び16ビットレジスタに関連すると共に
接続されており、付加的な入出力能力を与えている。
マイクロプロセサ10を作り上げている個々の要素の更に
詳細な説明をする前に、本発明の多くの重要な特徴を理
解することが可能である。第1には、マイクロプロセサ
10は、4本の個別的で独立したデータ経路を使用して、
対応するI/O端子13,22,28及びI/Oポート30と通信を行う
ことが可能である。一方、本発明では、メインメモリ1
2、パラメータメモリ24、リターンメモリ26は、特定の
プログラミング言語、即ちFORTHに独得に適合されたア
ーキテクチャを実行する為にマイクロプロセサ10へ接続
されており、これらの端子へのその他の接続はマイクロ
プロセサ10を異なった構成で好適に使用する為になすこ
とが可能である。例えば、FORTH言語プログラムのコマ
ンドの下でデジタル信号処理用にマイクロプロセサ10を
使用することが可能であり、一方I/O端子22及び28は処
理されるべき信号であることを表すデータストリームを
受け取るべく適合されている。
本発明の別の重要な特徴は、特にFORTHプログラミング
言語から見た場合に、通信経路36,37,38及びG−BUSは
夫々ALUをN及び1レジスタ回路へ接続しており、メイ
ンメモリポートM及びI/Oポート30は全て同時的2方向
データ転送で、もっと一般的には「スワップ」と呼ばれ
る動作を与えているという事実である。
命令デコードユニット 第1図に示したマイクロプロセサ10の種々の要素の回路
構成を説明すると、第3図は命令デコードユニット14を
より詳細に示している。図示した如く、命令デコードユ
ニト14は16ビットラッチ50と、命令デコード回路52と、
2入力アンドゲート54、56、58を有している。16ビット
ラッチ50はそのデータ入力でメインメモリポートMから
のデータワード(M)をそのデータ入力として受け取
る。受けとられたデータワード(M)は、命令デコード
回路52からのイネーブルされたクロックEN−CLK信号が
高である時に、CLK信号(マイクロプロセサ10の入力端
子16で受けとられたCLOCK信号から派生されたもので基
本的にはそれと同一)の上昇端に沿ってラッチされる。
命令支配繰り返し操作が実行されている時以外、EN−CL
K信号は通常その高状態である。この場合、命令に応じ
て(以下に更に詳細に説明する),EN−CLK信号は多数の
CLOCK信号(及び、その後、CLK信号)低となることが可
能で、恰も同一の命令の同じ番号(後述する如く、2を
加算)が逐次受けとられ、ラッチされ、且つデコードさ
せる様にマイクロプロセサ10に対して見せている。
16ビットラッチ50で受けとられ且つラッチされた命令は
命令デコード回路52へ印加され、そこでデコードされ
る。命令デコード回路52によって行われるデコード動作
は、必要な内部ゲート動作用及びコマンド信号、例え
ば、(取り分け)第3図にリストしたもの、マイクロプ
ロセサ10の直接的操作を発生する。
命令デコードユニット14は又、マイクロプロセサ10の入
力端子18で受けとられたINTERRPUT信号から派生されたI
NT信号を受け取り、又入力端子20で受けとられたRESET
信号から派生されるRST信号を受け取る。INT信号は、高
であると、16ビットラッチ50を所定の16ビッチ命令にセ
ットし、それは、デコードの後、メインメモリ12のメモ
リ位置へ直接ジャンプさせ、該メモリ内にインタラプト
シーケンスを取り扱うコーディングが格納される。RST
信号は、16ビットラッチ50の内容をして、デコードされ
ると、該メインメモリ12内のメモリ位置へ別のジャンプ
を起させ、その中にリセットルーチン用のコーディング
が格納される。
ラッチ50からの16ビット命令に加えて、命令デコード回
路52もI=0信号をIレジスタから受け取る。理解され
る如く、時々Iレジスタはインデックツレジスタを操作
して或る命令に応答して実行される繰り返し回数を記憶
する。I=0信号は命令デコード回路52に、何時適宜の
繰り返し数が到達されて次の命令をメインメモリ12から
アクセスすることが可能であるかを通知する。
キャリーアウト(Co)T=0信号はALUによって発展さ
れる。Co信号はオーバーフロー条件又は負結果を表し、
一方T=0信号は、以下に説明する如く、或る種の演算
操作の完了をテストするのに有用である。
アドレスマルチプレクサとプログラムカウンタ 次に、第4図を参照すると、アドレスカウンタAとプロ
グラムカウンタPとをそれらの相互関係を示す為に結合
してより詳細に示してある。図示した如く、アドレスマ
ルチプレクサAはマルチプレクス(多重)回路60を有し
ている。第1図のプログラムカウンタPは、プログラム
レジスタ62、16ビット加算回路64、2入力アンドゲート
66を有している。
多重回路60は4個の16ビット入力を持っており、その3
個1,2,3は夫々、ラッチ50出力、[L]、ALU(第9図)
内に包含されたTレジスタの出力[T]、Iレジスタ
(第5図)の出力[I]を受け取る。更に、マルチプレ
クサ16の4つの16ビット入力はプログラムレジスタ62の
出力[P]を受け取る。16ビット入力のどれがマルチプ
レクサ60の出力と多重操作させるかの選択は、命令デコ
ード回路52(第3図)によって発生され且つマルチプレ
クサ60の選択SEL入力で受けとられるA−CTL信号によっ
て決定される。
選択された入力は、マルチプレクサ60によって、16ビッ
ト加算器64の2つのオペランド入力66,68の1つに通過
され、且つマイクロプロセサ10をメインメモリ12(第12
図)の適宜のアドレス用回路へ接続させるA−BUSへ通
信される。第2オペランド入力70はハードワイアード
「+1」を受け取る。この構成は、プログラムレジスタ
が常に1だけインクリメントされた値でロードされてい
ることを可能とする。従って、逐次操作の場合、マルチ
プレクサ60はプログラムレジスタ62の出力[P]を選択
し、プログラムレジスタ62をその前の内容に1を加算し
たものて再ロードされる。
プログラムレジスタ62は、CLKとP−EN信号の間に一致
があると、アンドゲート66の出力を受け取る。P−EN信
号は命令デコード回路52によって発生される。
Iレジスタ マルチプレクサ回路60に加えて、プログラムレジスタ62
の出力[P]も又Iレジスタに印加され、これは更に詳
細に第5図に示してある。図示した如く、Iレジスタ
は、4入力(各々が16ビット)多重回路78を有してお
り、その出力はレジスタ80のデータ入力へ印加される。
多重回路78のどの入力1−4をレジスタ80へ接続される
かの選択は、マルチプレクサの選択(SEL)入力におい
て受けとられるI−CTL信号によってなされる。
レジスタ80の16ビット出力[I]は、ゼロテスト回路82
を介して、16ビット加算器84の1(16ビット)オペラン
ド入力へ接続される。加算器84の他方のオペランド入力
は「−1」を受け取る。レジスタ80、ゼロテスト回路8
2、加算器84の組合せは、多重回路78によって与えられ
るフィードバック経路と共に、レジスタ80の内容を増分
的に減少させ(デクリメント)、各デクリメントをゼロ
に対してテストする様な技術を与えている。これは、I
レジスタ回路(即ち、レジスタ80)を、マイクロプロセ
サ操作の繰り返しステップ数をカウントする為のインデ
ックスレジスタとして使用する(例えば、乗算命令の実
行中)ことを可能とし、又これらの繰り返しステップに
対する終端をテストする手段を提供している。
レジスタ80の出力[I]は三状態バッファに接続されて
おり、そこからマイクロプロセサ10をR−BUSへ接続さ
せているI/O端子28へ接続されている。R-ENABLE信号は
一方の状態、即ち高、にある場合に、選択的にレジスタ
80出力[I]をI/O端子28へ連絡させ、且つそれが低で
ある場合には、高インピーダンス状態にある三状態バッ
ファ86の出力によってI/O端子28から該レジスタを切断
する。
I/O端子28は又レシーバ回路88に接続されており、それ
はI/O端子28を多重回路78の入力へ接続させる。三状態
バッファ86とレシーバ回路88の結合は、R−BUSを介し
てのIレジスタ回路とリターンメモリ26(第1図)との
間に2方向通信を与えている。
レジスタ80の内容は種々の命令によって決定される。従
って、レジスタ80内に何が又何時入れられるかを決定す
るのはI−CTLとI−LDである。
Nレジスタ回路 N(次パラメータ)レジスタ回路の詳細を第6図に示し
てある。図示した如く、Nレジスタ回路は5(16ビッ
ト)入力多重回路96、レジスタ98、アンドゲート100を
有している。多重回路96は、その入力1及び2におい
て、ALU(第9図)のTレジスタからの出力[T]、(1
6ビット)入力3における及びマルチプレクサ96のメイ
ンメモリポートM(第7図)からの出力[M]を受け取
り、且つレジスタ98の出力を受け取る(但し、この場合
は特別の態様)。理解される様に、レジスタ98は、レジ
スタ98及びALUのTレジスタによって形成される32ビッ
トレジスタの下位16ビットとして演算命令の或るものに
よって構成することが可能である。その様に構成される
と、そのレジスタ結合は左又は右へシフトさせることが
可能である。左へシフトされると、下位16ビットは、LS
B位置において、ALU(第9図)によって発生されるキャ
リー信号を受け取る。右へシフトされる場合、レジスタ
98のMSBはTレジスタ(T0)のLSBを受け取る。マルチプ
レクサ98を介してのフィードバック経路はこのシフト動
作を実施する。選択されると、マルチプレクサ97の入力
4は、レジスタ98の下位15ビット(即ち、LSB0−MS
B-1)をそのレジスタの入力と多重操作し、従って、ロ
ードされると、その効果は左へのビットシフトである。
同時に、キャリー信号はマルチプレクサ96の入力4にお
いてレジスタ98から15本の出力ラインと結合され、従っ
てLSBはキャリー信号を受け取る。このような態様で、
高位の15ビット(MSB−LSB+1)はマルチプレクサ96の入
力3において出力[T]のLSB(T0)と結合され、レジ
スタ98の内容の1ビット右へシフトを起し、出力[T]
のLSBはMSBの位置へシフトされる。
命令デコード回路52(第3図)によって発生されるCLK
信号と制御オリジナルN−LD信号の間に、アンドゲート
100の2つの入力において、一致があるとローデイング
が行われる。どのマルチプレクサ入力1−5をレジスタ
98へ印加させるかの選択は、これも命令デコード回路52
によって発生される制御信号N−CTLによって行われ
る。
レジスタ98からのNレジスタ回路の16ビット出力[N]
は、制御信号S−ENABLEがアクテイブであると三状態デ
バイス99によってS−BUSへ接続される。データはレシ
ーバ101及びマルチプレクサ96を介してS−BUSからレジ
スタ98へ接続させることが可能である。
メインメモリポートM 第1図の説明の間に示した如く、命令及びデータは、メ
インメモリポートMを介してマイクロプロセサ10によっ
て受けとられるか又は送信される。第7図に更に詳細に
示した如く、メインメモリポートMは、2(16ビット)
入力マルチプレクサ110、(16ビット)三状態デバイス1
12、レシーババッファ114を有している。マルチプレク
サ回路110は2つの(16ビット)出力を受け取る、即ち
Nレジスタ回路(第6図)からの[N]とALU(第9
図)のTレジスタからの[T]である。多重操作された
量(即ち、[N]又は[T])は、制御信号M−CTLに
よって選択されて、マルチプレクサ110によって三状態
デバイス112へ通過され、そこからDATABUSを介してメイ
ンメモリ12へ通信する為にI/O端子13へ通過される。更
に、三状態デバイス112(I/O端子13も)の出力がバッフ
ァ回路114によってメインメモリポートMの出力[M]
としてマイクロプロセサ10の内部回路へ送られる。従っ
て、メインメモリポートMの出力[M]は、三状態デバ
イスが夫々伝達状態にあるか又は高インピーダンス状態
にあるかに従って、(1)Nレジスタ回路出力[N]又
はTレジスタ[T]の選択した1つ、又は(2)メイン
メモリ12からのデータの何れかを表す。三状態デバイス
112の制御は命令デコードユニット14によって発生され
る選択信号M−SELによって行われる。
スタックポインタJ及びK 前述した如く、パラメータ及びリターンスタックS及び
Rの維持は、部分的に、命令デコードユニット14からの
制御信号の少なくとも部分的制御の下でスタックポイン
タJ及びKによって行われる。スタックポインタJ及び
Kは、必要に応じて、スタックへまたはそこからの読取
及び書込に対してパラメータメモリ24及びリターンメモ
リ26へ印加されるアドレス信号を発生すべく機能する。
それらは、書き込まれた最後のメモリ位置を記憶してお
り(且つ、従って、もしスタックが読取又は「ポップ」
された場合にアクセスされるデータの位置である)、且
つ「プッシュ」が行われるとデータが書き込まれる次の
空のメモリ位置のアドレスを用意する。各スタックポイ
ンタJ及びKは2つの8ビットアドレスを発生し、且つ
各々の構造は基本的に同一である。従って、スタックポ
インタJのみに付いて詳細に説明するが、その説明は同
様に特に注記しない限りスタックポインタKにも適用さ
れることを理解すべきである。
従って、第8図を参照すると、そこには詳細にリターン
メモリ26をアドレスする為に使用されているスタックポ
インタJを示してある。図示した如く、スタックポイン
タJは3個の2入力8ビットマイクロプロセサ120、12
2、124と、2個の8ビットラッチ126、128と、出力マル
チプレクサ130とを有している。ラッチ126、128は各々
夫々、アンドゲート132、134によって発生される信号に
よってロードされる。8ビットラッチ126のローディン
グは、CLK信号と共に、命令デコードユニット14によっ
て発生されるJ1−EN信号によってイネーブルされ、一方
8ビットラッチ128はJ2−ENイネーブル信号及びCLK信号
の存在によってロードされる。
マルチプレクサ120の入力2への8ビットラッチ126に対
するフィードバック経路は、デクリメント回路136によ
って与えられており、該回路136は8ビットラッチ126の
出力を受け取り、その出力から「1」を減算し、且つそ
のデクリメントした値をマルチプレクサ120の入力2へ
供給する。同様に、インクリメント回路138は、8ビッ
トラッッチ128の出力を受け取り、1だけ増加し、且つ
その増加した値をマルチプレクサ122の入力1へ供給す
る。8ビットラッチ126及び128の出力もマルチプレクサ
130によってJAバス(それはスタックポインタJをリタ
ーンメモリ26へ接続する)へ伝達される。
前述した如く、スタックポインタJは2つのアドレスを
発生する責務を持っており、それらの第1のものは、最
後の量がストアされているリターンメモリ26のメモリ位
置へ「ポイント」し、又第2のものは、次の値の書込が
行われるメモリ位置にポイントしている。これらの夫々
のポインタを常に維持するのは8ビットラッチ126、128
の機能である。その様に構成されると、8ビットラッチ
の内容は常に1アドレス離れており、即ち、8ビットラ
ッチ128の内容はビットラッチ126のものよりも1だけ大
きく、8ビットラッチ1126の内容は「最後の書込」メモ
リ位置にポイントしており且つ8ビットラッチ128は次
に使用可能な位置へポイントしている。
8ビットラッチ126はTレジスタ(第9図)の出力
[T]から下位の8ビットで予めセットすることが可能
である。[T]の高位の8ビットはラッチ126に対応す
るスタックポインタKの8ビットラッチ(不図示)をプ
リセットする。8ビットラッチ128(及びスタックポイ
ンタKにおける対応部分)はプリセットされず、且つ、
従って、データが読みとられる迄不定である。この様な
読取操作が発生すると、ラッチ128の内容が読取アドレ
スと共にロードされ、且つラッチ126は読取アドレスか
ら1を減算した値がロードされる。
パラメータ及びリターンスタックS及びRは夫々従来の
態様で操作され、即ち、データスタックへ「プッシュ」
(書込)されるか又は「ポップ」(読取)される。プッ
シュは、所望のデータを次に使用可能なメモリ位置に書
込且つ8ビットラッチ126、128をインクリメントさせる
ことによって実行し、ポップは、最後の書込値を読取且
つ8ビットラッチ126、128をデクリメントすることによ
って行われる。パラメータ及びリターンスタックS及び
Rの実際の操作においては、ポップ及びプッシュ操作は
Nレジスタ回路またはIレジスタ回路を使用し、それは
夫々スタックの上部乃至はトップを形成する。以下の説
明はスタックポインタJによるリターンメモリ26の操作
に関するものである。
最初に「プッシュ」操作に付いて考察する。この場合、
Iレジスタ回路の出力[I]はリターンスタックRの残
りの部分、即ちリターンメモリ26によって実施されるリ
ターンスタックの部分、に加算される。Iレジスタの内
容が配置されるべきメモリ位置は8ビットラッチ128の
内容によって見出すことが可能である。従って、命令デ
コードユニット14は、書込信号を高とさせ、それはマル
チプレクサ130をして8ビットラッチ128の出力を選択さ
せ、その出力はJAバスを介してリターンメモリ26のアド
レス回路へ印加される。同時に、書込信号はマルチプレ
クサ122をして8ビットラッチ128のデータ入力へ印加す
る為にその入力1を選択させ、且つマルチプレクサ124
の入力2へ印加する為にマルチプレクサ120をしてその
入力1を選択させる。この時、読取信号は低であり、マ
ルチプレクサ124をしてその入力2を8ビットラッチ126
と連絡させる。従って、第8図から分かる如く、書込信
号が高となると、マルチプレクサ120、122、124は、
(1)8ビットラッチ128の内容に1を加算した値をそ
のラッチのデータ入力へ印加し、(2)8ビットラッチ
128の内容を8ビットラッチ126のデータ入力へ印加さ
せ、(3)8ビットラッチ128の内容をリターンメモリ2
6のメモリ回路へ印加する。J1−EN及びJ2−EN信号は命
令デコードユニット14によって高とされるので、8ビッ
トラッチ126、128によって取り込まれるポインタは1だ
けインクリメントされ、一方所望の値はCLK時間でメモ
リ内に書き込まれる。
以下の如く、データはリターンメモリからIレジスタ内
に「ポップ」される。命令デコードユニット14によっ
て、読取信号が高とされ、、且つ書込信号は低に維持さ
れる。書込(WRITE)が高で読取(READ)が低なので、
マルチプレクサ120、124の各々はそれらの入力を選択し
ており、その際に8ビットラッチ126の内容−1をその
データ入力へ戻し、且つマルチプレクサ122はその入力
を選択して8ビットラッチ126の内容を8ビットラッチ1
28へ伝達させる。マルチプレクサ130はその入力を選択
し且つ8ビットラッチ126の内容をリターンメモリ26の
メモリ回路(不図示)へ附与する。次に続くCLKパルス
が現れると、命令デコードユニットからの適宜のコマン
ド信号を仮定して、即ちJ1−EN,J2−EN高、9ビットラ
ッチ126、1218に包含されるアドレスポインタはデクリ
メントされる。注意すべきことであるが、このポップ操
作は、リターンメモリ26からR−BUS上に残るデータを
レジスタ80(第5図)をして受けとらせ且つ維持させる
為に、命令デコードユニット14によって発生される必要
な制御信号が付随する。即ち、I−CTL信号はマルチプ
レクサ78の入力3を選択し、I−LD信号が高でR−ENAB
LE信号が三状態デバイス86をその高インピーダンス状態
とさせるので、Jスタックポインタをデクリメントする
CLK信号の到着と共に、レジスタ80も「ポップ」した量
でロードされる。
ALUとTレジスタ 第9図に詳細に示したものは、マイクロプロセサ10のAL
Uである。第10A図と第10B図は、更に詳細に、ALUの心臓
部である演算論理回路144を示している。最初に第9図
を参照すると、ALUは、4入力マルチプレクサ142、演算
論理回路144、前述したT(パラメータのトップ)レジ
スタ、ゼロ検知回路146、Tレジスタに対してロード信
号を発生する(命令デコードユニット14とCLK信号から
T−EN信号から)アンドゲート148、キャリーフリップ
フロップ150を有するものとして示してある。演算論理
回路144は、基本的に、16ビット構成であり、それには
2つのオペランド入力144a,144bが具備されており、こ
れらは夫々Tレジスタ(ゼロ検知回路146を介して)及
びマルチプレクサ142からの出力[T]及び[U]を受
け取り、[T]と[U]の和、[T]と[U]の差、
[U]と[T]の差、[T]自身、[T]と[U]の論
理オア、[T]と[U]の論理アンド、又は[T]と
[U]の排他的オアを供給する。
演算論理回路の出力はバスライン154によってTレジス
タの入力へ接続されており、そのバスラインは演算論理
回路144のオペランド入力144a,144bで受け取られた値に
関して演算又は論理操作を行った結果を通信する。
演算論理回路144もOP−SELECTを受け取り、その結果
(上に示した)はバス154とL−SHIFTとR−SHIFTに伝
達され、これらは、以下に説明する理由から、該結果を
1ビット左及び右へシフトさせる機能を行う。
一般的に、従って、ALUは4つの量を受け取る。即ち、
命令デコードユニット14(第3図)からの[SL]、レジ
スタ乗算/除算202(第12図)からの出力[MD]、Nレ
ジスタ回路(第6図)からの出力[N]、多種の内部レ
ジスタ(第12図)からの出力[G]であり、これらに付
いて更に詳細に以下説明する。注意すべきであるが、演
算論理回路144を介して、Iレジスタか又はNレジスタ
回路のいずれかからTレジスタへの16ビット幅通信経路
を確立するのはマルチプレクサ142である。更に注意す
べきであるが、Tレジスタの出力[T]はIレジスタと
Nレジスタの両方に伝達される。命令デコードユニット
14からの適宜の信号により、Nレジスタ回路を有するパ
ラメータスタックSからの情報はTレジスタへ逐次供給
されることが可能であり、一方、Iレジスタを介しての
リターンスタックRからの情報はTレジスタへ伝達させ
ることが可能である。特に注意すべきことは、このデー
タ経路は、パラメータメモリ24内にストアした情報を、
必要に応じ、リターンメモリ26へ転送することが可能で
あり又その逆も真であるという事実である。更に注意す
べきことであるが、第1図に36,38として示したスワッ
プ経路は、マルチプレク142とマルチプレクサ96(スワ
ップ経路36)とマルチプレクサ78(スワップ経路38)に
よって確立されるということである。
理解される如く、命令の幾つかは「ゼロ」に対してTレ
ジスタの内容をテストし、操作を継続するか又は別の命
令オプションを選択するかを決定する。従って、ALUの
演算論理回路144へのTレジスタからの(16ビット)デ
ータ経路は、ゼロ検知回路146を有しており、それは、
出力[T]が0の時に「T=0」を発生する。第3図に
示した如く、T=0は命令デコードユニット14の命令デ
コード回路52への入力である。
演算論理回路144を第10A図に詳細に示してある。図示し
た如く、演算論理ユニットは、16個の相互接続した段を
有しており、各段は当業者等にとって公知の態様で構成
されており、演算論理回路を表すのに必要な演算及び/
又は論理信号を発生する。従って、例えば、第10B図に
示した如く、個別の演算論理段Ynは、そのオペランド入
力[Un]及び[Tn]から(直ぐ下位の段Yn-1からキャリ
ーがある場合は共に)、項Un,Tn,(Tn+Un),(Tn−U
n),(Un−Tn),(TnオアUn),(TnアンドUn),及
び(Tn排他的オアUn)を発生する。これらの段Y0乃至Y
15の各々の出力は、夫々、対応するマルチプレクサ160
(Y0)乃至160(Y15)に印加される。出力マルチプレク
サ160(Y0)乃至160(Y15)の各々は3ビットバスを受
け取り、それは選択信号OP−SELECTを担持している。こ
のOP−SELECT信号は、どの項が選択されるべきかを支配
するデコードされた命令に応答して命令デコードユニッ
ト14によって発生される。
再度第10A図を参照すると、マルチプレクサ160(Y0)乃
至160(Y15)の各々の出力は更に別の対応するマルチプ
レクサ160(Y0)乃至160(Y15)の各々へ供給される。
更に、マルチプレクサ160(Y1)乃至160(Y14)の各々
の出力ラインは直下及び直上のビット位置のマルチプレ
クサに接続されている。従って、例えば、マルチプレク
サ160(Yn)からの出力ラインは、関連するマルチプレ
クサ162(Yn)の入力2に印加されるのに加えて、マル
チプレクサ162(Yn-1)の入力1及びマルチプレクサ162
(Yn+1)の入力3にも印加される。演算論理段Y0及びY
15に対するマルチプレクサの唯一の違いは、マルチプレ
クサ162(Y0)が入力3でキャリーイン(Ci)を受け取
り、且つマルチプレクサ162(Y15)が入力1においてマ
ルチプレクサ164の出力を受け取り、それが4つのあた
えらえる信号、即ちマルチプレクサ160(Y15),キャリ
ー,NレジスタからのLSB,No,又は「ゼロサイン」の1つ
を選択する。マルチプレクサ162(Y15)の入力1にどの
信号を結合させるかの選択は、命令デコードユニット14
(第3図)によって発生されるCTLONE信号によってなさ
れる。
マルチプレクサ162(Y0)乃至(Y15)は、1ビット左シ
フト、1ビット右シフト、又はシフト無しと、演算論理
段Y0乃至Y15からの結果に基づいて機能する。更に、マ
ルチプレクサはTレジスタを介して符合ビット(即ち、
MSB)を伝播させるべく機能する。1ビット左シフト操
作は、命令デコードユニット14によって発生される信号
L−SHIFTが高(R−SHIFT信号は低とされる)の時に行
われ、キャリー(Ci)はLSB位置へシフト動作され、一
方右シフト操作はR−SHIFT信号が高(L−SHIFTは低)
の時に実行され、マルチプレクサ160(Y15)の出力か、
フリップフロップ150(第9図)からのキャリー(CARR
Y)信号か、NレジスタのLSBか、N0又は段Y15の想像上
の出力が「ゼロ」であるかを伴い、又L−SHIFTとR−S
HIFTの両方の信号が低であると、マルチプレクサ160(Y
0)乃至160(Y15)の出力が対応するマルチプレクサ162
(Y0)乃至162(Y15)によって通過される。選択された
結果はバスライン154によって受けとられ且つTレジス
タ(第9図)へ伝達される。
符合ビット伝播は高、信号>0によって行われる。これ
は、マルチプレクサ162(Y0)乃至162(Y15)をそれら
の入力2をバスライン154へ連結させる。各マルチプレ
クサ160(Y0)乃至160(Y15)の入力2はマルチプレク
サ160(Y15)によって通過されたMSBビットを受け取
る。
その他の内部レジスタ マイクロプロセサ10は、ALUへの2方向通信「スワッ
プ」経路(マルチプレクサ142経由)と共に、その他の
レジスタを具備している。これらのレジスタを第12図に
示してあり、乗算/除算(MD)レジスタ214、平行根(S
R)レジスタ204、Bレジスタ206、Xレジスタ206があ
り、これらは全てTレジスタの出力[T]からプリセッ
ト可能である。これらのレジスタの出力はGマルチプレ
クサ210を介してALUへ選択的に伝達される。
第12図も平方根論理回路220を示しており、それはMDとS
Rレジスタの出力を受け取り、MDレジスタ202の内容と、
2だけシフトされたSRレジスタ204の内容の論理オアを
供給する(16ビット信号[M/S]として)。
命令セット マイクロプロセサ10の回路に付いて説明したので、命令
セットに付いて表I-XIVを参照して説明する。
命令は、大略、4つの種類に分けられる。(1)演算グ
ループは、演算操作を実施する命令を包含するグループ
I及びIIの命令を包含する。(2)ジャンプグループは
条件付又は絶対的プログラムジャンプを与える命令を包
含する。(3)インデックス命令は基本的に「セットア
ップ」命令又は繰り返し操作を行う命令である。(4)
データフェッチ/ストア命令は、種々の空間、レジスタ
等の間で情報を転送する命令である。
理解される如く、その操作のみならず、各命令に使用さ
れるニーモニックスはFORTHプログラミング言語及び概
念を可及的に利用する。
演算命令 表I及びIIは、マイクロプロセサ10(第1図)又特にそ
のALU(第9図、第10A図、第10B図)が演算操作を実行
するのに使用される命令を記載している。
最初に表Iを参照すると、そこには、オペランドコード
と、ニーモニックと、基本的な演算命令一層複雑な演算
命令、即ち1マシンサイクルで複数個の操作を達成する
ことが可能な命令、の各々に対する操作乃至は作業の簡
単な説明が示されている。
命令の実行のみならず、回路の動作、実際上、命令のオ
ペランドコードビット構造に応答して必要な制御信号
(第3図に関連して示したもの等)を動作させる為に命
令デコード回路52(第3図)にセットされるのに必要な
コーデイングを良く理解する為に、最初の幾つかの命令
は第1図乃至第112図に示した回路で説明する。
随って、第1図を参照すると、操作無し(NO OP)命令
は正にそのままであって、何の操作も行わず、それは
「無」命令である。DROP命令は、Nレジスタ、即ちレジ
スタ98(第6図)の内容を、マルチプレクサ142、演算
論理回路144(及びマルチプレクサ160、162)を介して
転送させる。命令デコード回路52は、従って、制御信号
ALU−CTL,OP−SELECT,L−SHIFT,R−SHIFT,T−ENABLEを
介して適宜のデータ経路をセットアップする。この8及
びその他の)命令のタイミングの例示として、命令が時
間T0に命令ラッチ50にラッチされたと仮定する(第11
図)。第11図に示されたDECODE時間の間に、命令デコー
ド52は命令ラッチ50からの命令を知覚し、その命令をデ
コードし、前述した必要なゲート及びコマンド信号を活
性化させてTレジスタへの適宜のデータ経路をセットア
ップする。時間T1において、命令ラッチ50内に次の命令
をラッチすると、CLK信号(アンドゲート48を介しての
T−ENと共に)が転送された情報をTレジスタ内にセッ
トする。
DROP命令もパラメータスタックSを「ポップ」させる。
従って、内部ゲート及び命令デコード回路52から発せら
れたコマンド信号は、スタックポインタJ(第8図)の
8ビットラッチ128に対応するスタックポインタK(不
図示)のゲートビットラッチによって指定されたメモリ
位置(DROP命令の実行時)をマルチプレクサ196を介し
てレジスタ98へ導通させ、CLK信号の次の上昇端、即ち
上述した例の時間T1でその中にロードされる。
DROP DUP命令は基本的にDROP命令と同じであるが、パラ
メータスタックがポップされない点が異なる。従って、
DROP DUP命令の完了時には、Nレジスタの内容はTレジ
スタのものと同一である。
DROP命令はTレジスタの内容をパラメータスタックS上
に「プッシュ」する。従って、この命令の実行は、レジ
スタ98との通信の為にTレジスタの出力[T]を選択す
る為にマルチプレクサ96(第6図)の入力1を必要とす
る。I/O端子22上にあるので、出力[N]はS−BUSのパ
ラメータメモリ24(第1図)と通信する。次のCLOCK信
号(及び、それから派生されるCLK信号)において、T
レジスタの内容がNレジスタ内にロードされ、同時に、
Nレジスタの(前の)内容は8ビットラッチ128のKス
タックポインタの対応箇所によって指定されるメモリ位
置でパラメータメモリ24内にロードされ、且つスタック
ポインタKの8ビットラッチ(不図示)は1だけインク
リメントされる。
OVER命令は、ALUのTレジスタとNレジスタの間で第1
図に示した2方向通信36を利用する。この命令の説明の
為に、時間T0(第12図)の直後に、Tレジスタの内容は
T(0)であるとし、Nレジスタの内容はN(0)であ
るとする。時間T1(第11図)の直後において、Tレジス
タの内容はN(0)であり、Nレジスタの内容はT
(9)であり、パラメータメモリ24に包含されるパラメ
ータスタックSの部分の上部のメモリ位置はN(0)を
有している。この命令は、マルチプレクサ96(第6図)
をしてTレジスタから出力[T]を選択させ、マルチプ
レクサ142(及び演算論理回路144)がTレジスタと通信
すべきNレジスタの出力[N]を選択し且つ通信し、且
つ必要なレジスタ及びメモリをロードさせる為に適宜の
読取コマンド(不図示)をパラメータスタックメモリ24
へ伝達させる為に、必要な内部ゲート動作及びコマンド
信号が命令デコード回路52によって発せられることを必
要とする。
SWAP命令も同時的な2方向データ経路36を使用してお
り、且つマルチプレクサ142と演算論理回路144をNレジ
スタの出力[N]をTレジスタと通信させ、同時にTレ
ジスタの出力[T]をマルチプレクサ96を介してNレジ
スタのレジスタ89と通信させる。その効果は、N及びT
レジスタの夫々の内容を「スワップ」即ち交換させる。
+命令は、N及びTレジスタの内容を加算し、その結果
をTレジスタ内に残し、待つパラメータスタックSをN
レジスタ内に「ポップ」させ、スタックポインタJ(第
9図)のものと対応するスタックポインタKの8ビット
レジスタ(不図示)が各々1だけデクリメントされる。
+c命令は、ALU(第9図)のフリップフロップ150から
のキャリー信号を使用する。キャリー信号はALUのCi入
力へゲート動作され、従ってNレジスタの内容をTレジ
スタの内容へ加算する操作が前の命令からのキャリーも
共に実行され、且つパラメータスタックSがポップされ
る。
−命令は、実行されるのが減算であり、且つTレジスタ
の内容がNレジスタから減算されるという点を除いて+
命令と同じである。この時点において、各個別の段Y0
至Y15は全て必要な演算(即ち、加算と減算)操作を実
行し、従って各段の出力においては前述した第10B図に
おける様な動作であるということを指摘しておくことが
適切であると思われる。特定の操作は、命令デコードユ
ニット14の命令デコード回路52によって発生されるOP−
SELECT信号によって選択される。従って、第10B図に示
した演算論理段Ynの場合、+命令はOP−SELECT信号を所
定の状態とさせて、マルチプレクサ160(Yn)をして第
2マルチプレクサ162(Yn)へ通過させる項(Tn+Un)
を選択する(第10A図)。勿論、Uオペランドは、実
際、マルチプレクサ142(第9図)を介してのNレジス
タ回路からの出力[N]である。同様に、−符合命令
は、OP−SELECT信号の発生を介して、(Un-Tn)を選択
する。
表Iに示した如く、−cは、キャリーを考慮して、Tレ
ジスタの内容かNレジスタ回路(即ち、レジスタ98)を
減算する操作であり、結果はTレジスタ内に残される。
パラメータスタックSはポップされる。
SWAP-及びSWAP-cは、実際上、上述した−及び−c命令
と同じであるが、結果は、[U]オペランドをTレジス
タの内容から減算することによって得られる点が異な
る。第10B図を参照すると、OP−SELECT信号がマルチプ
レクサ160(Yn)及びその他のマルチプレクサを動作さ
せる。
OR,XOR,及びANDは論理操作を実行し、命令デコードユニ
ット14によって発生される内部ゲート動作及びコマンド
信号を介して必要なマルチプレクサの選択がなされる。
2/及び2*は、マルチプレクサ162を使用して、左及び
右へのシフト動作を行う(第10図A図)。2/命令は、R
−SHIFT及びCTL1信号を活性化させ、従って各マルチプ
レクサ162(Y14)乃至162(Y0)がそれに対応する入力
1を選択する。MSBマルチプレクサ、162(Y15)、はそ
の入力1にマルチプレクサ163からのN0を受け取る。2
*命令は、L−SHIFT及びC−CTL信号を動作させて、マ
ルチプレクサ162(Y0)乃至(Y15)及び165を操作させ
て実効的にTレジスタの内容を1ビット左へシフトさ
せ、MSB,NレジスタのN15はNレジスタのLSB位置にシフ
ト動作される。
0<命令は、Tレジスタを介して符合(即ち、MSB)を
伝播させる機能を行う。
D2/及びD2*命令は、Tレジスタが最大桁16ビットを有
して恰も結合された32ビットレジスタが存在するかの様
に、N及びTレジスタの両方を左及び右に1ビットシフ
トされる。Tレジスタの左及び右シフトは2/及び2*命
令に関して上に説明した如く実行される。Nレジスタの
シフトはマルチプレクサ96とレジスタ98からのフィード
バック経路を使用して実行される。左シフトが実行され
ると、マルチプレクサ96の入力4がN−CTL信号によっ
て選択され、レジスタ98の内容の1ビット左へシフトさ
せ、キャリーはLSB位置へシフトされる。右シフトが行
われると、N−CTL信号が入力3の選択に影響を与える
(そこで、レジスタ98の下位の15ビット位置はレジスタ
98に伝達され高位の15ビット位置はLSBとしてT0と結合
される)。
*!、*−、及び*F乗算命令は、T及びNレジスタ
(第6図及び第9図)を乗算/除算(MD)レジスタ(第
12図)と共に使用する。然し乍ら、これらの命令が使用
される前に、データ転送命令(後述)がMDレジスタ202
内に乗数を入れ且つ被乗数をNレジスタ内にいれ、且つ
Tレジスタをクリアする。乗算命令*!の実行は、MDレ
ジスタ202を、ALU14(ここでは入力[MD]として現われ
る)のマルチプレクサ142を介して通信させ、且つオペ
ランド入力[U]として演算論理回路144へ印加され、
且つ、もしNレジスタのLSBであるN0が「1」である場
合には、Tの内容へ加算される。前述したセットアップ
と同時に、T及びNレジスタはそれらの内容を1ビット
左へシフトさせてロードされる。
符合付乗算ステップである*−の操作は、N0が「1」で
ある場合に、MDレジスタ202の内容がTレジスタのもの
から除算されるということを除いて、同一である。次
に、分数乗算ステップである*Fは、左シフトが行われ
る以外は、符合付乗算ステップと同一である。
除算ステップである/′は、MDレジスタの内容をTレジ
スタの内容から減算する。この減算の結果が負であると
(そのことは演算論理回路からのキャリーで表され
る)、結果は破棄され、T及びNレジスタで形成された
32ビット結合は1ビット左へシフトされ、キャリー信号
がNレジスタのLSB位置にシフトされる。結果が負でな
ければ、それはロードされ、1ビット左へシフトされ、
Tレジスタ内に入れられる(Nレジスタのシフトに並行
して)。
乗算及び除算ステップは、遭遇した時に一度だけ行われ
る。繰り返し操作はTIMESインデックス命令(表IV)を
後述する態様で且つIレジスタに関連して使用する。然
し乍ら、除算操作は、処理の最後の除算ステップに特別
の取り扱いを必要とし、従って、最終除算ステップ命令
/″が設けられている。。この命令は、Tレジスタのシ
フトで実行が終了することは無くNレジスタのみが1ビ
ットシフトされるということを除いては、除算ステップ
命令/′と基本的に同一である。
上に示した表IIの結合演算命令は、基本的に表Iに関し
て説明したものと同一であるが、その設計に起因して、
或る命令は1つのブロックサイクルで行われる様に結合
することが可能である点が異なっている。従って、例え
ば、OVER+は、表IのOVERと+との2つの命令を結合さ
せて、レジスタN及びTの内容を加算させ且つTにロー
ドさせている。Nレジスタの内容とパラメータスタック
Sの残部は不変のままである。同様に、OVERと+cはN
レジスタの内容をキャリーと共にTレジスタの内容に加
算し、その結果は、Tレジスタによって保持される。再
度、Nレジスタの内容を有するパラメータスタックSは
不変のままである。
ジャンプ命令 1つのメモリ位置から別のメモリ位置へのジャンプは、
主にサブルーチンのコールとリターンの場合であるが、
このサブルーチンは深くネスト化されることがあり、FO
RTH言語にとって固有的なものである。本発明のマイク
ロプロセサ10は、リターンスタックRと共に、この様な
メモリジャンプを行うのに最適化した装置を提供してい
る。下の表IIIは、5つのジャンプ命令の各々の場合
の、操作コードと、ニーモニックスと、機能とを示して
いる。
最初の4つの命令、即ち:wordとIFとELSEと‐LOOPは、
全て命令自身の中に埋め込まれて(OP CODE内にa...aa
として示してある)、ジャンプが発生するメインメモリ
12のメモリ位置のアドレスを持っている。
最初に、:word命令を参照すると、これはサブルーチン
へのジャンプであるから、2つの操作が要求される。第
1に、リターン経路が確立されねばならず、第2に、ジ
ャンプアドレスはメインメモリ12(第1図)をアドレス
する為にA−BUS上にジャンプアドレスが配置されねば
ならない。従って、クロックサイクルのデコーデイング
及びセットアッププロセスの間、プログラムカウンタP
(又は、更に詳細には、その中に包含されているプログ
ラムレジスタ62)は、ジャンプが行われなかった場合に
実行されるであろう次の順序の命令のアドレスを有して
いる。このアドレスは格納されねばならない。従って、
プログラムレジスタ62の出力[P]がIレジスタ回路の
レジスタ80へ印加される為にマルチプレクサ78(第5
図)によって選択される。更に、ラッチ50(第3図)の
出力[L]がA−BUSへ及びプログラムレジスタ62へ印
加される為にマルチプレクサ60(第4図)によって選択
され、加算器64によってインクリメントされる。その際
に、ジャンプがサブルーチンのアドレスへなされ、該サ
ブルーチンの次の順番のアドレスがプログラムレジスタ
62内にセットされ、且つリターンアドレスがIレジスタ
回路においてリターンスタックR上に「プッシュ」さ
れ、8ビットラッチ126、128は1だけインクリメントし
て自動的にスタックのプッシュ動作を行う。
リターンは;命令を使用することによって実行され、そ
れは命令ワードの6番目のビット(LSBが1番目のビッ
トで、LSB+1が2番目のビット等)であり、このリタ
ーンを行う為にはその他の命令内に「埋込」とさせるこ
とも可能である。従って、全てのサブルーチンは任意の
命令で終了することが可能であり、その6番目のビット
(それは通常「0」であるが)を「1」にセットしてこ
れにより最後の命令を実行すると同時に必要なリターン
動作を行わせる。
このリターンは、Iレジスタ回路のレジスタ80の出力
[I](これがリターンアドレスを有している)をマル
チプレクサ60を介してA−BUSへ通信させることによっ
て行われ、従って、デコード/セットアップ時間の終了
時に、パラメータスタックRは「ポップ」され、且つ出
力[I]で示されたメモリ位置の内容がメインメモリポ
ートMによって命令デコードユニット14へ通過され且つ
ラッチ50内にロードされる。
Tレジスタを0に対してテストした後に、IF命令はジャ
ンプを行う(ジャンプしていく先のアドレスは[L]の
低位12ビット及びプログラムレジスタ62の高位4ビット
から形成される)。従って、出力T=0は、ALU(第9
図)のゼロ検知回路146から命令デコード回路52(第3
図)へ結合され、且つ、ラッチ50の内容と関連して、使
用されて、ジャンプを行うべきか否かを決定する。Tレ
ジスタの内容が、実際に、0であると、:word命令に関
して説明したのと同様にジャンプが行われる。そうでな
い場合には、プログラムレジスタの内容がA−BUSと結
合される。
LOOP命令は、IF命令がT=0信号を使用するのとかなり
同じ態様でIレジスタ回路(第5図)のゼロテスト回路
82によって発生されるI=0を使用する。I=0の条件
が不成立の場合には、ジャンプが行われ、且つレジスタ
80がその前の内容−1でロードされ、即ち、レジスタの
内容は加算器84及びマルチプレクサ78の入力4を介して
デクリメントされる。
ELSE命令は条件付きジャンプである。この命令は常にマ
ルチプレクサ60(4)をしてA−BUSと連結すべき命令
デコードユニット14からの出力[L]を選択させる。
インデックス命令 本マイクロプロセサによって実行することが可能な或る
繰り返し操作は、下に表IVとして揚げた4つのインデッ
クス命令によってセットアップされる。これらの命令は
Iレジスタ回路のレジスタ80内にインデックスをセット
し、その内容が0になる迄レジスタ80を繰り返し(各ク
ロックサイクル)デクリメントすることによって行われ
る繰り返し回数を監視する為に究極的に使用される。
I命令は、Iレジスタ(即ち、レジスタ80−第5図)の
内容をパラメータスタックSにプッシュする。この命令
のデコード及びセットアップ時間の間に、出力[I]が
マルチプレクサ142及び演算論理回路144を介してTレジ
スタに結合される。出力[I]をTレジスタへ通過させ
る為に、マルチプレクサ160(Y0)乃至160(Y15)がバ
スライン154との連絡にUオペランドのみを選択すべくO
P−SELECTによってセットされる。更に、Nレジスタの
出力[N]はパラメータスタックS上にプッシュされ、
一方Nレジスタのレジスタ98はTレジスタの出力[T]
を受け取る。
R>及び>R命令は、リターン及びパラメータスタック
R及びSの間をALUを介してデータを移動させる機能で
ある。R>命令は、Iレジスタ回路とNレジスタ回路を
介してリターンメモリ26からデータをパラメータメモリ
24へ移動させその動作は以下の如き同時的操作である。
即ち、スタックポインタJ(第8図)の8ビットラッチ
128の内容によって表わされる如く、リターンメモリ26
の上部乃至は頂部(トップ)メモリ位置の内容は、Iレ
ジスタ回路(第5図)のレジスタ80内に読み込まれる。
Iレジスタ回路の出力[I]はマルチプレクサ142及び
演算論理回路144を介して通過させTレジスタへ送られ
そこにロードされる。Tレジスタの出力[T]は、マル
チプレクサ96(第6図)を介してNレジスタのレジスタ
98へ通過され、且つその中にロードされる。Nレジスタ
出力[N]は、スタックポインタjの8ビットラッチ12
6に対応するスタックポインタKの8ビットラッチ(不
図示)で示した如く、パラメータメモリ24の次に使用可
能なメモリ位置内にロードされる。
命令>Rは、基本的に、同一のパラメータ移動を行うわ
けであるが、データはパラメータスタックSからALUを
介してリターンメモリ26へ移動される点が異なってい
る。
TIMES命令は、マイクロプロセサ10の繰り返し動作を開
始させる。TIMES命令が使用可能である為には、少なく
とも1つの前提条件が満足されねばならない。Iレジス
タ回路はインデックス、即ち所望の繰り返し数を表す数
(−2)、を有するものでなければならない。TIMES命
令に続いて、繰り返し行うべき命令がなければならず、
例えば、表Iを参照して上述した乗算、除算、又は平方
根命令の1つ(これらの命令は、TIMES命令と共に使用
されるのでない限り単一ステップに過ぎない)か、又は
上述したデータフェッチ又はストア命令の1つ主要な命
令である。
Iレジスタ回路内に含まれるべきインデックスは、実際
の所望の繰り返しステップ数よりも2つ少ない。この理
由は、以下の繰り返し操作の説明から明らかとなる。
TIMES命令が受けとられ且つ命令デコードユニット14に
よってデコードされると、命令デコード回路52内に含ま
れているリピートフラグ又はフリップフロップ(不図
示)がセットされ、メインメモリ12がもう一度アクセス
されて次の順番の命令の検索がなされ、ここではこれが
繰り返し実行されるものである。従って、TIMES命令に
続く命令デコードユニット14のラッチ50内にロードし且
つデコードされ、且つ実行が開始される。命令の各実行
は命令デコーダ回路52によるI=0信号のテストにおい
て終了する。この信号が真でないと、Iレジスタ回路の
レジスタ80が上述した態様でデクリメントされ、且つラ
ッチ50内に保持された命令が再度実行される。Iレジス
タ回路のゼロテスト回路82からのI=0が最終的に真と
なると、その命令が繰り返しのプロセスが開始された時
にレジスタ80の内容によって表される繰り返し回数に1
を加えた(この1回の実行は、I=0のテストは命令実
行の後に行われるという事実に鑑みてのものである)回
数行ったことになる。次のクロック(及び、それから派
生されるCLK信号)が検索されると、命令デコードユニ
ット14の命令デコード回路52内に包含されるリピートフ
ラッグ(不図示)がリセットされるが、命令はもう1回
実行される。
データ転送命令 データ転送命令は、マイクロプロセサ10と、メインメモ
リ12、I/Oポート30及びそれに接続されたいずれかの外
部要素、との間及びマイクロプロセサの種々の内部レジ
スタ間でのデータ転送に関するものである。然し乍ら、
これらの主眼点は、Iレジスタ回路の内容であり(TIME
S命令を使用する爾後の繰り返し命令の実行の為に)、
且つそれよりは低い程度では、ALUのTレジスタであ
る。
データ転送命令のカテゴリは、転送されるべきデータを
有する命令、転送されるべきデータが滞留するメインメ
モリ位置12アドレスを有する命令、メモリ位置アドレス
を意味する命令、及び拡張アドレス操作において5ビッ
トX−BUSを使用することの可能な命令、を有してい
る。
上揚の如く、表V及び表VIにおいては、これらの命令
は、マイクロプロセサ10内の位置へデータを転送する命
令である。短リテラルフェッチ命令はTレジスタ内に結
果をロードするか又は残存させ、且つそのレジスタの以
前の内容をパラメータスタック上にプッシュするか又は
該スタックをポップする。従って、nn命令は、命令デコ
ード回路52をしてALUのマルチプレクサ142の入力1へ印
加される[SL]として命令の中に埋め込まれた5つのビ
ットを出力させる。ALU−CTL信号は、[SL]を16ビット
データワードとして演算論理回路144のオペランド入力1
44bへ転送し、その下位5つのビットはnn(即ち、[S
L])であって、且つ11個のゼロ高位のビットがある。
同時に、Tレジスタの内容はパラメータスタック上にプ
ッシュされる(即ち、Tレジスタの内容がIレジスタ回
路のレジスタ80内にロードされ、且つJスタックポイン
タの8ビットラッチ128に対応するKスタックポインタ
の8ビットラッチによって表される如く、レジスタ80の
内容が次に使用可能なメモリ位置にストアされ、且つK
スタックポインタはインクリメントされる。)。
nn+命令は、[SL](即ち、nnの5ビット)及びTレジ
スタ内にロードしてあるTレジスタの内容の和を発生さ
せる。
nn+c,nn−,nn−c、は同様の命令であるが、cの存在
する場合には、それは、Tレジスタと5ビット[SL]と
の間の内容の和又は差と加算される。
nnOR,nnXOR,nnAND命令は[SL]とTとの間に論理操作を
起こさせ、その結果をTレジスタにロードする。
全リテラルフェッチ命令(表VI)は、メインメモリ12か
らマイクロプロセサ10への直接的なデータ転送を包含し
ている。従って、例えば、n命令は、アクセスされたメ
モリ位置の内容を、nレジスタ回路(即ち、レジスタ80
(第5図))におけるパラメータスタックS上にプッシ
ュされる様にさせる。この命令と実行の2番目のサイク
ルは、Tレジスタとレジスタ98とが内容を「スワップ」
するので、従ってこの2サイクル操作の実行が終了する
と、Tレジスタはアクセスされたデータを収納してお
り、レジスタ98Tレジスタの以前の98内容を収納してお
り、且つレジスタ98の以前の内容はパラメータスタック
S上にプッシュされている。
この命令の実行をより詳細に説明する為に、第11A図を
参照し、CLOCK(即ち、CLK)信号がT3時間にこの命令が
ラッチ50内にラッチされるものと仮定する。デコード時
間T4中、命令がデコードされ、プログラムカンタP(第
1図)がインクリメントされ、且つ所望のデータを収納
している次の順番のメモリ位置のアドレスをマルチプレ
クサA及びA−BUSを介してメインメモリ12へ伝達す
る。これに応答して、印加されたアドレスによって指定
されたメモリ位置内の収納されているデータはデータバ
ス13上に乗せられ、メインメモリポートMによって通過
され、且つ、[M]の如く、Nレジスタへ印加され、且
つマルチプレクサ96を介してレジスタ98へ伝達される。
次のクロックパルスで、即ち時間T5(第11A図)におい
て、所望のパラメータがレジスタ98内にロードされる。
又、時間T5において、ラッチ50へのCLK信号はEN−CLK信
号によって禁止され、従って、ラッチ50はn命令を保持
する。命令デコード回路52デコードサイクルを継続し、
Tレジスタの内容と加算されるべくマルチプレクサ142
を介して演算論理144のオペランド入力144bへNレジス
タの出力[N]を導通させるのに必要な内部ゲート動作
及びコマンド信号を発生する。T6として示されている時
間において、Nレジスタ回路の出力[N]はT内にロー
ドされる。
残りの命令は同様であり、且つ或る程度自明であるが、
これらは、事実上、パラメータスタックSのプッシュを
包含しないものである。例えば、n+c命令は、メモリ
からフェッチされたデータヲキャリーと共にTレジスタ
に加算する。n−命令は、メモリからフェッチしたデー
タをTレジスタの内容から減算し、且つその内容をTレ
ジスタ内にロードし、又n−c命令は、キャリーの加算
が加わったものである。SWAP FULLリテラルフェッチ命
令は、メモリアクセスを行う前にN及びTレジスタの内
容を論理的にスワップ(交換)するものであり、従っ
て、該パラメータは次いてTレジスタから減算される。
論理機能のOR,XOR,ANDは、メモリからフェッチされたデ
ータをTレジスタの内容と論理的に結合させ、且つその
結果をTレジスタ内にストアする。
次に示す表は、データフェッチ(表VII)であり、Tレ
ジスタの内容をメモリ位置アドレスとして使用してメイ
ンメモリ12からデータをフェッチする。従って、例え
ば、@命令はTレジスタの出力[T]を、この2サイク
ル命令の第1のクロックサイクルの間に、マルチプレク
サ60(第4図)を介してA−BUSへ伝達される。メイン
メモリ12のアドレスされたメモリ位置はDATA BUS13及び
メインメモリポートMを介して通信がなされ、メインメ
モリポートMの出力[M]としてNレジスタ(第6図)
のマルチプレクサ96へ印加され、且つ、第1サイクルの
終端において、レジスタ98内にロードされ、尚その際同
時にレジスタ98の前の内容がパラメータスタックS上に
プッシュされる。第2サイクル期間中に、TとNとがス
ワップされる。
上記の@+,@+c,@−,@−c,@SWAP−,@SWAP−c,
@OR,@XOR,@AND,命令は、メモリフェッチに関する限
り(即ち、アドレスはTレジスタの内容が派生される)
@命令と基本的に同じである、又それらの実行は上表VI
Iに示した通りである。DUP@SWAP nn+とDUP@SWAP nn
−更に説明が必要である。
DUP@SWAP nn+命令:この命令の最終結果はTレジスタ
の内容によってアドレスから得たメモリ位置の内容をn
レジスタ回路においてパラメータスタックS上にプッシ
ュすることであり、且つTレジスタの内容をnnだけイン
クリメントする。DUP@SWAP nn−,命令は同一の動作を
行うが、Tレジスタの内容はnnだけデクリメントされ
る。これら2つの命令は、TIMES命令と結合して使用し
た場合には、1つのメモリ空間から別のメモリ空間への
データのブロック伝送が可能となる。
上記の拡張アドレスデータフェッチ命令(表VIII)は、
拡張されたアドレス能力があること以外、前述したデー
タフェッチの表に示した命令のセットにおける対応する
ものと同一の動作を行う。この場合も、命令の中にパラ
メータnnが埋め込まれている。この5ビットパラメータ
は、その命令がデコードされると、出力[SL]として命
令デコード回路52から供給され、且つORゲート230を介
してI/Oポート30(第1図)のX−BUSへ導通される。同
時に、命令デコード回路52は、X−EN信号がデイスエー
ブル(即ち、論理低、ANDゲート238をデイスエーブルさ
せる為)されることを確保する。従って、拡張アドレス
データフェッチはXレジスタ208の内容をオーバーライ
ド即ち書き換えるべく機能する。特に図示してはいない
が、X−BUSはメインメモリ12に接続することが可能で
あり、且つ可能な32、64Kバイトワードメモリの1つに
アクセスする為に使用することが可能である。nnX@命
令の場合、アクセスされたデータはTレジスタへロード
されるか、又は、演算/論理操作結合型の命令の場合に
は、結果はTレジスタ内にロードされる。
ローカルデータフェッチ命令は、フェッチ及び操作に関
する限り、前述したデータフェッチ及び拡張アドレスデ
ータフェッチ命令の対応するものと同一である。差異
は、ローカルデータフェッチ命令はその各々が5ビット
アドレスを担持しており、それがデータを得るべきメモ
リ位置を指定する。従って、各ローカルデータフェッチ
命令の実行は、命令デコード回路52をして命令のnn部分
を[SL]として出力し、且つマルチプレクサ60(第4
図)の入力へ印加する。A−CTL信号はマルチプレクサ6
0の入力1を選択すべく活性化され、[SL]をA−BUSへ
伝達する。この命令の操作の残部は@及びX@命令と同
じである。
ストア命令 メインメモリ12へデータを転送する命令を表XI及びXII
に示してある。これらの命令はTレジスタ(表XI)の内
容から又は命令自身(表X)からメモリアドレスを形成
する。後者の場合、64Kワードの32ページのメモリを使
用可能である。
下の表XIIIは、現在のメモリのゲートの下位32メモリ位
置へデータを転送する命令をリストしている(Xレジス
タの内容によってそのページに示してある)。表XIVは
Tレジスタからマイクロプロセサ10のその他の内部レジ
スタへデータを転送する命令をリストしている。表Xに
おいて、nn(オクタル)は以下のことを意味している。
nn(オクタル) 定義 00 J/Kスタックポインタ 01 Iレジスタ回路 02 プログラムカウンタP 04 MDレジスタ 06 SRレジスタ 10 Bレジスタ 14 Xレジスタ
【図面の簡単な説明】
第1図は本発明の全体的情報の流れを大略示しており本
発明のマイクロプロセサの簡単化したブロック図、第2
図は本発明内で使用されるメインメモリのマップ図、第
3図は第1図の命令デコードユニットのブロック図、第
4図は第1図のマイクロプロセサのアドレスマルチプレ
クサとプログラムカウンタのブロック図、第5図は第1
図のマイクロプロセサのI(リターン/インデックス)
レジスタ回路のブロック図、第6図は第1図のマイクロ
プロセサのN(次パラメータ)レジスタのブロック図、
第7図は第1図のマイクロプロセサのメインメモリポー
トを示した概略図、第8図は第1図のマイクロプロセサ
によって使用されるリターン(R)及びパラメータ
(S)を形成する為に使用される外部メモリユニット用
のアドレス機能を与えるスタックポインタ(J/K)の1
つ(J)を示したブロック図、第9図は第1図のマイク
ロプロセサの演算論理ユニット(ALU)のブロック図、
第10A図及び第10B図は第1図及び第9図に示したALUの
マルチプレクサ出力部分を示した各概略図、第11A図及
び第11B図は第1図のマイクロプロセサを動作させるの
に使用するクロックパルスの各タイミング線図、第12図
は第1図のマイクロプロセサの付加的な内部レジスタを
示した概略図、である。 (符合の説明) 10:マイクロプロセサ 12:メインメモリ 13:I/O端子 14:デコードユニット 24:パラメータメモリ 26:リターンメモリ

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】マルチビット命令及びデータワードを受け
    取るべく動作可能であり且つクロック信号の各周期で順
    次受け取られる命令に応答してデータワード処理を実行
    するために周期的なクロック信号に応答して動作可能な
    タイプのマイクロプロセサにおいて、第1及び第2オペ
    ランド入力を具備しており該第1及び第2オペランド入
    力において受け取ったデータワードに関して演算及び論
    理操作を実行するための演算論理手段であって該第1オ
    ペランド入力に接続されており該第1オペランド入力に
    対してデータワードを受け取り印加し且つ一時的に保持
    するための第1レジスタ手段を具備する演算論理手段、
    データワードを受け取り且つ一時的に保持するための第
    2レジスタ手段、該第2レジスタ手段から該第1レジス
    タ手段へのデータワードの転送と実質的に同時的に該第
    1レジスタ手段内の該データワードを該第2レジスタ手
    段へ選択的に転送してその際に第1及び第2レジスタ手
    段の内容がスワップされ得る態様で該第2レジスタ手段
    を該第2オペランド入力へ接続させる第1回路手段、を
    有することを特徴とするマイクロプロセサ。
  2. 【請求項2】特許請求の範囲第1項において、データワ
    ードを受け取り且つ一時的に保持する為の第3レジスタ
    手段、該第3レジスタ手段から該第1レジスタ手段への
    データワードの転送と実質的に同時的に該第1レジスタ
    手段内の該データワードを選択的に該第3レジスタ手段
    へ転送しその際に該第1及び第3レジスタ手段の内容が
    スワップされ得る態様で該第3レジスタ手段を該第2オ
    ペランド入力へ接続させる第2回路手段、を有すること
    を特徴とするマイクロプロセサ。
  3. 【請求項3】特許請求の範囲第2項において、第1及び
    第2後入れ先出しメモリ入力出力手段を有しており、前
    記第2レジスタは前記後入れ先出しメモリ入力出力手段
    の一方への経路内に位置されており且つ前記第3レジス
    タは前記後入れ先出しメモリ入力出力手段の他方への経
    路内に位置されていることを特徴とするマイクロプロセ
    サ。
  4. 【請求項4】FORTHとして知られているコンピュータ言
    語の使用を簡単化させるべく構成されたFORTHコンピュ
    ータにおいて、少なくとも処理用の第1パラメータを保
    持する為の上部レジスタ、前記上部パラメータレジスタ
    に接続されており前記第1パラメータを他のパラメータ
    と処理し且つ前記処理の結果を前記上部レジスタ内に収
    納させる為の演算論理ユニット、第2パラメータを保持
    し且つ第1出力経路内において前記第2パラメータをア
    ドレスし且つ第2出力経路においてリターンスタックへ
    前記第2パラメータをポップし且つプッシュする為のイ
    ンデックスレジスタ、処理用の第3パラメータを保持す
    ると共に前記第3パラメータを第1方向においてメモリ
    に対して読取及び書込し且つ前記第3パラメータを第2
    方向における次パラメータスタックに対してポップ及び
    プッシュする為の次パラメータレジスタ、前記レジスタ
    間でデータを移動させる為の周期的なパルスを持ったク
    ロックであって前記レジスタに動作接続されているクロ
    ック、前記上部及びインデックスレジスタ間で前記第1
    パラメータと前記第2パラメータとの単一サイクル交換
    を許容する為の前記上部レジスタと前記インデックスレ
    ジスタとの間の第1スワップ接続、前記上部及び次パラ
    メータレジスタ間で前記第1パラメータと前記第3パラ
    メータとの単一サイクル交換を許容する為の前記上部レ
    ジスタと前記次パラメータレジスタとの間の第2スワッ
    プ接続、少なくとも前記次パラメータレジスタと連結さ
    れた第1メインメモリ、前記次パラメータレジスタへ及
    びそこからデータをチャンネルさせる為に少なくとも前
    記インデックスレジスタに連結された前記メインメモリ
    をアドレスする手段、前記インデックスレジスタに連結
    された第1メモリLIFOスタックであって前記インデック
    スレジスタから前記スタックへデータをポップ及びプッ
    シュする為の第1メモリLIFOスタック、前記次パラメー
    タレジスタに連結された第2メモリLIFOスタックであっ
    て前記次パラメータレジスタから前記スタックへデータ
    をポップ及びプッシュする為の第2メモリLIFOスタッ
    ク、を有しており、前記メモリ及び前記第1メモリLIFO
    スタック及び前記第2メモリLIFOスタックが個別的で別
    々のメモリエリアを有しており、各エリアは前記コンピ
    ュータのレジスタを介しての外はその他のエリアへアク
    セス不能であることを特徴とするコンピュータ。
  5. 【請求項5】特許請求の範囲第4項において、前記メイ
    ンメモリをアドレスする手段が、データの読取及び書込
    を行う為にメインメモリ内の位置を指定する為のアドレ
    ス用マルチプレクサを具備することを特徴とするコンピ
    ュータ。
  6. 【請求項6】特許請求の範囲第4項において、第4パラ
    メータを保持する為のデコーダレジスタ、前記アドレス
    用マルチプレクサ内の前記第4パラメータ内にアドレス
    を位置させる為の前記デコードレジスタから前記アドレ
    ス用マルチプレクサへの経路、を有することを特徴とす
    るコンピュータ。
  7. 【請求項7】特許請求の範囲第6項において、前記アド
    レス用マルチプレクサに接続されており前記マルチプレ
    クサからデクリメントされたカウントを受け取ると共に
    ルーチンの完了の為に前記デクリメントされたカウント
    を前記マルチプレクサへ転送する為のカウンタを有する
    ことを特徴とするコンピュータ。
  8. 【請求項8】特許請求の範囲第7項において、何れの滞
    留する第2パラメータをも該リターンスタックへプッシ
    ュさせる為に前記デクリメントされたカウントを前記イ
    ンデックスレジスタ内の該第2パラメータへ通過させる
    ことを可能とする為の前記カウンタから前記インデック
    スレジスタへの出力経路を有することを特徴とするコン
    ピュータ。
  9. 【請求項9】メインメモリと2個の個別的なLIFOメモリ
    スタックを持っておりFORTHとして知られているコンピ
    ュータ言語の使用を簡単化すべく構成されたマイクロプ
    ロセサにおいて、少なくとも処理用の第1パラメータを
    保持する為の上部レジスタ、前記上部パラメーダレジス
    タに接続されており前記第1パラメータを他のパラメー
    タと処理し且つ前記処理の結果を前記上部レジスタ内に
    収納させる為の演算論理ユニット、第2パラメータを保
    持し且つ前記第2パラメータを使用して第1出力経路内
    においてアドレスし且つ第2出力経路においてリターン
    LIFOメモリスタックへ前記第2パラメータをポップし且
    つプッシュする為のインデックスレジスタ、第3パラメ
    ータを保持すると共に前記第3パラメータを第1出力経
    路においてメモリに対して読取及び書込し且つ前記第3
    パラメータを第2経路における次パラメータLIFOメモリ
    スタックに対してポップ及びプッシュする為の次パラメ
    ータレジスタ、前記レジスタ間でデータを移動させる為
    の周期的なパルスを持ったクロックであってデータを移
    動させる為に前記レジスタに動作接続されているクロッ
    ク、前記上部及びインデックスレジスタ間で前記第1パ
    ラメータと前記第2パラメータとの単一サイクル交換を
    許容する為の前記上部レジスタと前記インデックスレジ
    スタとの間の第1スワップ接続、前記上部及び次パラメ
    ータレジスタ間で前記第1パラメータと前記第3パラメ
    ータとの単一サイクル交換を許容する為の前記上部レジ
    スタと前記次パラメータレジスタとの間の第2スワップ
    接続、前記次パラメータレジスタと連結されたメインメ
    モリへアドレス可能な第1ポート、前記第1ポートを介
    して前記次パラメータレジスタへデータをチャンネルさ
    せる為に前記メインメモリをアドレスする第1手段手
    段、前記インデックスレジスタから前記スタックへデー
    タをポップ及びプッシュする為に前記インデックスレジ
    スタから前記LIFOメモリスタックへ通信する為の第2ポ
    ート、前記次パラメータレジスタから前記LIFOメモリス
    タックへデータをポップ及びプッシュする為に前記次パ
    ラメータレジスタに連結されている第3ポート、を有す
    ることを特徴とするマイクロプロセサ。
  10. 【請求項10】特許請求の範囲第9項において、前記LI
    FOメモリスタック内の書込位置をアドレスする為の第1
    ポインタと前記LIFOメモリスタック内の読取位置をアド
    レスする為の第2ポインタとを具備しており前記LIFOメ
    モリスタックをアドレスする第2手段が設けられてお
    り、前記第1及び第2ポインタは前記アドレスを行なう
    第2手段に応答して一緒に移動可能であり、前記LIFOメ
    モリスタック内の書込位置をアドレスする第3ポインタ
    と前記LIFOメモリスタック内の読取位置をアドレスする
    為の第4ポインタとを具備しており前記LIFOメモリスタ
    ックをアドレスする第3手段が設けられており、前記第
    3及び第4ポインタは前記アドレスする第3手段に応答
    して一緒に移動可能であることを特徴とするマイクロプ
    ロセサ。
  11. 【請求項11】特許請求の範囲第9項において、前記ア
    ドレスを行う第2手段によってアドレスされる第1個別
    LIFOメモリスタック、前記アドレスを行う第3手段によ
    ってアドレスされる第2個別LIFOメモリスタック、を有
    することを特徴とするマイクロプロセサ。
  12. 【請求項12】特許請求の範囲第9項において、前記上
    部レジスタ内のアドレスがメインメモリをアドレスする
    ことを可能とする為に前記上部パラメータレジスタと前
    記メインメモリをアドレスする為の第1手段とを接続す
    るデータ経路を有することを特徴とするマイクロプロセ
    サ。
  13. 【請求項13】メインメモリから2サイクルフェッチを
    発生させる装置において、第1サイクルにおいてアクセ
    スされるべきデータのアドレスと第2サイクルでアクセ
    スされるデータとを具備することの可能なパラメータを
    保持する為の上部レジスタ、前記データに対してメイン
    メモリの一部を指定する為のアドレス用マルチプレク
    サ、第1マシンサイクルにおいて前記上部レジスタから
    のデータのアドレスを前記アドレス用マルチプレクサへ
    移動させその際に前記上部レジスタ内に収納されている
    データ位置が前記アドレス用マルチプレクサへポップさ
    れる為の前記上部レジスタ前記アドレス用マルチプレク
    サとの間の接続、第2パラメータを保持する為の次パラ
    メータレジスタ、前記レジスタ間でデータを移動させる
    為の周期的なパルスを持ったクロックであって隣接する
    レジスタ間でデータを移動させる為に前記レジスタに動
    作接続されているクロック、第2サイクルで前記メイン
    メモリ内の前記アドレス用マルチプレクサによって指定
    されたデータの前記次パラメータレジスタへの移動の為
    に前記次パラメータレジスタを前記メインメモリへ接続
    させるポート、前記レジスタ間での前記第1及び第2パ
    ラメータの単一サイクルスワップ動作を可能としその際
    に前記次パラメータレジスタ内のメモリからのデータを
    前記上部レジスタとスワップされることを可能としメモ
    リから前記上部レジスタへの2サイクル移動を可能とす
    る前記次パラメータレジスタと前記上部レジスタとの間
    のスワップ接続、を有することを特徴とする装置。
  14. 【請求項14】特許請求の範囲第13項において、前記次
    パラメータレジスタに接続して後入れ先出しスタックが
    設けられており、スワップの完了時に前記後入れ先出し
    スタックが前記元の形態に復元されることを特徴とする
    装置。
  15. 【請求項15】FORTHとして知られているコンピュータ
    言語の使用を簡単化する為のマイクロプロセサにおい
    て、処理用の第1パラメータを保持する為の上部レジス
    タ、第2パラメータを保持し且つ第1経路内において前
    記第2パラメータに対するアドレス出力を与え且つ第2
    経路内のリターンアドレススタックへ前記第2パラメー
    タをポップし且つプッシュする為のインデックスレジス
    タ、第3パラメータを保持すると共に前記第2パラメー
    タを第1経路においてメモリに対して読取及び書込し且
    つ前記第2パラメータを第2経路における次パラメータ
    スタックに対してポップ及びプッシュする為の次パラメ
    ータレジスタ、前記レジスタ間でデータを移動させる為
    の周期的なパルスを持ったクロックであって前記レジス
    タに動作接続されているクロック、前記上部及びインデ
    ックスレジスタ間で前記第1及び第2パラメータの単一
    サイクル交換を許容する為の前記上部レジスタと前記イ
    ンデックスレジスタとの間の第1スワップ接続、前記上
    部及び次パラメータレジスタ間でデータの単一サイクル
    交換を許容する為の前記上部レジスタと前記次パラメー
    タレジスタとの間の第2スワップ接続、を有することを
    特徴とするマイクロプロセサ。
  16. 【請求項16】特許請求の範囲第15項において、前記次
    パラメータレジスタに接続されたLIFOスタックへの第1
    入出力手段、前記インデックスレジスタへ接続されたLI
    FOスタックへの第1入出力手段を有することを特徴とす
    るマイクロプロセサ。
  17. 【請求項17】特許請求の範囲第16項において、前記第
    1入出力手段に接続された第1LIFOスタック、前記第2
    入出力手段に接続された第2LIFOスタック、を有するこ
    とを特徴とするマイクロプロセサ。
  18. 【請求項18】メインメモリとLIFO次パラメータスタッ
    クとLIFOリターンスタックとを具備する少なくとも3つ
    の個別的メモリ位置へ又はそこから単一クロックサイク
    ルでデータを移動させる為にFORTHとして知られている
    言語の使用を簡単化させるマイクロプロセサにおいて、
    処理用の第1パラメータを保持する為の上部レジスタ、
    第2パラメータを保持し且つ第1出力方向において前記
    第2パラメータをアドレスし且つ第2出力方向において
    前記LIFOリターンスタックに対して前記第2パラメータ
    をポップすると共にプッシュする為のインデックスレジ
    スタ、前記第1パラメータを他のパラメータと処理させ
    且つ前記処理の結果を前記上部レジスタ内に配置させる
    為に前記上部レジスタに接続されている演算論理ユニッ
    ト、第1方向においてメモリに対して読取及び書込を行
    い且つ第2方向において前記LIFO次パラメータスタック
    に対してポップ及びプッシュを行う為の次パラメータレ
    ジスタ、メインメモリ内のポイントされたアドレスに対
    して読取及び書込を行う為に前記次パラメータレジスタ
    に動作接続されている第1双方向性ポート、前記LIFO次
    パラメータスタックに対して読取及び書込を行う為に前
    記次パラメータレジスタに動作接続されている第2双方
    向性ポート、前記インデックスレジスタからLIFOリター
    ンスタックに対して読取及び書込を行う為に動作接続さ
    れている第3双方向性出力ポート、アドレスを受け取り
    且つメインメモリ内の前記アドレスをポイントする為の
    アドレス用マルチプレクサを具備するメインメモリをア
    ドレスする手段、レジスタ間でデータを移動させる為の
    周期的なパルスを持ったクロックであって前記レジスタ
    に動作接続されているクロック、メインメモリをアドレ
    スする手段、前記次パラメータスタックをアドレスする
    手段、前記リターンスタックをアドレスする手段、を有
    しており、前記アドレスする手段は全て同一のマシンサ
    イクル内において前記メモリへ及びそれからの同時的な
    データの移動が可能であることを特徴とするマイクロプ
    ロセサ。
  19. 【請求項19】FORTHとして知られているコンピュータ
    言語の使用を簡単化する為のマイクロプロセサにおい
    て、メインメモリにおける第1ルーチンをアドレスする
    為のアドレス用マルチプレクサ、前記アドレス用マルチ
    プレクサからのデクリメントされたカウントを受け取り
    且つ保持する為であり又前記デクリメントされたカウン
    トを前記アドレス用マルチプレクサへ通過させその際に
    前記第1ルーチンに対するコールを実行することが可能
    なカウンタ、前記メインメモリ内のアドレスされた位置
    へ及びそこからデータを通過させる為に前記プロセサへ
    連結させたメモリポート、前記メインメモリ内のアドレ
    スを具備する第1パラメータを保持する為のインデック
    スレジスタ、前記インデックスレジッスタからのリター
    ンアドレスのポップ及びプッシュを可能とする為に前記
    インデックスレジスタに接続されている次リターンLIFO
    メモリスタック、前記メモリポートから第2ルーチンに
    対するコールを受け取ると前記カウンタからの前記デク
    リメントされたカウントを前記次リターンLIFOメモリス
    タックの上部へプッシュする為の前記カウンタと前記イ
    ンデックスレジスタとの間の接続、前記第2ルーチンが
    メインメモリ内でアドレスされる様に前記メインメモリ
    ポートからの前記第2ルーチンのアドレスを前記アドレ
    ス用マルチプレクサへ通信する手段、を有しており、前
    記カウンタには前記第2ルーチンを完了する為にデクリ
    メントされたカウントが設けられており、且つ前記次リ
    ターンLIFOメモリスタックが該第1ルーチンのポップさ
    れデクリメントされたアドレスを保有していることを特
    徴とするマイクロプロセサ。
  20. 【請求項20】FORTHマイクロプセサにおいて、少なく
    とも処理用の単一パラメータを保持する為の上部レジス
    タ、処理用の第2パラメータを保持し且つ第1出力にお
    いて前記第2パラメータをアドレスし且つ第2出力にお
    いてリターンスタックへ前記第2パラメータをポップし
    且つプッシュする為のインデックスレジスタ、第3パラ
    メータを保持すると共に前記第3パラメータを第1出力
    においてメモリに対して読取及び書込し且つ前記第3パ
    ラメータを第2出力におけるLIFO次パラメータメモリス
    タックに対してポップ及びプッシュする為の次パラメー
    タレジスタ、前記上部及びインデックスレジスタ間で第
    1及び第2パラメータの交換を許容する為の前記上部レ
    ジスタと前記インデックスレジスタとの間の第1スワッ
    プ接続、前記上部及び次パラメータレジスタ間で第1及
    び第3パラメータの交換を許容する為の前記上部レジス
    タと前記次パラメータレジスタとの間の第2スワップ接
    続、前記インデックスレジスタに連結されている前記メ
    インメモリをアドレスする手段、リクエストに応じて前
    記マイクロプロセサの動作状態を与える為に前記上部レ
    ジスタと前記インデックスレジスタと前記次パラメータ
    レジスタと前記アドレス用マルチプレクサと前記スタッ
    クポインタとに連結されている入出力ポート、を有する
    ことを特徴とするマイクロプロセサ。
  21. 【請求項21】第1及び第2個別LIFOメモリスタックを
    有しておりFORTHとして知られている言語の使用を簡単
    化させるマイクロプロセサにおいて、少なくとも処理用
    の第1パラメータを保持する為の上部レジスタ、処理用
    の第2パラメータを保持し第1出力における前記第2パ
    ラメータをアドレスし且つ第2出力において前記個別LI
    FOメモリスタックの1つに前記第2パラメータをポップ
    すると共にプッシュさせる為のインデックスレジスタ、
    第3パラメータを保持し且つ第1方向にメモリに対して
    前記第3パラメータの読取及び書込を行うと共に第2方
    向に前記LIFOメモリスタックの他方に対して前記第3パ
    ラメータをポップさせると共にプッシュさせる為の次パ
    ラメータレジスタ、メインメモリをアドレスする為のア
    ドレス用マルチプレクサ、前記レジスタ間でデータを移
    動させる為の周期的なパルスを持ったクロックであって
    前記レジスタに動作接続されているクロック、前記LIFO
    スタックに対してポイントする為の第1及び第2LIFOス
    タックポインタ、を有しており、前記各レジスタはレジ
    スタが読取されるべきことを指定する第1ポインタとレ
    ジスタが書込なされるべきであることを指定する第2ポ
    インタとを同時に具備しており、その際にマシンサイク
    ルの間に前記ポインタの移動を必要とすること無しに何
    れのマシンサイクルにおいてもデータが前記LIFOスタッ
    クに対して読取又は書込を行うことが可能であることを
    特徴とするマイクロプロセサ。
  22. 【請求項22】FORTHとして知られている言語の使用を
    簡単化するマイクロプロセサにおいて、処理用の第1パ
    ラメータを保持する為の上部レジスタ、処理用の第2パ
    ラメータを保持し且つ第1出力において前記第2パラメ
    ータをアドレスし且つ第2出力においてLIFOメモリリタ
    ーンスタックへ前記第2パラメータをポップすると共に
    プッシュするインデックスレジスタ、前記メインメモリ
    がデータを移動させることを可能とする為に前記インデ
    ックスレジスタからメインメモリ内のアドレスを受け取
    るアドレス用マルチプレクサ、処理用の第3パラメータ
    を保持し且つ第1出力においてメモリに対し前記第3パ
    ラメータの読取及び書込を行い且つ第2出力において次
    パラメータスタックに対して前記第3パラメータをポッ
    プ及びプッシュする次パラメータレジスタ、前記レジス
    タ間でデータを移動させる為の周期的なパルスを持った
    クロックであって前記レジスタと動作接続されたクロッ
    ク、前記レジスタ間でパラメータ交換を与える手段、前
    記アドレスマルチプレクサのアドレスされた位置からメ
    モリからパラメータを取り且つそれを前記次パラメータ
    レジスタへ移動させる為に前記次パラメータレジスタに
    連結されたメインメモリに接続する為の第1ポート、デ
    ータが前記クロックの単一サイクルで前記メインメモリ
    から得ることが可能である為に単一サイクルで前記次パ
    ラメータレジスタへの通信を行う為のメモリエリアを指
    定する為に前記上部レジスタと前記アドレス用マルチプ
    レクサとを接続する手段、を有することを特徴とするマ
    イクロプロセサ。
  23. 【請求項23】FORTHとして知られている言語の使用を
    簡単化するマイクロプロセサにおいて、処理用の第1パ
    ラメータを保持する上部レジスタ、処理されるべき第2
    パラメータを保持し且つ第1出力において前記第2パラ
    メータをアドレスし又第2出力においてリターンスタッ
    クへ前記第2パラメータをポップさせると共にプッシュ
    させるインデックスレジスタ、前記インデックスレジス
    タと前記上部レジスタとの間に動作接続された前記イン
    デックスレジスタをデクリメントする手段、第3パラメ
    ータを保持し且つ第1出力においてメモリに対して前記
    第3パラメータを読取及び書込させ又第2出力において
    LIFO次パラメータメモリスタックに対してポップ及びプ
    ッシュをさせる次パラメータレジスタ、前記レジスタ間
    でデータを移動させる為に周期的パルスを持ったクロッ
    クであって前記レジスタに動作接続されているクロッ
    ク、コンピュータ内に配置されるべきデータの第1アド
    レスを前記リターンスタックから受け取るアドレスマル
    チプレクサ、一連の連続するデクリメントされたアドレ
    スを供給する為に前記アドレス用マルチプレクサに動作
    接続されたデータの順次デクリメントされたアドレスを
    発生するデクリメントカウンタ、を有しており前記イン
    デックスレジスタ内のカウントが前記次パラメータスタ
    ックからメモリ内の隣接するデクリメントされたアドレ
    ス位置へデータをサイクル動作させることを可能とし、
    前記次パラメータスタックへ及びそこからデータの読取
    及び書込の単一サイクルストリーミング動作を可能とす
    ることを特徴とするマイクロプロセサ。
JP60262356A 1984-11-21 1985-11-21 Forth特定言語マイクロプロセサ Expired - Lifetime JPH0731603B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US67369484A 1984-11-21 1984-11-21
US673694 1984-11-21

Publications (2)

Publication Number Publication Date
JPS61182138A JPS61182138A (ja) 1986-08-14
JPH0731603B2 true JPH0731603B2 (ja) 1995-04-10

Family

ID=24703738

Family Applications (2)

Application Number Title Priority Date Filing Date
JP60262356A Expired - Lifetime JPH0731603B2 (ja) 1984-11-21 1985-11-21 Forth特定言語マイクロプロセサ
JP6190878A Pending JPH07210398A (ja) 1984-11-21 1994-07-11 Forth特定言語マイクロプロセサ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP6190878A Pending JPH07210398A (ja) 1984-11-21 1994-07-11 Forth特定言語マイクロプロセサ

Country Status (5)

Country Link
US (2) US5070451A (ja)
EP (1) EP0185215B1 (ja)
JP (2) JPH0731603B2 (ja)
AT (1) ATE94999T1 (ja)
DE (1) DE3587591T2 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5034882A (en) * 1987-11-10 1991-07-23 Echelon Corporation Multiprocessor intelligent cell for a network which provides sensing, bidirectional communications and control
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5752070A (en) * 1990-03-19 1998-05-12 California Institute Of Technology Asynchronous processors
US7356809B1 (en) * 1991-03-01 2008-04-08 Intel Corporation Programmable interpretive virtual machine
US6138273A (en) * 1991-03-01 2000-10-24 Intel Corporation Programmable interpretive virtual machine
US5404555A (en) * 1991-05-17 1995-04-04 Duosi Software Co., Ltd. Macro instruction set computer architecture
US5452423A (en) * 1991-06-13 1995-09-19 Chips And Technologies, Inc. Two-ROM multibyte microcode address selection method and apparatus
FR2678401A1 (fr) * 1991-06-28 1992-12-31 Philips Electronique Lab Dispositif de traitement de l'information plus particulierement adapte a un langage chaine, du type forth notamment.
FR2678402A1 (fr) * 1991-06-28 1992-12-31 Philips Electronique Lab Dispositif de traitement d'informations.
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5640582A (en) * 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
CA2122182A1 (en) * 1993-05-20 1994-11-21 Rene Leblanc Method for rapid prototyping of programming problems
US5634118A (en) * 1995-04-10 1997-05-27 Exponential Technology, Inc. Splitting a floating-point stack-exchange instruction for merging into surrounding instructions by operand translation
DE69628326D1 (de) * 1995-10-06 2003-06-26 Patriot Scient Corp Architektur für einen risc-mikroprozessor
EP0931286B1 (en) * 1997-08-18 2003-07-30 Koninklijke Philips Electronics N.V. Stack oriented data processing device
US5974531A (en) * 1998-02-17 1999-10-26 Industrial Technology Research Institute Methods and systems of stack renaming for superscalar stack-based data processors
US6151671A (en) * 1998-02-20 2000-11-21 Intel Corporation System and method of maintaining and utilizing multiple return stack buffers
US20010049757A1 (en) * 2000-03-01 2001-12-06 Ming-Kang Liu Programmable task scheduler for use with multiport xDSL processing system
DE10131084A1 (de) * 2001-06-27 2003-01-09 Klaus Schleisiek Vorrichtung zur Datenverarbeitung
US20030212878A1 (en) * 2002-05-07 2003-11-13 Chen-Hanson Ting Scaleable microprocessor architecture
US7493607B2 (en) 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
WO2005096136A1 (en) * 2004-03-31 2005-10-13 Intel Corporation Stack caching using code sharing
US7904695B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US20060282821A1 (en) * 2005-06-10 2006-12-14 Renno Erik K Efficient subprogram return in microprocessors
US7904615B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
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
JP5326314B2 (ja) * 2008-03-21 2013-10-30 富士通株式会社 プロセサおよび情報処理装置
US8195118B2 (en) * 2008-07-15 2012-06-05 Linear Signal, Inc. Apparatus, system, and method for integrated phase shifting and amplitude control of phased array signals
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
US8275978B1 (en) 2008-07-29 2012-09-25 Marvell International Ltd. Execution of conditional branch instruction specifying branch point operand to be stored in jump stack with branch destination for jumping to upon matching program counter value
US8872719B2 (en) * 2009-11-09 2014-10-28 Linear Signal, Inc. Apparatus, system, and method for integrated modular phased array tile configuration
JP2013242700A (ja) * 2012-05-21 2013-12-05 Internatl Business Mach Corp <Ibm> コード最適化方法、プログラム及びシステム
US11797278B2 (en) 2017-07-07 2023-10-24 Nchain Licensing Ag Method for compiling from a high-level scripting language to a blockchain native scripting language

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3601809A (en) * 1968-11-04 1971-08-24 Univ Pennsylvania Addressable list memory systems
US3965335A (en) * 1974-09-27 1976-06-22 Sperry Rand Corporation Programable data entry system
US4458325A (en) * 1976-02-04 1984-07-03 Canon Kabushiki Kaisha Calculator capable of calculating with additional externally instructed units
US4041462A (en) * 1976-04-30 1977-08-09 International Business Machines Corporation Data processing system featuring subroutine linkage operations using hardware controlled stacks
JPS5311547A (en) * 1976-07-20 1978-02-02 Oki Electric Ind Co Ltd Program call order system
US4200930A (en) * 1977-05-23 1980-04-29 Burroughs Corporation Adapter cluster module for data communications subsystem
US4156796A (en) * 1977-11-29 1979-05-29 International Business Machines Corporation Programmable data processing communications multiplexer
BG29106A1 (en) * 1978-11-08 1980-09-15 Dakovski Method and magistral registered device for realising of automats- sequence type
US4390946A (en) * 1980-10-20 1983-06-28 Control Data Corporation Lookahead addressing in a pipeline computer control store with separate memory segments for single and multiple microcode instruction sequences
US4393468A (en) * 1981-03-26 1983-07-12 Advanced Micro Devices, Inc. Bit slice microprogrammable processor for signal processing applications
JPS57182852A (en) * 1981-05-07 1982-11-10 Nec Corp Stack device
JPS58197548A (ja) * 1982-05-14 1983-11-17 Hitachi Ltd スタツク制御方式
US4800491A (en) * 1986-11-17 1989-01-24 General Electric Company Register-stack apparatus
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
US5442289A (en) * 1989-07-31 1995-08-15 Biomagnetic Technologies, Inc. Biomagnetometer having flexible sensor

Also Published As

Publication number Publication date
EP0185215B1 (en) 1993-09-22
DE3587591T2 (de) 1994-04-28
US5070451A (en) 1991-12-03
US5319757A (en) 1994-06-07
EP0185215A3 (en) 1988-08-31
EP0185215A2 (en) 1986-06-25
JPH07210398A (ja) 1995-08-11
ATE94999T1 (de) 1993-10-15
JPS61182138A (ja) 1986-08-14
DE3587591D1 (de) 1993-10-28

Similar Documents

Publication Publication Date Title
JPH0731603B2 (ja) Forth特定言語マイクロプロセサ
US4399507A (en) Instruction address stack in the data memory of an instruction-pipelined processor
US5261113A (en) Apparatus and method for single operand register array for vector and scalar data processing operations
JP3983857B2 (ja) ベクトルレジスタの複数バンクを用いた単一命令複数データ処理
US3983539A (en) Polymorphic programmable units employing plural levels of sub-instruction sets
US4587632A (en) Lookahead stack oriented computer
CA1176757A (en) Data processing system for parallel processings
EP0352103B1 (en) Pipeline bubble compression in a computer system
US3646522A (en) General purpose optimized microprogrammed miniprocessor
US4734852A (en) Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
US3983541A (en) Polymorphic programmable units employing plural levels of phased sub-instruction sets
US4038643A (en) Microprogramming control system
US4558411A (en) Polymorphic programmable units employing plural levels of sub-instruction sets
US5006980A (en) Pipelined digital CPU with deadlock resolution
US4562538A (en) Microprocessor having decision pointer to process restore position
JPS5831014B2 (ja) 命令先取り装置
JP2002539519A (ja) Vliwプロセッサにおけるレジスタ・アドレッシングの間接制御を提供するためのレジスタファイル索引付け方法及び装置
US4323964A (en) CPU Employing micro programmable control for use in a data processing system
JPH0412503B2 (ja)
EP0130381A2 (en) Mechanism for implementing one machine cycle executable branch-on-any-bit-in-any-register instructions in a primitive instruction set computing system
EP0010196B1 (en) Control circuit and process for digital storage devices
US4631672A (en) Arithmetic control apparatus for a pipeline processing system
US5034879A (en) Programmable data path width in a programmable unit having plural levels of subinstruction sets
US4430708A (en) Digital computer for executing instructions in three time-multiplexed portions
US5590293A (en) Dynamic microbranching with programmable hold on condition, to programmable dynamic microbranching delay minimization