(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023082311
(43)【公開日】2023-06-14
(54)【発明の名称】演算装置
(51)【国際特許分類】
G06F 9/34 20180101AFI20230607BHJP
G06F 9/32 20180101ALI20230607BHJP
【FI】
G06F9/34 350B
G06F9/32 310A
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021195985
(22)【出願日】2021-12-02
(71)【出願人】
【識別番号】000116024
【氏名又は名称】ローム株式会社
(74)【代理人】
【識別番号】110001933
【氏名又は名称】弁理士法人 佐野特許事務所
(72)【発明者】
【氏名】大岡 徹也
(72)【発明者】
【氏名】西山 高浩
【テーマコード(参考)】
5B033
【Fターム(参考)】
5B033CA01
5B033DB16
(57)【要約】
【課題】バンク切り替えを要することなくメモリ空間を拡張する。
【解決手段】プログラムを実行可能に構成された演算処理回路と、プログラムを格納するプログラムメモリと、を備え、プログラムにおける各命令は16ビットの長さを有し、プログラムメモリは、第1メモリ領域と、第1メモリ領域よりも上位側アドレスが対応付けられた第2メモリ領域を有し、演算処理回路は、読み出しの対象となるアドレスを指定するための16ビットのプログラムカウンタを有し、プログラムカウンタにおける上位側15ビットの値に応じたアドレスの命令を対象メモリ領域から読み出して実行し、対象メモリ領域は、第1メモリ領域及び第2メモリ領域の内、プログラムカウンタにおける最下位ビットの値に応じたメモリ領域である。
【選択図】
図9
【特許請求の範囲】
【請求項1】
プログラムを実行可能に構成された演算処理回路と、
前記プログラムを格納するプログラムメモリと、を備え、
前記プログラムにおける各命令は16ビットの長さを有し、
前記プログラムメモリは、第1メモリ領域と、前記第1メモリ領域よりも上位側アドレスが対応付けられた第2メモリ領域を有し、
前記演算処理回路は、読み出しの対象となるアドレスを指定するための16ビットのプログラムカウンタを有し、前記プログラムカウンタにおける上位側15ビットの値に応じたアドレスの命令を対象メモリ領域から読み出して実行し、
前記対象メモリ領域は、前記第1メモリ領域及び前記第2メモリ領域の内、前記プログラムカウンタにおける最下位ビットの値に応じたメモリ領域である
、演算装置。
【請求項2】
前記演算処理回路において、
分岐命令以外の命令が実行されるたびに前記プログラムカウンタに2が加算され、
前記分岐命令が実行される際、分岐先のアドレスを指定するための16ビット記憶領域中の格納データが前記プログラムカウンタにロードされ、前記格納データにおける最下位ビットの値に応じて前記第1メモリ領域及び前記第2メモリ領域の何れかのメモリ領域内のアドレスに分岐する
、請求項1に記載の演算装置。
【請求項3】
前記演算処理回路にて前記分岐命令が実行される場合において、
前記格納データの前記プログラムカウンタへのロードにより前記プログラムカウンタにおける最下位ビットに第1の値が格納されたとき、前記プログラムカウンタにおける上位側15ビットの値に応じたアドレスであって且つ前記第1メモリ領域内のアドレスに分岐し、
前記格納データの前記プログラムカウンタへのロードにより前記プログラムカウンタにおける最下位ビットに第2の値が格納されたとき、前記プログラムカウンタにおける上位側15ビットの値に応じたアドレスであって且つ前記第2メモリ領域内のアドレスに分岐する
、請求項2に記載の演算装置。
【請求項4】
前記演算処理回路は、リード対象アドレスの命令を前記プログラムメモリから読み出して実行し、
前記リード対象アドレスは17ビットのアドレスであって、
前記リード対象アドレスの最上位ビットの値は前記プログラムカウンタにおける最下位ビットの値にて表され、
前記リード対象アドレスの最下位ビットの値は所定値で固定され、
前記リード対象アドレスにおける最上位ビットより下位であって且つ最下位ビットより上位の計15ビットの値は、前記プログラムカウンタにおける上位側15ビットの値にて表される
、請求項1~3の何れかに記載の演算装置。
【請求項5】
プログラムを実行可能に構成された演算処理回路と、
前記プログラムを格納するプログラムメモリと、を備え、
前記プログラムにおける各命令は所定ビットの長さを有し、
所定ビットはJビットであり、J=16×2n-1、であり、nは2以上の整数を表し、
前記プログラムメモリは、第1~第2nメモリ領域を有し、第iメモリ領域よりも第(i+1)メモリ領域に対して上位側アドレスが対応付けられ、
前記演算処理回路は、読み出しの対象となるアドレスを指定するための前記所定ビットのプログラムカウンタを有し、前記プログラムカウンタにおける上位側(J-n)ビットの値に応じたアドレスの命令を対象メモリ領域から読み出して実行し、
前記対象メモリ領域は、前記第1~第2nメモリ領域の内、前記プログラムカウンタにおける下位側nビットの値に応じたメモリ領域である
、演算装置。
【請求項6】
前記演算処理回路において、
分岐命令以外の命令が実行されるたびに前記プログラムカウンタに2nが加算され、
前記分岐命令が実行される際、分岐先のアドレスを指定するための前記所定ビットの記憶領域中の格納データが前記プログラムカウンタにロードされ、前記格納データにおける下位側nビットの値に応じて前記第1~第2nメモリ領域の何れかのメモリ領域内のアドレスに分岐する
、請求項5に記載の演算装置。
【請求項7】
前記演算処理回路にて前記分岐命令が実行される場合において、
前記格納データの前記プログラムカウンタへのロードを経て前記プログラムカウンタの下位側nビットに格納された値が第kの値であるとき、前記プログラムカウンタにおける上位側(J-n)ビットの値に応じたアドレスであって且つ第kメモリ領域内のアドレスに分岐し、
kは、1以上且つ2n以下の整数である
、請求項6に記載の演算装置。
【請求項8】
前記演算処理回路は、リード対象アドレスの命令を前記プログラムメモリから読み出して実行し、
前記リード対象アドレスは(J+n)ビットのアドレスであって、
前記リード対象アドレスの上位側nビットの値は前記プログラムカウンタにおける下位側nビットの値にて表され、
前記リード対象アドレスの下位側nビットの値は所定値で固定され、
前記リード対象アドレスにおける上位側nビットより下位であって且つ下位側nビットより上位の計(J-n)ビットの値は、前記プログラムカウンタにおける上位側(J-n)ビットの値にて表される
、請求項5~7の何れかに記載の演算装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、演算装置に関する。
【背景技術】
【0002】
命令の束であるプログラムを格納したプログラムメモリと、プログラムを実行する演算処理回路(CPU等)と、を備えた演算装置がある。演算処理回路は、読み出すべき命令が格納されたアドレスを指定し、指定したアドレスの命令をプログラムメモリから読み出して実行する。例えば、8ビットのレジスタを2つ使ってアドレスを指定する構成では、指定アドレスの種類が216種類となるので、プログラムメモリのサイズは最大で64kB(キロバイト)となる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
メモリ空間の拡張が要求される場合がある。メモリ空間を拡張する方式としてバンク切替方式がある。しかしながら、バンク切替方式は、回路規模増大及び命令効率劣化等を招く。
【0005】
本開示は、バンク切り替えを要することなくプログラムメモリのメモリ空間を拡張可能な演算装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
本開示に係る演算装置は、プログラムを実行可能に構成された演算処理回路と、前記プログラムを格納するプログラムメモリと、を備え、前記プログラムにおける各命令は16ビットの長さを有し、前記プログラムメモリは、第1メモリ領域と、前記第1メモリ領域よりも上位側アドレスが対応付けられた第2メモリ領域を有し、前記演算処理回路は、読み出しの対象となるアドレスを指定するための16ビットのプログラムカウンタを有し、前記プログラムカウンタにおける上位側15ビットの値に応じたアドレスの命令を対象メモリ領域から読み出して実行し、前記対象メモリ領域は、前記第1メモリ領域及び前記第2メモリ領域の内、前記プログラムカウンタにおける最下位ビットの値に応じたメモリ領域である。
【0007】
本開示に係る他の演算装置は、プログラムを実行可能に構成された演算処理回路と、前記プログラムを格納するプログラムメモリと、を備え、前記プログラムにおける各命令は所定ビットの長さを有し、所定ビットはJビットであり、J=16×2n-1、であり、nは2以上の整数を表し、前記プログラムメモリは、第1~第2nメモリ領域を有し、第iメモリ領域よりも第(i+1)メモリ領域に対して上位側アドレスが対応付けられ、前記演算処理回路は、読み出しの対象となるアドレスを指定するための前記所定ビットのプログラムカウンタを有し、前記プログラムカウンタにおける上位側(J-n)ビットの値に応じたアドレスの命令を対象メモリ領域から読み出して実行し、前記対象メモリ領域は、前記第1~第2nメモリ領域の内、前記プログラムカウンタにおける下位側nビットの値に応じたメモリ領域である。
【発明の効果】
【0008】
本開示によれば、バンク切り替えを要することなくプログラムメモリのメモリ空間を拡張可能な演算装置を提供することが可能となる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、本開示の実施形態に係る演算装置の概略ブロック図である。
【
図2】
図2は、本開示の実施形態に係り、プログラムメモリバスの構成を示す図である。
【
図3】
図3は、本開示の実施形態に係り、メモリ空間のイメージ図である。
【
図4】
図4は、本開示の実施形態に係り、CPUに設けられるプログラムカウンタ及び複数の汎用記憶領域を示す図である。
【
図5】
図5は、参考例(EX_1A)に係るプログラムメモリの構成図である。
【
図6】
図6は、参考例(EX_1A)及び本開示の実施例(EX_1B)に係り、プログラムカウンタ及び複数の汎用記憶領域を示す図である。
【
図7】
図7は、参考例(EX_1A)に係り、プログラムメモリからの命令の読み出し動作の概念図である。
【
図8】
図8は、本開示の実施例(EX_1B)に係るプログラムメモリの構成図である。
【
図9】
図9は、本開示の実施例(EX_1B)に係り、プログラムメモリからの命令の読み出し動作の概念図である。
【
図10】
図10は、本開示の実施例(EX_1B)に係り、プログラムカウンタ及びリード対象アドレスの各構造並びにそれらの関係を示す図である。
【
図11】
図11は、本開示の実施例(EX_1B)に係り、分岐命令においてプログラムカウンタに分岐先アドレス指定データがロードされる様子を示す図である。
【
図12】
図12は、参考例(EX_2A)に係るプログラムメモリの構成図である。
【
図13】
図13は、参考例(EX_2A)及び本開示の実施例(EX_2B)に係り、プログラムカウンタ及び複数の汎用記憶領域を示す図である。
【
図14】
図14は、参考例(EX_2A)に係り、プログラムメモリからの命令の読み出し動作の概念図である。
【
図15】
図15は、本開示の実施例(EX_2B)に係るプログラムメモリの構成図である。
【
図16】
図16は、本開示の実施例(EX_2B)に係り、プログラムメモリからの命令の読み出し動作の概念図である。
【
図17】
図17は、本開示の実施例(EX_2B)に係り、プログラムカウンタ及びリード対象アドレスの各構造並びにそれらの関係を示す図である。
【
図18】
図18は、本開示の実施例(EX_2B)に係り、分岐命令においてプログラムカウンタに分岐先アドレス指定データがロードされる様子を示す図である。
【
図19】
図19は、本開示の実施例(EX_3B)に係るプログラムメモリの構成図である。
【
図20】
図20は、本開示の実施例(EX_3B)に係り、プログラムメモリからの命令の読み出し動作の概念図である。
【
図21】
図21は、本開示の実施例(EX_3B)に係り、プログラムカウンタ及びリード対象アドレスの各構造並びにそれらの関係を示す図である。
【
図22】
図22は、本開示の実施例(EX_3B)に係り、分岐命令においてプログラムカウンタに分岐先アドレス指定データがロードされる様子を示す図である。
【発明を実施するための形態】
【0010】
以下、本開示の実施形態の例を、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。尚、本明細書では、記述の簡略化上、情報、信号、物理量、素子又は部位等を参照する記号又は符号を記すことによって、該記号又は符号に対応する情報、信号、物理量、素子又は部位等の名称を省略又は略記することがある。例えば、後述の“610”によって参照される分岐先アドレス記憶領域610は(
図11参照)、分岐先アドレス記憶領域610と表記されることもあるし、記憶領域610と略記されることもあり得るが、それらは全て同じものを指す。
【0011】
図1に本開示の実施形態に係る演算装置10の概略ブロック図を示す。演算装置10はLSI(Large Scale Integration)に分類される半導体集積回路にて構成される。演算装置10は、CPU(Central Processing Unit)20と、プログラムメモリ30と、プログラムメモリバス40と、データメモリ50と、データメモリバス60と、を備える。
【0012】
CPU20は8ビットを単位に演算を行う演算処理回路である。故に、演算装置10は8ビットマイクロコンピュータに分類されると考えることができる。プログラムメモリバス40の一方においてCPU20が接続され、プログラムメモリバス40の他方においてプログラムメモリ30が接続される。つまり、CPU20及びプログラムメモリ30はプログラムメモリバス40を介して互いに接続される。
【0013】
プログラムメモリ30は、フラッシュメモリ等にて構成された不揮発性の記憶回路であっても良いし、RAM(Random Access Memory)により構成された揮発性の記憶回路であっても良い。プログラムメモリ30にはCPU20にて実行されるべきプログラムが格納される。CPU20はプログラムメモリバス40を介してプログラムメモリ30にアクセスする。プログラムメモリ30に対するアクセスは、プログラムメモリ30内のデータ(命令を表すデータ)を読み出すリードアクセスを含む。プログラムメモリ30に格納されるプログラムはCPU20が実行すべき命令(命令コード)の束から成る。CPU20は、CPU20の動作クロックに同期してプログラムメモリ30からプログラムメモリバス40を介し必要な命令を順次読み出し、順次読み出した命令を、デコード等を経て順次実行することによりプログラムを実行してゆく。以下の説明において、単にプログラムと称した場合、それはプログラムメモリ30に格納されたプログラムを指すものとする。
【0014】
データメモリ50は、プログラムメモリ30とは別に演算装置10に設けられたメモリであり、ROM(Read only memory)及びRAM(Random access memory)を備えて構成される。CPU20はデータメモリバス60を介してデータメモリ50にアクセスする。データメモリ50に対するアクセスは、データメモリ50内のデータを読み出すリードアクセス及びデータメモリ50内にデータを書き込むライトアクセスを含む。
【0015】
図2に示す如く、プログラムメモリバス40はアドレスバス41及びデータバス42を備える。データメモリバス60も同様にアドレスバス及びデータバスを備えるが、
図2では、データメモリバス60の構成の図示は省略されている。
【0016】
図3を参照し、プログラムメモリ30に対し、プログラムメモリ30が有する記憶領域のサイズに応じたメモリ空間MSが定義される。メモリ空間MSにおいて、8ビット(即ち1バイト)ごとに固有のアドレスが割り当てられる。以下に説明において、アドレスとは、プログラムメモリ30に定義されたメモリ空間MSでのアドレスを指す。アドレスは数値にて表現され、或る注目アドレスから見て、より小さな数値にて示されるアドレスは注目アドレスの下位側のアドレスであり、より大きな数値にて示されるアドレスは注目アドレスの上位側のアドレスである。
【0017】
例えば、メモリ空間MSが64kB(キロバイト)分の記憶領域を有するとき、メモリ空間MSにおける最下位アドレスは“0x0000”であり、メモリ空間MSにおける最上位アドレスは“0xffff”である。尚、本実施形態では、適宜、アドレスを16進数で表記する。アドレスを示す数値の先頭に付加される文字列“0x”は、文字列“0x”に続く数値が16進数であることを表す。故に、“0x0000”は10進数表記では“0”を表し、“0xffff”は10進数表記では“65535”を表す。
【0018】
CPU20に複数のレジスタが設けられる。各レジスタは8ビットのレジスタ(即ち8ビット分の記憶領域を有するレジスタ)である。CPU20に設けられる複数のレジスタの全部又は一部により、プログラムカウンタPCと1以上の汎用記憶領域が形成される(
図4参照)。形成される汎用記憶領域の個数は任意であるが、ここでは、計8つの汎用記憶領域GPR[0]~GPR[7]が形成されるものとする。
【0019】
プログラムカウンタPCには、読み出しの対象となるアドレス(即ちリードアクセスの対象となるアドレス)を指定するためのデータが格納される。以下、プログラムカウンタPCにて指定されて読み出しの対象となるアドレスを、リード対象アドレスと称する。尚、演算装置10の起動時には、プログラムカウンタPCにメモリ空間MSの最下位アドレスが代入される。
【0020】
以下、複数の実施例の中で、幾つかの具体的な動作例、応用技術、変形技術等を説明する。本実施形態にて上述した事項は、特に記述無き限り且つ矛盾無き限り、以下の各実施例に適用される。各実施例において、上述の事項と矛盾する事項がある場合には、各実施例での記載が優先されて良い。また矛盾無き限り、以下に示す複数の実施例の内、任意の実施例に記載した事項を、他の任意の実施例に適用することもできる(即ち複数の実施例の内の任意の2以上の実施例を組み合わせることも可能である)。
【0021】
<<参考例EX_1A>>
後述の実施例EX_1Bとの対比に供される参考例EX_1Aを説明する。参考例EX_1A及び実施例EX_1Bにおいて、CPU20が実行する各命令は16ビットの命令長を有する。即ち、参考例EX_1A及び実施例EX_1Bにおいて、CPU20が実行する各命令は16ビットの長さを有する(16ビットのデータにて構成される)。
【0022】
参考例EX_1Aに係るプログラムメモリ30を特にプログラムメモリ30_1Aと称する。
図5にプログラムメモリ30_1Aの構成を示す。プログラムメモリ30_1Aは最大で64kBのメモリ空間MSを有する。ここでは、プログラムメモリ30_1Aは64kBのメモリ空間MSを有するものとする。プログラムメモリ30_1Aにおいて、最下位アドレスは“0x0000”であり、最上位アドレスは“0xffff”である。
【0023】
各命令が16ビットの命令長を有することに対応して、プログラムメモリ30_1Aへのアクセスの単位となるワードのデータ長は、16ビット(16ビット長)である。即ち、参考例EX_1Aに係るCPU20は、プログラムメモリ30_1Aから、16ビット分のデータを一括して読み出すことで、次に実行されるべき1命令を読み出す。故に、参考例EX_1Aでは、データバス42が16本の配線にて形成される。
【0024】
図6を参照し、参考例EX_1A及び実施例EX_1Bに係るプログラムカウンタPCを特に記号“PC_1”にて参照する。参考例EX_1A及び実施例EX_1Bにおいて、プログラムカウンタPC_1は、CPU20に設けられた第1及び第2レジスタの組み合わせにより構成される。各命令が16ビットの命令長を有することに対応して、CPU20にて1命令が実行されるたびにプログラムカウンタPC_1の値が2だけ加算される(但し、分岐命令を除く)。
【0025】
参考例EX_1A及び実施例EX_1Bに係る汎用記憶領域GPR[i]を特に記号“GPR[i]_1”にて参照する(iは整数)。参考例EX_1A及び実施例EX_1Bにおいて、汎用記憶領域GPR[1]_1はCPU20に設けられた第3及び第4レジスタの組み合わせにより構成され、汎用記憶領域GPR[2]_1はCPU20に設けられた第5及び第6レジスタの組み合わせにより構成される。汎用記憶領域GPR[3]_1~GPR[7]_1についても同様である。
【0026】
上述したように、CPU20に設けられる各レジスタは、8ビットのレジスタ(即ち8ビット分の記憶領域を有するレジスタ)である。故に、プログラムカウンタPC_1及び汎用記憶領域GPR[0]_1~GPR[7]_1は、夫々に、16ビットの記憶領域を有する。
【0027】
図7に、参考例EX_1Aに係り、プログラムメモリ30_1Aからの命令の読み出し動作(リードアクセス)の概念図を示す。プログラムカウンタPC_1における上位側15ビットを記号“PC[15:1]”にて表す。参考例EX_1Aにおいて、リード対象アドレスは16ビットにて指定及び表現される。参考例EX_1Aでは、16ビット単位で(即ち2バイト単位で)命令が読み出されるため、プログラムカウンタPC_1の最下位ビットは常に“0”で固定される。即ち、プログラムカウンタPC_1における上位側15ビットの値にてリード対象アドレスの上位側15ビットが指定され、リード対象アドレスの最下位ビットの値は常に“0”である。
【0028】
例えば、プログラムカウンタPC_1における上位側15ビットの値が全て“0”であれば、リード対象アドレスは“0x0000”である。このとき、アドレス“0x0000”における1バイト分のデータとアドレス“0x0001”における1バイト分のデータとから成るワードデータ(2バイト分のデータ)が1命令のデータとしてプログラムメモリ30_1Aから読み出されてCPU20に送られる。
【0029】
或いは例えば、プログラムカウンタPC_1における上位側15ビットの値が全て“1”であれば、リード対象アドレスは“0xfffe”である。このとき、アドレス“0xfffe”における1バイト分のデータとアドレス“0xffff”における1バイト分のデータとから成るワードデータ(2バイト分のデータ)が1命令のデータとしてプログラムメモリ30_1Aから読み出されてCPU20に送られる。
【0030】
参考例EX_1Aにおいて、メモリ空間MSを64kBより拡張する方式としてバンク切り替え方式がある。バンク切り替え方式では、64kBのプログラムメモリを複数用意し、読み出しの対象となるプログラムメモリをバンク切り替えにて適宜切り替える。但し、バンク切り替え用の回路が必要となる分、回路規模がかなり大きくなる。また、バンク切り替えのためのプログラム記述が煩雑となると共に、バンク切り替えの実現に向けて必要となるコンパイラ変更が煩雑となる。更に、バンク切り替えごとに数命令の実行が必要となるため、命令効率が劣化する。
【0031】
<<実施例EX_1B>>
実施例EX_1Bを説明する。実施例EX_1Bでは、参考例EX_1Aを基準にバンク切り替えを利用することなく、メモリ空間MSを128kB(キロバイト)に拡張する。参考例EX_1Aでは、プログラムカウンタPC_1の最下位ビットの値が“0”に固定されており、考えようによっては、当該最下位ビットが有効活用されていない状態にあると言える。実施例EX_1Bでは、当該最下位ビットを積極的に利用することでメモリ空間MSを128kBにまで拡張する。
【0032】
実施例EX_1Bに係るプログラムメモリ30を特にプログラムメモリ30_1Bと称する。
図8にプログラムメモリ30_1Bの構成を示す。プログラムメモリ30_1Bは最大で128kBのメモリ空間MSを有する。ここでは、プログラムメモリ30_1Bは128kBのメモリ空間MSを有するものとする。プログラムメモリ30_1Bにおいて、最下位アドレスは“0x00000”であり、最上位アドレスは“0x1ffff”である。
【0033】
プログラムメモリ30_1Bは、第1メモリ領域30_1B_1と、第2メモリ領域30_1B_2と、を備えて構成される。各メモリ領域は連続したアドレスが対応付けられた64kBの記憶領域を有する。命令がJビット(ここでは16ビット)から成ると考えた場合、64kBは2Jバイトに相当する。第2メモリ領域30_1B_2に対して、第1メモリ領域30_1B_1よりも上位側アドレスが対応付けられる。即ち、第1メモリ領域30_1B_1は、アドレス“0x00000”からアドレス“0x0ffff”までの64kBのメモリ領域である。第2メモリ領域30_1B_2は、アドレス“0x10000”からアドレス“0x1ffff”までの64kBのメモリ領域である。
【0034】
各命令が16ビットの命令長を有することに対応して、プログラムメモリ30_1Bへのアクセスの単位となるワードのデータ長は、16ビット(16ビット長)である。即ち、実施例EX_1Bに係るCPU20は、プログラムメモリ30_1Bから、16ビット分のデータを一括して読み出すことで、次に実行されるべき1命令を読み出す。故に、実施例EX_1Bでは、データバス42が16本の配線にて形成される。
【0035】
また各命令が16ビットの命令長を有することに対応して、CPU20にて1命令が実行されるたびにプログラムカウンタPC_1の値が2だけ加算される。但し、CPU20にて分岐命令が実行される場合には、分岐命令に従う値がプログラムカウンタPC_1に代入される。
【0036】
図9に、実施例EX_1Bに係り、プログラムメモリ30_1Bからの命令の読み出し動作(リードアクセス)の概念図を示す。
図10も参照し、プログラムカウンタPC_1はビットPC[15]~PC[0]から成り、プログラムカウンタPC_1においてビットPC[i]の値を記号“L[i]”にて表す。プログラムカウンタPC_1において、ビットPC[15]が最上位ビットであって且つビットPC[0]が最下位ビットであり、ビットPC[i+1]はビットPC[i]よりも上位側に位置する(iは任意の整数)。尚、上述したように、プログラムカウンタPC_1の上位側15ビット(即ちビットPC[15]~PC[1]の集まり)を記号“PC[15:1]”にて表す。
【0037】
実施例EX_1Bにおいて、プログラムメモリ30_1Bは128kB分のメモリ空間MSを有するため、リード対象アドレスは17ビットにて指定及び表現される。実施例EX_1Bに係るリード対象アドレスを特に記号“ADR_1”にて参照する。
【0038】
図10には16ビットのプログラムカウンタPC_1の構造と共に17ビットのリード対象アドレスADR_1の構造が示される。リード対象アドレスADR_1はビットADR[16]~ADR[0]から成り、リード対象アドレスADR_1においてビットADR[i]の値を記号“M[i]”にて表す。リード対象アドレスADR_1において、ビットADR[16]が最上位ビットであって且つビットADR[0]が最下位ビットであり、ビットADR[i+1]はビットADR[i]よりも上位側に位置する(iは任意の整数)。
【0039】
リード対象アドレスADR_1の最上位ビットADR[16]の値M[16]は、プログラムカウンタPC_1の最下位ビットPC[0]の値L[0]にて表される(即ち、M[16]=L[0]とされる)。リード対象アドレスADR_1の最下位ビットADR[0]の値M[0]は、所定値“0”にて固定される。リード対象アドレスADR_1のビットの内、最上位ビットADR[16]より下位であって且つ最下位ビットADR[0]よりも上位の計15ビットは、ビットADR[15:1]である。ビットADR[15:1]の値は、プログラムカウンタPC_1の上位側15ビットPC[15:1]の値にて表される。即ち、“1≦i≦15”を満たす各整数iについて、“M[i]=L[i]”が成立する。
【0040】
このため、実施例EX_1Bに係るCPU20は、プログラムカウンタPC_1の最下位ビットの値L[0]に基づいて第1メモリ領域30_1B_1及び第2メモリ領域30_1B_2の何れか一方を選択することになる。ここで選択されたメモリ領域を、便宜上、対象メモリ領域と称する。そうすると、対象メモリ領域の内、プログラムカウンタPC_1の上位側15ビットPC[15:1]の値に応じたアドレスがリード対象アドレスに設定される。そして、設定されたリード対象アドレスを起点とする1命令(2バイト分のデータ)がプログラムメモリ30_1Bから読み出されてCPU20に送られる。尚、プログラムメモリ30_1Bに対しては、リード対象アドレスADR_1のビットの内、最下位ビットを除く計16ビット分の値をCPU20から指定する必要がある。この指定を行うための計16本の配線がアドレスバス41に設けられる。
【0041】
例えば、プログラムカウンタPC_1に格納された値が“0x1234”である第1ケースCS_1Bを考える。第1ケースCS_1Bでは、リード対象アドレスADR_1が“0x01234”となる。第1ケースCS_1Bでは、“L[0]=0”であるので、対象メモリ領域は第1メモリ領域30_1B_1となる。そして、第1メモリ領域30_1B_1におけるアドレス“0x01234”及び“0x01235”内のデータが1命令としてCPU20に読み出される。つまり、アドレス“0x01234”における1バイト分のデータとアドレス“0x01235”における1バイト分のデータとから成るワードデータ(2バイト分のデータ)がプログラムメモリ30_1Bから読み出されてCPU20に送られる。
【0042】
また例えば、プログラムカウンタPC_1に格納された値が“0x1235”である第2ケースCS_1Bを考える。第2ケースCS_1Bでは、リード対象アドレスADR_1が“0x11234”となる。第2ケースCS_1Bでは、“L[0]=1”であるので、対象メモリ領域は第2メモリ領域30_1B_2となる。そして、第2メモリ領域30_1B_2におけるアドレス“0x11234”及び“0x11235”内のデータが1命令としてCPU20に読み出される。つまり、アドレス“0x11234”における1バイト分のデータとアドレス“0x11235”における1バイト分のデータとから成るワードデータ(2バイト分のデータ)がプログラムメモリ30_1Bから読み出されてCPU20に送られる。
【0043】
CPU20にて複数種類の命令を実行可能である。複数種類の命令には、データ転送命令、分岐命令、算術命令、ビット操作命令及び制御命令などが含まれる。分岐命令が実行されるとき、
図11に示す如く、記憶領域610に格納されたデータ620がプログラムカウンタPC_1にロードされる(転送されて書き込まれる)。記憶領域610は分岐先アドレス記憶領域であり、データ620は分岐先アドレス指定データである。当該ロードは、分岐命令にて指定された条件が満たされた場合に限って実行されることもあるし、無条件で実行されることもある。
【0044】
分岐先アドレス記憶領域610は16ビットの記憶領域であり(即ち16ビット分の記憶領域を有し)、故に、分岐先アドレス指定データ620は16ビット分のデータである。分岐先アドレス指定データ620により分岐先のアドレスが指定される。従って、分岐先アドレス指定データ620がプログラムカウンタPC_1にロードされたとき、分岐先アドレス指定データ620に基づくアドレスが次回のリード対象アドレスADR_1となる。結果、分岐先アドレス指定データ620に基づくアドレスへの分岐が行われる。
【0045】
分岐命令の例としてジャンプ命令がある。ジャンプ命令の一種では、ジャンプ命令にて指定された条件が満たされた場合に限って又は無条件にて、記憶領域610に格納されたデータ620がプログラムカウンタPC_1にロードされる。この際、記憶領域610は16ビットの汎用記憶領域GPR[0]_1~GPR[7]_1の何れかであり(
図6)、汎用記憶領域GPR[0]_1~GPR[7]_1の内、何れが記憶領域610として用いられるかはジャンプ命令の中で指定される。
【0046】
分岐命令の例としてサブルーチンコール命令がある。サブルーチンコール命令の一種では、記憶領域610に格納されたデータ620がプログラムカウンタPC_1にロードされる。この際、記憶領域610は16ビットの汎用記憶領域GPR[0]_1~GPR[7]_1の何れかであり(
図6)、汎用記憶領域GPR[0]_1~GPR[7]_1の内、何れが記憶領域610として用いられるかはサブルーチンコール命令の中で指定される。また、サブルーチンコール命令にて分岐が行われるとき、CPU20は、データ620をプログラムカウンタPC_1にロードする直前のプログラムカウンタPC_1の格納値をスタック領域に退避(格納)させ、その後にアドレスの分岐を行う。実施例EX_1Bに係るスタック領域は16ビットの記憶領域である(即ち16ビット分の記憶領域を有する)。スタック領域は、データメモリ50内に設けられる場合もあるし、CPU20内の2つのレジスタにて構成される場合もある。
【0047】
サブルーチンからの復帰命令も分岐命令に属する。サブルーチンからの復帰命令は、サブルーチンコール命令で分岐が行われた後に実行される命令である。サブルーチンからの復帰命令でも、記憶領域610に格納されたデータ620がプログラムカウンタPC_1にロードされるが、この際における記憶領域610はスタック領域である。
【0048】
この他、割り込みからの復帰命令も分岐命令に属する。割り込みの発生時には割り込みの発生直前のプログラムカウンタPC_1の格納値がスタック領域に退避(格納)される。割り込みからの復帰命令により、CPU20は割り込み発生前の状態に復帰する。この復帰に際し、スタック領域が記憶領域610として機能し、記憶領域610に格納されたデータ620がプログラムカウンタPC_1にロードされる。
【0049】
分岐命令においてデータ620がプログラムカウンタPC_1にロードされたとき(転送されて書き込まれたとき)、データ620の最下位ビットの値に応じて、第1メモリ領域30_1B_1及び第2メモリ領域30_1B_2の何れかのメモリ領域内のアドレスに分岐することになる。
【0050】
即ち、分岐命令にてデータ620がプログラムカウンタPC_1にロードされ、当該ロードの結果として、プログラムカウンタPC_1の最下位ビットPC[0]に“0”の値が格納された場合を考える。この場合、プログラムカウンタPC_1における上位側15ビットの値に応じたアドレスであって且つ第1メモリ領域30_1B_1内のアドレスに分岐することになる。
【0051】
より具体的には例えば、“0x1234”の値を持つデータ620が分岐命令によりプログラムカウンタPC_1にロードされた場合、プログラムカウンタPC_1の最下位ビットPC[0]に“0”の値が格納される。この場合、リード対象アドレスADR_1が“0x01234”となり、次回の命令読み出し動作は上記第1ケースCS_1Bにおけるものと同じとなる。プログラムの設計者は、第1メモリ領域30_1B_1内のアドレスへの分岐を発生させたいとき、データ620の最下位ビットの値を“0”にすれば良い。
【0052】
逆に、分岐命令にてデータ620がプログラムカウンタPC_1にロードされ、当該ロードの結果として、プログラムカウンタPC_1の最下位ビットPC[0]に“1”の値が格納された場合を考える。この場合、プログラムカウンタPC_1における上位側15ビットの値に応じたアドレスであって且つ第2メモリ領域30_1B_2内のアドレスに分岐することになる。
【0053】
より具体的には例えば、“0x1235”の値を持つデータ620が分岐命令によりプログラムカウンタPC_1にロードされた場合、プログラムカウンタPC_1の最下位ビットPC[0]に“1”の値が格納される。この場合、リード対象アドレスADR_1が“0x11234”となり、次回の命令読み出し動作は上記第2ケースCS_1Bにおけるものと同じとなる。プログラムの設計者は、第2メモリ領域30_1B_2内のアドレスへの分岐を発生させたいとき、データ620の最下位ビットの値を“1”にすれば良い。
【0054】
実施例EX_1Bによれば、メモリバンク切り替え方式との比較において、回路規模を増大させることなくメモリ空間MSを128kBまで拡張することができる。また、参考例EX_1Aから実施例EX_1Bへの変更に関わるコンパイラ変更は簡単である。更に、バンク切り替えが不要であるため命令効率の劣化も無い。
【0055】
加えて、参考例EX_1Aの構成から実施例EX_1Bの構成へとアップグレードする際、命令セットの互換性が維持される。これについて説明を加える。参考例EX_1Aの構成から実施例EX_1Bの構成への変更を検討する際、プログラムの設計者にとっては、参考例EX_1Aの構成用に設計されたプログラム(バイナリプログラム)が実施例EX_1Bの構成においても問題なく動作するのかが気がかりとなる。ここで、参考例EX_1Aの構成用に設計されたプログラム(バイナリプログラム)では、データ620の最下位ビットの値が“0”に固定されているはずである。このため、参考例EX_1Aの構成用に設計されたプログラム(バイナリプログラム)を実施例EX_1Bの構成において動作させても、分岐先が“0x00000”から“0x0fffe”までの64kB空間に限定されるため、問題なくプログラムが動作する。プログラムの設計者は、“0x10000”以降の拡張空間へのアクセスを図る新たなプログラムを開発する際に、データ620の最下位ビットの値を“0”及び“1”の何れにするのか検討すれば良い。
【0056】
<<参考例EX_2A>>
参考例EX_1Aの構成を実施例EX_1Bの構成へと変更するための技術は、命令長が16ビット以外でも利用できる。参考例EX_2A及び実施例EX_2Bにて命令長が32ビットの場合を考える。まず、後述の実施例EX_2Bとの対比に供される参考例EX_2Aを説明する。参考例EX_2A及び実施例EX_2Bにおいて、CPU20が実行する各命令は32ビットの命令長を有する。即ち、参考例EX_2A及び実施例EX_2Bにおいて、CPU20が実行する各命令は32ビットの長さを有する(32ビットのデータにて構成される)。
【0057】
参考例EX_2Aに係るプログラムメモリ30を特にプログラムメモリ30_2Aと称する。
図12にプログラムメモリ30_2Aの構成を示す。プログラムメモリ30_2Aは最大で4GB(ギガバイト)のメモリ空間MSを有する。ここでは、プログラムメモリ30_2Aは4GBのメモリ空間MSを有するものとする。プログラムメモリ30_2Aにおいて、最下位アドレスは“0x00000000”であり、最上位アドレスは“0xffffffff”である。
【0058】
各命令が32ビットの命令長を有することに対応して、プログラムメモリ30_2Aへのアクセスの単位となるワードのデータ長は、32ビット(32ビット長)である。即ち、参考例EX_2Aに係るCPU20は、プログラムメモリ30_2Aから、32ビット分のデータを一括して読み出すことで、次に実行されるべき1命令を読み出す。故に、参考例EX_2Aでは、データバス42が32本の配線にて形成される。
【0059】
図13を参照し、参考例EX_2A及び実施例EX_2Bに係るプログラムカウンタPCを特に記号“PC_2”にて参照する。参考例EX_2A及び実施例EX_2Bにおいて、プログラムカウンタPC_2は、CPU20に設けられた4つのレジスタの組み合わせにより構成される。各命令が32ビットの命令長を有することに対応して、CPU20にて1命令が実行されるたびにプログラムカウンタPC_2の値が4だけ加算される(但し、分岐命令を除く)。
【0060】
参考例EX_2A及び実施例EX_2Bに係る汎用記憶領域GPR[i]を特に記号“GPR[i]_2”にて参照する(iは整数)。参考例EX_2A及び実施例EX_2Bにおいて、各汎用記憶領域は4つのレジスタの組み合わせにより構成される。
【0061】
上述したように、CPU20に設けられた各レジスタは、8ビットのレジスタ(即ち8ビット分の記憶領域を有するレジスタ)である。故に、プログラムカウンタPC_2及び汎用記憶領域GPR[0]_2~GPR[7]_2は、夫々に、32ビットの記憶領域を有する。
【0062】
図14に、参考例EX_2Aに係り、プログラムメモリ30_2Aからの命令の読み出し動作(リードアクセス)の概念図を示す。プログラムカウンタPC_2における上位側30ビットを記号“PC[31:2]”にて表す。参考例EX_2Aにおいて、リード対象アドレスは32ビットにて指定及び表現される。参考例EX_2Aでは、32ビット単位で(即ち4バイト単位で)命令が読み出されるため、プログラムカウンタPC_2の下位側2ビット(最下位ビットと2番目に下位のビット)は常に“0”で固定される。即ち、プログラムカウンタPC_2における上位側30ビットの値にてリード対象アドレスの上位側30ビットが指定され、リード対象アドレスの下位側2ビット(最下位ビットと2番目に下位のビット)の値は常に“0”である。
【0063】
例えば、プログラムカウンタPC_2における上位側30ビットの値が全て“0”であれば、リード対象アドレスは“0x00000000”である。このとき、アドレス“0x00000000”から始まる計4バイト分のデータ、即ちアドレス“0x00000000”からアドレス“0x00000003”までの計4バイト分のデータが、1命令のデータとしてプログラムメモリ30_2Aから読み出されてCPU20に送られる。
【0064】
或いは例えば、プログラムカウンタPC_2における上位側30ビットの値が全て“1”であれば、リード対象アドレスは“0xfffffffc”である。このとき、アドレス“0xfffffffc”から始まる計4バイト分のデータ、即ちアドレス“0xfffffffc”からアドレス“0xffffffff”までの計4バイト分のデータが、1命令のデータとしてプログラムメモリ30_2Aから読み出されてCPU20に送られる。
【0065】
<<実施例EX_2B>>
実施例EX_2Bを説明する。実施例EX_2Bでは、参考例EX_2Aを基準にバンク切り替えを利用することなく、メモリ空間MSを16GB(ギガバイト)に拡張する。
【0066】
実施例EX_2Bに係るプログラムメモリ30を特にプログラムメモリ30_2Bと称する。
図15にプログラムメモリ30_2Bの構成を示す。プログラムメモリ30_2Bは最大で16GBのメモリ空間MSを有する。ここでは、プログラムメモリ30_2Bは16GBのメモリ空間MSを有するものとする。プログラムメモリ30_2Bにおいて、最下位アドレスは“0x000000000”であり、最上位アドレスは“0x3ffffffff”である。
【0067】
プログラムメモリ30_2Bは、第1メモリ領域30_2B_1と、第2メモリ領域30_2B_2と、第3メモリ領域30_2B_3と、第4メモリ領域30_2B_4と、を備えて構成される。各メモリ領域は連続したアドレスが対応付けられた4GBの記憶領域を有する。命令がJビット(ここでは32ビット)から成ると考えた場合、4GBは2Jバイトに相当する。第(i+1)メモリ領域に対して第iメモリ領域よりも上位側アドレスが対応付けられる。詳細には、第1メモリ領域30_2B_1は、アドレス“0x000000000”からアドレス“0x0ffffffff”までの4GBのメモリ領域である。第2メモリ領域30_2B_2は、アドレス“0x100000000”からアドレス“0x1ffffffff”までの4GBのメモリ領域である。第3メモリ領域30_2B_3は、アドレス“0x200000000”からアドレス“0x2ffffffff”までの4GBのメモリ領域である。第4メモリ領域30_2B_4は、アドレス“0x300000000”からアドレス“0x3ffffffff”までの4GBのメモリ領域である。
【0068】
各命令が32ビットの命令長を有することに対応して、プログラムメモリ30_2Bへのアクセスの単位となるワードのデータ長は、32ビット(32ビット長)である。即ち、実施例EX_2Bに係るCPU20は、プログラムメモリ30_2Bから、32ビット分のデータを一括して読み出すことで、次に実行されるべき1命令を読み出す。故に、実施例EX_2Bでは、データバス42が32本の配線にて形成される。
【0069】
また各命令が32ビットの命令長を有することに対応して、CPU20にて1命令が実行されるたびにプログラムカウンタPC_2の値が4だけ加算される。但し、CPU20にて分岐命令が実行される場合には、分岐命令に従う値がプログラムカウンタPC_2に代入される。
【0070】
図16に、実施例EX_2Bに係り、プログラムメモリ30_2Bからの命令の読み出し動作(リードアクセス)の概念図を示す。
図17も参照し、プログラムカウンタPC_2はビットPC[31]~PC[0]から成り、プログラムカウンタPC_2においてビットPC[i]の値を記号“L[i]”にて表す。プログラムカウンタPC_2において、ビットPC[31]が最上位ビットであって且つビットPC[0]が最下位ビットであり、ビットPC[i+1]はビットPC[i]よりも上位側に位置する(iは任意の整数)。尚、上述したように、プログラムカウンタPC_2の上位側30ビット(即ちビットPC[31]~PC[2]の集まり)を記号“PC[31:2]”にて表す。
【0071】
実施例EX_2Bにおいて、プログラムメモリ30_2Bは16GB分のメモリ空間MSを有するため、リード対象アドレスは34ビットにて指定及び表現される。実施例EX_2Bに係るリード対象アドレスを特に記号“ADR_2”にて参照する。
【0072】
図17には32ビットのプログラムカウンタPC_2の構造と共に34ビットのリード対象アドレスADR_2の構造が示される。リード対象アドレスADR_2はビットADR[33]~ADR[0]から成り、リード対象アドレスADR_2においてビットADR[i]の値を記号“M[i]”にて表す。リード対象アドレスADR_2において、ビットADR[33]が最上位ビットであって且つビットADR[0]が最下位ビットであり、ビットADR[i+1]はビットADR[i]よりも上位側に位置する(iは任意の整数)。
【0073】
リード対象アドレスADR_2のビットの内、上位側2ビットADR[33]及びADR[32]の値は、プログラムカウンタPC_2の下位側2ビットPC[1]及びPC[0]の値にて表される。即ち、“M[33]=L[1]”且つ“M[32]=L[0]”である。
【0074】
リード対象アドレスADR_2のビットの内、下位側2ビットADR[1]及びADR[0]の値は所定値“0”にて固定される。即ち、“M[1]=M[0]=0”にて固定される。
【0075】
リード対象アドレスADR_2のビットの内、上述の上位側2ビットADR[33]及びADR[32]よりも下位であって、且つ、上述の下位側2ビットADR[1]及びADR[0]よりも上位の計30ビットは、ビットADR[31:2]である。ビットADR[31:2]の値は、プログラムカウンタPC_2の上位側30ビットPC[31:2]の値にて表される。即ち、“2≦i≦31”を満たす各整数iについて、“M[i]=L[i]”が成立する。
【0076】
このため、実施例EX_2Bに係るCPU20は、プログラムカウンタPC_2の下位側2ビットの値L[1]及びL[0]に基づいて、メモリ領域30_2B_1~30_2B_4の何れか1つを選択することになる。ここで選択されたメモリ領域を、便宜上、対象メモリ領域と称する。そうすると、対象メモリ領域の内、プログラムカウンタPC_2の上位側30ビットPC[31:2]の値に応じたアドレスがリード対象アドレスに設定される。そして、設定されたリード対象アドレスを起点とする1命令(4バイト分のデータ)がプログラムメモリ30_2Bから読み出されてCPU20に送られる。尚、プログラムメモリ30_2Bに対しては、リード対象アドレスADR_2のビットの内、下位側2ビット(ADR[1]及びADR[0])を除く計32ビット分の値をCPU20から指定する必要がある。この指定を行うための計32本の配線がアドレスバス41に設けられる。
【0077】
上述したように、CPU20にて複数種類の命令を実行可能であり、複数種類の命令には、データ転送命令、分岐命令、算術命令、ビット操作命令及び制御命令などが含まれる。実施例EX_2Bに係る構成において分岐命令が実行されるとき、
図18に示す如く、記憶領域710に格納されたデータ720がプログラムカウンタPC_2にロードされる(転送されて書き込まれる)。記憶領域710は分岐先アドレス記憶領域であり、データ720は分岐先アドレス指定データである。当該ロードは、分岐命令にて指定された条件が満たされた場合に限って実行されることもあるし、無条件で実行されることもある。
【0078】
分岐先アドレス記憶領域710は32ビットの記憶領域であり(即ち32ビット分の記憶領域を有し)、故に、分岐先アドレス指定データ720は32ビット分のデータである。分岐先アドレス指定データ720により分岐先のアドレスが指定される。従って、分岐先アドレス指定データ720がプログラムカウンタPC_2にロードされたとき、分岐先アドレス指定データ720に基づくアドレスが次回のリード対象アドレスとなる。結果、分岐先アドレス指定データ720に基づくアドレスへの分岐が行われる。
【0079】
分岐命令の例としてジャンプ命令がある。ジャンプ命令の一種では、ジャンプ命令にて指定された条件が満たされた場合に限って又は無条件にて、記憶領域710に格納されたデータ720がプログラムカウンタPC_2にロードされる。この際、記憶領域710は32ビットの汎用記憶領域GPR[0]_2~GPR[7]_2の何れかであり(
図13)、汎用記憶領域GPR[0]_2~GPR[7]_2の内、何れが記憶領域710として用いられるかはジャンプ命令の中で指定される。
【0080】
分岐命令の例としてサブルーチンコール命令がある。サブルーチンコール命令の一種では、記憶領域710に格納されたデータ720がプログラムカウンタPC_2にロードされる。この際、記憶領域710は32ビットの汎用記憶領域GPR[0]_2~GPR[7]_2の何れかであり(
図13)、汎用記憶領域GPR[0]_2~GPR[7]_2の内、何れが記憶領域710として用いられるかはサブルーチンコール命令の中で指定される。また、サブルーチンコール命令にて分岐が行われるとき、CPU20は、データ720をプログラムカウンタPC_2にロードする直前のプログラムカウンタPC_2の格納値をスタック領域に退避(格納)させ、その後にアドレスの分岐を行う。実施例EX_2Bに係るスタック領域は32ビットの記憶領域である(即ち32ビット分の記憶領域を有する)。スタック領域は、データメモリ50内に設けられる場合もあるし、CPU20内の4つのレジスタにて構成される場合もある。
【0081】
サブルーチンからの復帰命令も分岐命令に属する。サブルーチンからの復帰命令は、サブルーチンコール命令で分岐が行われた後に実行される命令である。サブルーチンからの復帰命令でも、記憶領域710に格納されたデータ720がプログラムカウンタPC_2にロードされるが、この際における記憶領域710はスタック領域である。
【0082】
この他、割り込みからの復帰命令も分岐命令に属する。割り込みの発生時には割り込みの発生直前のプログラムカウンタPC_2の格納値がスタック領域に退避(格納)される。割り込みからの復帰命令により、CPU20は割り込み発生前の状態に復帰する。この復帰に際し、スタック領域が記憶領域710として機能し、記憶領域710に格納されたデータ720がプログラムカウンタPC_2にロードされる。
【0083】
分岐命令においてデータ720がプログラムカウンタPC_2にロードされたとき(転送されて書き込まれたとき)、データ720の下位側2ビットの値に応じて、メモリ領域30_2B_1~30_2B_4の何れかのメモリ領域内のアドレスに分岐することになる。データ720の下位側2ビットとは、データ720のビットの内、1番目に下位のビット(即ち最下位ビット)と2番目に下位のビット(最下位ビットの次に下位のビット)を指す。
【0084】
例えば、分岐命令にてデータ720がプログラムカウンタPC_2にロードされ、当該ロードの結果として、プログラムカウンタPC_2のビットPC[1]及びPC[0]の夫々に“0”の値が格納された場合を考える。この場合、プログラムカウンタPC_2における上位側30ビットPC[31:2]の値に応じたアドレスであって且つ第1メモリ領域30_2B_1内のアドレスに分岐することになる。即ち例えば、“0x12345670”の値を持つデータ720が分岐命令によりプログラムカウンタPC_2にロードされた場合、プログラムカウンタPC_2のビットPC[1]及びPC[0]の夫々に“0”の値が格納される。そうすると、リード対象アドレスADR_2は第1メモリ領域30_2B_1内のアドレスとなり、データ720に基づく第1メモリ領域30_2B_1内のアドレスへと分岐する。
【0085】
また例えば、分岐命令にてデータ720がプログラムカウンタPC_2にロードされ、当該ロードの結果として、プログラムカウンタPC_2のビットPC[1]及びPC[0]に夫々“0”及び“1”の値が格納された場合を考える。この場合、プログラムカウンタPC_2における上位側30ビットPC[31:2]の値に応じたアドレスであって且つ第2メモリ領域30_2B_2内のアドレスに分岐することになる。即ち例えば、“0x12345671”の値を持つデータ720が分岐命令によりプログラムカウンタPC_2にロードされた場合、プログラムカウンタPC_2のビットPC[1]及びPC[0]に夫々“0”及び“1”の値が格納される。そうすると、リード対象アドレスADR_2は第2メモリ領域30_2B_2内のアドレスとなり、データ720に基づく第2メモリ領域30_2B_2内のアドレスへと分岐する。
【0086】
更に例えば、分岐命令にてデータ720がプログラムカウンタPC_2にロードされ、当該ロードの結果として、プログラムカウンタPC_2のビッL[1]及びL[0]に夫々“1”及び“0”の値が格納された場合を考える。この場合、プログラムカウンタPC_2における上位側30ビットPC[31:2]の値に応じたアドレスであって且つ第2メモリ領域30_2B_3内のアドレスに分岐することになる。即ち例えば、“0x12345672”の値を持つデータ720が分岐命令によりプログラムカウンタPC_2にロードされた場合、プログラムカウンタPC_2のビットPC[1]及びPC[0]に夫々“1”及び“0”の値が格納される。そうすると、リード対象アドレスADR_2は第3メモリ領域30_2B_3内のアドレスとなり、データ720に基づく第3メモリ領域30_2B_3内のアドレスへと分岐する。
【0087】
更に例えば、分岐命令にてデータ720がプログラムカウンタPC_2にロードされ、当該ロードの結果として、プログラムカウンタPC_2のビットPC[1]及びPC[0]の夫々に“1”の値が格納された場合を考える。この場合、プログラムカウンタPC_2における上位側30ビットPC[31:2]の値に応じたアドレスであって且つ第4メモリ領域30_2B_4内のアドレスに分岐することになる。即ち例えば、“0x12345673”の値を持つデータ720が分岐命令によりプログラムカウンタPC_2にロードされた場合、プログラムカウンタPC_2のビットPC[1]及びPC[0]の夫々に“1”の値が格納される。そうすると、リード対象アドレスADR_2は第4メモリ領域30_2B_4内のアドレスとなり、データ720に基づく第4メモリ領域30_2B_4内のアドレスへと分岐する。
【0088】
尚、ここでは、“(M[33], M[32])=(L[1],L[0])”が成立することを想定したが(
図17参照)、“(M[33], M[32])=(L[0],L[1])”となるように変形しても良い。
【0089】
<<実施例EX_3B>>
実施例EX_3Bを説明する。CPU20が実行する各命令の命令長を記号“J”にて表す。即ち、CPU20が実行する各命令はJビットの長さを有する(Jビットのデータにて構成される)。ここで、
J=16×2n-1
が成立する。nは任意の自然数である。2n-1は2の(n-1)乗を表す。“n=1”であれば“J=16”であり、“n=2”であれば“J=32”である。実施例EX_1Bにて“n=1”であるときのメモリ空間MSの拡張方法を示し、実施例EX_2Bにて“n=2”であるときのメモリ空間MSの拡張方法を示した。実施例EX_3Bでは、nの値を一般化した上で、メモリ空間MSの拡張方法を示す。
【0090】
実施例EX_3Bに係るプログラムメモリ30を特にプログラムメモリ30_nBと称する。
図19にプログラムメモリ30_nBの構成を示す。プログラムメモリ30_nBは所定サイズのメモリ空間MSを有する。
【0091】
各命令がJビットの命令長を有することに対応して、プログラムメモリ30_nBへのアクセスの単位となるワードのデータ長は、Jビット(Jビット長)である。即ち、実施例EX_3Bに係るCPU20は、プログラムメモリ30_nBから、Jビット分のデータを一括して読み出すことで、次に実行されるべき1命令を読み出す。故に、実施例EX_3Bでは、データバス42がJ本の配線にて形成される。
【0092】
プログラムメモリ30_nBは計2n個のメモリ領域を備える。計2n個のメモリ領域は第1~第2nメモリ領域である。2nは2のn乗を表す。プログラムメモリ30_nBにおける第jメモリ領域を、記号“30_nB_[j]”にて参照する(jは整数)。プログラムメモリ30_nBにおいて、各メモリ領域は連続したアドレスが対応付けられた所定サイズの記憶領域を有する。プログラムメモリ30_nBにおいて、第(i+1)メモリ領域に対して第iメモリ領域よりも上位側アドレスが対応付けられる。プログラムメモリ30_nBにおける各メモリ領域は2Jバイト分の記憶領域を有する。
【0093】
実施例EX_3Bに係るプログラムカウンタPCを特に記号“PC_n”にて参照する。プログラムカウンタPC_nはJビットの記憶領域を有する。プログラムカウンタPC_nは、CPU20に設けられた複数のレジスタの組み合わせにより構成される。各命令がJビットの命令長を有することに対応して、CPU20にて1命令が実行されるたびにプログラムカウンタPC_nの値が“2n”だけ加算される。但し、CPU20にて分岐命令が実行される場合には、分岐命令に従う値がプログラムカウンタPC_nに代入される。
【0094】
図20に、実施例EX_3Bに係り、プログラムメモリ30_nBからの命令の読み出し動作(リードアクセス)の概念図を示す。尚、
図20に示される記号“Z”の意義は後述の説明から明らかとなる。
図21も参照し、プログラムカウンタPC_nはビットPC[J-1]~PC[0]から成り、プログラムカウンタPC_nにおいてビットPC[i]の値を記号“L[i]”にて表す。プログラムカウンタPC_nにおいて、ビットPC[J-1]が最上位ビットであって且つビットPC[0]が最下位ビットであり、ビットPC[i+1]はビットPC[i]よりも上位側に位置する(iは任意の整数)。尚、プログラムカウンタPC_1の上位側(J-n)ビット(即ちビットPC[J-1]~PC[n]の集まり)を記号“PC[J-1:n]”にて表す。
【0095】
実施例EX_3Bにおいてリード対象アドレスは(J+n)ビットにて指定及び表現される。実施例EX_3Bに係るリード対象アドレスを特に記号“ADR_n”にて参照する。
【0096】
図21にはJビットのプログラムカウンタPC_nの構造と共に(J+n)ビットのリード対象アドレスADR_nの構造が示される。リード対象アドレスADR_nはビットADR[J+n-1]~ADR[0]から成り、リード対象アドレスADR_nにおいてビットADR[i]の値を記号“M[i]”にて表す。リード対象アドレスADR_nにおいて、ビットADR[J+n-1]が最上位ビットであって且つビットADR[0]が最下位ビットであり、ビットADR[i+1]はビットADR[i]よりも上位側に位置する(iは任意の整数)。
【0097】
リード対象アドレスADR_nにおける上位側nビットの値は、プログラムカウンタPC_nにおける下位側nビットの値にて表される。ここで、リード対象アドレスADR_nにおける上位側nビットとは、リード対象アドレスADR_nのビットの内、最上位ビットを含み且つ最上位ビットから連続する計nビットであり、故にビットADR[J+n-1]~ADR[J]である。プログラムカウンタPC_nにおける下位側nビットとは、プログラムカウンタPC_nのビットの内、最下位ビットを含み且つ最下位ビットから連続する計nビットであり、故にビットPC[n-1]~PC[0]である。値M[J+n-1]~M[J]は、夫々、値L[n-1]~L[0]と一致する。例えば“n=3”であれば、“(M[66],M[65],M[64])=(L[2],L[1],L[0])”となる。
【0098】
リード対象アドレスADR_nにおける下位側nビットの値は所定値“0”にて固定される。ここで、リード対象アドレスADR_nにおける下位側nビットとは、リード対象アドレスADR_nのビットの内、最下位ビットを含み且つ最下位ビットから連続する計nビットであり、故にビットADR[n-1]~ADR[0]である。従って、値M[n-1]~M[0]は全て“0”にて固定される。
【0099】
リード対象アドレスADR_nのビットの内、上述の上位側nビット(ADR[J+n-1]~ADR[J])よりも下位であって、且つ、上述の下位側2ビット(ADR[n-1]~ADR[0])よりも上位の計(J-n)ビットは、ビットADR[J-1:n]である。ビットADR[J-1:n]の値は、プログラムカウンタPC_nの上位側(J-n)ビットの値にて表される。プログラムカウンタPC_nの上位側(J-n)ビットは、ビットPC[J-1:n]である。即ち、“n≦i≦J-1”を満たす各整数iについて、“M[i]=L[i]”が成立する。
【0100】
このため、実施例EX_3Bに係るCPU20は、プログラムカウンタPC_nの下位側nビットの値L[n-1]~L[0]に基づいて、メモリ領域30_nB_[1]~30_nB_[2n]の何れか1つを選択することになる。ここで選択されたメモリ領域を、便宜上、対象メモリ領域と称する。そうすると、対象メモリ領域の内、プログラムカウンタPC_nの上位側(J-n)ビットの値に応じたアドレス、即ち、ビットPC[J-1]~PC[n]の値L[J-1]~L[n]に応じたアドレスがリード対象アドレスに設定される。そして、設定されたリード対象アドレスを起点とする1命令(2nバイト分のデータ)がプログラムメモリ30_nBから読み出されてCPU20に送られる。尚、プログラムメモリ30_nBに対しては、リード対象アドレスADR_nのビットの内、下位側nビット(ADR[n-1]~ADR[0])を除く計Jビット分の値をCPU20から指定する必要がある。この指定を行うための計J本の配線がアドレスバス41に設けられる。
【0101】
上述したように、CPU20にて複数種類の命令を実行可能であり、複数種類の命令には、データ転送命令、分岐命令、算術命令、ビット操作命令及び制御命令などが含まれる。実施例EX_3Bに係る構成において分岐命令が実行されるとき、
図22に示す如く、記憶領域810に格納されたデータ820がプログラムカウンタPC_nにロードされる(転送されて書き込まれる)。記憶領域810は分岐先アドレス記憶領域であり、データ820は分岐先アドレス指定データである。当該ロードは、分岐命令にて指定された条件が満たされた場合に限って実行されることもあるし、無条件で実行されることもある。
【0102】
分岐先アドレス記憶領域810はJビットの記憶領域であり(即ちJビット分の記憶領域を有し)、故に、分岐先アドレス指定データ820はJビット分のデータである。分岐先アドレス指定データ820により分岐先のアドレスが指定される。従って、分岐先アドレス指定データ820がプログラムカウンタPC_nにロードされたとき、分岐先アドレス指定データ820に基づくアドレスが次回のリード対象アドレスとなる。結果、分岐先アドレス指定データ820に基づくアドレスへの分岐が行われる。
【0103】
分岐命令の例としてジャンプ命令がある。ジャンプ命令の一種では、ジャンプ命令にて指定された条件が満たされた場合に限って又は無条件にて、記憶領域810に格納されたデータ820がプログラムカウンタPC_nにロードされる。この際、記憶領域810はJビットの汎用記憶領域GPR[0]~GPR[7]の何れかであり、汎用記憶領域GPR[0]~GPR[7]の内、何れが記憶領域810として用いられるかはジャンプ命令の中で指定される。
【0104】
分岐命令の例としてサブルーチンコール命令がある。サブルーチンコール命令の一種では、記憶領域810に格納されたデータ820がプログラムカウンタPC_nにロードされる。この際、記憶領域810はJビットの汎用記憶領域GPR[0]~GPR[7]の何れかであり、汎用記憶領域GPR[0]~GPR[7]の内、何れが記憶領域810として用いられるかはサブルーチンコール命令の中で指定される。また、サブルーチンコール命令にて分岐が行われるとき、CPU20は、データ820をプログラムカウンタPC_nにロードする直前のプログラムカウンタPC_nの格納値をスタック領域に退避(格納)させ、その後にアドレスの分岐を行う。実施例EX_3Bに係るスタック領域はJビットの記憶領域である(即ちJビットの分の記憶領域を有する)。スタック領域は、データメモリ50内に設けられる場合もあるし、CPU20内の複数のレジスタにて構成される場合もある。
【0105】
サブルーチンからの復帰命令も分岐命令に属する。サブルーチンからの復帰命令は、サブルーチンコール命令で分岐が行われた後に実行される命令である。サブルーチンからの復帰命令でも、記憶領域810に格納されたデータ820がプログラムカウンタPC_nにロードされるが、この際における記憶領域810はスタック領域である。
【0106】
この他、割り込みからの復帰命令も分岐命令に属する。割り込みの発生時には割り込みの発生直前のプログラムカウンタPC_nの格納値がスタック領域に退避(格納)される。割り込みからの復帰命令により、CPU20は割り込み発生前の状態に復帰する。この復帰に際し、スタック領域が記憶領域810として機能し、記憶領域810に格納されたデータ820がプログラムカウンタPC_nにロードされる。
【0107】
分岐命令においてデータ820がプログラムカウンタPC_nにロードされたとき(転送されて書き込まれたとき)、データ820の下位側nビットの値に応じて、メモリ領域30_nB_[1]~30_nB_[2n]の何れかのメモリ領域内のアドレスに分岐することになる。データ820の下位側nビットとは、データ820のビットの内、最下位ビットを含み且つ最下位ビットから連続するnビットである。
【0108】
ここで、プログラムカウンタPC_nの下位側nビットに格納される値を、記号“Z”で表す。値Zは、プログラムカウンタPC_nの下位側nビット、即ち、計n個のビットPC[n-1]~PC[0]の全体にて表される単一の数値である。例えば、“n=2”であれば、値Zは2ビットで表現されるので0以上3以下の整数値を表し、“n=3”であれば、値Zは3ビットで表現されるので0以上7以下の整数値を表す。即ち、値Zは第1の値~第2nの値の何れかとなる。第1の値~第2nの値は互いに異なる値である。例えば、“n=2”であれば、第1の値~第2nの値は、第1の値~第4の値であって、第1の値~第4の値は、夫々、0~3である。或いは例えば、 “n=3”であれば、第1の値~第2nの値は、第1の値~第8の値であって、第1の値~第8の値は、夫々、0~7である。
【0109】
値Zは、分岐命令にてデータ820がプログラムカウンタPC_nにロードされた結果として、プログラムカウンタPC_nの下位側nビットに格納される値であり得る。分岐命令により値Zが第kの値と一致する場合を考える。即ち、分岐命令にてデータ820がプログラムカウンタPC_nにロードされることでプログラムカウンタPC_nの下位側nビットに格納された値Zが、第kの値と一致する場合を考える。ここで、kは1以上且つ2n以下の整数である。
【0110】
この場合、プログラムカウンタPC_nの上位側(J-n)ビットの値に応じたアドレス(即ち値L[J-1]~L[n]に応じたアドレス)であって且つ第kメモリ領域30_nB_[k]内のアドレスに分岐することになる。
【0111】
尚、ここでは、値M[J+n-1]~M[J]が夫々値L[n-1]~L[0]と一致すると考えたが(
図21参照)、値M[J+n-1]~M[J]と値L[n-1]~L[0]との対応関係は変形可能である。例えば、“n=3”であれば、“(M[66], M[65], M[64])=(L[2],L[1],L[0])”であっても良いし、“(M[66], M[65], M[64])=(L[0],L[1],L[2])”であっても良い。
【0112】
<<実施例EX_4>>
実施例EX_4を説明する。
【0113】
演算装置10を構成する各回路素子は半導体集積回路の形態で形成され、当該半導体集積回路を、樹脂にて構成された筐体(パッケージ)内に封入することで半導体装置が構成される。但し、複数のディスクリート部品を用いて演算装置10内の回路と同等の回路を構成するようにしても良い。
【0114】
CPU20が8ビットを単位に演算を行う演算処理回路であることを想定したが、CPU20は8ビット以外のビット(例えば16ビット又は32ビット)を単位に演算を行う演算処理回路であっても良い。
【0115】
本開示の実施形態は、特許請求の範囲に示された技術的思想の範囲内において、適宜、種々の変更が可能である。以上の実施形態は、あくまでも、本開示の実施形態の例であって、本開示ないし各構成要件の用語の意義は、以上の実施形態に記載されたものに制限されるものではない。上述の説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。
【0116】
<<付記>>
上述の実施形態にて具体的構成例が示された本開示について付記を設ける。
【0117】
本開示の一側面に係る演算装置は(実施例EX_1B、
図8~
図11参照)、プログラムを実行可能に構成された演算処理回路(20)と、前記プログラムを格納するプログラムメモリ(30_1B)と、を備え、前記プログラムにおける各命令は16ビットの長さを有し、前記プログラムメモリは、第1メモリ領域(30_1B_1)と、前記第1メモリ領域よりも上位側アドレスが対応付けられた第2メモリ領域(30_1B_2)を有し、前記演算処理回路は、読み出しの対象となるアドレスを指定するための16ビットのプログラムカウンタ(PC_1)を有し、前記プログラムカウンタにおける上位側15ビット(PC[15:1])の値に応じたアドレスの命令を対象メモリ領域から読み出して実行し、前記対象メモリ領域は、前記第1メモリ領域及び前記第2メモリ領域の内、前記プログラムカウンタにおける最下位ビットの値(L[0])に応じたメモリ領域である構成(第1の構成)である。
【0118】
これにより、バンク切り替えを要することなく、プログラムメモリのメモリ空間を拡張することが可能となる。バンク切り替え方式との比較において、回路規模を増大させることなくメモリ空間を拡張することができ、当該拡張に伴うコンパイラ変更も簡単である。更に、バンク切り替えが不要であるため命令効率の劣化も無い。また、メモリ空間の拡張に際し、命令セットの互換性が維持される。
【0119】
上記第1の構成に係る演算装置に関し(
図11参照)、前記演算処理回路において、分岐命令以外の命令が実行されるたびに前記プログラムカウンタに2が加算され、前記分岐命令が実行される際、分岐先のアドレスを指定するための16ビット記憶領域(610)中の格納データ(620)が前記プログラムカウンタにロードされ、前記格納データにおける最下位ビットの値に応じて前記第1メモリ領域及び前記第2メモリ領域の何れかのメモリ領域内のアドレスに分岐する構成(第2の構成)であっても良い。
【0120】
これにより、分岐命令にて拡張されたメモリ空間へ容易に分岐することが可能となる。
【0121】
上記第2の構成に係る演算装置に関し、前記演算処理回路にて前記分岐命令が実行される場合において、前記格納データの前記プログラムカウンタへのロードにより前記プログラムカウンタにおける最下位ビットに第1の値(例えば“0”)が格納されたとき、前記プログラムカウンタにおける上位側15ビット(PC[15:1])の値に応じたアドレスであって且つ前記第1メモリ領域内のアドレスに分岐し、前記格納データの前記プログラムカウンタへのロードにより前記プログラムカウンタにおける最下位ビットに第2の値(“1”)が格納されたとき、前記プログラムカウンタにおける上位側15ビット(PC[15:1])の値に応じたアドレスであって且つ前記第2メモリ領域内のアドレスに分岐する構成(第3の構成)であっても良い。
【0122】
これにより、分岐命令にて拡張されたメモリ空間へ容易に分岐することが可能となる。
【0123】
上記第3の構成に係る演算装置において(
図10参照)、前記演算処理回路は、リード対象アドレス(ADR_1)の命令を前記プログラムメモリから読み出して実行し、
前記リード対象アドレスは17ビットのアドレスであって、前記リード対象アドレスの最上位ビットの値(M[16])は前記プログラムカウンタにおける最下位ビットの値(L[0])にて表され、前記リード対象アドレスの最下位ビットの値(M[0])は所定値で固定され、前記リード対象アドレスにおける最上位ビットより下位であって且つ最下位ビットより上位の計15ビットの値(M[15]~M[1])は、前記プログラムカウンタにおける上位側15ビットの値(L[15]~L[1])にて表される構成(第4の構成)であっても良い。
【0124】
本開示の他の一側面に係る演算装置は(実施例EX_3B、
図19~
図22参照)、 プログラムを実行可能に構成された演算処理回路(20)と、前記プログラムを格納するプログラムメモリ(30_nB)と、を備え、前記プログラムにおける各命令は所定ビットの長さを有し、所定ビットはJビットであり、J=16×2
n-1、であり、nは2以上の整数を表し、前記プログラムメモリは、第1~第2
nメモリ領域(30_nB_[1]~30_nB_[2
n])を有し、第iメモリ領域よりも第(i+1)メモリ領域に対して上位側アドレスが対応付けられ、前記演算処理回路は、読み出しの対象となるアドレスを指定するための前記所定ビットのプログラムカウンタ(PC_n)を有し、前記プログラムカウンタにおける上位側(J-n)ビット(PC[J-1:n])の値に応じたアドレスの命令を対象メモリ領域から読み出して実行し、前記対象メモリ領域は、前記第1~第2
nメモリ領域の内、前記プログラムカウンタにおける下位側nビットの値に応じたメモリ領域である構成(第5の構成)である。
【0125】
これにより、バンク切り替えを要することなく、プログラムメモリのメモリ空間を拡張することが可能となる。バンク切り替え方式との比較において、回路規模を増大させることなくメモリ空間を拡張することができ、当該拡張に伴うコンパイラ変更も簡単である。更に、バンク切り替えが不要であるため命令効率の劣化も無い。また、メモリ空間の拡張に際し、命令セットの互換性が維持される。
【0126】
上記第5の構成に係る演算装置に関し(
図22参照)、前記演算処理回路において、
分岐命令以外の命令が実行されるたびに前記プログラムカウンタに2
nが加算され、
前記分岐命令が実行される際、分岐先のアドレスを指定するための前記所定ビットの記憶領域(810)中の格納データ(820)が前記プログラムカウンタにロードされ、前記格納データにおける下位側nビットの値(Z)に応じて前記第1~第2
nメモリ領域の何れかのメモリ領域内のアドレスに分岐する構成(第6の構成)であっても良い。
【0127】
これにより、分岐命令にて拡張されたメモリ空間へ容易に分岐することが可能となる。
【0128】
上記第1~第5の構成の何れかに係る演算装置に関し、前記演算処理回路にて前記分岐命令が実行される場合において、前記格納データの前記プログラムカウンタへのロードを経て前記プログラムカウンタの下位側nビットに格納された値(Z)が第kの値であるとき、前記プログラムカウンタにおける上位側(J-n)ビットの値に応じたアドレスであって且つ第kメモリ領域内のアドレスに分岐し、kは、1以上且つ2n以下の整数である構成(第7の構成)であっても良い。
【0129】
これにより、分岐命令にて拡張されたメモリ空間へ容易に分岐することが可能となる。
【0130】
上記第1~第5の構成の何れかに係る演算装置において(
図21参照)、前記演算処理回路は、リード対象アドレス(ADR_n)の命令を前記プログラムメモリから読み出して実行し、前記リード対象アドレスは(J+n)ビットのアドレスであって、
前記リード対象アドレスの上位側nビットの値(M[J+n-1]~M[J])は前記プログラムカウンタにおける下位側nビットの値(L[n-1]~L[0])にて表され、
前記リード対象アドレスの下位側nビットの値(M[n-1]~M[0])は所定値(例えば“0”)で固定され、前記リード対象アドレスにおける上位側nビットより下位であって且つ下位側nビットより上位の計(J-n)ビットの値(M[J-1]~M[n])は、前記プログラムカウンタにおける上位側(J-n)ビットの値(L[J-1]~L[n])にて表される構成(第8の構成)であっても良い。
【0131】
尚、第5~第8の構成の何れかに係る演算装置において、nは1以上の整数を表していても良い。“n=1”であるとき、第5~第8の構成に係る演算装置は、夫々、第1~第4の構成に係る演算装置と等価である。
【符号の説明】
【0132】
10 演算装置
20 CPU
30、30_1A、30_1B、30_2A、30_2B、30_nB プログラムメモリ
30_1B_1、30_1B_2、30_2B_1~30_2B_4、30_nB_[1]~30_nB_[2n] メモリ領域
40 プログラムメモリバス
41 アドレスバス
42 データバス
50 データメモリ
60 データメモリバス
PC、PC_1、PC_2、PC_n プログラムカウンタ
ADR_1、ADR_2、ADR_n リード対象アドレス
GPR[i]、GPR[i]_1、GPR[i]_2、汎用記憶領域
610、710、810 分岐先アドレス記憶領域
620、720、820 分岐先アドレス指定データ