JP2000172628A - データ転送装置 - Google Patents

データ転送装置

Info

Publication number
JP2000172628A
JP2000172628A JP10346889A JP34688998A JP2000172628A JP 2000172628 A JP2000172628 A JP 2000172628A JP 10346889 A JP10346889 A JP 10346889A JP 34688998 A JP34688998 A JP 34688998A JP 2000172628 A JP2000172628 A JP 2000172628A
Authority
JP
Japan
Prior art keywords
data
cpu
unit
processing
transfer
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
JP10346889A
Other languages
English (en)
Inventor
Atsushi Mori
篤史 毛利
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP10346889A priority Critical patent/JP2000172628A/ja
Publication of JP2000172628A publication Critical patent/JP2000172628A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Bus Control (AREA)

Abstract

(57)【要約】 【課題】 データ加工処理用の専用処理プロセッサを設
けないで、システム・プロセッサがダイレクト・メモリ
転送に介入して転送データの加工を行う。 【解決手段】 CPUと内部データRAMとDMA制御
部とを備えたシステムにおいて、DMAには、演算加工
が必要なデータのダイレクト・メモリ・アクセス指令を
受けてそのデータのDMAバッファへの到着を知らせる
モードレジスタを設けて、CPUは、モード・レジスタ
からの到着通知を受けると、DMAバッファから対応す
るデータを直接リードして所定の演算加工をして内部デ
ータRAMに格納するようにした。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、中央処理装置(C
PU)と複数の記憶手段を備えるコンピュータシステム
におけるデータ転送機構に関するものであり、データ転
送に際してシステムのCPUがダイレクト・メモリ・ア
クセス処理(DMA処理)を行うばかりでなく、被転送
データに加工処理を行ってデータ転送する機能も持つ構
成に関するものである。
【0002】
【従来の技術】従来より転送元の記憶手段に記憶されて
いる被転送データをCPUを介さずに、その記憶手段と
は異なる転送先の記憶手段に転送する手段として、DM
Aコントローラが使用されている。通常、CPUの動作
周波数に対してCPUが記憶手段をアクセスする速度は
低速であるため、CPU自らが記憶手段間のデータ転送
を行うとCPU時間を多大に浪費することになる。そこ
で通常、CPUはこの記憶手段間のデータ転送等の比較
的低速な処理等をDMAコントローラに任せて、自らは
このデータ転送期間中にCPU内に閉じた高速な処理に
専念するような手法が採られている。図20に、第1の
従来のDMAコントローラを使用したコンピュータシス
テムのブロック構成を示す。この構成は、CPU100
0と記憶手段であるメモリA1002、メモリB100
3、そして、DMAコントローラ1001を備えてい
る。
【0003】この装置の動作を説明する。このシステム
でメモリA1002に記憶されているデータをメモリB
1003内に転送する場合、CPUはDMAコントロー
ラ1001にこの処理を行わせるために起動をかける。
即ち、CPUはアドレスバス1006を介してDMAコ
ントローラ内の制御レジスタ1004を指定し、データ
バス1007を介して転送元アドレス、転送先アドレ
ス、転送サイズ等の情報をこれら制御レジスタに書き込
む。DMAコントローラ1001は、これら情報書き込
みが完了すると、アドレスバス1006とデータバス1
007のバス権を獲得するためのホールドリクエスト信
号を専用線1008経由でCPUに対して出力する。C
PU1000は、このホールドリクエスト信号を専用線
1008で受けて、アドレスバス1006とデータバス
1007を自由に使用することを許可するホールドアク
ノリッジ信号を専用線1008経由でDMAコントロー
ラ1001に対して返す。DMAコントローラ1001
は、バス権を獲得すると、転送元のメモリAに対して転
送元アドレスを出力し、転送元データを転送サイズ分だ
けバッファ1005に取り込む。そして、転送先のメモ
リBに対して転送先アドレスを出力し、バッファ内の転
送元データをメモリBに対して出力する。このデータ転
送処理が完了すると、DMAコントローラは、CPUに
対して出力していたホールドリクエスト信号を無効に
し、CPUに対してデータ転送の終了を伝える。また、
転送元のデータがメモリBに存在し、転送先がメモリA
である場合にも同様のデータ転送処理がDMAコントロ
ーラを介して行われる。
【0004】このように、DMAコントローラでは、C
PUに負担をかけることなく、転送元の記憶手段に格納
されている被転送データをそのまま高速に転送先の記憶
手段に転送することが第一目的であった。しかしなが
ら、特開平6−318183号公報の『DMAコントロ
ーラ』に記載されているように、DMA転送中にDMA
コントローラ内蔵の演算処理部で被転送データに対して
所定の加工処理を行い、その後、加工処理を行ったデー
タを転送先の記憶手段に転送するものもある。このよう
なDMAコントローラでは、DMAコントローラによる
転送元から転送先へのデータ転送処理と、この転送デー
タに対するCPU等の演算部による加工処理を、個別の
処理として実行しないために、より少ない処理サイクル
数で行うことが可能となる。
【0005】更に、近年半導体プロセスの技術革新によ
り、従来複数のLSIで構成されていたコンピュータシ
ステムが単体LSI内に集積されるようになってきた。
そのため、システム全体の制御を行うCPUと、各種専
用的な処理を行う専用ハードウェア、そして、命令及び
データを記憶しておく大容量のメモリまでもを単体LS
Iに集積したシステムLSIが製品化されてきている。
図21に、第2の従来のDMAコントローラや小容量の
記憶手段を内蔵したシステムLSIより構成されるコン
ピュータシステムのブロック構成を示す。この構成で
は、システムLSI1010と記憶手段であるメモリD
1013より構成されている。システムLSI1010
内には、CPU1020と記憶手段であるメモリC10
11とDMAコントローラ1012を内蔵している。シ
ステムLSI1010とメモリD1013は、比較的低
速なアドレスバス1018とデータバス1019で結合
されている。それに対して、CPU1020とメモリC
1011とDMAコントローラ1012は、比較的高速
なアドレスバス1016とデータバス1017で接続さ
れている。そして、DMAコントローラ1012は、メ
モリD1013とメモリC1011間のデータ転送をC
PU1020に代わって行う専用ハードウェアである。
【0006】この装置の動作を説明する。メモリC10
11に記憶されているデータをメモリD1013内に転
送する場合、CPU1020は、DMAコントローラ1
012にこの処理を行わせるために起動をかける。即
ち、CPUは、アドレスバス1016を介してDMAコ
ントローラ内の制御レジスタ1014を指定し、データ
バス1017を介して転送元アドレス、転送先アドレ
ス、転送サイズ等の情報をこれら制御レジスタに書き込
む。DMAコントローラ1012は、これら情報書き込
みが完了すると、アドレスバス1016とデータバス1
017のバス権を獲得するためのホールドリクエスト信
号1021をCPUに対して出力する。CPU1020
は、このホールドリクエスト信号1021に対して、ア
ドレスバス1016とデータバス1017を自由に使用
することを許可するホールドアクノリッジ信号1021
をDMAコントローラ1012に対して返す。DMAコ
ントローラ1012は、バス権を獲得すると、転送元の
メモリCに対して転送元アドレスを出力し、転送元デー
タを転送サイズ分だけバッファ1015に取り込む。そ
して、転送先のメモリDに対して転送先アドレスを出力
し、バッファ内の転送元データをメモリDに対して出力
する。このデータ転送処理が完了すると、DMAコント
ローラは、CPUに対して出力していたホールドリクエ
スト信号を無効にし、CPUに対してデータ転送の終了
を伝える。また、転送元のデータがメモリD1013に
存在し、転送先がメモリC1011である場合にも、同
様のデータ転送処理がDMAコントローラ1012を介
して行われる。また、データ転送中にデータの加工処理
が必要な場合には、演算部1022にて加工処理を行
い、その後、加工したデータを転送先に格納する。
【0007】
【発明が解決しようとする課題】従来のDMAデータ転
送装置は上記のように構成されており、第1の従来のD
MAコントローラ使用システムでは、ダイレクト転送デ
ータの加工のためにDMAコントローラ内にDSP10
09等の演算処理部や、複雑な制御機構を内蔵する必要
があり、ハードウェア量が増え、規模が大きくなるとい
う課題があった。また第2の従来のDMAコントローラ
内蔵システムにおいても、ダイレクト転送データの加工
のためにシステムLSI内に設けたDMAコントローラ
内に専用の演算部を内蔵しており、ハードウェア量が増
え、規模が大きくなるという課題があった。
【0008】この発明は上記の課題を解決するためにな
されたもので、データ加工処理用の専用処理プロセッサ
を設けないで、必要に応じてシステム・プロセッサがダ
イレクト・メモリ転送に介入して転送データの加工を行
うDMA制御装置を得ることを目的とする。
【0009】
【課題を解決するための手段】この発明に係るデータ転
送装置は、CPUと内部データRAMとDMA制御部と
を備えたシステムにおいて、DMAには、演算加工が必
要なデータのダイレクト・メモリ・アクセス指令を受け
ると、その対応データがDMAバッファに転送されてく
るとCPUにデータ到着を知らせるモード・レジスタを
設けた。
【0010】または、CPUと内部データRAMとDM
A制御部とを備えたシステムにおいて、DMAには、演
算加工が必要なデータのダイレクト・メモリ・アクセス
指令を受けてそのデータのDMAバッファへの到着を知
らせるモード・レジスタを設けて、CPUは、モード・
レジスタからの到着通知を受けると、DMAバッファか
ら対応するデータを直接リードして所定の演算加工をし
て内部データRAMに格納するようにした。
【0011】
【発明の実施の形態】実施の形態1.本実施の形態にお
いては、画像符号化または画像復号に用いられるシステ
ム全体の制御を行うCPUと、データ転送を司るブロッ
クローダ(DMA制御)部とDRAM I/F部、そし
て、記憶手段であるデータRAMを備えるシステムLS
Iについて説明する。主として、画像符号化または復号
用のシステムLSI1の全体構成を図1に示す。このシ
ステムLSIは、近年の半導体技術の向上により実現可
能となってきたMPEG2(Moving Pictu
re Expert Group 2)規格の高圧縮動
画像データの復号処理またはローカル復号処理をリアル
タイムで実現するものである。システムLSI1は、内
部命令RAM2、内部データRAM3、CPU4、そし
て、システムバスI/F部10、VLCD(ハフマンコ
ード符号復号処理)部11、CRC部12、ビデオ出力
部13、オーディオ出力部14、ブロックローダ部1
5、DRAM I/F部16、入力部17が位置する周
辺ブロック部9より構成されている。CPU4は、周辺
制御部7を内蔵しているコア制御部6とコアデータパス
部5、そして、双方向バッファ部8より構成されてい
る。周辺制御部7は、周辺ブロック部9と協調して動作
を行うために専用信号線40で接続されている。
【0012】図2に、本発明のデータ転送装置を備える
CPU及びブロックローダ(DMA制御)部の詳細なブ
ロック構成を示す。CPU4は、コアデータパス部5と
コア制御部6、そして、双方向バッファ部8を備える。
ブロックローダ部15は、制御部510とバッファ51
1、そして、データ転送の方向を制御する3ステートバ
ッファ531a,bと532a,b、更に、バッファ内
のデータの1つを選択するセレクタ531c,532c
を備える。CPU4内の双方向バッファ部8には、コア
データパス部5と内部データRAM3とブロックローダ
部15間でアドレス及びデータのやり取りを行うため
に、3ステートバッファ530a,b,c,dが内蔵さ
れている。そして、コアデータパス部5と内部データR
AM3と双方向バッファ部8は、アドレスバス21、デ
ータバス22で接続されている。そして、双方バッファ
部8とブロックローダ部15は、アドレスバス26、デ
ータバス27で接続されている。また、ブロックローダ
部15内の制御部510には、データ転送を行うための
転送元アドレスレジスタ521と転送先アドレスレジス
タ522と転送サイズレジスタ523と、データ転送の
モードを制御するためのモード・レジスタ520を内蔵
している。そして、ブロックローダ部15の制御部51
0とコア制御部6は、専用信号線501,502で接続
されている。また、ブロックローダ部15は、外付けの
SDRAM500にDRAM I/F部16を介してア
クセスするためにDRAM I/F部16とアドレスバ
ス28、データバス29で接続されている。そして、D
RAM I/F部16は、各種所定の信号線群51を介
してSDRAM500に対してアクセスを行う。
【0013】図3は、第1の従来例である演算をしない
DMAの処理フローと対比しての本願のCPUとDMA
制御部が行う動作を示すフローチャートである。図にお
いて、従来は破線の441,442のステップを経てい
たのを太線の処理とした。即ち、処理ステップ441
は、図2のブロックローダ部15の制御部510が制御
し、SDRAM500のデータをDRAM I/F部1
6を通してバッファ511に格納する。更に、ステップ
442で、このバッファ511のデータをブロックロー
ダ部15の制御部510が内部データRAM3に格納し
ていた。本発明では、図2のステップ442とステップ
443を行うことなく、ステップ441におけるバッフ
ァ511のデータを、CPU4がステップ444,44
5により加工して、ステップ446でRAMに格納す
る。なお、図3でバッファといっているのは、ブロック
ローダ部15内の小容量記憶領域であるバッファ511
のことである。
【0014】このフローの違いに基づく動作タイミング
の違いを、図4のデータ転送タイミングチャートに基づ
いて説明する。まず、タイミングチャートの左列に示し
ている各信号線の記号の意味とその機能について説明す
る。クロックCLK1は、CPUの動作周波数であり、
CPUと内部データRAM及びブロックローダ部間の処
理全般は、このクロックCLK1に同期して行われる。
クロックCLK3は、ブロックローダ部とDRAM I
/F部、そして、SDRAM間の処理全般を制御する動
作周波数であり、クロックCLK1よりも低速で、本例
ではクロックCLK1の2分周になっている。信号CR
GREQは、CPUからブロックローダ部内の制御部内
の各種レジスタやバッファ内のデータをアクセスするた
めのリクエスト信号である。この制御レジスタアクセス
を行うためには、CPU周りのアドレスバス、データバ
スの使用権利を獲得する必要があり、リクエストの調停
処理が必要である。このリクエスト調停処理の説明は省
略する。信号CRGWRTは、リクエスト信号CRGR
EQがライトアクセスであるかリードアクセスであるか
を示す信号であり、“1”のときにライトを、“0”の
ときにリードを示す。
【0015】アドレスバスCADDRは、CPU周りの
アドレスバスである。データバスCDATAは、CPU
周りのデータバスである。信号DMWRTは、内部デー
タRAMに対するライト信号であり、この信号がアクテ
ィブであるときに、アドレスCADDRで示すメモリ領
域にデータCDATAの値が格納される。信号DRAM
REQは、ブロックローダ部が、DRAM I/F部を
介してSDRAMをアクセスしたいときに、DRAM
I/F部に対して出力するリクエスト信号である。この
SDRAMアクセスを行うためには、DRAM I/F
部に対するアドレスバス、データバスの使用権利を獲得
する必要があり、リクエストの調停処理が必要である。
このリクエスト調停処理の説明は省略する。信号DRA
MWRTは、リクエストDRAMREQがライトアクセ
スであるかリードアクセスであるかを示す信号であり、
“1”のときにライトを、“0”のときにリードを示
す。アドレスバスDADDRは、ブロックローダ部とD
RAM I/F部間のアドレスバス28である。データ
バスDDATAは、ブロックローダ部とDRAM I/
F部間のデータバス29である。
【0016】信号BLINTは、データ転送中にCPU
の加工処理が必要である場合に、ブロックローダ部15
がCPU4に対して信号線501を経由して出力する信
号である。この信号BLINTは、本発明のDMA制御
装置に特有の信号である。信号BLHREQは、ブロッ
クローダ部がCPU周りのアドレス、データバスを使用
したい場合に、バス使用の権利(バス権)を獲得するた
めに、CPUに出力するホールドリクエスト信号であ
る。信号BLHACKは、ホールドリクエスト信号BL
HREQに対してCPUがバス権を与えたことを示すホ
ールドアクノリッジ信号である。信号BLADENは、
ブロックローダ部がバス権を獲得している期間中に、内
部データRAMに対して出力しているアドレスが有効で
あることを示す信号である。信号BLWRTは、ブロッ
クローダから内部データRAMに対するアクセスがライ
ト処理であるかリード処理であるかを示す信号であり、
“1”のときにライトを、“0”のときにリードを示
す。図2のDMA制御装置による図4のデータ転送タイ
ミングチャートでは図3に示すステップ441→444
→445→446を行うために、SDRAM500から
CPU4へのデータ転送PERIOD−1,2,4(ス
テップ441,444に対応)と、CPU4によるデー
タ加工処理PERIOD−7,8(ステップ445,4
46に対応)がシリアルに実行される。
【0017】図4では、CPU4による転送データの加
工処理を伴う場合の第1の例であるデータ転送タイミン
グチャートを示している。即ち、処理期間PERIOD
−1は、CPU4がブロックローダ部15に対してデー
タ転送の起動をかける期間である。CPUは、制御レジ
スタライトリクエスト(CRGREQ=1,CRGWR
T=1)を出力し、CADDRに出力したアドレスA
1,A2に対応するブロックローダ部の制御部内の制御
レジスタに、CDATAに出力した所定のデータB1,
B2を設定する。このときに設定する主な制御レジスタ
としては、転送元アドレスレジスタ、転送サイズレジス
タ、転送モード・レジスタである。ブロックローダ部
は、CPUからの起動処理が完了すると、転送モード・
レジスタをチェックし、起動された転送処理がCPUの
加工を伴うSDRAMからCPUへのデータ転送処理で
あることを知る。そして、ブロックローダ部15は、処
理期間PERIOD−2でブロックローダがDRAM
I/F部に対してデータのリードリクエストを出力する
(DRAMREQ=1,DRAMWRT=0)。そし
て、DADDRには、転送元であるSDRAMのアドレ
スC1を出力する。この起動処理に対してDRAM I
/F部は、SDRAMに所定の通信規約でアクセスし、
転送元のデータを得て、DDATAを通じてブロックロ
ーダ部に転送元データD1,D2,D3,D4を渡す。
つまり、ブロックローダ部15は、DRAMI/F部1
6から転送元データを得ると、一旦バッファ511に格
納する。図3のステップ441である。
【0018】そして、バッファS11に格納し終わる
と、転送データのCPU4によるバッファ511からの
直接リードである図3のステップ444を開始する(処
理期間PERIOD−4)。処理期間PERIOD−4
では、ブロックローダ部は、CPUに対して信号BLI
NTを出力する。CPUは、信号BLINTを受ける
と、ブロックローダ部による加工処理の必要なデータが
準備されたと判断し、制御レジスタリード処理と同じ手
法でブロックローダ部内のバッファ内のデータリードを
行う。即ち、処理期間PERIOD−4では、CPUは
制御レジスタリードリクエストをブロックローダに出力
し(CRGREQ=1,CRGWRT=)、CADDR
に出力したアドレスE1,E2で示すバッファ内のデー
タ格納領域からCDATAを通じて加工すべきデータF
1,F2を得る。この後、CPU4によりステップ44
5,446が行われる。
【0019】図5に、本DMA制御装置におけるCPU
による転送データの加工処理を伴う第2の例であるデー
タ転送タイミングチャートを示し、動作を説明する。処
理期間PERIOD−1とPERIOD−2までの動作
は、図7と同様である。即ち、CPUがブロックローダ
に対してデータ転送の起動をかける期間とブロックロー
ダ部15による転送元であるSDRAM500からのデ
ータリードの期間である。そして、バッファ511に格
納し終わると、転送データのCPUによる加工処理を開
始する(処理期間PERIOD−5)。処理期間PER
IOD−5では、ブロックローダ部はCPUに対して、
ホールドリクエスト信号BLHREQを出力するととも
に、信号BLINTを出力する。CPUは、ホールドリ
クエスト信号BLHREQと同時に信号BLINTを受
けると、ブロックローダ部がCPUに対して加工処理の
必要なデータを転送しようとしていると判断する。そし
て、CPUは、ブロックローダ部内のデータが加工処理
できる状態になった時点で、ブロックローダ部内のデー
タ加工用の専用命令を実行する。この専用命令が実行さ
れると、ブロックローダ部に対してホールドアクノリッ
ジ信号BLHACKを出力する。ブロックローダ部で
は、このホールドアクノリッジ信号を受け付けると、C
DATAにデータF1,F2を出力する。そして、CP
Uは、このデータF1,F2を受け取り、加工処理を行
ってCPU内の汎用レジスタに格納する。これら本発明
のDMA制御装置によるデータ加工処理では、データ加
工処理を伴う従来のDMA転送機構に比較して、CPU
が内部RAMから対象データをリードする図に示す処理
PERIOD−6が不要となり、処理時間の短縮につな
がる。これは、対象処理データ量が増大すればするほ
ど、処理時間のより効果的な短縮につながる。
【0020】図6に、本実施の形態のブロックローダ部
によるデータ転送処理のフローチャートを示す。まず、
システムLSI全体の制御を行っているCPU4がデー
タ転送処理を行うようにブロックローダ部15に起動を
かける(ステップ450)。この起動処理ステップで
は、コアデータパス部5が出力したアドレスとデータ
が、双方向バッファ部8内の3ステートバッファ530
a,530cを介してアドレスバス26とデータバス2
7に出力される。そして、このアドレスに対するブロッ
クローダ部15の制御部510内の各種レジスタに所望
のデータが格納される。設定されるレジスタは、データ
転送がSDRAMから内部データRAM(リード処理)
か、内部データRAMからSDRAM(ライト処理)
か、途中でCPUによる加工処理が必要かどうか等の処
理モードを規定するモード・レジスタ520や、データ
転送元のアドレスやデータ転送先のアドレス、そして、
データ転送サイズ等を保持するレジスタ521,52
2,523である。
【0021】そして、これらのレジスタが設定されれ
ば、この設定に基づいてブロックローダ部15がデータ
転送の処理を開始する(ステップ451)。ブロックロ
ーダ部によるデータ転送処理は、リード処理かライト処
理かにより分かれる(分岐ステップ452)。リード処
理の場合、ブロックローダ部15がDRAM I/F部
16に対してアドレスバス28に転送元のアドレスを出
力する等の処理を行い起動をかける(ステップ45
3)。この要求に対してDRAM I/F部16は、信
号線群51を介して所定の通信規約でSDRAMに対し
てデータリード処理を行い、リードしてきたデータをブ
ロックローダ部に転送する。ブロックローダ部15で
は、転送されてきたデータを3ステートバッファ532
aを介してバッファ511に格納する(ステップ45
4)。次に、転送データの処理は、CPUによるデータ
加工処理が必要であるかどうかにより処理が分かれる
(分岐ステップ455)。CPUによるデータ加工処理
が必要である場合、ブロックローダ部15がCPUに対
してデータ完了信号を信号線501で返す(ステップ4
56)。CPUがこのデータ完了信号を受け付けると、
CPUは、ブロックローダ部との間でデータの受け渡し
を行い、転送データに対して加工処理を加えてコアデー
タパス部内の汎用レジスタに格納する(ステップ45
7)。
【0022】このリード転送処理の途中でCPUによる
転送データの加工処理を行うデータ転送処理(ステップ
456,457)が、本発明のDMA制御装置による動
作である。これに対して、CPUによるデータ加工処理
が不要である場合を述べる。この場合は、ブロックロー
ダ部15は、CPU4からアドレスバス21及びデータ
バス22のバス権を得る(ステップ458)。そして、
バッファ511に格納していた転送データを転送先であ
る内部データRAMに格納する(ステップ459)。即
ち、ブロックローダ部15は、アドレスバス26と双方
向バッファ部内の3ステートバッファ530bとアドレ
スバス21を介して転送先アドレスを内部データRAM
3に出力し、セレクタ531cと3ステートバッファ5
31bとデータバス27と3ステートバッファ530d
とデータバス22を介して転送データを内部データRA
M3に出力する。これは即ち、図3において、ステップ
442の次にCPUの加工なしにステップ446を行う
ことに相当する。
【0023】ライト処理の場合、まず、ブロックローダ
部15が転送元である内部データRAM3にアクセスす
るために、CPUからアドレスバス21とデータバス2
2のバス権を得る(ステップ470)。そして、ブロッ
クローダ部15は、アドレスバス26と双方向バッファ
8内の3ステートバッファ530bとアドレスバス21
を介して転送元アドレスを内部データRAM3に出力
し、そのアドレスに対する転送データをデータバス22
と双方向バッファ部8内の3ステートバッファ530c
とデータバス27と3ステートバッファ531aを介し
て、バッファ511内に格納する(ステップ471)。
そして、ブロックローダ部15は、バッファ511に転
送データを全て格納すると、転送先にアクセスするため
にDRAMI/F部16を起動する(ステップ47
2)。そして、ブロックローダ部15は、DRAM I
/F部に対してアドレスバス28を介してアドレスを、
セレクタ532cと3ステートバッファ532bとデー
タバス29を介してデータを出力することにより、デー
タ転送先であるSDRAM500にデータを格納する
(ステップ473)。
【0024】図7に、本実施の形態のDMA制御装置に
よるCPUによる転送データの加工処理を伴わない場合
のデータ転送タイミングチャートを示す。SDRAMか
ら内部データRAMへのリード転送処理について述べ
る。処理期間PERIOD−1は、CPUがブロックロ
ーダ部15に対してデータ転送の起動をかける期間であ
る。CPUは、制御レジスタライトリクエスト(CRG
REQ=1,CRGWRT=1)を出力し、CADDR
に出力したアドレスA1,A2に対応するブロックロー
ダ部の制御部内の制御レジスタに、CDATAに出力し
た所定のデータB1,B2を設定する。このときに設定
する主な制御レジスタとしては、転送元アドレスレジス
タ、転送先アドレスレジスタ、転送サイズレジスタ、転
送モード・レジスタである。ブロックローダ部は、CP
Uからの起動処理が完了すると、転送モード・レジスタ
をチェックし、起動された転送処理がCPUの加工を伴
わないSDRAM500から内部データRAM3へのデ
ータ転送処理であることを知る。そして、ブロックロー
ダ部15は、処理期間PERIOD−2で転送元である
SDRAMからのデータリードを行い、処理期間PER
IOD−3で転送先である内部データRAMへのデータ
の格納を行う。PERIOD−3で行われる処理は、図
6のステップ459と図3のステップ442に相当す
る。
【0025】処理期間PERIOD−2では、ブロック
ローダがDRAM I/F部16に対してデータのリー
ドリクエストを出力する(DRAMREQ=1,DRA
MWRT=0)。そして、DADDRには、転送元であ
るSDRAMのアドレスC1を出力する。この起動処理
に対してDRAM I/F部は、SDRAM500に所
定の通信規約でアクセスし、転送元のデータを得て、D
DATAを通じてブロックローダ部に転送元データD
1,D2,D3,D4をリードする。即ち、図3のステ
ップ441であり、図6のステップ454である。ブロ
ックローダ部15は、DRAM I/F部16から転送
元データを得ると、一旦バッファ511に格納する。
【0026】そして、この小容量記憶領域であるバッフ
ァ511に格納し終わると、内部データRAM3に格納
する処理を開始する(処理期間PERIOD−3)。処
理期間PERIOD−3では、ブロックローダ部は、C
PUに対してライトのホールドリクエストを出力する
(BLHREQ=1,BLWRT=1)。これに対して
CPUは、アクノリッジ信号をブロックローダ部に対し
て返す。このホールドリクエスト信号とホールドアクノ
リッジ信号がオーバーラップしている期間がブロックロ
ーダ部がCPU周りのバスのバス権を獲得している期間
であり、自由に内部データRAMにアクセス可能であ
る。即ち、ブロックローダ部は、アドレス有効信号BL
ADENを出力すると同時に、CADDRに転送先であ
る内部データRAMのアドレスE1,E2を出力し、内
部データRAMライト信号DMWRTによりCDATA
のデータF1,F2を内部データRAMに格納する。そ
して、この転送処理が完了すると、ホールドリクエスト
信号をネゲートし、処理が完了したことをCPUに対し
て知らせる。それに対してCPUも、アクノリッジ信号
をネゲートする。この処理期間PERIOD−2,PE
RIOD−3を含む期間に行われる一連のデータ転送処
理は、CPUを介することなく、データ転送を行うため
にダイレクト・メモリ・アクセス(DMA)と呼ばれて
いる。このDMA期間には、CPUは別の処理を行うこ
とができるために、システム全体の処理を効率よく行う
ことが可能となる。これはまた、第1の従来例の装置
で、CPUが演算を行わない場合に相当し、DMA制御
装置が演算を行わない場合には、従来と動作は同じであ
る。
【0027】以下、本発明のDMA制御装置を採用した
システムLSI1を用いた画像復号器の動作を説明す
る。図1がハードウェア構成図であり、図8が図1の構
成による動作フローチャートである。図1において、C
PU4は、内部命令RAM2及びシステムバスI/F部
10に命令アドレスをアドレスバス20経由で出力す
る。そのアドレスがシステムバスI/F部10に対する
ものであるならば、システムバスI/F部は、バス50
を通して外部メモリより命令コードをフェッチし、バス
24を通してCPUに命令コードを転送する。また、命
令アドレス20が内部命令RAM2に対するものである
ならば、内部命令RAM2はバス23を通してCPUに
命令コードを転送する。CPU4は、バス23及びバス
24のいずれかを選択し、命令バス25を通して処理す
べき命令コードを得る。CPU4内に転送されてきた命
令コードは、デコード処理を行い、デコード結果から演
算実行部を制御し、汎用レジスタから演算対象のデータ
を読み出す、そして、演算実行結果を汎用レジスタに格
納する。その演算のためのデータが汎用レジスタに存在
しない場合は、アドレスバス21を通して、内部データ
RAM3にアクセスし必要なデータをデータバス22を
通して得る。或いは、周辺ブロック部へのデータアドレ
スバス26を通して、システムバスI/F部10にアク
セスし、システムバスI/F部10は、必要なデータを
バス50を通して外部メモリから得た後に、データバス
27を通してCPU4に必要なデータを転送する。ま
た、演算結果を外部メモリに格納したい場合にも、CP
U4は、アドレスとデータをそれぞれアドレスバス2
6、データバス27を通してシステムバスI/F部10
に渡す。そして、これを受け取ったシステムバスI/F
部10は、バス50を通して目的の外部メモリのアドレ
ス領域に演算結果後のデータを格納する。
【0028】また、周辺ブロック部9に位置するVLC
D(ハフマンコード符号復号処理)部11、DRAM
I/F部12、ビデオ出力部13、オーディオ出力部1
4、ブロックローダ部15、入力部17、CRC部12
も、CPUがバス26を通して出力するデータアドレス
が自ブロックに対するものであるならば、そのアドレス
に対する自ブロック内の制御レジスタからデータを読み
出したり、その制御レジスタにデータを格納したりす
る。CPU4が周辺ブロック部内のこれらの制御レジス
タにコマンドを書き込むことで、周辺ブロック部内では
各種処理が起動される。また、各周辺ブロック部9の各
部は、CPU4のプログラミング処理を介することな
く、直接内部データRAM3とデータ転送を行うこと、
即ち、DMA転送が可能である。これにより、CPU4
と周辺ブロック部9が内部データRAMを介して効率よ
くデータ交換が可能となり、高性能なシステム処理が可
能となる。
【0029】次に、動画像規格であるMPEG2をリア
ルタイムでデコード処理するための各周辺ブロック部9
内に内蔵されている各部の処理概要について説明する。
CRC部12は、Cyclic Redundancy
Checksを行うブロックである。即ち、データ転
送中に発生するデータ誤りを検出するためのブロックで
ある。特に、高圧縮符号化されているオーディオデータ
は、1ビットでもデータ誤りが発生すると品質の悪い音
声が復号されてしまう。そのため、CRC部12でオー
ディオデータのデータ誤りを検出し、修復が可能な誤り
であれば修復し、修復不可能であれば再転送を要求す
る。入力部17は、MPEG2規格で高圧縮されている
ビットストリームを受け取るための外部インターフェイ
スを備えるブロックである。
【0030】ブロックローダ部15は、DRAM I/
F部16が外部バスである信号線群51を介してアクセ
スするフレームメモリと内部データRAM3間で効率よ
くビデオブロックデータの転送を制御するブロックであ
る。オーディオ出力部14は、外付けのフレームメモリ
に格納されている復号後の音声データをDRAM I/
F部16を介して読み出し外部に出力するための外部イ
ンターフェイスを備えるブロックである。ビデオ出力部
13は、外付けのフレームメモリに格納されている復号
後のビデオデータをDRAM I/F部16を介して読
み出し外部に出力するための外部インターフェイスを備
えるブロックである。DRAM I/F部16は、ブロ
ックローダ部15とオーディオ出力部14、そして、ビ
デオ出力部13からのリクエストを受け付け、そのリク
エストに応じた外付けフレームメモリのアクセスを司る
ブロックである。VLCD部11は、Variable
Length Code Decode部で、高圧縮
のために必要な可変長コードであるハフマン符号の復号
処理を行ったり、ハフマン符号へ符号処理を行うブロッ
クである。システムバスI/F部10は、外部メモリ等
が接続されているシステムバスのインターフェイスを司
るブロックである。
【0031】図8のフローチャートに基づいて、動作を
説明する。可変長符号に符号化された入力データは、バ
ス54からシリアルに入力され、入力部17が32ビッ
ト単位のパラレルデータに変換してDMAライト転送に
より内部データRAM3に書き込む(ステップ40
0)。次に、内部データRAM3に書き込まれたデータ
をCPU4が読み出し、可変長符号のビデオデータとオ
ーディオデータに分離し内部データRAM3に書き戻す
(ステップ401)。分離された可変長ビデオデータ
は、VLCD部11がDMAリード転送で読み出し、1
画素が8ビットの固定長データにデコードして、ブロッ
クのビデオデータとしてDMAライト転送で内部データ
RAM3に書き戻す(ステップ402)。固定長にデコ
ードされたブロック単位の画素データは、CPUが読み
出し逆量子化処理を行う(ステップ403)。逆量子化
処理では、ステップ403では、各画素データに2つの
画素が乗算され、インデックス値がジグザグ順のマトリ
クスのブロックがn行m列の画素がインデックス値(8
n+m)となる標準的なインデックス順のマトリクスの
ブロックに変換される。逆量子化されたブロック単位の
画素データは、CPU内の汎用レジスタ内にそれぞれ保
持され、次の逆DCT処理に使用される(ステップ40
4)。逆DCT処理ステップ404では、8x8画素か
らなる2次元のブロックを、8点の1次元逆DCT高速
アルゴリズムを使用して高速に変換する。
【0032】次に、ブロックの修飾情報により、逆DC
T処理された画素データに対して予測データとの加算を
行うか、行わないかが決定される(分岐ステップ40
5)。予測データとの加算を行う場合、ブロックローダ
部15がDRAM I/F部16を介して外部フレーム
メモリから隣接フレームの予測対象ブロックのデータが
読み出され、DMAライト転送を用いて内部データRA
M3に対して予測対象ブロックのデータが書き込まれ
る。なお、MPEG標準の動画データでは、予測データ
との加算の必要性がブロックデータ6個毎に付く修飾情
報により示される。このため、ブロックローダ部15に
よる予測対象ブロックデータの読み込みは、ブロックデ
ータのデコード処理開始と同時に始めることが可能で、
本実施の形態によるシステムLSIでは、ブロックロー
ダ部15による予測データの読み込み処理はCPUの行
う逆量子化ステップ403や、逆DCT処理ステップ4
04と並列に行う。次に、CPU4が内部データRAM
3から予測データを読み出し、逆DCT処理後のデータ
と加算して内部データRAMに書き戻す(ステップ40
7)。デコード済みデータである加算結果は、ブロック
ローダ部15がDRAM I/F部12を介して外部フ
レームメモリに書き戻す(ステップ408)。予測デー
タとの加算を行わない場合は、ブロックローダ部15が
逆DCT処理済みの画素データを、そのままデコード処
理済みのデータとして外部フレームメモリに書き込む
(ステップ408)。外部フレームメモリに書き込まれ
たデコード済みのビデオデータは、フレーム単位にビデ
オ出力部13がDRAM I/F部16を介して読み出
し、バス52を介して外部の画像表示装置へ出力する。
【0033】CPUの処理401で分離され内部データ
RAM3に格納されている圧縮されたオーディオデータ
は、CPUに読み出されアンパック処理がなされる(ス
テップ410)。このアンパック処理後のデータは、C
PU内の汎用レジスタに保持され、引き続き高速フーリ
エ変換処理がなされてデコード済みのオーディオデータ
として、内部データRAMに書き戻される(ステップ4
11)。このデコード済みのオーディオデータは、ブロ
ックローダ部15によりDMAリード転送で読み出さ
れ、DRAM I/F部16を介して外部フレームメモ
リに格納される。外部フレームメモリに書き込まれたデ
コード済みのオーディオデータは、オーディオ出力部1
4がDRAM I/F部16を介して読み出し、バス5
3を介して外部の音声発生装置へ出力する。以上の図8
に示す処理のうち、太枠で囲んでいる処理ステップをC
PUが実行し、他の処理ステップを周辺ブロック部が実
行する。周辺ブロック部での処理は全てCPUが起動を
かけ、画像処理全体のシーケンス制御を行う。周辺ブロ
ック部では、このCPUからの起動に応じて各種専用処
理が開始される。このような画像処理を実時間で行うシ
ステムLSIでは、全体のシーケンスを管理と高速デー
タ処理を行うCPUと各種専用処理を行う周辺ブロック
部が協調して動く必要があり、そのための高速通信手段
は必要不可欠のものである。
【0034】図9に、CPU4で実行される命令のフォ
ーマットを示す。この命令フォーマットには、1つの命
令で2つの演算を指示する2副命令のフォーマット10
1と、1つの命令で1つの演算を指示する1演算命令の
フォーマット102がある。2演算命令のフォーマット
101には、フィールド103とフィールド104から
なるフォーマットフィールド、2つの演算フィールド1
06,107及び各演算フィールドに1つずつ付属する
実行条件フィールド105がある。1演算命令のフォー
マットには、フィールド103とフィールド104から
なるフォーマットフィールド、フィールド108とフィ
ールド109とフィールド110とからなる演算フィー
ルド、及び、この演算フィールドに付属する実行条件フ
ィールド105がある。
【0035】図10に、フィールド103とフィールド
104からなるフォーマットフィールドの詳細図を示
す。FM=00の場合、この命令は2演算命令であり、
演算フィールド106で指示されたoperation
_0の演算と演算フィールド107で指示されたope
ration_1の演算がデコード直後のクロックサイ
クルで並列に実行される。フォーマットフィールドの値
FM=01の場合、この命令は2演算命令であり、演算
フィールド106で指示されたoperation_0
の演算がデコード直後のクロックサイクルに実行され、
演算フィールド107で指示されたoperation
_1の演算がoperation_0の演算に対して1
クロックサイクル遅れて実行される。FM=10の場
合、この命令は2演算命令であり、演算フィールド10
7で指示されたoperation_1の演算がデコー
ド直後のクロックサイクルに実行され、演算フィールド
106で指示されたoperation_0の演算がo
peration_1の演算に対して1クロックサイク
ル遅れて実行される。FM=11の場合、この命令は1
演算命令であり、108と109と110からなる演算
フィールドで指示された1つの演算がデコード直後のク
ロックサイクルに実行される。
【0036】図11に、実行条件フィールド105の詳
細を示す。実行条件フィールド105は、後述するCP
U4の状態フラグF0及びF1の値に依存して演算フィ
ールド106,107でそれぞれ示されたoperat
ion_0の演算やoperation_1の演算及び
演算フィールド108と109と110で示された演算
が有効であるか無効であるかを定める。演算が有効であ
るとは演算結果がレジスタ、メモリ、フラグに反映さ
れ、その演算により定義された動作結果が残ることを意
味し、演算が無効であるとは演算結果がレジスタ、メモ
リ、フラグに反映されず、定められた演算の種類には関
わらず、その演算により無効演算(NOP:no op
eration)と同じ結果がレジスタやフラグに残る
ことを意味する。実行条件フィールド105の値CC=
000のとき、演算はフラグF0,F1の値に関わら
ず、常に有効である。CC=001のとき、演算はF1
の値には関わらずF0=真のときのみ有効である。CC
=010のとき、演算はF1の値には関わらず、F0=
偽のときのみ有効である。CC=011のとき、演算は
F0の値には関わらず、F1=真のときのみ有効であ
る。CC=100のとき、演算はF0の値には関わら
ず、F1=偽のときのみ有効である。CC=101のと
き、演算はF0=真、かつ、F1=真のときのみ有効で
ある。CC=110のとき、演算はF0=真、かつ、F
1=偽のときのみ有効である。CC=111のときの動
作は未定義であり、この値が命令で用いられることはな
い。
【0037】図12は、28ビット長で表現される短型
の演算フィールド106,107と54ビット長で表現
される長型の演算フィールド(108,109,110
で構成)の詳細を示す。短型の演算フィールドには、7
つのフォーマット111,112,113,114,1
15,116,117があり、長型の演算フィールドに
は1つのフォーマット118がある。フォーマット11
1は、演算内容を指定するフィールド120、レジスタ
の番号を指定する2つのフィールド121,122、レ
ジスタ番号または6ビット長の即値を指定するフィール
ド123、フィールド123がレジスタ番号を示すか即
値を示すかを指定するフィールド124から構成され
る。このフォーマットは、レジスタ間接アドレッシング
のメモリアクセス演算に使用される。
【0038】フォーマット112は、演算内容を指定す
るフィールド120、レジスタの番号を指定する2つの
フィールド121,122、レジスタ番号または6ビッ
ト長の即値を指定するフィールド123、フィールド1
23がレジスタ番号を示すか即値を示すかを指定するフ
ィールド125から構成される。このフォーマットは、
算術演算、論理演算、シフト演算、ビット演算に使用さ
れる。フォーマット113は、演算内容を指定するフィ
ールド120、レジスタの番号を指定するフィールド1
26から構成される。このフォーマットは、レジスタ指
定によるジャンプ、分岐命令に使用される。フォーマッ
ト114は、演算内容を指定するフィールド120、1
8ビット長のディスプレイスメントのフィールド127
から構成される。このフォーマットは、ジャンプ、分岐
命令に使用される。フォーマット115は、演算内容を
指定するフィールド120、レジスタの番号を指定する
フィールド121、レジスタ番号または12ビット長の
即値を指定するフィールド128、フィールド128が
レジスタ番号を示すか即値を示すかを指定するフィール
ド129、フィールド121がゼロ判定による条件ジャ
ンプ及び条件分岐を行うか否かを指定するフィールド1
30から構成される。このフォーマットは条件ジャン
プ、条件分岐命令に使用される。
【0039】フォーマット116は、演算内容を指定す
るフィールド120、レジスタの番号を指定するフィー
ルド121、レジスタ番号または12ビット長の即値を
指定するフィールド128、フィールド128がレジス
タ番号を示すか即値を示すかを指定するフィールド12
9から構成される。このフォーマットは、条件ジャン
プ、条件分岐命令、リピート命令に使用される。フォー
マット117は、演算内容を指定するフィールド12
0、レジスタ番号または12ビット長の即値を指定する
フィールド128、フィールド128がレジスタ番号を
示すか即値を示すかを指定するフィールド129、ディ
レイド命令のディレイ値を指定するフィールド131か
ら構成される。このフォーマットは、ディレイドジャン
プ、ディレイド分岐命令に使用される。
【0040】フォーマット118は、演算内容を指定す
るフィールド120、レジスタの番号を指定する2つの
フィールド121,122、32ビット長の即値を指定
するフィールド132から構成される。このフォーマッ
トの演算には複雑な算術演算、大きな即値を用いる算術
演算、大きなディスプレイスメント付きレジスタ間接ア
ドレッシングのメモリアクセス演算や大きな分岐変位の
分岐演算、絶対番地へのジャンプ演算などがある。フォ
ーマット119は、演算内容を指定するフィールド12
0、レジスタの番号を指定する2つのフィールド12
1,122、32ビット長の即値を指定するフィールド
132、フィールド132がゼロ判定による条件ジャン
プ及び条件分岐を行うか否かを指定するフィールド13
3から構成される。このフォーマットは、大きな分岐変
位を持つ条件ジャンプ、条件分岐命令に使用される。
【0041】図13は、CPU4に内蔵される各種レジ
スタ構成を示す図である。CPU4には、64本の32
ビット長の汎用レジスタ5、18本の制御レジスタ15
0及び2本のアキュムレータ18がある。汎用レジスタ
(R0)140は、読み出した場合、常に0で、書き込
みは無視される。汎用レジスタ(R63)はスタックポ
インタであり、プロセッサ状態語10のSMフィールド
の値に依存して、ユーザスタックポインタ(SPU)1
41または割り込みスタックポインタ(SPI)142
が動作する。制御レジスタ150には、プログラムカウ
ンタ151、プロセッサ状態語10や各種の専用レジス
タが含まれる。フォーマット112の演算では、64本
の汎用レジスタ5のそれぞれを上位16ビットと下位1
6ビットに分けて別々にアクセスできる。また、2本の
アキュムレータ18は、それぞれ上位32ビットと下位
32ビットを別々にアクセスできる。
【0042】図14に、プロセッサ状態語10の詳細を
示す。プロセッサ状態語10の上位16ビット170に
は、スタックポインタを切り替えるSMフィールド17
1、ソフトウェアデバッガトラップ(SDBT)の検出
を示すEAフィールド172、SDBTの許可を指定す
るDBフィールド173、デバック割り込み許可を指定
するDSフィールド174、割り込み許可を指定するI
Eフィールド175、リピート動作の許可を指定するR
Pフィールド176、モジュロアドレシングの許可を指
定するMDフィールド177がある。下位16ビット
は、フラグフィールド180である。フラグフィールド
180には8個のフラグがあり、その中のF0フラグ1
81とF1フラグ182は演算の有効無効を制御する。
各フラグの値は比較演算や算術演算の結果に依存して変
化するほか、フラグ初期化演算で初期化したり、フラグ
値書き込み演算で任意の値をフラグフィールド180に
書き込むことで変化する。また、フラグ値読み出し演算
でフラグフィールド180の値を読み出すこともでき
る。
【0043】以下に、マイクロプロセッサ1の命令一覧
を示す。 A.MCU function instructions A-1.Load/Store instructions LDB:Load one byte to a register with sign extensio
n LDBU:Load one byte to a register with zero extensi
on LDH:Load one half-word to a register with sign ext
ension LDHH:Load one half-word to a register high with si
gn extension LDHU:Load one half-word to a register with zero ex
tension LDW:Load one word to a register LD2W:Load two words to registers LD4BH:Load four bytes to four half-word in two reg
isters with signextension LD4BHU:Load four bytes to four half-word in two re
gisters with zero extension LD2H:Load two half-word to two word in two registe
rs with sign extension STB:Store one byte from a register STH:Store one half-word from a register STHH:Store one half-word from a register high STW:Store one word from a register ST2W:Store two words from registers ST4HB:Store four bytes from four half-word from tw
o registers ST2H:Store two half-word from two registers MODDEC:Decrement a register value by a 5-bit immed
iate value MODINC:Increment a register value by a 5-bit immed
iate value
【0044】A-2.Transfer instructions MVFSYS:Move a control register to a general purpos
e register MVTSYS:Move a general purpose register to a contro
l register MVFACC:Move a word from an accumulator MVTACC:Move two general purpose registers to an ac
cumulator
【0045】A-3.Compare instructions CMPcc:Compare cc=EQ,NE,GT,GE,LT,LE,PS(both positive),NG(both neg
ative) CMPUcc:Compare unsigned cc=GT,GE,LT,LE
【0046】A-4.Maximum/Minimum instructions reserved
【0047】A-5.Arithmetic operation instructions ABS:Absolute ADD:Add ADDC:Add with carry ADDHppp:Add half-word ppp=LLL,LLH,LHL,LHH,HLL,HLH,HHL,HHH ADDS:Add register Rb with the sign of the third op
erand ADDS2H:Add sign to two half-word ADD2H:Add two pairs of half-words AVG:Average with rounding towards positive infinit
y AVG2H:Average two pairs of half-words rounding tow
ards positive infinity JOINpp:Join two half-words pp=LL,LH,HL,HH SUB:Subtract SUBB:Subtract with borrow SUBHppp:Subtract half-word ppp=LLL,LLH,LHL,LHH,HLL,HLH,HHL,HHH SUB2H:Subtract two pairs of half-words
【0048】A-6.Logical operation instructions AND:logical AND OR:logical OR NOT:logical NOT XOR:logical exclusive OR ANDFG:logical AND flags ORFG:logical OR flags NOTFG:logical NOT a flag XORFG:logical exclusive OR flags
【0049】A-7.Shift operation instructions SRA:Shift right arithmetic SRAHp:Shift right arithmetic a half-word p=L(0),H(1) SRA2H:Shift right arithmetic two half-words SRC:shift right concatenated registers SRL:Shift right logical SRLHp:Shift right logical a half-word p=L(0),H(1) SRL2H:Shift right logical two half-words ROT:Rotate right ROT2H:Rotate right two half-words
【0050】A-8.Bit operation instructions BCLR:Clear a bit BNOT:Invert a bit BSET:Set a bit BTST:Test a bit
【0051】A-9.Branch instructions BRA:Branch BRATZR:Branch if zero BRATNZ:Branch if not zero BSR:Branch to subroutine BSRTZR:Branch to subroutine if zero BSRTNZ:Branch to subroutine if not zero DBRA:Delayed Branch DBRAI:Delayed Branch immediate DBSR:Delayed Branch to subroutine DBSRI:Delayed Branch immediate to subroutine DJMP:Delayed Jump DJMPI:Delayed Jump immediate DJSR:Delayed Jump to subroutine DJSRI:Delayed Jump immediate to subroutine JMP:Jump JMPTZR:Jump if zero JMPTNZ:Jump if not zero JSR:Jump to subroutinee JSRTZR:Jump to subroutine if zero JSRTNZ:Jump to subroutine if not zero NOP:No operation
【0052】A-10.OS-related instructions TRAP:Trap REIT:Return from exception, interrupts, and traps
【0053】B.DSP function instructions B-1.Arithmetic operation instructions MUL:Multiply MULX:Multiply with extended precision MULXS:Multiply and shift to the right by one with
extended precision MULX2H:Multiply two pairs of half-words with exten
ded precision MULHXpp:Multiply two half-words with extended prec
ision pp=LL,LH,HL,HH MUL2H:Multiply two pairs of half-words MACa:Multiply and add a=0,1 MACSa:Multiply,shift to the right by one,and add a=0,1 MSUBa:Multiply and subtract a=0,1 MSUBSa:Multiply,shift to the right by one,and subt
ract a=0,1 SAT:Saturate SATHH:Saturate word operand into high half-word SATHL:Saturate word operand into low half-word SATZ:Saturate into positive number SATZ2H:Saturate two half-words into positive numbe
r SAT2H:Saturate two half-word operands
【0054】B-2.Repeat instructions REPEAT:Repeat a block of instructions REPEAT:Repeat a block of instructions with immedia
te
【0055】図15は、1つの命令実行でなされる各処
理を4段のパイプラインステージに割当てたものであ
る。本システムLSIのCPUでは命令を実行するのに
通常IF,D/A,E/M,Wの4段のパイプラインス
テージで実行する。次々に発行される命令の各パイプラ
インステージは、オーバーラップして実行できるため、
パイプライン手法は、近年の高性能マイクロプロセッサ
では必ず取りいれられている技術である。各パイプライ
ンステージは、クロックのHighの期間(前半)とL
owの期間(後半)に同期したレジスタで構成されてお
り、各種処理は、これらレジスタ間で実行される。その
ため、各パイプラインステージの処理は前半、後半に分
けて考えることができる。まず、IFステージで命令フ
ェッチが実行され、D/Aステージでその命令のデコー
ドが実行される。そして、同じくD/Aステージの前半
から汎用レジスタの読み出しが開始されて、後半でデー
タアクセスのためのオペランドアドレス計算がなされ
る。E/Mステージでは、演算及びデータメモリアクセ
スが実行される。そして、Wステージの後半で演算結果
の汎用レジスタへの書き込みが実行される。これが1命
令を実行する際のパイプライン的な処理の概要である。
図13で示した制御レジスタCR0〜CR17へのリー
ド/ライト処理は、Eステージの後半で行われる。
【0056】図16〜図19に、図1に示したCPU4
の詳細なブロック構成を示す。これらの図には、図1で
説明したコアデータパス部5とコア制御部6内の詳細な
ブロック構成が示されている。コア制御部6には、本発
明の周辺制御部7が内蔵されている。データパス部5
は、図15で説明した4段のパイプラインステージに基
づいて命令の実行を行うブロックである。汎用レジスタ
105を境にして、左側がメモリアクセス制御やプログ
ラム制御を司るメモリアクセスユニットであり、右側が
全ての乗算命令も含む全ての整数演算を行う整数演算ユ
ニットである。これらメモリアクセスユニットと整数演
算ユニットでは、図9で説明した命令コードに含まれる
2個の副命令が並行して実行される。メモリアクセスユ
ニット103には、ALU115(MALU)、シフタ
116(MSFT)がある。また、その他メモリアクセ
ス制御、プログラム制御等を行うための各種演算器やレ
ジスタ等が含まれている。129(i1rial)は、
命令フェッチ処理の際に、命令RAMへアドレスバス2
0を介して命令アドレスを出力する命令アドレスレジス
タである。
【0057】IFステージで命令フェッチが完了する
と、アドレスインクリメンタ137(IINC)で8バ
イトアドレス分インクリメントし、レジスタ(i2ri
al)を介して命令アドレスレジスタ129(i1ri
al)を更新する。130はメモリへのストア処理を行
う際に、ストアデータの整地を行うための制御部(OP
5)である。133,200はメモリからのロードデー
タの符合拡張を行うための制御部(OP4)である。1
31はメモリ領域を循環バッファとして利用するモジュ
ロアドレッシングで使用するロードと、ストア命令実行
時のポストインクリメント/デクリメント処理を行うた
めのインクリメンタ(MINC)である。132はロー
ド/ストア処理のデータアドレスの計算や分岐命令の飛
び先アドレスの計算を行うための加算器(MADD)で
ある。また、CR0〜CR17は、図13で説明した制
御レジスタ(制御レジスタの一部は、コア制御部6に内
蔵されている)である。134はプログラムカウンタC
R0をインクリメントするためのインクリメンタ(PI
NC)である。135はリピート命令やディレイド分岐
命令を実行する際に、リピートカウントレジスタCR6
の値や、リピートエンドアドレスレジスタCR8の値を
計算するための加算器(RADD)である。136はリ
ピートカウントレジスタの値をデクリメントするための
デクリメンタ(DEC)である。
【0058】140は命令ブレークアドレスレジスタC
R11の値とプログラムカウンタCR0の値を比較し、
同じ値であれば一致信号を出力する32ビット比較器
(ICMP)である。141はリピートカウントレジス
タCR6の値が0以上であれば有効となる信号を出力す
る32ビット比較器(RCMP)である。142はリピ
ートエンドアドレスレジスタCR8の値と命令アドレス
レジスタ129の値を比較し、同じ値であれば一致信号
を出力する32ビットの比較(RCMP)である。14
3はモジュロエンドアドレスレジスタCR10の値とイ
ンクリメンタ131の値が同じであれば一致信号を出力
する32ビット比較器(MCMP)である。144はモ
ジュロアドレッシング次にインクリメント/デクリメン
トされたアドレスを保持しているレジスタe1rmin
cの値が0であれば有効となる信号を出力する32ビッ
ト比較器(RACMP)である。315はD1S6BU
Sバスの値が0であれば有効となる信号を出力するため
の32ビット比較器である。
【0059】また、整数演算ユニットには、乗算命令の
実行を行う乗算部、ALU22(IALU)、シフタ1
9(ISFT)、そして、飽和演算を行うための演算部
221(ISAT)がある。また、A0,A1は、図1
2で説明した積和演算等を行う際の累積加算等を行なう
ための2本のアキュムレータである。また、D1S1B
US,D1S2BUS,D1S3BUS,D1S4BU
S,D1S5BUS,D1S6BUSは、汎用レジスタ
105からのリードバスであり、D1S1BUSのD1
とは、Dステージの前半にバスがドライブされることを
示している。これら先頭にD1の付いているバスをD1
同期バス群と呼ぶ。また、W1W1BUS,W1W2B
US,W1W3EBUS,W1W3OBUSは、汎用レ
ジスタ105へのライトバスであり、W1W1BUSの
W1とは、Wステージの前半にバスがドライブされるこ
とを示している。これら先頭にW1の付いているバス
は、同様にW1同期バス群である。
【0060】また、D2S1BUS,D2S2BUS,
D2S3BUS,D2S4BUS,D2S5MBUS,
D2S5IBUS,D2S6BUSは、D1同期バス群
のデータを、クロックのLowの期間に同期したレジス
タに取り込んだ値を出力しているバスであり、Dステー
ジの後半にバスがドライブされる。また、E2D1BU
S,E2D3BUS,E2D4BUSは、制御レジスタ
の値や演算器の値を保持するレジスタの値をEステージ
の後半に出力するバスである。これらステージとその前
半、後半の異なるバス間におけるデータのやり取りは、
タイミングを調整するためのレジスタを介して行われ
る。また、141bはコア制御部6で命令コードより切
り出された即値データである。また、43はコア制御部
内ののPSWレジスタCR1の値をE2D1BUSに読
み出すための経路である。161はE1CRBUSの値
をコア制御部内の制御レジスタに書き込むための経路で
ある。これらコア制御部6内の制御レジスタもコアデー
タパス部内にある制御レジスタと同様に、制御レジスタ
アクセス専用命令MVFSYS,MVTSYS命令を用
いてウェイトなしでリード/ライト処理可能である。
【0061】コア制御部6は、命令バス25から出力さ
れる命令コードをデコード処理し、コアデータパス部5
の制御を行うための各種制御信号を生成する。命令バス
25から入力された命令コードは、即値生成や汎用レジ
スタのリード/ライトの制御信号を生成するプリデコー
ド部に転送される。これと同時に命令レジスタに取り込
まれ、メモリアクセスユニットと整数演算ユニット用の
それぞれのDステージのデコーダ部102に出力され
る。図9で説明したように、命令コードのFMビットが
01か10であった場合、命令コードに含まれる2個の
副命令がそれぞれシリアルに実行される。この制御を行
うために、シリアル実行用の命令レジスタを備えてお
り、シリアル実行時には、2番目に実行される副命令を
一度レジスタに保持し、フィードバック制御を行う。ま
た、連続処理命令間で発生するデータ干渉をパイプライ
ンのウェイト処理で回避するパイプライン・インターロ
ック処理のための命令レジスタも備えており、この処理
実行時にも命令コードをフィードバック制御する。
【0062】コア制御部には、命令デコード部ばかりで
なく、図1でも説明したように、周辺制御部7を内蔵し
ている。周辺制御部には、周辺状態レジスタCR16と
割り込み有効レジスタCR17が内蔵されている。周辺
状態レジスタには、周辺ブロック部から状態ビット信号
が入力される。これら周辺状態レジスタと割り込み有効
レジスタは、他の制御レジスタと同様に、コアデータパ
ス部のE1CRBUSの値をバス47を介して書き込み
可能であり、これら制御レジスタの1つをセレクトして
コアデータパス部内のE2D1BUSに読み出し可能で
ある。これら制御レジスタへのアクセスは、制御レジス
タアクセス専用命令MVFSYS,MVTSYSを用い
てウェイトなしで可能である。
【0063】
【発明の効果】以上のようにこの発明によれば、DMA
制御部に所定の演算が必要なデータの到着をシステムの
CPUに知らせるモード・レジスタを設けたので、内部
メモリにデータが到着する前にCPUが直接これらのデ
ータをリードして演算処理をすることを可能にするの
で、DMA制御部自体には専用のCPUがなくても早期
に所定の演算が行える可能性を与える効果がある。また
更に、システムのCPUは、この通知を受けると、直ち
に所定演算をするようにしたので、演算を短時間で行え
る効果がある。
【図面の簡単な説明】
【図1】 本発明のデータ転送装置を用いた画像復号シ
ステムLSIの構成ブロック図である。
【図2】 本発明の実施の形態1におけるデータ転送装
置を備えるCPU及びブロックローダ(DMA制御)部
の詳細ブロック図である。
【図3】 従来のDMA処理と対比した実施の形態1の
CPU及びブロックローダ部の基本動作フローチャート
図である。
【図4】 実施の形態1におけるデータ転送装置を備え
たCPU及びブロックローダ部の動作タイミング図であ
る。
【図5】 実施の形態1におけるデータ転送装置を備え
たCPU及びブロックローダ部の他の動作タイミング図
である。
【図6】 実施の形態1におけるデータ転送装置を備え
たCPU及びブロックローダ部のデータ転送の動作フロ
ーチャート図である。
【図7】 実施の形態1におけるデータ転送装置を備え
たCPU及びブロックローダ部の演算処理を伴わない動
作タイミング図である。
【図8】 実施の形態1における画像復号器の全体動作
フローチャート図である。
【図9】 実施の形態1におけるCPUの命令フォーマ
ットを示す図である。
【図10】 実施の形態1におけるCPUの命令フォー
マットを示す図である。
【図11】 実施の形態1におけるCPUの命令フォー
マットを示す図である。
【図12】 実施の形態1におけるCPUの命令フォー
マットを示す図である。
【図13】 実施の形態1におけるCPUのレジスタの
構成図である。
【図14】 実施の形態1におけるCPUのレジスタの
構成図である。
【図15】 実施の形態1におけるCPUのパイプライ
ン動作を示す図である。
【図16】 実施の形態1におけるCPUの詳細な構成
図である。
【図17】 実施の形態1におけるCPUの詳細な構成
図である。
【図18】 実施の形態1におけるCPUの詳細な構成
図である。
【図19】 実施の形態1におけるCPUの詳細な構成
図である。
【図20】 第1の従来である内部に専用演算部を持た
ないDMA制御部と周辺部の構成ブロック図である。
【図21】 第2の従来である内部に専用演算部を持つ
DMA制御部と周辺部の構成ブロック図である。
【符号の説明】
1 システムLSI、3 内部データRAM、4 CP
U、15 ブロックローダ(DMA制御)部、16 D
RAM I/F部、510 ブロックローダ制御部、5
11 ブロックローダ部バッファ、520 モード・レ
ジスタ、441DMA転送処理1(外部メモリから転送
データをDMA制御部のバッファにリード)、444
(モード・レジスタからのトリガによる)CPUが行う
DMA制御部からの直接の転送データリード処理。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 CPUと内部データRAMとDMA制御
    部とを備えたシステムにおいて、 上記DMAは、演算加工が必要なデータのダイレクト・
    メモリ・アクセス指令を受けると、上記対応データがD
    MAバッファに転送されてくると上記CPUにデータ到
    着を知らせるモード・レジスタを設けたことを特徴とす
    るデータ転送装置。
  2. 【請求項2】 CPUと内部データRAMとDMA制御
    部とを備えたシステムにおいて、 上記DMAには、演算加工が必要なデータのダイレクト
    ・メモリ・アクセス指令を受けて該データのDMAバッ
    ファへの到着を知らせるモード・レジスタを設けて、 上記CPUは、上記モード・レジスタからの到着通知を
    受けると、上記DMAバッファから上記対応するデータ
    を直接リードして所定の演算加工をして上記内部データ
    RAMに格納するようにしたことを特徴とするデータ転
    送装置。
JP10346889A 1998-12-07 1998-12-07 データ転送装置 Pending JP2000172628A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10346889A JP2000172628A (ja) 1998-12-07 1998-12-07 データ転送装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10346889A JP2000172628A (ja) 1998-12-07 1998-12-07 データ転送装置

Publications (1)

Publication Number Publication Date
JP2000172628A true JP2000172628A (ja) 2000-06-23

Family

ID=18386511

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10346889A Pending JP2000172628A (ja) 1998-12-07 1998-12-07 データ転送装置

Country Status (1)

Country Link
JP (1) JP2000172628A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009237790A (ja) * 2008-03-26 2009-10-15 Yamaha Corp Dmaコントローラ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009237790A (ja) * 2008-03-26 2009-10-15 Yamaha Corp Dmaコントローラ

Similar Documents

Publication Publication Date Title
US6539467B1 (en) Microprocessor with non-aligned memory access
JP4934356B2 (ja) 映像処理エンジンおよびそれを含む映像処理システム
KR101854520B1 (ko) 타이트하게 커플링된 이종 컴퓨팅을 위한 하드웨어 프로세서스들 및 방법들
US5961628A (en) Load and store unit for a vector processor
US7937559B1 (en) System and method for generating a configurable processor supporting a user-defined plurality of instruction sizes
US6748521B1 (en) Microprocessor with instruction for saturating and packing data
EP1102163A2 (en) Microprocessor with improved instruction set architecture
US20050188182A1 (en) Microprocessor having a set of byte intermingling instructions
US6453405B1 (en) Microprocessor with non-aligned circular addressing
JP2000222206A (ja) データ処理装置
US6574724B1 (en) Microprocessor with non-aligned scaled and unscaled addressing
US7051146B2 (en) Data processing systems including high performance buses and interfaces, and associated communication methods
US6948049B2 (en) Data processing system and control method
US6757819B1 (en) Microprocessor with instructions for shifting data responsive to a signed count value
US6889320B1 (en) Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
JP2754825B2 (ja) マイクロプロセッサ
JP2002229779A (ja) 情報処理装置
EP1102165A1 (en) Microprocessor with execution packet spanning two or more fetch packets
US6314505B1 (en) Processor and method for accessing rectangular areas in memory
US20020120830A1 (en) Data processor assigning the same operation code to multiple operations
TWI697836B (zh) 處理包括高功率及標準指令之指令集的方法與處理器
US20210089305A1 (en) Instruction executing method and apparatus
JP2000172628A (ja) データ転送装置
US7039790B1 (en) Very long instruction word microprocessor with execution packet spanning two or more fetch packets with pre-dispatch instruction selection from two latches according to instruction bit
CN111813447B (zh) 一种数据拼接指令的处理方法和处理装置