JP2006350907A - Simd型マイクロプロセッサ、データ転送装置、及びデータ変換装置 - Google Patents

Simd型マイクロプロセッサ、データ転送装置、及びデータ変換装置 Download PDF

Info

Publication number
JP2006350907A
JP2006350907A JP2005179208A JP2005179208A JP2006350907A JP 2006350907 A JP2006350907 A JP 2006350907A JP 2005179208 A JP2005179208 A JP 2005179208A JP 2005179208 A JP2005179208 A JP 2005179208A JP 2006350907 A JP2006350907 A JP 2006350907A
Authority
JP
Japan
Prior art keywords
data
register
bit side
transfer
type microprocessor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2005179208A
Other languages
English (en)
Inventor
Kazuhiko Iwanaga
和彦 岩永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2005179208A priority Critical patent/JP2006350907A/ja
Publication of JP2006350907A publication Critical patent/JP2006350907A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)

Abstract

【課題】 SIMD型マイクロプロセッサに対してレジスタのビット幅よりも少ないビット幅のデータを、レジスタにパックして転送する。
【解決手段】 各プロセッサエレメントを指定するアドレスを入力することで、任意のプロセッサエレメントの内蔵するレジスタに外部からアクセス可能であるポートを持つSIMD型マイクロプロセッサにおいて、上記ポートは上位ビット側と下位ビット側に分割されており、上記ポートを介して各プロセッサエレメントのレジスタとの間でデータ転送を行う場合に、一度のアクセスで1つのプロセッサエレメントの上位ビット側及び下位ビット側とで転送を行うように構成され、又は一度のアクセスで2つのプロセッサエレメントの上位ビット側または下位ビット側とで転送を行うように構成されたことを特徴とする。
【選択図】図3

Description

本発明は、1つの演算命令により複数の画像データ等を並列処理するSIMD(Single Instruction−stream Multiple Data−stream)型マイクロプロセッサに関する。
SIMD型マイクロプロセッサは、プロセッサエレメント(以下、PEと称する。)と呼ばれる単位で演算器とレジスタを備え、そのPEを複数個有する。これら複数個のPEが同時に演算処理を行うことで、1つの命令で主走査方向の複数のデータに対して同時に同一の演算処理が実行される。画像処理において各PEは、通常1個の画素の画像処理を担当するように設計されている。
SIMD型マイクロプロセッサの上記のような構造により、演算は同一であるがデータ量が非常に多い処理(例えばデジタルコピアなどにおける画像処理)に係る用途において頻用される。
SIMD型マイクロプロセッサで処理されるデータは、各PEが内蔵している汎用レジスタに格納される必要がある。このことは、プロセッサ外部より汎用レジスタにアクセス可能な外部ポートを介して、プロセッサ外部のメモリコントローラが、外部のメモリと汎用レジスタ間とでデータ転送をすることにより、行われている。
ところで、画像処理は年々精度が向上しており、SIMD型マイクロプロセッサで演算を行うデータのビット幅も増加する傾向にある。データのビット幅が増加しても、従来の構成のプロセッサのビット幅をリニアに増やしていけば対応は可能である。しかし、ビット幅が少ないデータに対する演算に、そのようなプロセッサのビット幅を全て使うことは非効率的である。このことを受けて、レジスタ、ALUをビット分割して同時に複数の独立した演算を行えるようなプロセッサも開発されている。
また、デジタルコピアにおける画像処理を考えると、主走査方向1ラインの画素数はSIMD型マイクロプロセッサの全PE数よりも遙かに多い。このため、SIMD型マイクロプロセッサは、通常、1ラインのデータをPE数ごとに分割して処理を繰り返して行っている。以下では、このPE数ごとの処理の単位を、SIMD処理単位と称することにする。
このように1ライン画素数が全PE数よりも遙かに多い場合において、画素データのビット幅が汎用レジスタのビット幅よりも少ない(例えば、半分である)ときには、(SIMD処理単位で)分割した2つの連続した画像データを、上位ビット及び下位ビットにパックして汎用レジスタに格納すればスループットが2倍になると言える。
ここで上述のように各PEの内蔵している汎用レジスタに、連続した2SIMD処理単位分の画像データをパックして転送することを考える。通常、読み込まれる画像データはプロセッサ外部の画像メモリに連続して格納されている。画像メモリに連続して格納されている2SIMD処理分の画像データを、汎用レジスタにパックして転送するには、1SIMD目のデータを汎用レジスタの下位ビットに転送した後、2SIMD目のデータを汎用レジスタの上位ビットに転送すればよい。しかし、このときには転送サイクルが通常の2倍かかってしまう。
サイクル数を減らすには、画像メモリへのポインタとして1SIMD目のためのポインタ、2SIMD目のためのポインタと2セット持ち、画像メモリを2ポートメモリとすれば可能である。しかし、拡大・縮小といった画像処理における速度変換を行うとすると、2SIMD目のためのポインタが、1SIMD目の拡大・縮小に影響されて変動しなければならないことになるため、並列に転送をすることが困難になる。
なお、下記の特許文献1は、複数の入力シフトレジスタと複数の入力および出力レジスタを持つプロセッサについて開示している。ここでシフトレジスタをカラムデコーダで構成することを開示しているが外部ポートとしてのアドレス入力は開示されていない。また、特許文献2は、シリアル方式の代表的な構成の並列DSPプロセッサを開示している。ここではシリアルメモリ方式での入力メモリと出力メモリの兼用が開示されている。また、特許文献3は、シリアル方式においてデータの量がPE数より少ない場合(特に2つおき)に連続したPEに書き込まず、2つおきのPEに書き込む方式の並列プロセッサを開示する。シリアルアクセスにおける任意のPEへのアクセスの問題をある程度解決している。また、特許文献4は、PEに内蔵されるメモリをチップ外部から単一の大きなメモリとしてアクセスする方式を備える並列処理装置を開示する。ここでは処理すべきデータはシフトレジスタでシリアルに供給されている。また、特許文献5は、PEが内蔵するレジスタに外部よりアドレスを入力することでアクセスすることが可能な構成のSIMD型プロセッサにつき開示している。更に、特許文献6は、シングルポートメモリをFIFOあるいはLIFOとして使用できるメモリコントローラについて開示している。
特開平5−67203号公報 特開平6−4690号公報 特開平6−83787号公報 特開平6−195480号公報 特開2001−84229公報 特開2001−134538公報
本発明は、SIMD型マイクロプロセッサに対してレジスタのビット幅よりも少ないビット幅のデータを、レジスタにパックして転送することを目的とする。
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項1に記載のSIMD型マイクロプロセッサは、
各プロセッサエレメントを指定するアドレスを入力することで、任意のプロセッサエレメントの内蔵するレジスタに外部からアクセス可能であるポートを持つSIMD型マイクロプロセッサにおいて、
上記ポートは、上位ビット側と下位ビット側に分割されており、
上記ポートを介して各プロセッサエレメントのレジスタとの間でデータ転送を行う場合に、
一度のアクセスで1つのプロセッサエレメントの上位ビット側及び下位ビット側とで転送を行うように構成され、又は、
一度のアクセスで隣接する2つのプロセッサエレメントの上位ビット側または下位ビット側とで転送を行うように構成されたことを特徴とする。
本発明に係る請求項2に記載のSIMD型マイクロプロセッサは、
各プロセッサエレメントを指定するアドレスを入力することで、任意のプロセッサエレメントの内蔵するレジスタに外部からアクセス可能であるポートを持つSIMD型マイクロプロセッサにおいて、
上記アドレスは複数配列されるプロセッサエレメントに対して、主走査方向と合致する配列の順序に合わせて順番に付されており、
上記ポートは、上位ビット側と下位ビット側に分割されており、
上記ポートは、さらに偶数番号のプロセッサエレメントのためのデータバスと、奇数番号のプロセッサエレメントのためのデータバスとを区別して有し、
上記ポートを介して各プロセッサエレメントのレジスタとの間でデータ転送を行う場合に、
一度のアクセスで隣接する2つのプロセッサエレメントの上位ビット側及び下位ビット側とで転送を行うように構成され、又は、
一度のアクセスで隣接する4つのプロセッサエレメントの上位ビット側または下位ビット側とで転送を行うように構成されたことを特徴とする。
本発明に係る請求項3に記載のデータ転送装置は、
請求項1に記載のSIMD型マイクロプロセッサにデータ転送するデータ転送装置であって、
外部ポートを介して、各プロセッサエレメントのレジスタに外部からアクセスし、
SIMD型マイクロプロセッサで処理をされる画像データが、レジスタと同一のビット幅である場合には、一度のアクセスで1つのプロセッサエレメントの上位ビット側及び下位ビット側とで転送を行うように構成され、
SIMD型マイクロプロセッサで処理をされる画像データが、レジスタのビット幅よりも少ない場合には、一度のアクセスで隣接する2つのプロセッサエレメントの上位ビット側または下位ビット側とで転送を行い、レジスタの上位ビット側または下位ビット側とで2回の転送を行うように構成されたことを特徴とする。
本発明に係る請求項4に記載のデータ転送装置は、
請求項2に記載のSIMD型マイクロプロセッサにデータ転送するデータ転送装置であって、
外部ポートを介して、各プロセッサエレメントのレジスタに外部からアクセスし、
SIMD型マイクロプロセッサで処理をされる画像データが、レジスタと同一のビット幅である場合には、一度のアクセスで隣接する2つのプロセッサエレメントの上位ビット側及び下位ビット側とで転送を行うように構成され、
SIMD型マイクロプロセッサで処理をされる画像データが、レジスタのビット幅よりも少ない場合には、一度のアクセスで隣接する4つのプロセッサエレメントの上位ビット側または下位ビット側とで転送を行い、レジスタの上位ビット側または下位ビット側とで2回の転送を行うように構成されたことを特徴とする。
本発明に係る請求項5に記載のデータ転送装置は、
各プロセッサエレメントのレジスタの下位ビット側または上位ビット側に転送されるデータが、画像メモリに格納された連続した画像データの中の、2つの連続する画像データ列であって列内の個数がプロセッサエレメント数よりも少ない画像データ列であることを特徴とする請求項3又は4に記載のデータ転送装置である。
本発明に係る請求項6に記載のデータ転送装置は、
請求項3〜5のうちのいずれか一つに記載のデータ転送装置を2つ以上搭載し、1つのデータ転送装置で転送されるデータの一部が、他のデータ転送装置のデータ転送におけるデータ間欠あるいはデータ重複処理に使用されることを特徴とするデータ変換装置である。
本発明を利用することにより、画像メモリに格納された一連の画像データ列のデータをPEのレジスタの下位側、上位側にてパックして転送することができ、同時にその際の転送サイクル数を削減できる。また、パックして格納した画像データに対して、SIMD型マイクロプロセッサで演算を行うことにより画像処理を高速化できる。
以下、図面を参照しつつ本発明に係る好適な実施の形態を説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態に係るSIMD型マイクロプロセッサ2、メモリコントローラ74及びメモリ76の構成図である。第1の実施形態に係るSIMD型マイクロプロセッサ2は、概略、グローバルプロセッサ30、プロセッサエレメントグループ72、及び外部インタフェース70から構成される。プロセッサエレメントグループ72は複数のPEの配列体(集合体)であり、後で説明するように各PEの演算器が演算アレイ62に属しており、各PEのレジスタがレジスタファイル60に属している。以下ではPEは256個配列されており、順に(例えば、図2の左方から)0〜255の番号が、PE番号として、即ちアドレスとして付されているものとする。
メモリ76は、メモリコントローラ74を介して、SIMD型マイクロプロセッサ2の外部インタフェース70と繋がっている。メモリコントローラ74は、SIMD型マイクロプロセッサ2のグローバルプロセッサ30と繋がり、グローバルプロセッサ30の制御を受ける。
グローバルプロセッサ30は、いわゆるSISD(Single Instruction Stream、Single Data Stream)タイプのプロセッサであり、プログラムRAMとデータRAMを内蔵し、プログラムを解読して各種制御信号を生成する。この制御信号は、内蔵する各種ブロック以外にも、レジスタファイル、演算アレイ、及びメモリコントローラに供給される。また、GP(グローバルプロセッサ)命令実行時は内蔵する汎用レジスタ、ALU(算術論理演算器)等を使用して各種演算処理、プログラム制御処理を行う。
レジスタファイル60は、PE(プロセッサエレメント)命令で処理されるデータを保持している。PE命令はSIMD(Single Instruction Stream, Multiple Data Stream)タイプの命令であり、レジスタファイル60に保持されている複数のデータを同時に同じ処理を行う。このレジスタファイル60からのデータの読み出し/書き込みの制御はグローバルプロセッサ30からの制御によって行われる。読み出されたデータは演算アレイ62に送られ、演算アレイ62での演算処理後にレジスタファイル60に書き込まれる。
また、レジスタファイル60は外部インタフェース70を介してプロセッサ外部のメモリコントローラ74からのアクセスが可能であり、グローバルプロセッサ30の制御とは別に外部から特定のレジスタを読み出し/書き込みが行われる。
演算アレイ62では、PE命令の演算処理がおこなわれる。処理の制御はすべてグローバルプロセッサ30から行われる。
メモリコントローラ30は、外部ポートにクロックとアドレス、リード/ライト制御を出力し、シングルポートのメモリ76にクロックとアドレス、リード/ライト制御を出力する。これらを利用して、任意のPEのレジスタと(シングルポートの)メモリ76間で、データ転送が行われる。処理の制御はすべてグローバルプロセッサ30から行われる。
図2は、本発明の第1の実施形態に係るSIMD型マイクロプロセッサ2の構成図である。図2では、プロセッサエレメントグループ(図1参照)72の中央付近にある6個のPEを中心に示している。図2において、符号4の付される部分が一つのPE(プロセッサエレメント)を示している。
グローバルプロセッサ30には、プログラム格納用のプログラムRAM52と演算データ格納用のデータRAM54が内蔵されている。更に、プログラムのアドレスを保持するプログラムカウンタ(PC)42、演算処理のデータ格納のための汎用レジスタであるG0〜G3レジスタ(32〜38)、レジスタ退避、復帰時に退避先データRAMのアドレスを保持しているスタックポインタ(SP)40、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ(LS)44、同じくIRQ時とNMI時の分岐元アドレスを保持するLI、LNレジスタ46、48、プロセッサの状態を保持しているプロセッサステータスレジスタ(P)50が内蔵されている。
これらのレジスタと図示していない命令デコーダ、ALU、メモリ制御回路、割り込み制御回路、外部インタフェース制御回路、GP演算制御回路を使用してGP命令の実行が行われる。また、PE命令実行時は命令デコーダ、図示していないレジスタファイル制御回路、PE演算制御回路を使用して、レジスタファイル60の制御と演算アレイ62の制御をおこなう。
レジスタファイル60には、1つのPE単位に16ビットのレジスタ(6、8)が32本内蔵されており、256PE分の組がアレイ構成になっている。レジスタ(6、8)はPEごとにR0、R1、R2、・・・R31と称することとする。それぞれのレジスタ(6、8)は演算アレイ62に対して1つの読み出しポートと1つの書き込みポートを備えており、16ビットのリード/ライト兼用のバス10で演算アレイ62からアクセスされる。
32本のレジスタ(6、8)の内の24本(R0〜R23)は、外部インタフェース70を介してプロセッサ外部からアクセス可能であり、外部からクロック、アドレス、及びリード/ライト制御の夫々の信号を入力することで、任意のレジスタ6に対する読み書きが可能となる。1つの外部ポートにより各PEの1つのレジスタ6がアクセスされるようにしてあり、このときに外部から入力されたアドレスによりPEの番号(0〜255)が指定される。したがって、レジスタ6のアクセスのための外部ポートは、全部で24組搭載されている。
また、外部からのアクセスは、偶数番号のPEと奇数番号のPEとで構成される1対のPEに対して行われる。従って、このアクセスは32ビットで行われ、1回のアクセスで2つのレジスタ6が同時に対象となり得る。
演算アレイ62は、32ビットALU(18、24)と32ビットAレジスタ(20、26)、Fレジスタ(22、28)を内蔵している。PE命令による演算では、レジスタファイル60から読み出されたデータ若しくはグローバルプロセッサ30から与えられたデータをALUの片側の入力とし、Aレジスタの内容のデータをもう片側には入力とし、演算結果はAレジスタ(20、26)に格納される。したがって、Aレジスタ(20、26)とR0〜R31レジスタ(6、8)若しくはグローバルプロセッサ30から与えられるデータとの演算が、行われることになる。32ビットALU(18、24)は、2つの16ビットALU18、24から構成されており、演算精度が必要な場合は下位側ALU18からのキャリーが上位側ALU24に入力され、32ビットALUとして機能する。演算精度が32ビットも必要でない場合は、16ビットずつの独立した演算を行うことも可能である。
レジスタファイル60と演算部14との接続部分に、7to1(7対1)のマルチプレクサ12が置かれている。このマルチプレクサ12により、PE配列方向で前方(即ち、PE番号の小さい方)に1つ、2つ、及び3つ離れたPEに属するレジスタ(6、8)のデータと、後方(即ち、PE番号の大きい方)に1つ、2つ、及び3つ離れたPEに属するレジスタ(6、8)のデータと、中央のPEに属するレジスタ(6、8)のデータが、演算部14の演算対象として選択される。また、レジスタ(6、8)の16ビットのデータは、シフト・拡張回路16により、指定されたビット分だけ左シフトされてALUに入力する。
更に、図示していない16ビットの条件レジスタ(T)により、PEごとに演算実行の無効/有効が制御されている。この条件レジスタにより、特定のPEだけを演算対象として選択できるようになっている。
図3は、本発明の第1の実施形態に係るSIMD型マイクロプロセッサ2の部分構成図である。SIMD型マイクロプロセッサ2のうち、主として、外部インタフェース70、及び3つのPEに関するアドレスデコード・リード/ライトコントロール部78とレジスタ6を、示している。一つのレジスタ6は、下位側レジスタと上位側レジスタで構成される。これに合わせて、後述のリード/ライト選択信号や転送データも、下位側のものと上位側のものとで構成されている。
外部ポートは、8ビットのアドレス、ハイレベル時にリード動作をローレベル時にライト動作を夫々示すリード/ライト選択信号(上位側、下位側)、転送のタイミングを与えるクロック、上位側と下位側の夫々8ビットの転送データ、および選択信号で構成されている。これらの信号は、外部インタフェース70のブロックに接続され、ここでタイミング調整とバッファリングがなされ、プロセッサ内部の信号としてアドレス、リード/ライト選択信号(上位側、下位側)、クロック、転送データ(上位側、下位側)、および選択信号に変換される。
これらの信号は、レジスタファイル60の各レジスタ6に供給される。このうちアドレスは各PEでデコードされ、PEを示すアドレス(PE番号)と一致したPEにおいてのみ、リード/ライトの動作が行われる。PE毎に、アドレスのデコードとリード/ライトの制御を行うアドレスデコード・リード/ライトコントロール部78が設けられている。レジスタ6は、アドレスデコード・リード/ライトコントロール部78からの制御信号(W1、R1、W1A、R1A、W1B、R1B)に従って、外部インタフェース70と接続されたデータバス(上位側、下位側)とデータの転送を行う。
図4において、PE0に設けられるアドレスデコード・リード/ライトコントロール部(図4(1))と、PE1に設けられるアドレスデコード・リード/ライトコントロール部(図4(2))の回路図の例を示す。
ここで、選択信号がローレベルのときは、アドレスデコード・リード/ライトコントロール部78がアドレス8ビット全てをデコードするようになっている。従ってこのときは、1つのPEが選択される。選択されたPEのアドレスデコード・リード/ライトコントロール部78は、リード/ライト選択信号(上位側、下位側)に従って、ライト時はW1、W1A制御信号をアサートし、リード時はR1、R1A制御信号をアサートする。転送データ(下位側)が(W1、R1)により下位側レジスタ6Aと対応し、転送データ(上位側)が(W1A、R1A)により上位側レジスタ6Bと対応した状態で、転送データの転送がなされる。
一方、選択信号がハイレベルのときは、アドレスデコード・リード/ライトコントロール部78が、アドレス8ビットの内の最下位ビットがマスクされたものを、デコードするようになっている。従ってこのときは2つのPE(例えば、PE0とPE1)が選択される。選択されたPEのアドレスデコード・リード/ライトコントロール部78は、リード/ライト選択信号(上位側、下位側)に従って、ライト時はW1、W1B制御信号をアサートし、リード時はR1、R1B制御信号をアサートする。転送データ(下位側)が偶数番号のPEのレジスタと対応し、転送データ(上位側)が奇数番号のPEのレジスタと対応した状態で、転送データの転送がなされる。
レジスタ6は、演算部14ともデータの転送を行うために、もう一方の入出力ポートを持ち、命令によりグローバルプロセッサ30で作成されたライト(W2)/リード(R2)制御信号により、演算部14と接続するデータポート(D2)からデータの転送が行われる。図3では、3個のPEの構成だけを示しているが、図2のような256個のPEを備える構成では、レジスタ6に係るアドレスデコード・リード/ライトコントロール部78は、256個必要である。また、0〜255のうち一つの数字を指定するため、アドレスのビット幅は8ビットとなっている。したがって、PE数の増減によりアドレスのビット幅も変化することとなる。また、データのビット幅もここでは8ビットとしているが、一度に転送するデータ量により変化し得る。
図5は、本発明の第1の実施形態に係るSIMD型マイクロプロセッサ2の別の構成例の部分構成図である。図3に示すSIMD型マイクロプロセッサでは、奇数番号のPEの下位側レジスタ6A、偶数番号のPEの上位側レジスタ6Bが3ポートレジスタであるが、図5に示すSIMD型マイクロプロセッサでは、奇数番号のPEの下位側レジスタ6Aのみが3ポートレジスタとされ、他のレジスタは全て2ポートレジスタとされている。
図3に示す構成例では、選択信号がローレベルのときは図3に示す構成のときと同一の動作を行う。選択信号がハイレベルのときは、下位側レジスタ6Aに対してのみ偶数番号のPEと奇数番号のPEとにデータ転送を行う。
つまりこの場合、まず上位側レジスタ6Bに転送すべきデータを下位側レジスタ6Aに転送する。下位側レジスタ6Aへのデータ転送が終了したら、SIMD命令によって下位側レジスタ6Aのデータを上位側レジスタ6Bに転送し、しかる後に下位側レジスタ6Aに本来転送すべきデータを下位側レジスタ6Aに転送する。このようにすれば、図3に示すSIMD型マイクロプロセッサと、同じ結果の転送を実現できる。
[第2の実施形態]
図6は、本発明の第2の実施形態に係るSIMD型マイクロプロセッサ2の部分構成図である。本発明の第2の実施形態に係るSIMD型マイクロプロセッサは、第1の実施形態に係るSIMD型マイクロプロセッサと略同様のものである。従って、同一部位には同一の符号を付して、説明を省略する。
図6に示すSIMD型マイクロプロセッサ2では、図3に示すSIMD型マイクロプロセッサ2と比較して、外部端子のデータバスが2倍のビット幅である32ビットとなり、リード/ライト選択信号が4本となっている。4本のリード/ライト選択信号のうち、2本は偶数番号のPEのためのものであり、他の2本は奇数番号のPEのためのものである。
内部信号においても、関連する信号が増加している。偶数番号のPEのアドレスデコード・リード/ライトコントロール部78には偶数番号のPEのためのリード/ライト選択信号が接続され、レジスタ6には偶数番号のPEのためのデータバスが接続されている。また、奇数番号のPEのアドレスデコード・リード/ライトコントロール部78には奇数番号のPEのためのリード/ライト選択信号が接続され、レジスタ6には奇数番号のPEのためのデータバスが接続されている。
また、アドレスは1/2のビット幅(7ビット)である。このことにより、偶数番号のPEとそれに隣接する奇数番号のPEとで、同一アドレスがデコードされることになる。従って、偶数番号のPEのレジスタ6とそれに隣接する奇数番号PEのレジスタ6とに、同時にデータが転送され得る。即ち、第1の実施形態に係るSIMD型マイクロプロセッサでは、全てのPEのレジスタ6のデータ転送に256回の転送サイクルが必要であるが、第2の実施形態に係るSIMD型マイクロプロセッサでは128回で済むことになる。なお、リード/ライト選択信号は、偶数番号のPEのためのものと奇数番号のPEのためのものとで分けられているから、偶数番号のPE若しくは奇数番号のPEのどちらか一方のレジスタに対してのみデータ転送をする、ということも可能である。
図7において、PE0、PE1に設けられるアドレスデコード・リード/ライトコントロール部(図7(1))と、PE2、PE3に設けられるアドレスデコード・リード/ライトコントロール部(図7(2))の回路図の例を示す。
図3に示す第1の実施形態に係るSIMD型マイクロプロセッサ2と同様に、選択信号がローレベルのときは、アドレスデコード・リード/ライトコントロール部78は、アドレス7ビット全てをデコードするようになっている。従ってこのときは2つのPEが選択される。選択されたPEのアドレスデコード・リード/ライトコントロール部78は、リード/ライト選択信号(上位側、下位側)に従って、ライト時はW1、W1A制御信号をアサートし、リード時はR1、R1A制御信号をアサートする。転送データ(下位側)が(W1、R1)により下位側レジスタ6Aと対応し、転送データ(上位側)が(W1A、R1A)により上位側レジスタ6Bと対応した状態で、転送データの転送がなされる。
一方、選択信号がハイレベルのときは、アドレスデコード・リード/ライトコントロール部78が、アドレス7ビットの内の最下位ビットがマスクされたものを、デコードするようになっている。従ってこのときは4つのPE(例えば、PE0、PE1、PE2、及びPE3)が選択される。選択されたPEのアドレスデコード・リード/ライトコントロール部78は、リード/ライト選択信号(上位側、下位側)に従って、ライト時はW1、W1B制御信号をアサートし、リード時はR1、R1B制御信号をアサートする。転送データ(下位側)が、PE番号が4n、4n+1(n=0、1、2、・・・)であるPEのレジスタと対応し、転送データ(上位側)が、PE番号が4n+2、4n+3(n=0、1、2、・・・)であるPEのレジスタと対応した状態で、転送データの転送が行われる。
図8は、本発明の第2の実施形態に係るSIMD型マイクロプロセッサ2の別の構成例である。図6に示すSIMD型マイクロプロセッサでは、PE番号が4n、4n+1(n=0、1、2、・・・)のPEの上位側レジスタ6B、PE番号が4n+2、4n+3(n=0、1、2、・・・)のPEの下位側レジスタ6Aが3ポートレジスタであるが、図8に示すSIMD型マイクロプロセッサでは、PE番号が4n+2、4n+3(n=0、1、2、・・・)のPEの下位側レジスタのみが3ポートレジスタとされ、他のレジスタは全て2ポートレジスタとされている。
図8に示す構成では、選択信号がローレベルのときは図6に示す構成のときと同一の動作を行う。選択信号がハイレベルのときは、下位側レジスタに対してのみ4つのPEに同時にデータ転送を行う。
つまりこの場合、まず上位側レジスタ6Bに転送すべきデータを下位側レジスタ6Aに転送する。下位側レジスタ6Aへのデータ転送が終了したら、SIMD命令によって下位側レジスタ6Aのデータを上位側レジスタ6Bに転送し、しかる後に下位側レジスタ6Aに本来転送すべきデータを下位側レジスタ6Aに転送する。このようにすれば、図6に示すSIMD型マイクロプロセッサと、同じ結果の転送を実現できる。
図9は、本発明に係るメモリコントローラ74のブロック図である。図9に示す外部インタフェース70は、第2の実施形態に係るSIMD型マイクロプロセッサ2に対応するものの一つであるが、外部インタフェース70の構成は図9に示すものに限定されない。
メモリコントローラ74は、メモリ76にデータの書き込みを行うためのライトバッファ部82、メモリ76からデータの読み取りを行うためのリードバッファ部86、PEのレジスタファイル60への制御を行う外部インタフェース制御部88、メモリ76への制御を行うRAM制御部80、及びシーケンスユニット(SCU)84より構成されている。
メモリコントローラ74は、SIMD型マイクロプロセッサ2のレジスタファイル60と、外部インタフェース70内のデータ転送ポートを介して接続され、レジスタファイル60からメモリ76へのデータ転送、及びメモリ76からレジスタファイル60へのデータ転送を行う。このデータ転送ポートは、出力ポートと入力ポートとを備える。また、メモリコントローラ74が制御するレジスタ6はI/O空間にマッピングされており、グローバルプロセッサ30からの指示に従ってレジスタ6に対するリード及びライトが行われる。
ライトバッファ部82には、SIMD型マイクロプロセッサ2の外部インタフェース70の出力ポートが接続される。リードバッファ部86には、外部インタフェース70の入力ポートが接続される。データ転送ポートは、それぞれ偶数番号PE用及び奇数番号PE用の入力ポート及び出力ポートを独立して有している。これにより、データ転送ポートは、1サイクルで一度に偶数番号と奇数番号の1組のPE分のデータを、アクセスのために転送できるように構成されている。また、ライトバッファ部82及びリードバッファ部86と、メモリ76との間のデータバスは、夫々4個のPEに相応するデータ幅で構成されており、1サイクルで一度に4個のPEに相応するデータをアクセスできる。尚、第2の実施形態においては、1個のPEに相応するデータは16ビットとしている。従って、メモリコントローラ74とメモリ76間のビット幅は、64ビットで構成される。
また、外部インタフェース70と、ライトバッファ部82及びリードバッファ部86との間のデータバスのビット幅は32ビットで構成される。この結果、外部インタフェース70のデータ転送ポートとメモリコントローラ74間のデータ転送を2回行う間に、メモリ76とメモリコントローラ74間のデータ転送を1回実行すればよいことになる。メモリコントローラ74のライトバッファ部82は、SIMD型マイクロプロセッサ2の外部インタフェース70より出力されるデータを2回取り込み、4個のPE分のデータに整形した後、メモリ76に転送する動作を行う。また、リードバッファ部86は、メモリ76から読み出した4個のPE分のデータを2回に分けて、SIMD型マイクロプロセッサ2の外部インタフェース70に転送する動作を行う。
メモリコントローラ74は、選択信号を外部インタフェース70に対して出力している。レジスタ6のビット幅と同じビット幅のデータを転送する場合、メモリコントローラ74は、選択信号をローレベルとし、レジスタ6を構成する上位側レジスタ及び下位側レジスタに、同時にデータ転送を行う。
レジスタ6のビット幅よりもビット幅の少ない(例えば半分の)データが、メモリ76にパックされずに格納されている場合、メモリコントローラ74は、メモリ76に対して順次アクセスしてデータを取り出すのであるが、まずデータ(下位側)にデータ転送を行う(このとき、リード/ライト選択信号(下位側)のみ、又はリード/ライト選択信号(上位側)のみ、ローレベルをアサートする)。データ(下位側)へのデータの転送が終わったら、データ(上位側)へのデータ転送を行う(このとき、リード/ライト選択信号(下位側)のみ、又は、リード/ライト選択信号(上位側)のみ、ローレベルをアサートする)。これら転送の際には、選択信号をハイレベルとする。このような転送を全てのPEについて行う。
レジスタ6のビット幅よりもビット幅の少ない(例えば半分)データが、パックされた状態でレジスタ6に格納されていて、そのデータをメモリ76にデータごとに書き込む場合も、上記と同様に下位側レジスタ6Aと上位側レジスタ6Bに順次アクセスすればデータ転送が可能となる。
図10に主走査方向の画素数が多い場合に、画像データをSIMD処理単位で分割して処理する概念図を示している。画像処理においては、フィルタリングなどのように左右画素データを参照する処理が必ず含まれ、その際にSIMD処理単位の端部には無効な画素データが生じることになる。このような無効画素データの対策として、データ転送の際には、SIMD処理単位の画像データを図10のようにオーバラップさせて転送する必要がある。
画像データをSIMD処理単位で分割して処理する際に、データをパックする場合、1SIMD目のデータ、3SIMD目のデータ、・・・は下位側レジスタに入り、2SIMD目のデータ、4SIMD目のデータ、・・・は上位側レジスタに入る。下位側に入るデータ(1SIMD目のデータ、3SIMD目のデータ、・・・)と上位側に入るデータ(2SIMD目のデータ、4SIMD目のデータ、・・・)が格納される位置を示すアドレスポインタは、図11のように、上位側だけ、若しくは、下位側だけに着目すると不連続である。
従って、画像メモリを2ポートメモリにしてメモリからPE内のレジスタへのデータ転送のバンド幅を広げようとしても、アドレスポインタの管理が難しくなる。さらに画像処理には、通常、変倍というデータ数が変動するようなデータ転送が存在する。この場合には上位側、下位側で並列してデータを転送することが不可能になってしまう。
それに比べて、本発明では、メモリに対してはオーバラップする2SIMD処理分のデータに順次アクセスするだけでよいので、上記のような問題は生じない。
[第3の実施形態]
図12は、本発明の第3の実施形態に係るSIMD型マイクロプロセッサ2’、メモリコントローラ74(1)、74(2)及びメモリ76(1)、76(2)の構成図である。本発明の第3の実施形態に係るSIMD型マイクロプロセッサ2’、メモリコントローラ74(1)、74(2)及びメモリ76(1)、76(2)は、第1の実施形態に係るSIMD型マイクロプロセッサ2’、メモリコントローラ74(1)、74(2)及びメモリ76(1)、76(2)と略同様のものである。従って、同一部位には同一の符号を付して、説明を省略する。
図12では、本発明に係る外部インタフェース70(1)、70(2)を備えたマイクロプロセッサ2’に対して、メモリコントローラ74(1)、74(2)を2つ搭載し、片方のメモリコントローラ74(2)が転送するデータを、他方のメモリコントローラ74(1)のデータ転送の際の速度変換(拡大時の重複転送、縮小時の間欠転送)を制御するための制御信号として接続している構成を示している。本発明におけるメモリコントローラ74(1)、74(2)及び外部インタフェース70(1)、70(2)では、変倍の処理を行う場合でも、オーバラップする2SIMD処理分のデータをパックしてPE内のレジスタ6へ転送することが可能であることは、これまでの説明から自明である。
本発明の第1の実施形態に係るSIMD型マイクロプロセッサ、メモリコントローラ及びメモリの構成図である。 本発明の第1の実施形態に係るSIMD型マイクロプロセッサの構成図である。 本発明の第1の実施形態に係るSIMD型マイクロプロセッサの部分構成図である。 PE0に設けられるアドレスデコード・リード/ライトコントロール部(図4(1))と、PE1に設けられるアドレスデコード・リード/ライトコントロール部(図4(2))の回路図を示す。 本発明の第1の実施形態に係るSIMD型マイクロプロセッサの別の構成例の部分構成図である。 本発明の第2の実施形態に係るSIMD型マイクロプロセッサの部分構成図である。 PE0、PE1に設けられるアドレスデコード・リード/ライトコントロール部(図7(1))と、PE2、PE3に設けられるアドレスデコード・リード/ライトコントロール部(図7(2))の回路図を示す。 本発明の第2の実施形態に係るSIMD型マイクロプロセッサの別の構成例である。 本発明に係るメモリコントローラのブロック図である。 主走査方向の画素数が多い場合に、画像データをSIMD処理単位で分割して処理する概念図を示している。 画像データをSIMD処理単位で分割して処理する際に、データが格納される位置を示すアドレスポインタの状況を示す図である。 本発明の第3の実施形態に係るSIMD型マイクロプロセッサ、メモリコントローラ及びメモリの構成図である。
符号の説明
2・・・SIMD型マイクロプロセッサ、4・・・プロセッサエレメント(PE)、6、8・・・レジスタ、6A・・・下位側レジスタ、6B・・・上位側レジスタ、14・・・演算部、18、24・・・ALU(演算器)、30・・・グローバルプロセッサ、70・・・外部インタフェース、74・・・メモリコントローラ、76・・・メモリ、78・・・アドレスデコード・リード/ライトコントロール部。

Claims (6)

  1. 各プロセッサエレメントを指定するアドレスを入力することで、任意のプロセッサエレメントの内蔵するレジスタに外部からアクセス可能であるポートを持つSIMD型マイクロプロセッサにおいて、
    上記ポートは、上位ビット側と下位ビット側に分割されており、
    上記ポートを介して各プロセッサエレメントのレジスタとの間でデータ転送を行う場合に、
    一度のアクセスで1つのプロセッサエレメントの上位ビット側及び下位ビット側とで転送を行うように構成され、又は、
    一度のアクセスで隣接する2つのプロセッサエレメントの上位ビット側または下位ビット側とで転送を行うように構成されたことを特徴とするSIMD型マイクロプロセッサ。
  2. 各プロセッサエレメントを指定するアドレスを入力することで、任意のプロセッサエレメントの内蔵するレジスタに外部からアクセス可能であるポートを持つSIMD型マイクロプロセッサにおいて、
    上記アドレスは複数配列されるプロセッサエレメントに対して、主走査方向と合致する配列の順序に合わせて順番に付されており、
    上記ポートは、上位ビット側と下位ビット側に分割されており、
    上記ポートは、さらに偶数番号のプロセッサエレメントのためのデータバスと、奇数番号のプロセッサエレメントのためのデータバスとを区別して有し、
    上記ポートを介して各プロセッサエレメントのレジスタとの間でデータ転送を行う場合に、
    一度のアクセスで隣接する2つのプロセッサエレメントの上位ビット側及び下位ビット側とで転送を行うように構成され、又は、
    一度のアクセスで隣接する4つのプロセッサエレメントの上位ビット側または下位ビット側とで転送を行うように構成されたことを特徴とするSIMD型マイクロプロセッサ。
  3. 請求項1に記載のSIMD型マイクロプロセッサにデータ転送するデータ転送装置であって、
    外部ポートを介して、各プロセッサエレメントのレジスタに外部からアクセスし、
    SIMD型マイクロプロセッサで処理をされる画像データが、レジスタと同一のビット幅である場合には、一度のアクセスで1つのプロセッサエレメントの上位ビット側及び下位ビット側とで転送を行うように構成され、
    SIMD型マイクロプロセッサで処理をされる画像データが、レジスタのビット幅よりも少ない場合には、一度のアクセスで隣接する2つのプロセッサエレメントの上位ビット側または下位ビット側とで転送を行い、レジスタの上位ビット側または下位ビット側とで2回の転送を行うように構成されたことを特徴とするデータ転送装置。
  4. 請求項2に記載のSIMD型マイクロプロセッサにデータ転送するデータ転送装置であって、
    外部ポートを介して、各プロセッサエレメントのレジスタに外部からアクセスし、
    SIMD型マイクロプロセッサで処理をされる画像データが、レジスタと同一のビット幅である場合には、一度のアクセスで隣接する2つのプロセッサエレメントの上位ビット側及び下位ビット側とで転送を行うように構成され、
    SIMD型マイクロプロセッサで処理をされる画像データが、レジスタのビット幅よりも少ない場合には、一度のアクセスで隣接する4つのプロセッサエレメントの上位ビット側または下位ビット側とで転送を行い、レジスタの上位ビット側または下位ビット側とで2回の転送を行うように構成されたことを特徴とするデータ転送装置。
  5. 各プロセッサエレメントのレジスタの下位ビット側または上位ビット側に転送されるデータが、画像メモリに格納された連続した画像データの中の、2つの連続する画像データ列であって列内の個数がプロセッサエレメント数よりも少ない画像データ列であることを特徴とする請求項3又は4に記載のデータ転送装置。
  6. 請求項3〜5のうちのいずれか一つに記載のデータ転送装置を2つ以上搭載し、1つのデータ転送装置で転送されるデータの一部が、他のデータ転送装置のデータ転送におけるデータ間欠あるいはデータ重複処理に使用されることを特徴とするデータ変換装置。

JP2005179208A 2005-06-20 2005-06-20 Simd型マイクロプロセッサ、データ転送装置、及びデータ変換装置 Pending JP2006350907A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005179208A JP2006350907A (ja) 2005-06-20 2005-06-20 Simd型マイクロプロセッサ、データ転送装置、及びデータ変換装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005179208A JP2006350907A (ja) 2005-06-20 2005-06-20 Simd型マイクロプロセッサ、データ転送装置、及びデータ変換装置

Publications (1)

Publication Number Publication Date
JP2006350907A true JP2006350907A (ja) 2006-12-28

Family

ID=37646635

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005179208A Pending JP2006350907A (ja) 2005-06-20 2005-06-20 Simd型マイクロプロセッサ、データ転送装置、及びデータ変換装置

Country Status (1)

Country Link
JP (1) JP2006350907A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009267668A (ja) * 2008-04-24 2009-11-12 Mega Chips Corp エンコーダ
US7882325B2 (en) * 2007-12-21 2011-02-01 Intel Corporation Method and apparatus for a double width load using a single width load port
JP2014016894A (ja) * 2012-07-10 2014-01-30 Renesas Electronics Corp 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム
JP2018206402A (ja) * 2009-06-19 2018-12-27 シンギュラー コンピューティング、エルエルシー コンパクトな演算処理要素を用いたプロセッシング

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7882325B2 (en) * 2007-12-21 2011-02-01 Intel Corporation Method and apparatus for a double width load using a single width load port
JP2009267668A (ja) * 2008-04-24 2009-11-12 Mega Chips Corp エンコーダ
JP2018206402A (ja) * 2009-06-19 2018-12-27 シンギュラー コンピューティング、エルエルシー コンパクトな演算処理要素を用いたプロセッシング
JP2014016894A (ja) * 2012-07-10 2014-01-30 Renesas Electronics Corp 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム

Similar Documents

Publication Publication Date Title
JP4934356B2 (ja) 映像処理エンジンおよびそれを含む映像処理システム
US20120079247A1 (en) Dual register data path architecture
EP1512068B1 (en) Access to a wide memory
JP2001256105A (ja) 非整列循環アドレス指定を用いるマイクロプロセッサ
JPH10232779A (ja) 命令並列処理方法及び装置
JP2009223758A (ja) 画像処理装置
JP2620511B2 (ja) データ・プロセッサ
JP3971535B2 (ja) Simd型プロセッサ
JP2006350907A (ja) Simd型マイクロプロセッサ、データ転送装置、及びデータ変換装置
JP2007073010A (ja) Simd方式プロセッサ、当該simd方式プロセッサを利用する画像処理方法、及び画像処理装置
US6681273B1 (en) High performance, variable data width FIFO buffer
JPH11312085A (ja) プロセッサ
JP3821198B2 (ja) 信号処理装置
JP4408113B2 (ja) 信号処理方法
JP2008071037A (ja) Simd型マイクロプロセッサ
JP4482356B2 (ja) Simdプロセッサを用いた画像処理方法及び画像処理装置
CN113841134A (zh) 具有向量变换执行的处理装置
JP5369669B2 (ja) Simd型マイクロプロセッサ
US20100064115A1 (en) Vector processing unit
JP3971543B2 (ja) Simd型プロセッサ
JP2007200090A (ja) 半導体演算処理装置
JP2004206387A (ja) 画像処理方法およびプロセッサおよび画像処理装置
JP2009175830A (ja) Simd型マイクロプロセッサ
JP2009104521A (ja) 並列処理装置
JP2003186854A (ja) Simd型プロセッサ及びその検証装置