JP2023044909A - プロセッサおよびエンディアン変換方法 - Google Patents
プロセッサおよびエンディアン変換方法 Download PDFInfo
- Publication number
- JP2023044909A JP2023044909A JP2021153025A JP2021153025A JP2023044909A JP 2023044909 A JP2023044909 A JP 2023044909A JP 2021153025 A JP2021153025 A JP 2021153025A JP 2021153025 A JP2021153025 A JP 2021153025A JP 2023044909 A JP2023044909 A JP 2023044909A
- Authority
- JP
- Japan
- Prior art keywords
- endian
- data
- conversion circuit
- circuit
- signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 156
- 238000000034 method Methods 0.000 title claims description 19
- 230000002093 peripheral effect Effects 0.000 claims abstract description 84
- 230000001934 delay Effects 0.000 claims description 6
- 230000006870 function Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 17
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 14
- 230000003111 delayed effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
Abstract
【課題】CPUと複数の周辺回路と、CPUと複数の周辺回路の間に設けられたエンディアン変換回路を有するプロセッサにおいて、周辺回路が書き込み値を複数バイトの値として解釈した場合に、ソフトウェアの作成者が意図した値と異なる値として解釈されることを防止し、ソフトウェアの作成を容易化する手段を提供すること。【解決手段】エンディアン変換回路がアドレスと接続先の種別の関係を示すテーブルを有し、アクセス先のアドレスを用いてテーブルから取り出した種別情報を用いてエンディアン変換回路内のデータ変換回路とバイトイネーブル変換回路とを別々に制御する。【選択図】 図1
Description
本開示は、CPUと周辺回路の間に設けられたエンディアン変換回路を有するプロセッサおよびエンディアン変換方法に関する。
本技術分野の背景技術として、特開平8-202646号公報(特許文献1)がある。この公報には、CPU(メインプロセッサ)と周辺回路(I/O装置)でエンディアンが異なる場合に両者の間の接続を容易化するためのエンディアン変換回路(変換器)が記載されている。
前記特許文献1のエンディアン変換回路は、CPUと周辺回路でエンディアンが異なる場合にデータの並べ替えを行う。例えば、CPUから16進数で4バイトの数値00000001を周辺機能に書き込んだ場合、01000000に変換する。これは、4バイトの数値に対するアドレスの振り方がリトルエンディアンとビッグエンディアンで異なるという事実に対応したものである。具体的には、リトルエンディアンでは下位バイトから上位バイトの順にアドレスを振るのに対し、ビッグエンディアンでは上位バイトから下位バイトの順にアドレスを振る。従って、1バイト単位でデータを解釈した時に同一アドレスに同じデータが格納される様にするためには、データの並び順を入れ替える必要がある。しかしながら、4バイトの数値として解釈した場合には、異なる値が書き込まれることになる。周辺回路が書き込み値を4バイトの値として解釈すると、ソフトウェアの作成者が意図した値と異なる値として解釈されることになる。これは4バイトに場合に限らず、一般に1バイトより大きい単位で書き込み値を解釈する場合には、ソフトウェアの作成者が意図した値と異なる値として解釈される。
本開示は、CPUと複数の周辺回路と、CPUと複数の周辺回路の間に設けられたエンディアン変換回路を有するプロセッサにおいて、周辺回路が書き込み値を複数バイトの値として解釈した場合に、ソフトウェアの作成者が意図した値と異なる値として解釈されることを防止し、ソフトウェアの作成を容易化する手段を提供することを目的とする。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りである。
上記課題を解決するため、一実施の形態に係るプロセッサは、エンディアン変換回路がアドレスと接続先の種別の関係を示すテーブルを有し、アクセス先のアドレスを用いてテーブルから取り出した種別情報を用いてエンディアン変換回路内のデータ変換回路とバイトイネーブル変換回路とを別々に制御する。
上記一実施の形態に係るプロセッサによれば、CPUと周辺回路のエンディアンが異なる場合に、複数バイトのデータに対するアドレスの振り方の違いに応じてバイトイネーブルをバイトイネーブル変換回路で変換するとともに、周辺回路が数値を何バイト単位で解釈するかを考慮してデータをデータ変換回路で変換することにより、周辺回路がソフトウェアの作成者が意図した値を正しく解釈することが可能となる。
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
以下、実施形態、および、実施例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。なお、図面は説明をより明確にするため、実際の態様に比べ、模式的に表される場合があるが、あくまで一例であって、本発明の解釈を限定するものではない。
実施形態に係るプロセッサは、以下の構成とされている。
すなわち、プロセッサ(100)は、CPU(101)と、複数の周辺回路(105~108)と、CPU(101)と複数の周辺回路(105~108)の間に設けられたエンディアン変換回路(109)と、を有する。そして、エンディアン変換回路(109)は、アドレスと接続先の種別の関係を示す種別情報(エンディアン属性、タイプ属性)を格納するテーブル(AIT)と、バイトイネーブル変換回路(104)と、データ変換回路(103)と、を有する。エンディアン変換回路(109)は、CPU(101)から出力されたアクセス先の出力アドレスを用いてテーブル(AIT)から取り出した種別情報(エンディアン属性、タイプ属性)を用いてバイトイネーブル変換回路(104)とデータ変換回路(103)とを別々に制御する。
また、実施形態に係るエンディアン変換方法は、以下の構成とされている。
CPU(101)と、複数の周辺回路(105~108)と、CPU(101)と前記複数の周辺回路(105~108)の間に設けられたエンディアン変換回路(109)を有し、エンディアン変換回路(109)は、アドレスと接続先の種別の関係を示す種別情報(エンディアン属性、タイプ属性)を格納するテーブル(AIT)と、バイトイネーブル変換回路(104)と、データ変換回路(103)と、を有するプロセッサ(100)のエンディアン変換方法であって、
a)CPU(101)から出力されたアクセス先の出力アドレスを用いてテーブル(AIT)から種別情報(エンディアン属性、タイプ属性)を取り出す工程と、
b)取り出した種別情報(エンディアン属性、タイプ属性)に基づいて、バイトイネーブル変換回路(104)とデータ変換回路(103)とを別々に制御する工程と、を含む。
a)CPU(101)から出力されたアクセス先の出力アドレスを用いてテーブル(AIT)から種別情報(エンディアン属性、タイプ属性)を取り出す工程と、
b)取り出した種別情報(エンディアン属性、タイプ属性)に基づいて、バイトイネーブル変換回路(104)とデータ変換回路(103)とを別々に制御する工程と、を含む。
上記一実施形態に係るプロセッサおよびエンディアン変換方法によれば、CPUと周辺回路のエンディアンが異なる場合に、複数バイトのデータに対するアドレスの振り方の違いに応じてバイトイネーブルをバイトイネーブル変換回路で変換するとともに、周辺回路が数値を何バイト単位で解釈するかを考慮してデータをデータ変換回路で変換することにより、周辺回路がソフトウェアの作成者が意図した値を正しく解釈することが可能となる。
以下、図面を用いて実施例を詳細に説明する。
図1は、本発明を適用したプロセッサの構成図の第1の例である。
本実施例のプロセッサ100は、CPU101、エンディアン変換回路109、第1の周辺回路(ROM)105、第2の周辺回路(RAM)106、第3の周辺回路(第1のIO回路)107、第4の周辺回路(第2のIO回路)108、第1バス(以下、バスと言う)111、第2バス(以下、バスと言う)114、を有する。CPU101はバス111に接続され、第1の周辺回路(ROM)105、第2の周辺回路(RAM)106、第3の周辺回路(第1のIO回路)107および第4の周辺回路(第2のIO回路)108はバス114に接続される。エンディアン変換回路109は、バス111とバス114との間に接続される。ROMは、例えば、リードアンリメモリのような不揮発性メモリであり、RAMは、例えば、ランダムアクセスメモリのような揮発性メモリである。
エンディアン変換回路109は、制御回路102、データ変換回路103、バイトイネーブル変換回路104を有する。
CPU101は第1の周辺回路(ROM)105に格納されたプログラムに従い、以下の処理を実行する。CPU101はまず、第3の周辺回路(第1のIO回路:IO1)107、及び第4の周辺回路(第2のIO回路:IO2)108からバス114、111を介して入力情報を取り込み、予め定められた処理を行った後、バス111、114を介して第3の周辺回路(第1のIO回路)107、及び第4の周辺回路(第2のIO回路)108に出力情報を書き込む。第2の周辺回路(RAM)106は処理の途中経過の保存に使用される。
第3の周辺回路(第1のIO回路)107はバス111、114を介してCPU101から入力情報の取り込み要求を受け取ると、信号線115から取り込んだ入力情報をバス114、111を介してCPU101に出力する。第3の周辺回路(第1のIO回路)107はまた、バス111、114を介してCPU101から出力情報の書き込み要求を受け取ると、書き込み値を内部に保持するとともに信号線115に出力する。
第4の周辺回路(第2のIO回路)108の動作も第3の周辺回路(第1のIO回路)107の動作と同様である。
制御回路102は、バス111を介してCPU101からアクセスアドレスとアクセスサイズの情報を受け取り、バイトイネーブル変換回路104とデータ変換回路103の制御信号を生成し、信号線112、113に出力する。
バイトイネーブル変換回路104は、信号線112から受け取った制御信号(第1信号)に従い、バス111のバイトイネーブルに所定の変換を行ってバス114に出力する。
データ変換回路103は、信号線113から受け取った制御信号(第2信号)に従い、バス111のライトデータに所定の変換を行ってバス114に出力する。データ変換回路103はまた、信号線113から受け取った制御信号に従い、バス114のリードデータに所定の変換を行ってバス111に出力する。
図2は、図1のバス111、及びバス114のタイミングチャートの例である。バス111とバス114の動作は同様であるため、両者を区別せずに記載した。
clkはクロック信号(1ビット)、reqはリクエスト信号(1ビット)、wrはライト信号(1ビット)、size[2:0]はサイズ信号(サイズ情報)(3ビット)、be[3:0]はバイトイネーブル信号(4ビット)、adr[31:2]はアドレス信号(30ビット)、wd[31:0]はライトデータ(32ビット)、rdvはリードデータ有効信号(1ビット)、rd[31:0]はリードデータ(32ビット)である。size[2:0]はsize[2]、size[1]、size[0]の3ビットの信号から構成されていることを示し、size[2]が最上位ビット、size[0]が最下位ビットである。同様に、be[3:0]はbe[3]からbe[0]の4ビット、adr[31:2]はadr[31]からadr[2]の30ビット、wd[31:0]はwd[31]からwd[0]の32ビット、rd[31:0]はrd[31]からrd[0]の32ビットの信号から構成されており、いずれも[]内の数値が大きいものが上位ビットである。req、wr、size[2:0]、be[3:0]、adr[31:2]、wd[31:0]はCPU101から周辺回路105~108の方向の信号、rdv、rd[31:0]は周辺回路105~108からCPU101の方向の信号である。アドレス空間は32ビットであるが、ライトデータ、及びリードデータが4バイトであるためアドレスの下位2ビットは伝送されず、代わりに4バイトのデータのうちどのバイトが有効かをバイトイネーブルで示す。バイトイネーブルの動作は後述する。サイズ信号は2進数で001、010、100の3通りのうちのいずれかであり、それぞれ1バイト、2バイト、4バイトの転送(データ転送サイズ)を行うことを示す。
バス111とバス114のおのおのは、例えば、wd[31:0]およびrd[31:0]などのデータを転送するための32本のデータ信号線を含むデータバスと、adr[31:2]はアドレス信号を転送するための30本のアドレス信号線を含むアドレスバスと、リクエスト信号(req:1ビット)、ライト信号(wr:1ビット)、サイズ信号(size[2:0]:3ビット)およびバイトイネーブル信号(be[3:0]:4ビット)を転送するための転送するための9本の制御信号線を含む制御バスと、を含むと見なすことも可能である。
1サイクル目(cycle=1)は書き込みのデータ転送である。書き込み時はreqとwrが1となり、size[2:0]、be[3:0]、adr[31:2]、wd[31:0]にそれぞれ有効な値(sz1、be1、a1、d1)が出力される。
3~6サイクル目は読み出しのデータ転送である。読み出し時はreqが1、wrが0となる。また、最初のサイクル(3サイクル目)にsize[2:0]、be[3:0]、adr[31:2]に有効な値(sz2、be2、a2)が出力される。読み出しのサイクル数は固定ではなく、rdvが1となったサイクルで転送が終了する。rdvが1となったサイクルにrd[31:0]に有効な値(d2)が出力される。なお、図1、図2では省略したが、rdv、rd[31:0]は周辺回路105~108がそれぞれ値を出力する。rdvに関しては、バス114上で4つの周辺回路の出力のORが取られる。図2にはORを取った後の状態を記載した。また、rd[31:0]に関しては、バス114上でrdvに1を出力した周辺回路の出力値が選択される。図2には選択後の状態を記載した。rdvに1を出力した周辺回路が存在しない場合は、rd[31:0]の値は無視される。
図3A、図3Bは、図1のバス111、及びバス114のバイトイネーブルの動作の例である。図3Aは、図1のバス111、及びバス114のリトルエンディアン(Little Endian)のバイトイネーブルの動作の例である。図3Bは、図1のバス111、及びバス114のビッグエンディアン(Big Endian)のバイトイネーブルの動作の例である。リトルエンディアン(Little Endian)リトルエンディアン(Little Endian)とビッグエンディアン(Big Endian)で動作が異なるため、別々に記載した。リトルエンディアンは第1エンディアン、ビッグエンディアンは第1エンディアンと異なる第2エンディアンと言うことができる。
前述の通り、転送するデータのサイズは1バイト、2バイト、4バイトの3通りのケースがある。
1バイト(8ビット)の転送の場合(サイズ信号:size[2:0]が001の場合)は、4バイトのデータのうちのどのバイトにデータが出力されるかによって、4通りの場合(図3A:be[3:0]:0001,0010,0100,1000、図3B:be[3:0]:1000,0100,0010,0001)がある(つまり、バス111及びバス114のおのおのがデータバスとして32本のデータ線DL31-DL0を含む場合、1バイトのデータがデータ線群DL31-DL24,DL23-DL16,DL15-DL8,DL7-DL0のどのデータ線群に出力されるよって、4通りの場合がある)。リトルエンディアンは下位のバイトのアドレスが小さく、上位のバイトのアドレスが大きい。一方、ビッグエンディアンは下位のバイトのアドレスが大きく、上位のバイトのアドレスが小さい。
2バイト(16ビット)の転送(サイズ信号:size[2:0]が010の場合)は、アドレスが2の倍数のケースしか許されていない。従って、4バイトのデータのうちの上位2バイトと下位2バイトのどちらにデータがあるかによって2通りの場合(図3A::be[3:0]:0011,1100、図3B:1100,0011)がある(つまり、バス111及びバス114のおのおのがデータバスとして32本のデータ線DL31-DL0を含む場合において、2バイトのデータがデータ線群DL31-DL16,DL15-DL0のどのデータ線群に出力されるよって、2通りの場合がある)。アドレス4nの2バイト転送はアドレス4nと4n+1の1バイト転送の重ね合わせに相当し、アドレス4n+2の2バイト転送はアドレス4n+2と4n+3の1バイト転送の重ね合わせに相当する。
4バイト(32ビット)の転送(サイズ信号:size[2:0]が100の場合)は、4バイトのデータのすべてが有効となるためバイトイネーブルは全ビットが1となり(be[3:0]:1111)、リトルエンディアンとビッグエンディアンでバイトイネーブルの値は同じである。
図4A、図4Bは、図1の制御回路102の動作の第1の例である。図4Aは、図1の制御回路102の属性情報テーブルAITの第1の例を示す図である。図4Bは、図1の制御回路102の制御信号生成ルールCSGRの第1の例を示す図である。
制御回路102の動作は属性情報テーブルAITと制御信号生成ルールCSGRで記述されている。属性情報テーブルAITは、それぞれの周辺回路のアドレス範囲と属性情報とを格納している。
属性情報テーブルAITは、バス111のアドレス(adr[31:2]の下位に2ビットに0を連結したもの)を入力として、対応する周辺回路の属性情報を出力する。属性情報は、周辺回路の種別情報と言い換えることも可能である。属性情報にはエンディアン(Endian)とタイプの2通りがある。エンディアンは0がリトルエンディアン、1がビッグエンディアンである。タイプは0(第1タイプ)の時はバス111のサイズ信号(size[2:0])の値によらず1バイトのデータの集合として解釈されることを示す。タイプが1(第2タイプ)の時は2バイト以上のデータがバス111のサイズ信号(size[2:0])の値で示されたサイズのデータとして解釈されることを示す。
制御信号生成ルールCSGRは、属性情報テーブルAITから出力されたエンディアン、タイプ、及びバス111のサイズ信号(size[2:0])を入力として、信号線112、113に出力する値を生成するルールを示したものである。この表には明記していないが、CPUのエンディアンはリトルエンディアンであることを前提としている。
信号線112(の制御信号の値)はエンディアン属性が0の時に0(第1の値)、1の時に1(第2の値)となる。これは、CPUと周辺回路のエンディアンが同じ時にはバイトイネーブルの変換を行わず、異なる時にはバイトイネーブルの変換を行うことを示す。
信号線113(の制御信号の値)は3通りの値を取り、00(第1の値)がデータの変換なし、01(第2の値)がデータの1バイト単位の変換、10(第3の値)がデータの2バイト単位の変換を行うことを示す。変換内容の詳細は後述する。信号線113は、エンディアン属性が0の時は00となる。これは、CPUと周辺回路のエンディアンが同じ時にはデータの変換を行わないことを示す。信号線113はまた、エンディアン属性が1、タイプ属性が0の時には常に01(1バイト単位の変換)となる。一方、エンディアン属性が1、タイプ属性が1の時にはバス111のサイズ信号(size[2:0])の値によって出力値が異なる。size[2:0]が001(1バイト)の時には出力値は01(1バイト単位の変換)、size[2:0]が010(2バイト)の時には出力値は10(2バイト単位の変換)、size[2:0]が100(4バイト)の時には出力値は00(変換なし)となる。
図5は、図1の制御回路102の第1の例である。
本実施例の制御回路102は、固定値出力回路501、502、505、506、507、比較回路503、504、AND回路508、509、510、513、514、OR回路511、512を有する。
固定値出力回路501は、16進数の固定値F0000000を信号線521に出力する。
固定値出力回路502は、16進数の固定値F8000000を信号線522に出力する。
比較回路503は、バス111のアドレス(adr[31:2]の下位に2ビットの0を連結したもの)と信号線521の値とを比較し、結果を信号線523に出力する。出力値はアドレスが16進数の固定値F0000000より小さい場合に0、固定値F0000000以上の時に1となる。
比較回路504は、バス111のアドレス(adr[31:2]の下位に2ビットの0を連結したもの)と信号線522の値とを比較し、結果を信号線524に出力する。出力値はアドレスが16進数の固定値F8000000より小さい場合に0、固定値F8000000以上の時に1となる。
固定値出力回路505は、2進数の固定値10を信号線525に出力する。
固定値出力回路506は、2進数の固定値11を信号線526に出力する。
固定値出力回路507は、2進数の固定値01を信号線527に出力する。
AND回路508は、信号線523の値が0の時に信号線525の値を信号線528に出力する。これは図4Aの属性情報テーブルAITの1行目に相当する。AND回路508はまた、信号線523の値が1の時に信号線528に00を出力する。この場合、信号線528の値はOR回路511の出力に影響を与えない。
固定値出力回路506は、2進数の固定値11を信号線526に出力する。
固定値出力回路507は、2進数の固定値01を信号線527に出力する。
AND回路508は、信号線523の値が0の時に信号線525の値を信号線528に出力する。これは図4Aの属性情報テーブルAITの1行目に相当する。AND回路508はまた、信号線523の値が1の時に信号線528に00を出力する。この場合、信号線528の値はOR回路511の出力に影響を与えない。
AND回路509は、信号線523の値が1、かつ信号線524の値が0の時に信号線526の値を信号線529に出力する。これは図4Aの属性情報テーブルAITの2行目に相当する。AND回路509はまた、信号線523の値が0、または信号線524の値が1の時に信号線529に00を出力する。この場合、信号線529の値はOR回路511の出力に影響を与えない。
AND回路510は、信号線524の値が1の時に信号線527の値を信号線530に出力する。これは図4Aの属性情報テーブルAITの3行目に相当する。AND回路510はまた、信号線524の値が0の時に信号線530に00を出力する。この場合、信号線530の値はOR回路511の出力に影響を与えない。
OR回路511は、信号線528、529、530の3つの値のORを取って信号線531に出力する。信号線528、529、530の3つの値のうち2つは00であるため、OR回路511の動作は実質的には信号線528、529、530の3つの値のうちの1つを選択することになる。信号線531に出力される値は、図4Aの属性情報テーブルAITの出力に相当する。
信号線112には、信号線531のエンディアン属性の値がそのまま出力される。
OR回路512は、信号線531のタイプ属性が0、または、バス111のサイズ信号(size[2:0])のビット0が1(1バイトに相当)の時に信号線532に1を出力し、それ以外の時には0を出力する。
AND回路513は、信号線531のエンディアン属性と信号線532の値がともに1の時に信号線113のビット0に1を出力する。この動作は、図4Bの制御信号生成ルールCSGRの2行目と3行目で信号線113に01を出力するケースに相当する。AND回路513はまた、信号線531のエンディアン属性、または信号線532の値が0の時には0を出力する。
AND回路514は、信号線531のエンディアン属性とタイプ属性が共に1で、かつバス111のサイズ信号(size[2:0])のビット1が1(2バイトに相当)の時に信号線113のビット1に1を出力する。この動作は、図4Bの制御信号生成ルールCSGRの4行目で信号線113に10を出力するケースに相当する。AND回路514はまた、信号線531のエンディアン属性、タイプ属性、または、バス111のサイズ信号(size[2:0])のビット1が0の時に信号線113のビット1に0を出力する。
図6は、図1のバイトイネーブル変換回路104の例である。
バイトイネーブル変換回路104は、選択回路601、602、603、604からなる。
選択回路601は、信号線112の値が0の時はバス111のバイトイネーブル信号のビット3(be[3])を選択し、バス114のバイトイネーブル信号のビット3(be[3])に出力する。選択回路601はまた、信号線112の値が1の時はバス111のバイトイネーブル信号のビット0(be[0])を選択し、バス114のバイトイネーブル信号のビット3(be[3])に、エンディアン変換後バイトイネーブル信号として出力する。
選択回路602、603、604の動作も同様であり、信号線112の値が0の時は左側の入力、信号線112の値が1の時は右側の入力を選択してエンディアン変換後バイトイネーブル信号として出力する。
図7は、図1のバイトイネーブル変換回路104の動作の例である。
信号線112が0の時は、バイトイネーブル変換回路104は入力と同じ値を出力する。
信号線112が1の時は、バイトイネーブル変換回路104は入力の上位と下位を逆順に入れ替えて出力する。
図8は、図1のデータ変換回路103の例である。データ変換はライトデータ(wd[31:0])、及びリードデータ(rd[31:0])に対して行われるが、図8にはライトデータの変換回路のみを記載した。リードデータの変換回路も同一の構成である。
データ変換回路103は、選択回路801、802、803、804からなる。
選択回路801は、信号線113の値が00の時はバス111のライトデータのビット31から24(wd[31:24])を選択し、バス114のライトデータのビット31から24(wd[31:24])にエンディアン変換せずに出力する。選択回路801はまた、信号線113の値が01の時はバス111のライトデータのビット7から0(wd[7:0])を選択し、バス114のデータのビット31から24(wd[31:24])にエンディアン変換後データとして出力する。選択回路801はまた、信号線113の値が10の時はバス111のライトデータのビット15から8(wd[15:8])を選択し、バス114のライトデータのビット31から24(wd[31:24])にエンディアン変換後データとして出力する。
選択回路802、803、804の動作も同様であり、信号線113の値が00の時は左側の入力、信号線113の値が01の時は中央の入力、信号線113の値が10の時は右側の入力を選択して出力する。
図9は、図1のデータ変換回路103の動作の例である。
信号線113が00の時は、データ変換回路103は入力と同じ値を出力する。
信号線113が01の時は、データ変換回路103はバイト(8ビット)単位で入力の上位と下位を逆順に入れ替えて出力する。
信号線113が10の時は、データ変換回路103は上位16ビット(ビット31から16)と下位16ビット(ビット15から0)を入れ替えて出力する。
図10は、図1のバス111、及びバス114の動作の第1の例である。図10にはリードデータの動作が記載していないが、ライトデータと同様である。
第1の周辺回路(ROM)105、及び第2の周辺回路(RAM)106はアクセスサイズによらず書き込みデータを1バイト単位で解釈する。そのため、バイト単位で同一アドレスのデータが同一となる様にエンディアン変換が行われる。例えば、アクセスサイズが4バイトの時に、バス111の最下位バイト(s)がバス114の最上位バイトに出力される。これは、バス111では最下位バイトがアドレス4nに対応しているのに対し、バス114では最上位バイトがアドレス4nに対応しているためである。
第3の周辺回路(第1のIO回路)107は、アクセスサイズと同じサイズを単位としてデータを解釈する。そのため、アクセスサイズの単位でデータの並び順が保存される様にエンディアン変換が行われる。例えば、アクセスサイズが2バイトでアドレスが4nの場合、データの並び順(rs)を保存したまま、下位から上位にデータがシフトされる。これによって、CPU101のデータの解釈と第3の周辺回路(第1のIO回路)107のデータの解釈が同一となることが保証される。
第4の周辺回路(第2のIO回路)108はCPU101とエンディアンが同一であるため、エンディアン変換は行われない。
図11A、図11Bは、図1の制御回路102の動作の第2の例である。図11Aは、図1の制御回路102の属性情報テーブルの第2の例を示す図である。図11Bは、図1の制御回路102の制御信号生成ルールの第2の例を示す図である。
図4A、図4Bの制御回路102の動作と図11A、図11Bの相違点は、図11Aの属性情報テーブルAITにレジスタサイズの出力が追加され、レジスタサイズ属性の値によって図11Bの制御信号生成ルールCSGRの出力が異なる点である。レジスタサイズ属性とは、アクセス先の周辺回路が書き込み値を解釈する単位のサイズを示している。図10の説明に記載した通り、図4A、図4Bの制御回路102の動作の場合、第3の周辺回路(第1のIO回路)107にアクセスする場合には、アクセスサイズと同じサイズを単位としてデータを解釈する。この様な動作の場合、例えば第3の周辺回路(第1のIO回路)107が1バイト単位でデータを解釈するアドレスに2バイトや4バイトのアクセスを行うと、CPU101と解釈の相違が生じるという問題がある。この様な問題に対処するため、図11A、図11Bの制御回路102の動作では、第3の周辺回路(第1のIO回路)107のレジスタサイズ属性(何バイト単位でデータを解釈するか)に応じて信号線113の出力を決定している。
図11Aの属性情報テーブルAITでは、第3の周辺回路(第1のIO回路)107の領域が3つに分割され、アドレスF0000000からF1FFFFFFではレジスタサイズ属性に1バイト、アドレスF2000000からF3FFFFFFではレジスタサイズ属性に2バイト、アドレスF4000000からF7FFFFFFではレジスタサイズ属性に4バイトが出力される。第1の周辺回路(ROM)105、第2の周辺回路(RAM)106、及び第4の周辺回路(第2のIO回路)107では図11Bの制御信号生成ルールでレジスタサイズ属性の値が無視されるため、レジスタサイズ属性の出力値は1バイト、2バイト、4バイトのいずれであっても良い。
図11Bの制御信号生成ルールCSGRでは、第3の周辺回路(第1のIO回路)107へのアクセス時の動作が図4Bとは異なっている。レジスタサイズ属性が1バイトの時は、バス111のサイズ信号(size[2:0])の値によらず信号線113への出力が01となる。これは、size[2:0]が001(1バイト)の時は図4Bと同じであるが、size[2:0]が010(2バイト)、及び100(4バイト)の時の動作が図4Bとは異なっている。レジスタサイズ属性が2バイトの場合は、size[2:0]が001(1バイト)、及び010(2バイト)の時の動作は図4Bと同じであるが、size[2:0]が100(4バイト)の時の動作が図4Bとは異なっており、信号線113への出力が10となる。レジスタサイズ属性が4バイトの時の動作は図4Bと同じである。
図12は、図1のバス111、及びバス114の動作の第2の例である。図12は、図11A、図11Bの制御回路102の動作の第2の例に対応している。第1の周辺回路(ROM)105、第2の周辺回路(RAM)106、及び第4の周辺回路(第2のIO回路)108にアクセスするときの動作は図10と同じであるため省略し、第3の周辺回路(第1のIO回路)107へのアクセス時の動作のみ記載した。図12において、サイズ=1はレジスタサイズ属性が1バイト、サイズ=2はレジスタサイズ属性が2バイト、サイズ=4はレジスタサイズ属性が4バイトの時の動作を示している。
レジスタサイズ属性が1バイトの時は、アクセスサイズが2バイトと4バイトの時に図10と動作が異なっている。いずれもバイト単位でアドレスが同じバイトに同じデータが出力される。例えばアクセスサイズが4バイトの場合、バス111の最下位バイト(s)はバス114の最上位バイトに出力される。これは、バス111では最下位バイトがアドレス4nに対応しているのに対し、バス114は最上位バイトがアドレス4nに対応しているためである。レジスタサイズ属性が1バイトの時は第3の周辺回路(第1のIO回路)107は1バイト単位でデータを解釈するため、この動作によってCPU101と第3の周辺回路(第1のIO回路)107のデータの解釈が同一となることが保証される。
レジスタサイズ属性が2バイトの時は、アクセスサイズが4バイトの時に図10と動作が異なっている。バス111の下位2バイト(rs)はデータの並び順を保存したままバス114の上位2バイトに出力される。バス111の下位2バイトはアドレス4nと4n+1に対応するため、バス114の同一アドレスの領域にデータがシフトされるが、データの並び順が保存されているため、CPU101と第3の周辺回路(第1のIO回路)107のデータの解釈が同一となることが保証される。バス111の上位2バイト(pq)も同様に、データの並び順を保存したままバス114の下位2バイトに出力される。
図13は、図1の制御回路102の第2の例である。
図5の制御回路102と図13の制御回路102Aとの相違点は、図5の固定値出力回路501、502、505、506、507が記憶回路1301、1302、1305、1306、1307に置き換えられ、バス111から値を書き換えることを可能とした点である。
書き込み制御回路1311は、バス111のリクエスト信号(req)が1、ライト信号(wr)が1、サイズ信号(size[2:0])が100(4バイト)、かつ、アドレス信号(adr[31:2])が所定の値であった場合に、信号線1321、1322、1325、1326、1327のいずれかに記憶回路1301、1302、1305、1306、1307の書き込み制御信号を出力する。書き込み制御信号は書き込みイネーブルと書き込みデータからなり、書き込みデータはバス111のライトデータ(wd[31:0])のうちの一部が選択されて出力される。
図13の制御回路102Aの構成とすることによって、図4Aの属性情報テーブルAITの中身(格納値)をCPU101から設定することが可能となる。つまり、CPU101からの要求に従ってテーブルAITの格納値を書き換える機能、または、CPU101からの要求に従ってテーブルAITの格納値を書き換える工程、を有する。これによって、周辺回路の構成が変わった場合でも同一の制御回路102Aを使用することが可能となる。
図14は、本発明を適用したプロセッサの構成図の第2の例である。
図1のプロセッサ100と図14のプロセッサ1400との相違は、CPU1401がリトルエンディアンとビッグエンディアンの両方の動作をサポートし、現在どちらのエンディアンで動作しているかの情報を、信号線1411を介して、制御回路1402に出力する点である。つまり、CPU1401はエンディアンをリトルエンディアンまたはビッグエンディアンへ変更する機能を有する。エンディアン変換回路1409は信号線1411から受け取ったCPU1401のエンディアンに関する情報に応じてエンディアン変換の規則を変更する。プロセッサ1400は、CPU1401のエンディアンを変更する工程と、CPU1401とエンディアン変換回路1409との間の信号線1411にCPU1401のエンディアンに関する情報を伝達する工程と、信号線1411から受け取ったCPU1401のエンディアンに関する情報に応じてエンディアン変換回路1409のエンディアン変換の規則を変更する工程と、を有する。
制御回路1402は内蔵するテーブルAIT以外に信号線1411から取り込んだCPU1401のエンディアンに関する情報を加味して信号線112、113に出力する信号を生成する。詳細は後述する。
図15A、図15Bは、図14の制御回路1402の動作の例である。図15Aは、図14の制御回路1402の属性情報テーブルAITを示す図である。図15Bは、図14の制御回路1402の制御信号生成ルールCSGRを示す図である。
図15Aの属性情報テーブルAITは図4Aの属性情報テーブルAITと同一である。
一方、図15Bの制御信号生成ルールCSRGは図4Bの制御信号生成ルールCSRGと比べると、信号線1411の値を考慮に入れる点が異なっている。信号線1411の値が0の時の動作は図4Bと同一である。信号線1411の値が1でエンディアン属性が0の場合は、CPU1401と周辺回路のエンディアンが異なるため、バイトイネーブルのエンディアン変換を行う必要があり、信号線112は1となる。一方、信号線113は、タイプ属性が0の時は01となり、タイプ属性が1の時はバス111のサイズ信号(size[2:0])の値に応じて01、10、00、または00となる。なお、図15Aの属性情報テーブルAITではエンディアン属性が0、かつタイプ属性が0のケースは存在しないため、図15Bにはそのケースは記載していない。信号線1411の値が1でエンディアン属性も1の場合は、CPU1401と周辺回路のエンディアンが同一であるため、エンディアン変換を行う必要は無く、信号線112、113に0が出力される。
図16は、本発明を適用したプロセッサの構成図の第3の例である。
図1のプロセッサ100と図16のプロセッサ1600との相違は、エンディアン変換回路1609が遅延回路1601を有する点である。図1のプロセッサ100では、制御回路102、データ変換回路103、バイトイネーブル変換回路104の処理に時間がかかるため、CPU101から周辺回路(105、106、107、108)までの転送時間が長くなり、動作周波数の低下につながる可能性がある。本実施例はこの問題に対応するため、遅延回路1601によってCPU101から周辺回路(105、106、107、108)までの転送を2クロックサイクルに分割し、1クロックサイクルあたりの転送時間を短縮することで動作周波数の低下を防止する。なお、周辺回路(105、106、107、108)からCPU101へのリードデータの転送は転送開始より1クロックサイクル以上遅れるため、その時点では制御回路102の動作は完了しており、エンディアン変換回路による動作周波数低下の影響は軽微であるため、本実施例ではリードデータの転送は2クロックサイクルに分割しない構成としている。但し、データ変換回路103の処理時間に起因して転送時間が長くなるため、その影響を無くすためにリードデータの転送もクロックサイクルに分割しても良い。
遅延回路1601は、信号線112から取り込んだ値が0だった時に、信号線1611から取り込んだバイトイネーブルと、信号線1612から取り込んだライトデータをそのままバス114に出力する。遅延回路1601はまた、信号線112から取り込んだ値が1だった時に、信号線1611から取り込んだバイトイネーブルと、信号線1612から取り込んだライトデータを1クロックサイクル遅らせて、バス114に出力する。遅延回路1601はまた、バス114から取り込んだリードデータをそのまま信号線1612に出力する。遅延回路1601はまた、バス114から取り込んだリードデータ有効信号をそのままバス111に出力する。つまり、エンディアン変換回路1609はエンディアン変換を行う必要がある場合に、遅延回路1601によりバイトイネーブルとデータを1クロックサイクル遅らせる機能ないし工程を有する。
図17は、図16の遅延回路1601の例である。
遅延回路1601は、記憶回路1701、1702、1703、1705、AND回路1704、1709、1710、1711、選択回路1706、1707、1708、OR回路1712からなる。
記憶回路1701は、信号線1611から取り込んだバイトイネーブル信号を1クロックサイクル遅らせて信号線1721に出力する。
記憶回路1702は、信号線1612から取り込んだライトデータ(wd[31:0])を1クロックサイクル遅らせて信号線1722に出力する。
記憶回路1703は、バス111から取り込んだライト信号(wr)、サイズ信号(size[2:0])、アドレス信号(adr[31:2])を1クロックサイクル遅らせて信号線1723に出力する。
AND回路1704は信号線112から取り込んだバイトイネーブル変換有効信号とバス111から取り込んだリクエスト信号(req)のANDを取り信号線1724に出力する。
記憶回路1705は、信号線1724の状態を1クロックサイクル遅らせて信号線1725に出力する。
選択回路1706は、信号線1725の値が1の時は信号線1721の値をバス114のバイトイネーブル信号(be[3:0])として出力する。選択回路1706はまた、信号線1725の値が0の時はバス111のバイトイネーブル信号(be[3:0])をバス114のバイトイネーブル信号(be[3:0])として出力する。
選択回路1707は、信号線1725の値が1の時は信号線1722の値をバス114のライトデータ(wd[31:0])として出力する。選択回路1707はまた、信号線1725の値が0の時はバス111のライトデータ(wd[31:0])をバス114のライトデータ(wd[31:0])として出力する。
選択回路1708は、信号線1725の値が1の時は信号線1723の値をバス114のライト信号(wr)、サイズ信号(size[2:0])、アドレス信号(adr[31:2])として出力する。選択回路1708はまた、信号線1725の値が0の時はバス111のライト信号(wr)、サイズ信号(size[2:0])、アドレス信号(adr[31:2])をバス114のライト信号(wr)、サイズ信号(size[2:0])、アドレス信号(adr[31:2])として出力する。
AND回路1709は信号線1723のライト信号(wr)と信号線1725の値のANDを取り信号線1729に出力する。
AND回路1710は信号線1725の値の反転と信号線1724の値のANDを取り信号線1730に出力する。結果として、信号線1730は信号線1724の立ち上がり時に1サイクルのみ1となる。
AND回路1711は信号線1730の値の反転とバス111のリクエスト信号(req)のANDを取り信号線1731に出力する。結果として、信号線1731は信号線112が1の時のみバス111のリクエスト信号(req)の立ち上がりを1サイクル遅らせた信号となる。
OR回路1712は信号線1729の値と信号線1731の値のORを取ってバス114のリクエスト信号(req)として出力する。
図18は、図16のバス111、及びバス114のタイミングチャートの例である。
1サイクル目(cycle=1)ではバス111において書き込みのデータ転送が行われる。信号線112が1であるため、バス114では同じ書き込みのデータ転送がサイクル2に行われる。
3~7サイクル目ではバス111において読み出しのデータ転送が行われる。信号線112が1であるため、バス114では同じ読み出しのデータ転送の開始が4サイクル目に遅延するが、データ転送の終了はバス111と同じ7サイクル目となる。これは、図17の遅延回路1601において、リクエスト信号(req)、ライト信号(wr)、サイズ信号(size[2:0])、バイトイネーブル信号(be[3:0])、アドレス信号(adr[31:2])に関しては1サイクル遅らせる回路が存在するが、リードデータ有効信号(rdv)、リードデータ(rd[31:0])に関しては1サイクル遅らせる回路が存在しないためである。
以上、本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は、上記実施形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
100:プロセッサ
101:CPU
103:データ変換回路
104:バイトイネーブル変換回路
105:第1の周辺回路(ROM)
106:第2の周辺回路(RAM)
107:第3の周辺回路(第1のIO回路:IO1)
108:第4の周辺回路(第2のIO回路:IO2)
109:エンディアン変換回路
501、502、505、506、507:固定値出力回路(アドレスと接続先の種別の関係を示すテーブルに相当)
1301、1302、1305、1306、1307:記憶回路(アドレスと接続先の種別の関係を示すテーブルに相当)
1311:書込制御回路
1400:プロセッサ
1401:CPU
1409:エンディアン変換回路
1411:CPUのエンディアンの情報を伝達する信号線
1600:プロセッサ
1601:遅延回路
1609:エンディアン変換回路
101:CPU
103:データ変換回路
104:バイトイネーブル変換回路
105:第1の周辺回路(ROM)
106:第2の周辺回路(RAM)
107:第3の周辺回路(第1のIO回路:IO1)
108:第4の周辺回路(第2のIO回路:IO2)
109:エンディアン変換回路
501、502、505、506、507:固定値出力回路(アドレスと接続先の種別の関係を示すテーブルに相当)
1301、1302、1305、1306、1307:記憶回路(アドレスと接続先の種別の関係を示すテーブルに相当)
1311:書込制御回路
1400:プロセッサ
1401:CPU
1409:エンディアン変換回路
1411:CPUのエンディアンの情報を伝達する信号線
1600:プロセッサ
1601:遅延回路
1609:エンディアン変換回路
Claims (13)
- CPUと、
複数の周辺回路と、
前記CPUと前記複数の周辺回路の間に設けられたエンディアン変換回路を有し、
前記エンディアン変換回路は、アドレスと接続先の種別の関係を示す種別情報を格納するテーブルと、バイトイネーブル変換回路と、データ変換回路と、を有し、
前記エンディアン変換回路は、前記CPUから出力されたアクセス先の出力アドレスを用いて前記テーブルから取り出した前記種別情報を用いて前記バイトイネーブル変換回路と前記データ変換回路とを別々に制御する、
ことを特徴とするプロセッサ。 - 請求項1に記載のプロセッサにおいて、
前記テーブルは更に接続先がデータを解釈するサイズに関するサイズ情報を有し、
前記エンディアン変換回路は前記テーブルから取り出した前記種別情報と前記サイズ情報を用いて前記バイトイネーブル変換回路と前記データ変換回路とを別々に制御する、
ことを特徴とするプロセッサ。 - 請求項1に記載のプロセッサにおいて、
前記エンディアン変換回路は前記CPUからの要求に従って前記テーブルの格納値を書き換える機能を有する、
ことを特徴とするプロセッサ。 - 請求項1に記載のプロセッサにおいて、
前記CPUはエンディアンを変更する機能を有し、
前記CPUと前記エンディアン変換回路との間に前記CPUのエンディアンに関する情報を伝達する信号線を有し、
前記エンディアン変換回路は前記信号線から受け取った前記CPUのエンディアンに関する情報に応じてエンディアン変換の規則を変更する、
ことを特徴とするプロセッサ。 - 請求項1に記載のプロセッサにおいて、
前記エンディアン変換回路はエンディアン変換を行う必要がある場合にバイトイネーブルとデータを1クロックサイクル遅らせる遅延回路を有する、
ことを特徴とするプロセッサ。 - 請求項1に記載のプロセッサにおいて、
第1バスと、
第2バスと、を含み、
前記CPUは、前記第1バスに接続され、前記第1バスに、第1エンディアンの1バイト又は複数バイトのデータと、アクセス先のアドレス信号と、前記データのサイズを示すサイズ信号と、前記データのどのバイトが有効かを示すバイトイネーブル信号と、を出力し、
前記複数の周辺回路は、前記第2バスに接続され、
前記エンディアン変換回路は、前記第1バスと前記第2バスの間に設けられ、
前記複数の周辺回路は、
前記第1エンディアンと異なる第2エンディアンのデータを1バイトごとに解釈するメモリと、
前記第2エンディアンのデータを複数バイトごとに解釈する第1のIO回路と、
前記第1エンディアンのデータを複数バイトごとに解釈する第2のIO回路と、を含み、
前記テーブルは、
前記メモリについて、前記メモリのアドレス範囲と、前記メモリの前記種別情報として、前記第2エンディアンを示すエンディアン属性と、前記サイズ信号の値によらずデータを1バイトごとに解釈する第1タイプを示すタイプ属性と、を含み、
前記第1のIO回路について、前記第1のIO回路のアドレス範囲と、前記第1のIO回路の前記種別情報として、前記第2エンディアンを示すエンディアン属性と、前記サイズ信号の値で示されたサイズのデータごとに解釈する第2タイプを示すタイプ属性と、を含み、
前記第2のIO回路について、前記第2のIO回路のアドレス範囲と、前記第2のIO回路の前記種別情報として、前記第1エンディアンを示すエンディアン属性と、前記第2タイプを示すタイプ属性と、を含み、
前記エンディアン変換回路は、前記CPUから出力された前記アクセス先のアドレス信号を用いて前記テーブルから出力された前記エンディアン属性と前記タイプ属性と、前記サイズ信号とに基づいて、前記バイトイネーブル変換回路を制御する第1信号と、前記データ変換回路を制御する第2信号と、を生成する、プロセッサ。 - 請求項6に記載のプロセッサにおいて、
前記第1信号は、前記エンディアン属性が前記第1エンディアンを示す場合、第1の値とされ、前記バイトイネーブル変換回路を用いたエンディアン変換を行わずに前記バイトイネーブル信号を前記第2バスへ出力し、
前記第1信号は、前記エンディアン属性が前記第2エンディアンを示す場合、第2の値とされ、前記バイトイネーブル変換回路を用いて前記バイトイネーブル信号のエンディアン変換を実施して変換後バイトイネーブル信号を前記第2バスへ出力する、プロセッサ。 - 請求項6に記載のプロセッサにおいて、
前記第2信号は、
a)前記エンディアン属性が前記第1エンディアンを示す場合、第1の値とされ、前記データ変換回路を用いたエンディアン変換を行わずに前記データを前記第2バスへ出力し、
b)前記エンディアン属性が前記第2エンディアンを示し、かつ、前記タイプ属性が前記第1タイプの場合、第2の値とされ、前記データ変換回路を用いたエンディアン変換を行わずに前記データを前記第2バスへ出力し、
c)前記エンディアン属性が前記第2エンディアンを示し、かつ、前記タイプ属性が前記第2タイプの場合において、
c1)前記サイズ信号が1バイトを示す時、前記第2の値とされ、前記データ変換回路を用いて前記データのエンディアン変換を実施して変換後データを前記第2バスへ出力し、
c2)前記サイズ信号が2バイトを示す時、第3の値とされ、前記データ変換回路を用いて前記データのエンディアン変換を実施して変換後データを前記第2バスへ出力し、
c3)前記サイズ信号が4バイトを示す時、前記第1の値とされ、前記データ変換回路を用いたエンディアン変換を行わずに前記データを前記第2バスへ出力する、プロセッサ。 - CPUと、複数の周辺回路と、前記CPUと前記複数の周辺回路の間に設けられたエンディアン変換回路を有し、前記エンディアン変換回路は、アドレスと接続先の種別の関係を示す種別情報を格納するテーブルと、バイトイネーブル変換回路と、データ変換回路と、を有するプロセッサのエンディアン変換方法であって、
a)前記CPUから出力されたアクセス先の出力アドレスを用いて前記テーブルから前記種別情報を取り出す工程と、
b)取り出した前記種別情報に基づいて、前記バイトイネーブル変換回路と前記データ変換回路とを別々に制御する工程と、を含むエンディアン変換方法。 - 請求項9に記載のエンディアン変換方法において、
前記テーブルは、さらに、接続先がデータを解釈するサイズに関するサイズ情報を有し、
前記a)工程は、前記テーブルから前記サイズ情報を取り出す工程を含み、
前記b)工程は、前記種別情報と前記サイズ情報とに基づいて、前記バイトイネーブル変換回路と前記データ変換回路とを別々に制御する、エンディアン変換方法。 - 請求項9に記載のエンディアン変換方法において、
前記CPUからの要求に従って前記エンディアン変換回路の前記テーブルの格納値を書き換える工程を有する、エンディアン変換方法。 - 請求項9に記載のエンディアン変換方法において、
前記CPUのエンディアンを変更する工程と、
前記CPUと前記エンディアン変換回路との間の信号線に前記CPUのエンディアンに関する情報を伝達する工程と、
前記信号線から受け取った前記CPUのエンディアンに関する情報に応じて前記エンディアン変換回路のエンディアン変換の規則を変更する工程と、を有するエンディアン変換方法。 - 請求項9に記載のエンディアン変換方法において、
前記エンディアン変換回路はエンディアン変換を行う必要がある場合に遅延回路によりバイトイネーブルとデータを1クロックサイクル遅らせる工程、を有するエンディアン変換方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021153025A JP2023044909A (ja) | 2021-09-21 | 2021-09-21 | プロセッサおよびエンディアン変換方法 |
GBGB2401725.3A GB202401725D0 (en) | 2021-09-21 | 2022-07-06 | Processor and endian conversion method |
PCT/JP2022/026785 WO2023047762A1 (ja) | 2021-09-21 | 2022-07-06 | プロセッサおよびエンディアン変換方法 |
CN202280053523.5A CN117795494A (zh) | 2021-09-21 | 2022-07-06 | 处理器以及字节序转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021153025A JP2023044909A (ja) | 2021-09-21 | 2021-09-21 | プロセッサおよびエンディアン変換方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023044909A true JP2023044909A (ja) | 2023-04-03 |
JP2023044909A5 JP2023044909A5 (ja) | 2024-02-14 |
Family
ID=85720442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021153025A Pending JP2023044909A (ja) | 2021-09-21 | 2021-09-21 | プロセッサおよびエンディアン変換方法 |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP2023044909A (ja) |
CN (1) | CN117795494A (ja) |
GB (1) | GB202401725D0 (ja) |
WO (1) | WO2023047762A1 (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08202646A (ja) * | 1995-01-25 | 1996-08-09 | Nec Corp | I/oコントローラ |
JP2000003304A (ja) * | 1998-06-12 | 2000-01-07 | Nec Corp | データ処理装置とデータアライン装置 |
WO2010029794A1 (ja) * | 2008-09-12 | 2010-03-18 | 株式会社ルネサステクノロジ | データ処理装置及び半導体集積回路装置 |
-
2021
- 2021-09-21 JP JP2021153025A patent/JP2023044909A/ja active Pending
-
2022
- 2022-07-06 WO PCT/JP2022/026785 patent/WO2023047762A1/ja active Application Filing
- 2022-07-06 GB GBGB2401725.3A patent/GB202401725D0/en active Pending
- 2022-07-06 CN CN202280053523.5A patent/CN117795494A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
GB202401725D0 (en) | 2024-03-27 |
CN117795494A (zh) | 2024-03-29 |
WO2023047762A1 (ja) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004536417A (ja) | 読出及び書込動作でバースト順序が異なるアドレッシングを行うメモリデバイス | |
US6684267B2 (en) | Direct memory access controller, and direct memory access control method | |
JP6757791B2 (ja) | インメモリ処理及び狭幅データポートを備えたコンピュータデバイス | |
JP5287301B2 (ja) | ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法 | |
US20050060441A1 (en) | Multi-use data access descriptor | |
CN101313290B (zh) | 对仅m×n位外围设备执行n位写入访问的系统和方法 | |
JP5856434B2 (ja) | バス接続回路、半導体装置及びバス接続回路の動作方法 | |
JP4855864B2 (ja) | ダイレクトメモリアクセスコントローラ | |
JP2006507555A (ja) | コントローラプログラミングによるハードウェアへのデータマスクマッピング | |
KR19990037572A (ko) | 뱅크 어드레스 값을 공급하는 다중 소스를 구비하는 프로세서구조 설계 및 그 설계방법 | |
US5497466A (en) | Universal address generator | |
JPH11353225A (ja) | 逐次実行型でグレイ・コード体系のアドレッシングを行うタイプのプロセッサがアクセスするメモリ、及びメモリにコード/データを格納する方法 | |
WO2023047762A1 (ja) | プロセッサおよびエンディアン変換方法 | |
TWI397855B (zh) | 減少接腳數之方法以及使用其之微處理器 | |
US4964037A (en) | Memory addressing arrangement | |
JP2002099498A (ja) | プログラム実行装置およびプログラム開発支援装置 | |
US7124261B2 (en) | Access to bit values within data words stored in a memory | |
KR100334298B1 (ko) | 기억 소자 | |
JP2012014436A (ja) | ダイレクトメモリアクセス制御装置及び方法 | |
JP2011118744A (ja) | 情報処理装置 | |
JP2023044909A5 (ja) | ||
JP3487498B2 (ja) | データ転送方法 | |
JP3345050B2 (ja) | 二次元配列型メモリシステム | |
GB2117945A (en) | Memory data transfer | |
JP2008065377A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240205 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240205 |