JP2016038690A - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP2016038690A
JP2016038690A JP2014160967A JP2014160967A JP2016038690A JP 2016038690 A JP2016038690 A JP 2016038690A JP 2014160967 A JP2014160967 A JP 2014160967A JP 2014160967 A JP2014160967 A JP 2014160967A JP 2016038690 A JP2016038690 A JP 2016038690A
Authority
JP
Japan
Prior art keywords
cpus
instruction
memory
request
fetch
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.)
Granted
Application number
JP2014160967A
Other languages
English (en)
Other versions
JP6396715B2 (ja
Inventor
雅美 中島
Masami Nakajima
雅美 中島
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2014160967A priority Critical patent/JP6396715B2/ja
Priority to US14/804,293 priority patent/US9715454B2/en
Publication of JP2016038690A publication Critical patent/JP2016038690A/ja
Application granted granted Critical
Publication of JP6396715B2 publication Critical patent/JP6396715B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

【課題】複数のCPUを備えるマルチプロセッサシステムにおいて、MIMD型、SIMD型またはそれらが混在する動作をさせることを可能とし、SIMD型で動作するCPUによる命令フェッチのための消費電力を低く抑える。
【解決手段】複数のCPUとそれぞれに対応する複数のメモリとを備え、複数のCPUがそれぞれ対応するメモリから異なるアドレスの命令コードをフェッチするときには、それぞれを独立に動作させる(MIMD型の動作)。一方、複数のCPUがそれぞれ対応するメモリから同じアドレスの命令コードをフェッチする要求を発生させたとき、即ち、SIMD型の動作を行うときには、前記複数のメモリのうちの1個のメモリから1回のアクセスで読み出した当該命令コードを、前記複数のCPUに並列に供給する。
【選択図】図1

Description

本発明は、データ処理装置に関し、特にSIMD(Single Instruction Multiple Data)型の複数CPU(Central Processing Unit)を含むデータ処理装置に好適に利用できるものである。
近年、メディア処理(画像処理、音声処理等)に対し、高い処理性能の要求が高まっている。メディア処理の特徴は、同じ演算を複数のメディアデータ(画素、音)に対して行う処理であるということである。このような処理に対しては、並列処理を行うことで、処理性能の向上が可能である。現在、メディア処理を並列で行う処理装置として、マルチコアCPU、SIMD型メディアプロセッサ、専用メディアエンジン等が開発され、各種製品に搭載されている。ここで、SIMDは同じ演算を複数のデータに対して並列に行う処理を実現するマルチコアCPU等で構成されるデータ処理装置のアーキテクチャであり、画像処理、音声処理等のメディア処理に好適である。その理由は、これらの処理では、同じ演算を複数のメディアデータ(画素、音)に対して行うからである。
マルチコアCPUでは、複数のCPUが並列で異なるメディア処理を行う。このとき、各CPUは命令キャッシュメモリを搭載し、全CPUが同時に独立に命令をフェッチ可能である。これに対して、SIMD型メディアプロセッサ、専用メディアエンジンは、メディア処理に特化したアーキテクチャである。これらを用いてシステムを構成する場合は、通常、メディア処理以外を実行するCPUも搭載される。
特許文献1には、プロセッサとキャッシュメモリと制御部とからそれぞれが構成される複数のユニットと、主記憶装置とが、共通バスを介して互いに接続され、各ユニットの制御部が専用バスで互いに接続される、マルチプロセッサシステムが開示されている。1つのユニットでキャッシュミスが発生した時、その時のアドレス情報が専用バスを介して他のユニットに転送され、他のユニットで受信したアドレスでキャッシュメモリへのアクセスを実行し、ヒットしたときにはリード対象のデータを、キャッシュミスが発生したユニットへ専用バスを介して供給する。
特許文献2には、それぞれ専用のキャッシュメモリが設けられた複数のプロセッサが、共通バスを介して主記憶装置に接続される、マルチプロセッサシステムが開示されている。自己のキャッシュメモリ上に目的のデータがある場合には当該キャッシュメモリから当該データを読み出し、自己のキャッシュメモリ上に目的のデータが存在せず他のキャッシュメモリ上に存在する場合には、当該他のキャッシュメモリから当該データを読み出して、当該データを要求したプロセッサに転送する。
特開平09−198310号公報 特開平04−291642号公報
特許文献1及び2について本発明者が検討した結果、以下のような新たな課題があることがわかった。
特許文献1及び2に記載されるようなMIMD(Multiple Instruction Multiple Data)型のマルチコアCPUを用いて、SIMD型のメディア処理を行う場合、処理が同じであるにもかかわらず、各CPUの命令キャッシュは全て動作しなければならず、消費電力が大きい。一方、SIMD型メディアプロセッサ、専用メディアエンジンは、効率良くメディア処理が実行可能であるが、メディア処理以外では動作しないため、メディア処理以外の処理を行うCPUやメモリを別途設ける必要があるため、面積オーバヘッドが大きい。
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
一実施の形態によれば、下記の通りである。
すなわち、一実施の形態に係るデータ処理装置は、複数のCPUとそれぞれに対応する複数のメモリとを備え、複数のCPUがそれぞれ対応するメモリから異なるアドレスの命令コードをフェッチするときには、それぞれを独立に動作させる。一方、複数のCPUがそれぞれ対応するメモリから同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のメモリのうちの1個のメモリから1回のアクセスで読み出した当該命令コードを、前記複数のCPUに並列に供給する。
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、複数のCPUを独立に動作させたときのピーク性能を落とすことなく、複数のCPUがSIMD型の並列動作を行うときには、複数のメモリのうちの1個のみをアクセス対象とし、消費電力を抑えることができる。
図1は、実施形態1に係るデータ処理装置の構成例を示すブロック図である。 図2は、実施形態1に係るデータ処理装置100において、全てのCPUがSIMD型並列動作を行う動作例を示す説明図である。 図3は、実施形態1に係るデータ処理装置100において、一部のCPUがSIMD型並列動作を行う動作例を示す説明図である。 図4は、データ処理装置100によるメディア処理システムの構成例を示すブロック図である。 図5は、メディア処理システムに搭載される複数CPUブロックの構成例を示すブロック図である。 図6は、実施形態2に係るデータ処理装置の構成例を示すブロック図である。 図7は、実施形態2に係るデータ処理装置100において、全てのCPUがSIMD型並列動作を行う動作例を示す説明図である。 図8は、実施形態2に係るデータ処理装置100において、一部のCPUがSIMD型並列動作を行う動作例を示す説明図である。 図9は、実施形態3に係るデータ処理装置の構成例を示すブロック図である。 図10は、実施形態3に係るデータ処理装置100において、全てのCPUがSIMD型並列動作を行う動作例を示す説明図である。 図11は、実施形態3に係るデータ処理装置100において、一部のCPUがSIMD型並列動作を行う動作例を示す説明図である。 図12は、実施形態4に係るデータ処理装置の構成例を示すブロック図である。 図13は、実施形態4に係るデータ処理装置100において、一部のCPUがSIMD型並列動作を行う動作例を示す説明図である。 図14は、実施形態5に係るデータ処理装置の構成例を示すブロック図である。
1.実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕<1個のメモリから複数のCPUへ命令フェッチ>
本願において開示される代表的な実施の形態に係るデータ処理装置(100)は、複数のCPU(1_1〜1_4)と、前記複数のCPUのそれぞれに対応する複数のメモリ(2_1〜2_4)とを備え、以下のように構成される。
前記複数のCPUがそれぞれ対応するメモリから互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応するメモリから当該命令コードを対応するCPUに供給する。
前記複数のCPUがそれぞれ対応するメモリから同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のメモリのうちの1個のメモリから当該同じアドレスに対する1回のアクセスで読み出した当該命令コードを、前記複数のCPUに並列に供給する。
これにより、複数のCPUを独立に動作させたときのピーク性能を落とすことなく、複数のCPUがSIMD型の並列動作を行うときには、複数のメモリのうちの1個のみをアクセス対象とし、命令フェッチのためにメモリアクセスに要する消費電力を抑えることができる。
〔2〕<命令キャッシュ共通バス>
項1において、前記メモリは命令キャッシュメモリ(2_1〜2_4)であり、前記データ処理装置は、命令キャッシュ共通バス(5)をさらに備え、前記命令キャッシュ共通バスは、前記複数のCPUと前記複数の命令キャッシュメモリとに接続される。
前記複数のCPUが互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令キャッシュメモリから当該命令コードを対応するCPUに供給する。
前記複数のCPUが同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数の命令キャッシュメモリのうちの1個の命令キャッシュメモリから当該アドレスに対する1回のアクセスで読み出した当該命令コードを、前記複数のCPUに並列に供給する。
これにより、複数のCPUを独立に動作させたときのピーク性能を落とすことなく、複数のCPUがSIMD型の並列動作を行うときには、複数の命令キャッシュメモリのうちの1個のみをアクセス対象とし、命令フェッチのために命令キャッシュメモリのアクセスに要する消費電力を抑えることができる。
〔3〕<一部の複数CPUがSIMD>
項2において、前記複数のCPUのうちM個のCPU(1_1〜1_3)が同じアドレスの命令コードをフェッチする要求を発生させ、他のN個のCPU(1_4)が前記同じアドレスのとは異なるアドレスの命令コードをフェッチする要求を発生させたときには(MとNは整数)、前記データ処理装置は以下のように動作する。
前記M個のCPUに対応するM個の命令キャッシュメモリのうちの1個の命令キャッシュメモリから当該同じアドレスに対する1回のアクセスで読み出した当該命令コードを、前記M個のCPUに並列に供給し、前記N個のCPUに対応するN個の命令キャッシュメモリからは、それぞれ対応するCPUに、対応する命令コードを供給する。
これにより、SIMD型で並列動作するM個のCPUとそれぞれが独立に並列動作可能なN個のCPUとを混在させることができる。
〔4〕<モード設定>
項3において、前記データ処理装置は、前記複数のCPUのうちどのCPUが、前記M個のCPUとして機能するかを指定することが可能な、モード設定機構をさらに備える。
これにより、モード設定機構をマルチタスクOS等によって管理させ、SIMD処理に適するメディア処理を割り付けるときに、対象とするCPUを明示的に指定することができる。
〔5〕<フェッチアドレスの監視>
項3において、前記データ処理装置は、前記複数のCPUが命令フェッチを要求するときに発行するアドレスを監視し、同じアドレスの命令コードのフェッチを要求するCPUを、前記M個のCPUとして指定する。
これにより、項4のモード設定機構を設けることなく、またはモード設定機構をOS等によって管理させることなく、複数(M個)のCPUに対してSIMD並列動作することを動的かつ自律的に指定することができる。
〔6〕<命令バッファ>
項1において、前記メモリは命令キャッシュメモリ(2_1〜2_4)であり、前記データ処理装置は、命令バッファ(51)をさらに備え、前記命令バッファは、前記複数のCPUと前記複数の命令キャッシュメモリとに接続される。
前記命令バッファは、前記複数のCPUが、所定期間内に同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数の命令キャッシュメモリのうちの1個の命令キャッシュメモリから当該アドレスに対する1回のアクセスで読み出した当該命令コードを、前記複数のCPUに供給する。
前記命令バッファは、前記複数のCPUが、前記所定期間内に互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令キャッシュメモリから当該命令コードを対応するCPUに供給する。
これにより、SIMD型で並列動作する複数CPUの命令フェッチのタイミングがずれた場合でも、そのずれを吸収して、複数の命令キャッシュメモリのうちの1個のみをアクセス対象とし、命令フェッチのために命令キャッシュメモリのアクセスに要する消費電力を抑えることができる。ここで、「所定期間」は、本来同時に発生する命令フェッチのタイミング(サイクル)について、許容されるべきずれの期間(サイクル)によって規定される。
〔7〕<一部の複数CPUがSIMD>
項6において、前記複数のCPUのうちM個のCPU(1_1〜1_3)が前記所定期間内に同じアドレスの命令コードをフェッチする要求を発生させ、他のN個のCPU(1_4)が前記所定期間内に前記同じアドレスとは異なるアドレスの命令コードをフェッチする要求を発生させたときには(MとNは整数)、前記データ処理装置は以下のように動作する。
前記M個のCPUに対応するM個の命令キャッシュメモリのうちの1個の命令キャッシュメモリから当該同じアドレスに対する1回のアクセスで読み出した当該命令コードを、前記M個のCPUに供給し、前記N個のCPUに対応するN個の命令キャッシュメモリからは、それぞれ対応するCPUに、対応する命令コードを供給する。
これにより、SIMD型で並列動作するM個のCPUとそれぞれが独立に並列動作可能なN個のCPUとを混在させることができ、さらに項6の効果を得ることができる。
〔8〕<休止中の命令キャッシュを低消費電力モードに遷移>
項1から項7のうちにいずれか1項において、前記データ処理装置は、前記複数のメモリ(命令キャッシュメモリ)(2_1〜2_4)のうち、アクセス対象外のメモリ(命令キャッシュメモリ)を低消費電力モードに遷移させる。
これにより、メモリアクセスのための消費電力を、さらに低く抑えることができる。
〔9〕<命令デコード共通バス>
項1において、前記複数のCPUのそれぞれは、演算実行部(11_1〜11_4)と命令デコード部(12_1〜12_4)とを含み、前記データ処理装置は、命令デコード共通バス(8)をさらに備える。
前記命令デコード共通バスは、前記複数のCPUの演算実行部(11_1〜11_4)と、前記複数のCPUの命令デコード部(12_1〜12_4)とに接続される。
前記命令デコード共通バスは、前記複数のCPUが互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令デコード部から当該命令コードのデコード結果を対応する演算実行部に供給する。
前記命令デコード共通バスは、前記複数のCPUが同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のCPUの命令デコード部のうちの1個の命令デコード部がデコードした当該命令コードのデコード結果を、対応する演算実行部に並列に供給する。
これにより、複数のCPUを独立に動作させたときのピーク性能を落とすことなく、複数のCPUがSIMD型の並列動作を行うときには、複数CPUの命令デコーダのうちの1個のみを動作させ、命令のフェッチに加えデコードに要する消費電力をもさらに抑えることができる。
〔10〕<休止中の命令デコーダを低消費電力モードに遷移>
項9において、前記データ処理装置は、前記複数の命令デコード部のうち、命令デコード動作を行わない命令デコード部を低消費電力モードに遷移させる。
これにより、SIMD型の並列動作をさせるときに、命令デコードのための消費電力を、さらに低く抑えることができる。
〔11〕<1個のメモリから複数のCPUへ命令フェッチ(共通バス)>
本願において開示される代表的な実施の形態に係るデータ処理装置(100)は、複数のCPU(1_1〜1_4)と、メモリ(7)と、前記複数のCPUと前記メモリとを互いに接続する共通バス(6)とを備え、以下のように構成される。
前記複数のCPUが前記メモリから互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、前記メモリのそれぞれ対応するアドレスから当該命令コードを対応するCPUに順次供給する。
前記複数のCPUが前記メモリから同じアドレスの命令コードをフェッチする要求を発生させたときには、前記メモリから当該同じアドレスに対する1回のアクセスで読み出した当該命令コードを、前記複数のCPUに並列に供給する。
これにより、複数のCPUを独立に動作させたときのピーク性能を落とすことなく、複数のCPUがSIMD型の動作を行うときには、メモリへのアクセス頻度を低減して、消費電力を抑えることができる。複数のCPUが独立に並列動作するときには、共通バスは通常のバス調停を行い、SIMD動作を行うときには、メモリへの1回のアクセスで読み出した命令コードを、SIMD型で並列動作する当該複数のCPUに並列に供給(ブロードキャスト)する。
〔12〕<一部の複数CPUがSIMD>
項11において、前記複数のCPUのうちM個のCPU(1_1〜1_3)が同じアドレスの命令コードをフェッチする要求を発生させ、他のN個のCPU(1_4)が前記同じアドレスとは異なるアドレスの命令コードをフェッチする要求を発生させたときには(MとNは整数)、前記データ処理装置は以下のように動作する。
前記M個のCPUがフェッチを要求する命令コードを、前記メモリから当該同じアドレスに対する1回のアクセスで読み出し、読み出した当該命令コードを前記M個のCPUに並列に供給し、前記N個のCPUがフェッチを要求するそれぞれの命令コードは、前記メモリから順次読み出し、読み出した命令コードを対応するCPUに順次供給する。
これにより、SIMD型で並列動作するM個のCPUと、それぞれが独立に並列動作可能なN個のCPUとを混在させることができる。独立に並列動作するN個のCPUに対しては、共通バスは通常のバス調停を行い、SIMD並列動作を行うM個のCPUに対しては、共通バスはメモリへの1回のアクセスで読み出した命令コードを並列に供給(ブロードキャスト)する。
〔13〕<モード設定>
項12において、前記データ処理装置は、前記複数のCPUのうちどのCPUが、前記M個のCPUとして機能するかを指定することが可能な、モード設定機構をさらに備える。
これにより、モード設定機構をマルチタスクOS等によって管理させ、SIMD処理に適するメディア処理を割り付けるときに、対象とするCPUを明示的に指定することができる。
〔14〕<フェッチアドレスの監視>
項12において、前記データ処理装置は、前記複数のCPUが命令フェッチを要求するときに発行するアドレスを監視し、同じアドレスの命令コードのフェッチを要求するCPUを、前記M個のCPUとして指定する。
これにより、項13のモード設定機構を設けることなく、またはモード設定機構をOS等によって管理させることなく、複数(M個)のCPUに対してSIMD並列動作することを動的かつ自律的に指定することができる。
〔15〕<1個の主メモリから複数I$へのキャッシュフィル>
本願において開示される代表的な実施の形態に係るデータ処理装置(100)は、複数のCPU(1_1〜1_4)と、前記複数のCPUにそれぞれ接続される複数の命令キャッシュメモリ(2_1〜2_4)と、主メモリ(7)と、前記複数の命令キャッシュメモリと前記主メモリとを互いに接続する共通バス(6)とを備え、以下のように構成される。
前記複数の命令キャッシュメモリが前記主メモリから互いに異なるアドレスの命令コードを読み出す要求を発生させたときには、前記主メモリのそれぞれ対応するアドレスから当該命令コードを対応する命令キャッシュメモリに順次供給する。
前記複数の命令キャッシュメモリが前記主メモリから同じアドレスの命令コードを読み出す要求を発生させたときには、前記主メモリから当該同じアドレスに対する1回のアクセスで読み出した当該命令コードを、前記複数の命令キャッシュメモリに並列に供給する。
これにより、それぞれが命令キャッシュメモリを備える複数のCPUが共通バスを介して主メモリに接続されるデータ処理装置において、複数のCPUを独立に動作させたときのピーク性能を落とすことなく、主メモリへのアクセス頻度を低減して、消費電力を抑えることができる。複数のCPUがSIMD型の並列動作を行うときに、複数の命令キャッシュメモリで同時に発生するキャッシュミスに伴うキャッシュフィルを、主メモリから複数の命令キャッシュメモリに対して並列に実行することができるからである。
〔16〕<一部の複数CPUがSIMD>
項15において、前記データ処理装置は以下のように動作する。前記データ処理装置は前記複数のCPUのうちM個のCPUにそれぞれ接続されるM個の命令キャッシュメモリが同じアドレスの一連の命令コード群を前記主メモリから読み出してキャッシュフィルを行う要求を発生させる。また、前記データ処理装置は他のN個のCPUが前記同じ一連の命令コード群とは異なり且つ互いに異なるアドレスの一連の命令コード群を読み出してキャッシュフィルを行う要求を発生させる。ここで、MとNは任意の整数である。このような場合に前記データ処理装置は以下のように動作する。
前記M個のCPUがキャッシュフィルを要求する一連の命令コード群を、前記主メモリから一連のアクセスで読み出し、読み出した当該一連の命令コード群を前記M個のCPUに並列に供給し、前記N個のCPUがキャッシュフィルを要求するそれぞれの一連の命令コード群は、前記主メモリから順次読み出し、対応する命令キャッシュメモリに順次供給する。
これにより、SIMD型で並列動作するM個のCPUと、それぞれが独立に並列動作可能なN個のCPUとを混在させることができる。独立に並列動作するN個のCPUでキャッシュミスが発生したときには、共有バスのバス調停を行いながら、対応する命令キャッシュメモリに対してそれぞれキャッシュフィルを行う。一方、SIMD並列動作を行うM個のCPUでキャッシュミスが発生したときには、共有バスのバス調停の例外として、M個のCPUのうちの1個のCPUに対応する命令キャッシュメモリに対して行うキャッシュフィルを、M個すべての命令キャッシュメモリに対して並列に同じキャッシュフィルを行う。このキャッシュフィルは、主メモリから共通バスを介して行われる、一連の命令コード群のブロードキャスト(並列の供給)である。
〔17〕<モード設定>
項16において、前記データ処理装置は、前記複数のCPUのうちどのCPUが、前記M個のCPUとして機能するかを指定することが可能な、モード設定機構をさらに備える。
これにより、モード設定機構をマルチタスクOS等によって管理させ、SIMD処理に適するメディア処理を割り付けるときに、対象とするCPUを明示的に指定することができる。
〔18〕<キャッシュフィルアドレスの監視>
項16において、前記データ処理装置は、前記複数の命令キャッシュメモリがキャッシュフィルを要求するときに発行するアドレスを監視し、同じアドレスの命令コードのキャッシュフィルを要求する命令キャッシュメモリに対応するCPUを、前記M個のCPUとして指定する。
これにより、項17のモード設定機構を設けることなく、またはモード設定機構をOS等によって管理させることなく、SIMD動作する複数のCPUを動的かつ自律的に指定することができる。
2.実施の形態の詳細
実施の形態について更に詳述する。
〔実施形態1〕<命令キャッシュ共通バス>
図1は、実施形態1に係るデータ処理装置の構成例を示すブロック図である。
実施形態1に係るデータ処理装置100は、CPU1_1〜1_4と、CPU1_1〜1_4のそれぞれに対応する命令キャッシュメモリ(I$)2_1〜2_4とデータキャッシュメモリ(D$)3_1〜3_4とを備え、CPU1_1〜1_4と命令キャッシュメモリ2_1〜2_4との間には、命令キャッシュ共通バス5を備える。各構成要素を接続する配線は、複数ビットのディジタル信号配線によって実装されるが、図ではバス表記は省略されている。本願における他の図面についても同様である。
CPU1_1〜1_4は、命令キャッシュ共通バス5に対して命令フェッチのためのアドレスAp1〜Ap4をそれぞれ発行する。
並列動作するCPU1_1〜1_4がそれぞれ独立に動作しているときは、MIMD型であり、同時に発行されたアドレスAp1〜Ap4が同じ値を取ることは、通常はない。CPU1_1〜1_4はそれぞれ異なるソフトウェアを実行しているからである。仮に、並列に実行されているソフトウェアが同時に同じサブルーチンを呼び出すことがあっても、そのサブルーチンのオブジェクトコードが共有されていない限り、同じアドレスを対象とする命令フェッチは発生しない。一方、CPU1_1〜1_4がSIMD型で並列動作しているときには、全てのアドレスAp1〜Ap4は同一である。
並列動作するCPU1_1〜1_4がMIMD型で動作しているときは、命令キャッシュ共通バス5は、CPU1_1〜1_4がそれぞれ対応する命令キャッシュメモリ2_1〜2_4から互いに異なるアドレスの命令コードをフェッチする要求を発生させ、それぞれ対応する命令キャッシュメモリ2_1〜2_4から読み出される命令コードを、対応するCPU1_1〜1_4に供給する。即ち、CPU1_1が発行したアドレスAp1はそのまま命令キャッシュメモリ2_1をアクセスするアドレスAc1として転送され、命令キャッシュメモリ2_1から読み出された命令コードCc1がCPU1_1へそのままCp1として入力され、フェッチされ、さらには実行される。以下、CPU1_2〜4と命令キャッシュメモリ2_2〜4についても同様に、CPU1_2〜4が発行したアドレスAp2〜Ap4はそのまま命令キャッシュメモリ2_2〜4のアドレスAc2〜Ac4とされ、命令キャッシュメモリ2_2〜4から読み出された命令コードCc2〜CC4がそのままCp2〜Cp4として、CPU1_2〜4にそれぞれフェッチされる。
一方、CPU1_1〜1_4がSIMD型で並列動作しており、CPU1_1〜1_4が同じアドレスの命令コードをフェッチする要求を発生させたときには、命令キャッシュメモリ2_1〜2_4のうちの1個の命令キャッシュメモリから当該同じアドレスに対する1回のアクセスで読み出した命令コードを、SIMD型で並列動作する複数のCPU1_1〜1_4に並列に供給する。このときの動作例について、より詳しく説明する。
図2は、図1に示すデータ処理装置100において、全てのCPU1_1〜1_4がSIMD型の並列動作を行う例を示す説明図である。CPU1_1〜1_4は、SIMD型で並列動作しているので、それぞれが命令フェッチのための発行するアドレス、Ap1,Ap2,Ap3,AP4は、全て同じ値である。命令キャッシュ共通バス5は、このアドレスを例えばAc2として命令キャッシュメモリ2_2をアクセスする。どの命令キャッシュメモリが使用されても良い。アクセスされた命令キャッシュメモリ2_2は、対応する命令コードCc2を読み出して命令キャッシュ共通バス5に供給する。命令キャッシュ共通バス5は、入力された命令コードCc2をそのままCp1,Cp2,Cp3,Cp4として各CPU1_1〜1_4に供給する。各CPU1_1〜1_4は、供給された命令コードCp1=Cp2=Cp3=Cp4=Cc2をフェッチして、同一の命令を実行する。
これにより、複数のCPUを独立に動作させたときのピーク性能を落とすことなく、複数のCPU(1_1〜1_4)がSIMD型の動作を行うときには、複数のメモリ(2_1〜2_4)のうちの1個のみ(2_2)をアクセス対象とし、命令フェッチのためにメモリアクセスに要する消費電力を抑えることができる。
複数のメモリのうちアクセス対象とされた1個を除くアクセス対象外のメモリは、低消費電力モードに移行させることにより、さらに効果的に消費電力を低減することができる。低消費電力モードとしては、例えば、電源供給を遮断し、供給される電源電圧を低くし、クロック信号の供給を遮断し、または供給されるクロック信号の周波数を低下させるなどの方法が採用され得る。DVFS(Dynamic Voltage and Frequency Scaling)制御を行ってもよい。DVFS制御とは、電源電圧と動作周波数(クロック周波数)を、回路の動作状態に応じて動的に制御する方式であって、回路の動作を休止させる場合はクロックや電源の供給を停止してもよい。
図2には全てのCPU1_1〜1_4がSIMD型の並列動作を行う例を示したが、一部のCPUがSIMD型の並列動作を行い、他のCPUがそれとは独立の動作を行ってもよい。このような場合の動作例について、より詳しく説明する。
図3は、図1に示すデータ処理装置100において、一部のCPU(1_1〜1_3)がSIMD型並列動作を行う動作例を示す説明図である。CPU1_1〜1_4のうちCPU1_1〜1_3が同じアドレスの命令コードをフェッチする要求を発生させ、他のCPU1_4がそれとは異なるアドレスの命令コードをフェッチする要求を発生させる。即ち、Ap1=Ap2=Ap3≠Ap4となる。命令キャッシュ共通バス5は、CPU1_1〜1_3に対応する命令キャッシュメモリ2_1〜3のうちの1個の命令キャッシュメモリから当該同じアドレスに対する1回のアクセスで読み出した命令コードを、CPU1_1〜1_3に並列に供給し、SIMD動作していないCPU1_4には、対応する命令キャッシュメモリ2_4から対応する命令コードを供給する。即ち、命令キャッシュ共通バス5は、SIMD型で動作するCPU1_1〜1_3から出力されたAp1=Ap2=Ap3をAc2として例えば命令キャッシュメモリ2_2をアクセスし、それらとは独立に動作するCPU1_4から出力されたAp4をAc4として命令キャッシュメモリ2_4をアクセスする。アクセスされた命令キャッシュメモリ2_2は、対応する命令コードCc2を読み出して、命令キャッシュ共通バス5を介して、そのままCp1,Cp2,Cp3として各CPU1_1〜1_3に供給する。各CPU1_1〜1_3は、供給された命令コードCp1=Cp2=Cp3=Cc2をフェッチして、同一の命令を実行する。一方、アクセスされた命令キャッシュメモリ2_4は、対応する命令コードCc4を読み出して、命令キャッシュ共通バス5を介して、そのままCp4として各CPU1_4に供給する。CPU1_4は、供給された命令コードCp4=Cc4をフェッチして、CPU1_1〜1_3によるSIMD型の並列動作とは異なる命令を、そのSIMD動作と並列に実行する。
SIMD動作するCPUの個数とそれ以外のCPUの個数は、上述の例に依らず任意である。即ち、SIMD型で並列動作するM個のCPUとそれぞれが独立に並列動作可能なN個のCPUとを混在させることができる(MとNは任意の整数)。さらに、SIMD型で並列動作する複数のCPUによるグループを複数混在させることもできる。
図1〜図3には、各CPU1_1〜1_4に接続される命令キャッシュメモリ(I$)2_1〜2_4とデータキャッシュメモリ(D$)3_1〜3_4が示されるが、これらをキャッシュフィルするメインメモリ等は図示が省略されている。命令キャッシュメモリ2_1〜2_4とデータキャッシュメモリ3_1〜3_4に共通に接続されるメインメモリ(主メモリ)、または2次キャッシュメモリとキャッシュコントローラを備えることができる。また、命令とデータを分離して、命令キャッシュメモリ2_1〜2_4に接続されるメイン命令メモリ(2次命令キャッシュメモリ)及び命令キャッシュコントローラと、データキャッシュメモリ3_1〜3_4に接続されるメインデータメモリ(2次データキャッシュメモリ)及びデータキャッシュコントローラとをそれぞれ備えても良い。また、データキャッシュメモリ3_1〜3_4に代えて、キャッシュ機能を備えないローカルデータメモリをそれぞれのCPU1_1〜1_4に接続してもよい。以上のようなメモリの階層構造、及び、それらのメモリを接続するバスの階層構造は任意である。
図4は、データ処理装置100によるメディア処理システム1000の構成例を示すブロック図である。メディア処理システム1000は、2個の複数CPUブロック100_1と100_2と、画像処理IP101と、音声処理IP102と、DMAコントローラ103と、SRAM104と、フラッシュメモリ(Flash)105と、タイマ等の周辺回路106と、外部インターフェース(I/F)107と、それらを相互に接続するシステムバス108とを含んで構成される。
複数CPUブロック100_1と100_2は、それぞれ、上述のデータ処理装置100を実装したものである。詳しくは後述する。
画像処理IP(Intellectual Property)101と音声処理IP102とは、それぞれ画像処理と音声処理を行う専用IPである。DMA(Direct Memory Access)コントローラ103は、CPUを介さずにメモリ間のデータ転送を実行させるための制御回路ブロックである。SRAM(Static Random Access Memory)104と、フラッシュメモリ(Flash)105は、それぞれ揮発性と不揮発性のメモリであり、SRAM105は主に処理の中間データやステータスを記憶し、フラッシュメモリ105は複数CPUブロック100_1と100_2で実行されるプログラムの命令コードや、定数データを記憶している。周辺回路106は、タイマ等の周辺回路ブロックであり、メディア処理システム1000が提供する機能仕様に合わせて適宜選択的に搭載される。外部インターフェース(I/F:Interface)107は、外部との通信インターフェースであり、ネットワークインターフェースの他、画像や音声を入出力するヒューマンマシンインターフェースを提供するための機能モジュール、或いはそれらの機能モジュールと接続するためのインターフェース回路である。
メディア処理システム1000は、特に制限されないが、SOC(System On Chip)である。例えば、シリコンなどの単一半導体基板上に、公知のCMOS(Complementary Metal-Oxide-Semiconductor field effect transistor)LSI(Large Scale Integrated circuit)の製造技術を用いて形成される。
複数CPUブロック100_1と100_2について詳しく説明する。
図5は、メディア処理システム1000に搭載される複数CPUブロックの構成例を示すブロック図である。複数CPUブロック100_1と100_2は、上述のデータ処理装置を実装したものであり、必ずしも同一の構成である必要はない。図5には、複数CPUブロック100の一構成例が示される。
複数CPUブロック100は、それぞれがCPUと命令キャッシュメモリとデータキャッシュメモリとを備える複数(例えば4個)の単一CPUブロック10_1〜10_4と、2次キャッシュメモリ7と、キャッシュ監視部9と、セレクタ13とを備える。単一CPUブロック10_1〜10_4は、それぞれ、CPU1_1〜1_4と、命令キャッシュメモリ(I$)2_1〜2_4と、データキャッシュメモリ(D$)3_1〜3_4とを備える。命令キャッシュメモリ2_1〜2_4は、1つの単一CPUブロック10内の1個のCPUに接続されているだけではなく、同じ複数CPUブロック100内の他の単一CPUブロック10に含まれるCPU1_1〜1_4にも、命令キャッシュ共通バス5及び命令キャッシュセレクタ4_1〜4_4を介して接続されている。即ち、命令キャッシュ共通バス5は、各命令キャッシュメモリ2_1〜2_4に接続される4本のバスで構成され、命令キャッシュセレクタ4_1〜4_4は、当該4本のバスから1本を選択することによって、それぞれ対応するCPU1_1〜1_4と命令キャッシュメモリ2_1〜2_4との接続関係を制御する。キャッシュ監視部9は、各単一CPUブロック10_1〜10_4内の命令キャッシュメモリ2_1〜2_4のトランザクションを監視する機能、命令キャッシュセレクタ4_1〜4_4の選択情報14を保持する機能、及び、選択情報14を出力する機能を備えている。一方、データキャッシュメモリ3_1〜3_4は、それぞれの単一CPUブロック10_1〜10_4内で、対応するCPU1_1〜1_4にのみ接続されており、同じ複数CPUブロック100内であっても他のCPUには接続されていない。また、命令キャッシュメモリ2_1〜2_4とデータキャッシュメモリ3_1〜3_4は、同じ複数CPUブロック100内の2次キャッシュメモリ7に接続されており、2次キャッシュメモリ7は複数CPUブロック100外のシステムバス108に接続されている。キャッシュ監視部9内の選択情報14は、例えばレジスタに保持され、システムバス108を介して、リード、及び、ライトできる機能を有している。
ここで図4には、同一構成のデータ処理装置(複数CPUブロック)100_1と100_2を含む構成例が示されるが、メディア処理システム1000に搭載(実装)される複数CPUブロックの数は任意である。また、図5には、4個の単一CPUブロック10_1〜10_4を含む複数CPUブロック100を例示したが、搭載(実装)される単一CPUブロックの数は適宜変更することができる。
<OSによるモード設定>
命令キャッシュセレクタ4_1〜4_4の制御(モード設定)、すなわち、どのCPU1_1〜1_4がどの命令キャッシュメモリ2_1〜2_4を使用するかの設定は、OS(Operating System)またはユーザ(以降、OS)が決定し、その結果をキャッシュ監視部9内の選択情報14にライトすることで、切替を行う。
具体的手順を以下に示す。
複数のCPU1_1〜1_4を使って、複数のアプリケーションを実行させる場合、どのCPUにどのアプリケーションを割り当てるかは、OSが決定し切替を行う。OSは、アプリケーション毎に、何個のCPUを使ったSIMD型並列処理に適するか、どの程度の演算量(処理量)が必要か、演算(処理)を開始し終了すべきタイミング、アプリケーション間のデータや制御情報の相互依存関係などの情報に基づき、複数のアプリケーションを複数のCPUに時分割で割り付ける。
SIMD型の並列処理に適するあるアプリケーションが複数のCPUに割り当てられた場合に、当該複数のCPUが同じ命令を実行するSIMDモードとなる。その結果として、4個全てのCPUがSIMDモードになる場合や、4個のうち3個のCPUがSIMDモードになり、もう1個のCPUは独立して別のアプリケーションを実行する場合などがあり得る。例えば、画像処理において、カラーの画像情報をRGBの3原色に分けたまま、各色のデータに対して同じ処理を行うような場合には、3個のCPUをSIMD型で並列動作させ、残り1個のCPUではOSを動作させることができる。このような場合には、SIMDモードとなった3個のCPUに対しては、それらのCPUに接続される命令キャッシュメモリが共通となるように、OSがキャッシュ監視部9に適切な選択情報14をライトする。OSはタイマ等の機能を利用して適切なタイミングでCPU1_1〜1_4へのアプリケーションの割当を変更し、それに伴ってキャッシュ監視部9内の選択情報14を更新する。その結果、全てがSIMDモードから抜ける場合や、新たなCPUの組合せがSIMDモードになる場合がありうる。このとき、OSは、各命令キャッシュメモリ2_1〜2_4に対して、例えばDVFS制御を行うことにより、不使用の命令キャッシュメモリへ供給する電源の電圧を下げまたは遮断し、供給するクロックの周波数を下げまたは停止することにより、さらに消費電力を低減する。
<フェッチアドレスの監視によるモード設定>
OSによるモード設定について上述した。この場合、OSがどのアプリケーションをどのようなタイミングでどのCPUに割り付けるかの制御を行う。これを実現するためには、OSがアプリケーション毎の情報を利用してスケジューリングする必要がある。これに対して、OSに詳細な制御を任せるのではなく、キャッシュ監視部9が命令キャッシュメモリ2_1〜2_4のトランザクションを監視することによって、SIMD型で並列動作するCPUを自律的に抽出し、その結果に基づいて、キャッシュ監視部9内の選択情報14を適切に更新することにより、モード設定を行うことができる。即ち、キャッシュ監視部9は、各命令キャッシュメモリ2_1〜2_4のトランザクションを常に監視し、複数のCPU1_1〜1_4が同じアドレスの命令を同じタイミングでフェッチする場合に、キャッシュ監視部9内の選択情報14を変更し、1個の命令キャッシュメモリ2から複数のCPUへ命令を供給するSIMDモードとなる。
SIMDモードの構成は、上述の「OSによるモード設定」の場合と同様であり、全て(例えば全4個)のCPUがSIMDモードになる場合(図2参照)や、一部(例えば3個)のCPUがSIMDモードになる場合(図3参照)がありうる。命令キャッシュメモリ2_1〜2_4に対してDVFS制御を行うことにより、消費電力を低減することができる点についても、上述の「OSによるモード設定」の場合と同様である。
キャッシュメモリのトランザクションの監視は、常に行うので、その結果に応じて、キャッシュ監視部9内の選択情報14の更新も常に行われる。その結果、全てがSIMDモードから抜ける場合や、新たなCPUの組合せがSIMDモードに遷移する場合がありうる。
〔実施形態2〕<共通バス(バス調停/ブロードキャストの切替え・混在)>
図6は、実施形態2に係るデータ処理装置100の構成例を示すブロック図である。
実施形態2に係るデータ処理装置100は、4個のCPU1_1〜1_4が、共通バス6を介してメモリ7と接続されることにより構成されている。4個のCPU1_1〜1_4はそれぞれ命令フェッチに当たってアドレスAp1〜Ap4を出力して、共通バス6に対してバス権を要求し、共通バス6では図示されないバス調停回路が所定の優先順位に基づいて調停を行い、バス権を獲得したCPUから順に、メモリ7に対してアドレスAmを発行して命令コードCmを読み出してフェッチする。4個のCPU1_1〜1_4のうちの一部もしくは全部がSIMD型で並列動作している場合には、本実施形態2では、共通バス6は、SIMD動作する複数のCPUが要求するアドレスへのアクセスを1回だけ行い、読み出された命令コードCmを要求した複数のCPUに並列に供給する(ブロードキャストする)。
図7は、図6のデータ処理装置100において、4個全てのCPU1_1〜1_4がSIMD型並列動作を行う動作例を示す説明図である。CPU1_1〜1_4は、SIMD型で並列動作しているので、それぞれが命令フェッチのための発行するアドレス、Ap1,Ap2,Ap3,AP4は、全て同じ値である。共通バス6は、このアドレスをAmとしてメモリ7をアクセスする。アクセスされたメモリ7は、対応する命令コードCmを読み出して共通バス6へ出力する。共通バス6は、入力された命令コードCmをそのままCp1,Cp2,Cp3,Cp4として各CPU1_1〜1_4に並列に供給する。各CPU1_1〜1_4は、並列に供給された命令コードCp1=Cp2=Cp3=Cp4=Cmをフェッチして、同一の命令を実行する。
これにより、複数のCPUを独立に動作させたときのピーク性能を落とすことなく、複数のCPUがSIMD型の動作を行うときには、メモリ7へのアクセス頻度を低減して、消費電力を抑えることができる。複数のCPUが独立に並列動作するときには、共通バスは通常のバス調停を行い、SIMD動作を行うときには、メモリへの1回のアクセスで読み出した命令コードを、SIMD型で並列動作する複数のCPUに並列に供給する(ブロードキャストする)。
図8は、図6のデータ処理装置100において、一部のCPUがSIMD型並列動作を行う動作例を示す説明図である。複数のCPUのうち3個のCPU1_1〜1_3がSIMD型で並列動作しており、同じアドレスの命令コードをフェッチする要求を発生させ、他の1個のCPU1_4がそのアドレスとは異なるアドレスの命令コードをフェッチする要求を発生させる。SIMD型で並列動作する3個のCPUがフェッチを要求する命令コードを、当該同じアドレスに対する1回のアクセスでメモリ7から読み出し、読み出した命令コードを前記3個のCPUに並列に供給する。残り1個のCPUがフェッチを要求する命令コードは、メモリ7から前記1回のアクセスと競合しないタイミングで読み出し、読み出した命令コードを対応するCPUに順次供給する。図8に示される、SIMD型で並列動作する3個のCPU1_1〜1_3が発行するアドレスAp1,Ap2,Ap3は同じ値であり、CPU1_4が発行するアドレスAp4は異なる(Ap1=Ap2=Ap3≠Ap4)。図8では太い実線で示されるように、Am=Ap1=Ap2=Ap3としてメモリ7にアクセスし、読み出されるCmを、CPU1_1〜1_3に並列に供給する(ブロードキャストする)。このメモリアクセスと競合しないように調停された、別のタイミングにおいて、図8では破線で示されるように、Am=Ap4としてメモリ7にアクセスし、読み出されるCmをCp4としてCPU1_4に供給する。
SIMD動作するCPUの個数とそれ以外のCPUの個数は、上述の例に依らず任意である。複数のCPUのうちM個のCPUが同じアドレスの命令コードをフェッチする要求を発生させ、他のN個のCPUが異なるアドレスの命令コードをフェッチする要求を発生させたときには(MとNは整数)、データ処理装置100は以下のように動作する。即ち、M個のCPUがフェッチを要求するアドレスの命令コードを、メモリ7から1回のアクセスで読み出し、読み出した命令コードをSIMD動作するM個のCPUに並列に供給(ブロードキャスト)し、他のN個のCPUがそれぞれフェッチを要求するアドレスの命令コードは、メモリ7から順次読み出し、読み出した当該命令コードを対応するCPUに順次供給する。
これにより、SIMD型で動作するM個のCPUと、それぞれが独立に並列動作可能なN個のCPUとを混在させることができる。独立に並列動作するN個のCPUに対しては、共通バスは通常のバス調停を行い、SIMD動作を行うM個のCPUに対しては、共通バスはメモリへの1回のアクセスで読み出した命令コードをブロードキャストする。
<モード設定>
本実施形態2において、データ処理装置100は、複数のCPUのうちどのCPUが、SIMD動作するM個のCPUとして機能するかを指定することが可能なモード設定機構を、共有バス6のバス調停回路内に備えることができる。モード設定機構によってSIMD動作すると指定された複数のCPUから同一アドレスに対する複数のアクセス要求が同時に発生したときには、それら複数のアクセス要求相互間の調停は行わず、当該同一アドレスによるメモリ7のアクセスを1回だけ実行して、その結果を指定された複数のCPUに並列に供給する(ブロードキャストする)。バス調停は、そのアクセスとその他のアクセス要求との間で実行される。
これにより、モード設定機構をマルチタスクOS等によって管理させ、SIMD処理に適するメディア処理を割り付けるときに、対象とするCPUを明示的に指定することができる。
<フェッチアドレスの監視>
本実施形態2において、データ処理装置100は、複数のCPUが命令フェッチを要求するときに発行するアドレスを常に監視し、同じアドレスの命令コードのフェッチを同時に要求する複数のCPUを、SIMD動作するM個のCPUとして指定する。指定されたCPUについては上述の「モード設定」と同様に、同じアドレスの命令コードをフェッチする複数のアクセス要求相互間の調停は行わず、当該同一アドレス対するメモリ7のアクセスを1回だけ実行して、その結果読み出された命令コードを、指定された複数のCPUにブロードキャストする。バス調停は、そのアクセス要求とその他のアクセス要求との間で実行される。
これにより、モード設定機構をOS等によって管理させることなく、または複雑なモード設定機構を設ける必要なく、複数(M個)のCPUに対してSIMD動作することを動的かつ自律的に指定することができる。
〔実施形態3〕<ブロードキャストによる並列キャッシュフィル>
図9は、実施形態3に係るデータ処理装置100の構成例を示すブロック図である。
実施形態3に係るデータ処理装置100は、CPU1_1〜1_4と、CPU1_1〜1_4のそれぞれに対応する命令キャッシュメモリ(I$)2_1〜2_4とデータキャッシュメモリ(D$)3_1〜3_4と、共通バス6と、主メモリ7とを備える。
CPU1_1〜1_4は、それぞれ対応する命令キャッシュメモリ2_1〜2_4に対して命令フェッチのためのアドレスAp1〜Ap4を発行し、命令キャッシュメモリ2_1〜2_4から命令コードCp1〜Cp4が供給されて動作する。命令キャッシュメモリ2_1〜2_4のいずれかでキャッシュミスが発生したときには、対応するキャッシュフィルアドレスAf1〜Af4が共通バス6に対して発行され、主メモリ7へのアクセスが要求される。バス調停によってバス権を獲得したアクセス要求についてのアドレスが、アドレスAm7となって主メモリ7がアクセスされ、データCmが読み出され、バス権を獲得したアクセス要求を発生した命令キャッシュメモリに対して、キャッシュフィルのためのデータ(命令コードCm)が供給される。
図10は、図9のデータ処理装置100において、全てのCPUがSIMD型並列動作を行う動作例を示す説明図である。全てのCPUがSIMD型並列動作を行う場合は、命令フェッチのために発行されるアドレスAp1〜Ap4は同じ値であり、読み出される命令コードCp1〜Cp4も同じ値であり、命令キャッシュメモリ2_1〜2_4におけるキャッシュミスも同時に発生する。キャッシュミスの発生によって、複数の命令キャッシュメモリ2_1〜2_4が主メモリ7から同じ命令コードを読み出す要求を発生させたときには、主メモリ7からは1回のアクセスで読み出した命令コードを、複数の命令キャッシュメモリ2_1〜2_4に並列に供給(ブロードキャスト)する。即ちAm=Af1=Af2=Af3=Af4によって主メモリ7を1回だけアクセスし、読み出されるCmをそのままCm=Cf1=Cf2=Cf3=Cf4として各命令キャッシュメモリ2_1〜2_4に並列に供給(ブロードキャスト)する。ここで、「主メモリ71回だけをアクセス」とは、キャッシュフィルに必要な一連のアドレスによる主メモリ7からの一連の命令コードの読み出しを指すものであり、各命令キャッシュメモリについて順次キャッシュフィルを行うのではないことを意味する。
これにより、それぞれが命令キャッシュメモリを備える複数のCPUが共通バスを介して主メモリに接続されるデータ処理装置において、複数のCPUを独立に動作させたときのピーク性能を落とすことなく、主メモリへのアクセス頻度を低減して、消費電力を抑えることができる。複数のCPUがSIMD型の動作を行うときに、複数の命令キャッシュメモリで同時に発生するキャッシュミスに伴うキャッシュフィルを、主メモリから複数の命令キャッシュメモリに対して並列に実行することができるからである。
図11は、図9のデータ処理装置100において、一部のCPUがSIMD型並列動作を行う動作例を示す説明図である。複数のCPUのうち3個のCPU1_1〜1_3がSIMD型で並列動作しており、同じアドレスの命令コードを命令キャッシュメモリ2_1〜2_3からフェッチして同一命令を実行している。他の1個のCPU1_4は、そのアドレスとは異なるアドレスの命令コードを命令キャッシュメモリ2_4からフェッチして実行している。キャッシュミスは、SIMD型で並列動作する3個のCPU1_1〜1_3に対応する命令キャッシュメモリ2_1〜2_3では同時に発生し、CPU1_4に対応する命令キャッシュメモリ2_4ではそれとは無関係に発生する。SIMD型で並列動作する3個のCPU1_1〜1_3に対応する命令キャッシュメモリ2_1〜2_3では同時に発生したキャッシュミスは、同じキャッシュフィルアドレスを同時に要求する(Af1=Af2=Af3)。このとき、図10では太い実線で示されるように、Am=Af1=Af2=Af3として主メモリ7からキャッシュフィルに必要な一連の命令コードCmの読み出しを1回だけ行い、命令キャッシュメモリ2_1〜2_3に並列に供給する(ブロードキャストする)。CPU1_4に対応する命令キャッシュメモリ2_4で発生するキャッシュミスについては、図10では破線で示されるように、Am=Af4として主メモリ7からキャッシュフィルに必要な一連の命令コードCmの読み出し、命令キャッシュメモリ2_4に供給する。
SIMD動作するCPUの個数とそれ以外のCPUの個数は、上述の例によらず任意である。複数のCPUのうちM個のCPUにそれぞれ接続されるM個の命令キャッシュメモリが同じ一連の命令コード群を主メモリから読み出してキャッシュフィルを行う要求を発生させ、他のN個のCPUが別の一連の命令コード群を読み出してキャッシュフィルを行う要求を発生させたときには、データ処理装置100は以下のように動作する。ここでMとNは任意の整数である。SIMD動作するM個のCPUがキャッシュフィルを要求する一連の命令コード群を、主メモリから一連のアクセスで読み出し、読み出した当該一連の命令コード群をSIMD動作するM個のCPUに並列に供給する。SIMD動作しないそれ以外のN個のCPUがキャッシュフィルを要求するそれぞれの一連の命令コード群は、主メモリから順次読み出し、対応する命令キャッシュメモリに順次供給する。
これにより、SIMD型で動作するM個のCPUと、それぞれが独立に並列動作可能なN個のCPUとを混在させることができる。独立に並列動作するN個のCPUでキャッシュミスが発生したときには、共有バスのバス調停を行いながら、対応する命令キャッシュメモリに対してそれぞれキャッシュフィルを行う。一方、SIMD動作を行うM個のCPUでキャッシュミスが発生したときには、共有バスのバス調停の例外として、M個のCPUのうちの1個のCPUに対応する命令キャッシュメモリに対して行うキャッシュフィルを、M個すべての命令キャッシュメモリに対して並列に同じキャッシュフィルを行う。このキャッシュフィルは、主メモリから共通バスを介して行われる、一連の命令コード群のブロードキャストである。
<モード設定>
本実施形態3において、データ処理装置100は、複数のCPUのうちどのCPUが、SIMD動作するM個のCPUとして機能するかを指定することが可能なモード設定機構を、共有バス6のバス調停回路内に備えることができる。モード設定機構によってSIMD動作すると指定された複数のCPUに対応する命令キャッシュメモリから同一キャッシュフィルアドレスの複数のアクセス要求が同時に発生したときには、それら複数のアクセス要求相互間の調停は行わない。当該同一キャッシュフィルアドレスによる主メモリ7からのキャッシュフィルを1回だけ実行して、その結果を指定された複数の命令キャッシュメモリに同時に並行してキャッシュフィルする。バス調停は、そのアクセスとその他のアクセス要求との間で実行される。
これにより、モード設定機構をマルチタスクOS等によって管理させ、SIMD処理に適するメディア処理を割り付けるときに、対象とするCPUを明示的に指定することができる。
<フェッチアドレスの監視>
本実施形態3において、データ処理装置100は、複数の命令キャッシュメモリが要求するキャッシュフィルアドレスを常に監視し、同じアドレスのキャッシュフィルを要求する命令キャッシュメモリに対応するCPUを、SIMD動作するM個のCPUとして指定する。指定されたCPUについては上述の「モード設定」と同様に、同時に同じアドレスについてされるキャッシュフィルのための複数のアクセス要求相互間の調停は行わず、当該同一アドレスによる主メモリ7からのキャッシュフィルを1回だけ実行して、その結果読み出された命令コードを、指定された複数の命令キャッシュメモリにブロードキャストする。バス調停は、そのアクセス要求とその他のアクセス要求との間で実行される。
これにより、モード設定機構をOS等によって管理させることなく、または複雑なモード設定機構を設ける必要なく、複数(M個)のCPUに対してSIMD動作することを動的かつ自律的に指定することができる。
〔実施形態4〕<命令バッファ>
図12は、実施形態4に係るデータ処理装置の構成例を示すブロック図である。
実施形態4に係るデータ処理装置100は、図1に示される実施形態1と同様に、CPU1_1〜1_4と、CPU1_1〜1_4のそれぞれに対応する命令キャッシュメモリ(I$)2_1〜2_4とデータキャッシュメモリ(D$)3_1〜3_4とを備え、CPU1_1〜1_4と命令キャッシュメモリ2_1〜2_4との間には、命令キャッシュ共通バス5を備える。図1に示される実施形態1とは異なり、命令キャッシュ共通バス5には、命令バッファ51がさらに含まれる。命令バッファ51は、CPU1_1〜1_4のうちのあるCPUがフェッチした命令が、命令バッファ51に登録されていなければ、命令バッファ51に登録する機構をもつ。なお、登録時に、命令バッファ51に空きがない場合は、最も過去に登録された命令を削除し、新しい命令を登録する。各CPUは、命令バッファに登録があれば命令バッファ51から、命令バッファ51に登録がなければ、対応する命令キャッシュメモリ2_1〜2_4から、命令フェッチを行う。
SIMD型で並列動作する複数のCPUは、多少時間差はあるが、同じ命令をフェッチするので、あるCPUの命令フェッチで、命令バッファ51に登録された命令を、他のCPUがフェッチする可能性が高い。この場合、全ての命令キャッシュメモリを動作させる必要がないため、消費電力を低減させることが可能である。
SIMD型の並列処理では、異なるデータに対して同一の命令、即ち同一の処理を実行し、データ依存の処理は一般的に含まれないため、同じ命令は同時にフェッチされ続けることとなる。しかし、実際のSIMDでは必ずしも同時性を保つことができない場合がある。例えば、データキャッシュメモリでキャッシュミスが発生すると、複数のデータキャッシュメモリで順次キャッシュフィルが実行されるので、キャッシュフィル完了後には同じ命令が必ずしも同じ時刻(サイクル)に実行されるとは限らない。このため、実施形態1に係るデータ処理装置100において、SIMD型で並列動作する複数CPUの命令フェッチのタイミングにずれが発生すると、命令キャッシュメモリへのアクセスがばらばらに発生してしまい、消費電力を抑えることができなくなる場合がある。
本実施形態4に係るデータ処理装置100は、データバッファ51を備えることにより、この問題を解決している。即ち、命令バッファ51は、SIMD動作する複数のCPUが、所定期間内に同じアドレスの命令コードをフェッチする要求を発生させたときには、対応する複数の命令キャッシュメモリのうちの1個の命令キャッシュメモリから当該同じアドレスに対する1回のアクセスで読み出した命令コードを、SIMD動作する複数のCPUに供給することができるのである。
これにより、SIMD型で動作する複数CPUの命令フェッチのタイミングがずれた場合でも、そのずれを吸収して、複数の命令キャッシュメモリのうちの1個のみをアクセス対象とし、命令フェッチのために命令キャッシュメモリのアクセスに要する消費電力を抑えることができる。ここで、「所定期間」は、本来同時に発生する命令フェッチのタイミング(サイクル)について、許容されるべきずれの期間(サイクル)によって規定される。命令バッファ51のバッファサイズ、即ち保持することができる命令コードの数は、この所定期間を考慮して適切に調整される。
図13は、図12のデータ処理装置100において、一部のCPUがSIMD型並列動作を行う動作例を示す説明図である。CPU1_1〜1_4のうちCPU1_1〜1_3が同じアドレスの命令コードをフェッチする要求を発生させ、他のCPU1_4がそれとは異なるアドレスの命令コードをフェッチする要求を発生させる。このとき、Ap1=Ap2=Ap3≠Ap4となるが、上述のように、SIMD型並列動作する場合でもAp1、Ap2、Ap3のフェッチを要求するタイミングがずれる場合がある。ここで、Ap1、Ap2、Ap3の順にフェッチ要求が発生するものと仮定する。最初にAp1のフェッチが要求されたとき、命令キャッシュ共通バス5は、CPU1_1〜1_3に対応する命令キャッシュメモリ2_1〜3のうちの1個の命令キャッシュメモリ、図13では命令キャッシュメモリ2_2から読み出した命令コードを、CPU1_1に供給するとともに、命令バッファ51に保持する。次にAp2のフェッチ要求が発生した時には、Ap1とそれに対応する命令コードが命令バッファ51に保持されている。フェッチ要求されたAp2は保持されているAp1と比較される。この比較の結果、フェッチ要求されたアドレスが一致するので、対応する命令コードは、命令キャッシュメモリ2_2にアクセスすることなく、命令バッファ51からCPU2_2に供給される。その後、Ap3のフェッチ要求が発生した時にも、Ap1とそれに対応する命令コードが命令バッファ51に保持されているので、フェッチ要求されたAp3は保持されているAp1と一致する。そのため、要求されたAp3に対応する命令コードと同一である、Ap1に対応する命令コードが、命令キャッシュメモリ2_2にアクセスすることなく、命令バッファ51からCPU2_3に供給される。このように、SIMD並列動作するCPU1_1〜1_3からのフェッチ要求は、多少ずれたとしても、命令バッファ51によってそのずれが吸収され、命令キャッシュメモリ2_2へのアクセスは1回だけに抑えられる。一方、SIMD並列動作の対象外のCPU1_4からのフェッチ要求に係るアドレスAp4は、命令バッファ51に保持されているフェッチアドレスとは一致しないため、命令キャッシュメモリ2_4へアクセスすることにより、命令フェッチが行われる。
SIMD動作するCPUの個数とそれ以外のCPUの個数は、上述の例に依らず任意である。複数のCPUのうちSIMD動作するM個のCPUが所定期間内に同じアドレスの命令コードをフェッチする要求を発生させ、他のN個のCPUがその期間内に別のアドレスの命令コードをフェッチする要求を発生させたときには、データ処理装置は以下のように動作する。ここで、MとNは任意の整数である。SIMD動作するM個のCPUに対応するM個の命令キャッシュメモリのうちの1個の命令キャッシュメモリから当該同じアドレスに対する1回のアクセスで読み出した命令コードを、SIMD動作する前記M個のCPUに供給し、その他のN個のCPUには、対応するN個の命令キャッシュメモリのそれぞれから対応する命令コードを供給する。この機能は、所定の数のフェッチアドレスと対応する命令コードを保持することができる命令バッファ51を備えることにより、実現することができる。命令バッファ51は、新たなフェッチ要求がされたとき、フェッチアドレスを自身が保持するフェッチアドレスと比較し、一致するものがあれば、命令キャッシュメモリにアクセスすることなく、自身が保持する対応する命令コードを、フェッチを要求したCPUに供給する。一致するものがなければ、命令キャッシュメモリにアクセスして対応する命令コードを読み出し、フェッチを要求したCPUに供給するとともに、命令バッファ内に記憶する。
これにより、SIMD型で並列動作するM個のCPUとそれぞれが独立に並列動作可能なN個のCPUとを混在させることができる。さらに、SIMD型で並列動作する複数CPUの命令フェッチのタイミングがずれた場合でも、そのずれを吸収して、複数の命令キャッシュメモリのうちの1個のみをアクセス対象とし、命令フェッチのために命令キャッシュメモリのアクセスに要する消費電力を抑えることができる。
〔実施形態5〕<命令デコード共通バス>
図14は、実施形態5に係るデータ処理装置の構成例を示すブロック図である。
実施形態5に係るデータ処理装置100は、CPU1_1〜1_4と、CPU1_1〜1_4のそれぞれに対応する命令キャッシュメモリ(I$)2_1〜2_4とデータキャッシュメモリ(D$)3_1〜3_4と、共通バス6と、主メモリ7とを備える。
CPU1_1〜1_4は、それぞれ演算実行部(EX)11_1〜11_4と命令デコーダ(DE)12_1〜12_4とを備え、データ処理装置100は、命令デコード共有バス8をさらに備える。命令デコード共有バス8は、演算実行部(EX)11_1〜11_4と命令デコーダ(DE)12_1〜12_4とを互いに接続し、CPU1_1〜1_4の各命令デコーダ12_1〜12_4の出力を、任意のCPUの演算実行部(EX)11_1〜11_4に供給することができるように構成されている。より具体的には、例えば、図5に示される命令キャッシュ共通バス5と命令キャッシュセレクタ(SEL)4_1〜4_4の構成と同様に構成されることで実現される。
命令デコード共通バス8は、CPU1_1〜1_4が互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令デコーダ12_1〜12_4から当該アドレスに対応する命令コードのデコード結果を、対応する演算実行部11_1〜11_4に供給する。命令デコード共通バス8は、CPU1_1〜1_4のうちの複数のCPUが同じアドレスの命令コードをフェッチする要求を発生させたときには、それら複数のCPUの命令デコーダのうちの1個の命令デコーダがデコードした当該同じアドレスの命令コードのデコード結果を、それら複数のCPUの演算実行部すべてに並列に供給する。同じアドレスの命令コードのフェッチを要求する複数のCPUは、SIMD型の並列動作をしていると判定されたCPUである。ハードウェアによる判定に代えて、SIMD動作する複数のCPUを明示的に指定する機構を設けても良い。SIMD動作する複数のCPUのうちの1個のCPUの命令デコーダのデコード結果を、SIMD動作する複数のCPU全ての演算実行部に供給するように構成し、その他の命令デコーダは動作を停止させることができる。動作を停止する命令デコード部に命令コードを供給する命令フェッチ部も同様に停止させても良い。
これにより、複数のCPUを独立に動作させたときのピーク性能を落とすことなく、複数のCPUがSIMD型の動作を行うときには、複数CPUの命令デコーダのうちの1個のみを動作させ、命令のフェッチに加えデコードに要する消費電力をもさらに抑えることができる。
本実施形態5のデータ処理装置100において、命令デコーダ12_1〜12_4のうち、命令デコード動作を行わない命令デコーダ、さらにはそれに接続される命令フェッチ部を低消費電力モードに遷移させることができるように構成するとより好適である。ここで、低消費電力モードとしては、例えば、電源供給を遮断し、供給される電源電圧を低くし、クロック信号の供給を遮断し、または供給されるクロック信号の周波数を低下させるなどの方法が採用され得る。例えばDVFS制御を行うことにより、不使用の命令デコーダと命令フェッチ部に供給する電源の電圧を下げまたは遮断し、供給するクロックの周波数を下げまたは停止することにより、さらに消費電力を低減する。
これにより、SIMD型の動作をさせるときに、命令デコードのための消費電力を、さらに低く抑えることができる。
図14には、CPU1_1〜1_3がSIMD並列動作しており、同じアドレスの命令をフェッチする要求を同時に発生し、残るCPU1_4がそれとは独立に別のプログラムを実行する、即ち異なるアドレスの命令をフェッチする要求する例が示される。データ処理装置100には、SIMD動作する複数のCPUを明示的に指定する機構(不図示)が設けられ、命令デコーダ12_2のデコード結果Dd2が、SIMD動作するCPU1_1〜1_3の演算実行部11_1〜11_3に並列に供給され、他の命令デコーダ12_1と12_3およびそれらに接続される命令フェッチ部(不図示)は動作を停止されている。SIMD動作していないCPU1_4の演算実行部11_4と命令デコーダ12_4は、SIMD動作するCPU1_1〜1_3とは独立に並列に動作する。
CPU1_1〜1_3はSIMD並列動作しているので、それぞれ対応する命令キャッシュメモリ2_1〜2_3にフェッチ要求する命令のアドレスは、本来は同じアドレスである。しかし、命令デコーダ12_1と12_3およびそれらに接続される命令フェッチ部(不図示)は動作を停止されているので、CPU1_2が代表してアドレスAc2によりその命令フェッチを要求し、命令キャッシュメモリ2_2から命令コードCc2をフェッチする。命令デコーダ12_2はフェッチされた命令コードCc2をデコードした結果Dd2をSIMD並列動作するCPU1_1〜1_3の演算実行部11_1〜11_3に並列に供給する。一方、SIMD並列動作していないCPU1_4はこれらとは独立且つ並列に、アドレスAc4により命令キャッシュメモリ2_4から命令コードCc4を読み出してフェッチし、命令デコーダ12_4がフェッチされた命令コードCc4をデコードした結果Dd4を演算実行部11_4に供給する。
以上のように、SIMD並列動作するCPU1_1〜1_3のうち、動作する1個を除く命令デコーダ1_1と1_3の動作を停止させることにより、消費電力を低減することができる。命令デコーダ1_1と1_3を低消費電力モードに遷移させることにより、消費電力はさらに低減される。また、動作を停止する命令デコーダ1_1と1_3に接続される命令フェッチ部(不図示)と命令キャッシュメモリ2_1と2_3も動作を停止しているため、消費電力の低減に寄与しており、これらも合わせて低消費電力モードに遷移させることにより、消費電力はさらに低減される。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、CPUは、フォンノイマン型、ハーバードアーキテクチャなど、如何なるアーキテクチャのプロセッサであってもよい。
1 CPU
2 命令キャッシュメモリ(I$)
3 データキャッシュメモリ(D$)
4 命令キャッシュセレクタ(SEL)
5 命令キャッシュ共通バス
51 命令バッファ
6 共通バス
7 メモリ(メインメモリまたは2次キャッシュメモリ)
8 命令デコード共通バス
9 キャッシュ監視部
10 単一CPUブロック
11 演算実行部(EX)
12 命令デコード部(DE)
13 セレクタ
14 選択情報
100 データ処理装置(複数CPUブロック)
101 画像処理IP
102 音声処理IP
103 DMAコントローラ
104 SRAM
105 フラッシュメモリ(Flash)
106 周辺回路(タイマ等)
107 外部インターフェース(I/F)
108 システムバス
1000 メディア処理システム

Claims (18)

  1. 複数のCPUと、前記複数のCPUのそれぞれに対応する複数のメモリとを備え、
    前記複数のCPUがそれぞれ対応するメモリから互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応するメモリから当該命令コードを対応するCPUに供給し、
    前記複数のCPUがそれぞれ対応するメモリから同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のメモリのうちの1個のメモリから当該同じアドレスに対する1回のアクセスで読み出した当該命令コードを、前記複数のCPUに並列に供給する、データ処理装置。
  2. 請求項1において、前記メモリは命令キャッシュメモリであり、命令キャッシュ共通バスをさらに備え、前記命令キャッシュ共通バスは、前記複数のCPUと前記複数の命令キャッシュメモリとに接続され、
    前記複数のCPUが互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令キャッシュメモリから当該命令コードを対応するCPUに供給し、
    前記複数のCPUが同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数の命令キャッシュメモリのうちの1個の命令キャッシュメモリから当該アドレスに対する1回のアクセスで読み出した当該命令コードを、前記複数のCPUに並列に供給する、データ処理装置。
  3. 請求項2において、前記複数のCPUのうちM個のCPUが同じアドレスの命令コードをフェッチする要求を発生させ、他のN個のCPUが前記アドレスとは異なるアドレスの命令コードをフェッチする要求を発生させたときには(MとNは整数)、
    前記M個のCPUに対応するM個の命令キャッシュメモリのうちの1個の命令キャッシュメモリから当該同じアドレスに対する1回のアクセスで読み出した当該命令コードを、前記M個のCPUに並列に供給し、
    前記N個のCPUに対応するN個の命令キャッシュメモリからは、それぞれ対応するCPUに、対応する命令コードを供給する、データ処理装置。
  4. 請求項3において、前記複数のCPUのうちどのCPUが、前記M個のCPUとして機能するかを指定することが可能な、モード設定機構をさらに備える、データ処理装置。
  5. 請求項3において、前記複数のCPUが命令フェッチを要求するときに発行するアドレスを監視し、同じアドレスの命令コードのフェッチを要求するCPUを、前記M個のCPUとして指定する、データ処理装置。
  6. 請求項1において、前記メモリは命令キャッシュメモリであり、命令バッファをさらに備え、前記命令バッファは、前記複数のCPUと前記複数の命令キャッシュメモリとに接続され、
    前記命令バッファは、前記複数のCPUが、所定期間内に同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数の命令キャッシュメモリのうちの1個の命令キャッシュメモリから当該アドレスに対する1回のアクセスで読み出した当該命令コードを、前記複数のCPUに供給し、
    前記命令バッファは、前記複数のCPUが、前記所定期間内に互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令キャッシュメモリから当該命令コードを対応するCPUに供給する、データ処理装置。
  7. 請求項6において、前記複数のCPUのうちM個のCPUが前記所定期間内に同じアドレスの命令コードをフェッチする要求を発生させ、他のN個のCPUが前記所定期間内に前記同じアドレスとは異なるアドレスの命令コードをフェッチする要求を発生させたときには(MとNは整数)、
    前記M個のCPUに対応するM個の命令キャッシュメモリのうちの1個の命令キャッシュメモリから当該同じアドレスに対する1回のアクセスで読み出した当該命令コードを、前記M個のCPUに供給し、
    前記N個のCPUに対応するN個の命令キャッシュメモリからは、それぞれ対応するCPUに、対応する命令コードを供給する、データ処理装置。
  8. 請求項1において、前記複数のメモリのうち、アクセス対象外のメモリを低消費電力モードに遷移させる、データ処理装置。
  9. 請求項1において、前記複数のCPUのそれぞれは、演算実行部と命令デコード部とを含み、前記データ処理装置は、命令デコード共通バスをさらに備え、
    前記命令デコード共通バスは、前記複数のCPUの演算実行部と、前記複数のCPUの命令デコード部とに接続され、
    前記複数のCPUが互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、それぞれ対応する命令デコード部から当該命令コードのデコード結果を対応する演算実行部に供給し、
    前記複数のCPUが同じアドレスの命令コードをフェッチする要求を発生させたときには、前記複数のCPUの命令デコード部のうちの1個の命令デコード部がデコードした当該命令コードのデコード結果を、対応する演算実行部に並列に供給する、データ処理装置。
  10. 請求項9において、前記複数の命令デコード部のうち、命令デコード動作を行わない命令デコード部を低消費電力モードに遷移させる、データ処理装置。
  11. 複数のCPUと、メモリと、前記複数のCPUと前記メモリとを互いに接続する共通バスとを備え、
    前記複数のCPUが前記メモリから互いに異なるアドレスの命令コードをフェッチする要求を発生させたときには、前記メモリのそれぞれ対応するアドレスから当該命令コードを対応するCPUに順次供給し、
    前記複数のCPUが前記メモリから同じアドレスの命令コードをフェッチする要求を発生させたときには、前記メモリから当該同じアドレスに対する1回のアクセスで読み出した当該命令コードを、前記複数のCPUに並列に供給する、データ処理装置。
  12. 請求項11において、前記複数のCPUのうちM個のCPUが同じアドレスの命令コードをフェッチする要求を発生させ、他のN個のCPUが前記同じアドレスとは異なるアドレスの命令コードをフェッチする要求を発生させたときには(MとNは整数)、
    前記M個のCPUがフェッチを要求する命令コードを、前記メモリから当該同じアドレスに対する1回のアクセスで読み出し、読み出した当該命令コードを前記M個のCPUに並列に供給し、
    前記N個のCPUがフェッチを要求するそれぞれの命令コードは、前記メモリから順次読み出し、読み出した命令コードを対応するCPUに順次供給する、データ処理装置。
  13. 請求項12において、前記複数のCPUのうちどのCPUが、前記M個のCPUとして機能するかを指定することが可能な、モード設定機構をさらに備える、データ処理装置。
  14. 請求項12において、前記複数のCPUが命令フェッチを要求するときに発行するアドレスを監視し、同じアドレスの命令コードのフェッチを要求するCPUを、前記M個のCPUとして指定する、データ処理装置。
  15. 複数のCPUと、前記複数のCPUにそれぞれ接続される複数の命令キャッシュメモリと、主メモリと、前記複数の命令キャッシュメモリと前記主メモリとを互いに接続する共通バスとを備え、
    前記複数の命令キャッシュメモリが前記主メモリから互いに異なるアドレスの命令コードを読み出す要求を発生させたときには、前記主メモリのそれぞれ対応するアドレスから当該命令コードを対応する命令キャッシュメモリに順次供給し、
    前記複数の命令キャッシュメモリが前記主メモリから同じアドレスの命令コードを読み出す要求を発生させたときには、前記主メモリから当該同じアドレスに対する1回のアクセスで読み出した当該命令コードを、前記複数の命令キャッシュメモリに並列に供給する、データ処理装置。
  16. 請求項15において、前記複数のCPUのうちM個のCPUにそれぞれ接続されるM個の命令キャッシュメモリが同じアドレスの一連の命令コード群を前記主メモリから読み出してキャッシュフィルを行う要求を発生させ、他のN個のCPUが前記同じアドレスの一連の命令コード群とは異なり且つ互いに異なるアドレスの一連の命令コード群を読み出してキャッシュフィルを行う要求を発生させたときには(MとNは整数)、
    前記M個のCPUがキャッシュフィルを要求する一連の命令コード群を、前記主メモリから一連のアクセスで読み出し、読み出した当該一連の命令コード群を前記M個のCPUに並列に供給し、
    前記N個のCPUがキャッシュフィルを要求するそれぞれの一連の命令コード群は、前記主メモリから順次読み出し、対応する命令キャッシュメモリに順次供給する、データ処理装置。
  17. 請求項16において、前記複数のCPUのうちどのCPUが、前記M個のCPUとして機能するかを指定することが可能な、モード設定機構をさらに備える、データ処理装置。
  18. 請求項16において、前記複数の命令キャッシュメモリがキャッシュフィルを要求するときに発行するアドレスを監視し、同じアドレスの命令コードのキャッシュフィルを要求する命令キャッシュメモリに対応するCPUを、前記M個のCPUとして指定する、データ処理装置。
JP2014160967A 2014-08-07 2014-08-07 データ処理装置 Active JP6396715B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014160967A JP6396715B2 (ja) 2014-08-07 2014-08-07 データ処理装置
US14/804,293 US9715454B2 (en) 2014-08-07 2015-07-20 Data processing device with multiple CPUs operating as an SIMD type

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014160967A JP6396715B2 (ja) 2014-08-07 2014-08-07 データ処理装置

Publications (2)

Publication Number Publication Date
JP2016038690A true JP2016038690A (ja) 2016-03-22
JP6396715B2 JP6396715B2 (ja) 2018-09-26

Family

ID=55267503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014160967A Active JP6396715B2 (ja) 2014-08-07 2014-08-07 データ処理装置

Country Status (2)

Country Link
US (1) US9715454B2 (ja)
JP (1) JP6396715B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394603B2 (en) * 2017-07-28 2019-08-27 Genband Us Llc Virtual container processing on high performance computing processors
CN112506851B (zh) * 2020-12-02 2022-02-11 广东电网有限责任公司佛山供电局 一种解决多核访问冲突的soc芯片架构构建方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03211656A (ja) * 1989-11-17 1991-09-17 Texas Instr Inc <Ti> マルチプロセッサシステム
JPH07141304A (ja) * 1993-11-19 1995-06-02 Hitachi Ltd メモリアレーを用いた並列演算装置
WO2008023576A1 (fr) * 2006-08-23 2008-02-28 Nec Corporation Élément de traitement, système de processeur parallèle en mode mixte, procédé pour élément de traitement, procédé pour processeur parallèle en mode mixte, programme pour élément de traitement, et programme pour processeur parallèle en mode mixte
WO2010122746A1 (ja) * 2009-04-22 2010-10-28 パナソニック株式会社 情報処理装置
JP2014044732A (ja) * 2013-10-03 2014-03-13 Fujitsu Ltd マルチコアプロセッサシステム、制御方法および制御プログラム

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04291642A (ja) 1991-03-20 1992-10-15 Fujitsu Ltd キャッシュ制御方式
US5696985A (en) * 1995-06-07 1997-12-09 International Business Machines Corporation Video processor
JPH09198310A (ja) 1996-01-19 1997-07-31 Nec Eng Ltd マルチプロセッサシステム
DE69841526D1 (de) * 1997-03-04 2010-04-15 Panasonic Corp Zur effizienten Ausführung vieler asynchronen Ereignisaufgaben geeigneter Prozessor
US6125429A (en) * 1998-03-12 2000-09-26 Compaq Computer Corporation Cache memory exchange optimized memory organization for a computer system
JP2000268006A (ja) * 1999-03-15 2000-09-29 Fuji Xerox Co Ltd マルチプロセッサシステム
US20030115402A1 (en) * 2001-11-16 2003-06-19 Fredrik Dahlgren Multiprocessor system
US7555607B2 (en) * 2005-11-10 2009-06-30 Hewlett-Packard Development Company, L.P. Program thread syncronization for instruction cachelines
US7707388B2 (en) * 2005-11-29 2010-04-27 Xmtt Inc. Computer memory architecture for hybrid serial and parallel computing systems
EP2343657A4 (en) * 2008-09-24 2016-05-25 Fujitsu Ltd POWER CONSUMPTION CONTROL METHOD IN A MULTI-CORE CPU, POWER CONSUMPTION PROGRAM, AND INFORMATION PROCESSING SYSTEM
US8266504B2 (en) * 2009-04-14 2012-09-11 International Business Machines Corporation Dynamic monitoring of ability to reassemble streaming data across multiple channels based on history
US8230176B2 (en) * 2009-06-26 2012-07-24 International Business Machines Corporation Reconfigurable cache
JP2011034190A (ja) * 2009-07-30 2011-02-17 Renesas Electronics Corp データ処理装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03211656A (ja) * 1989-11-17 1991-09-17 Texas Instr Inc <Ti> マルチプロセッサシステム
JPH07141304A (ja) * 1993-11-19 1995-06-02 Hitachi Ltd メモリアレーを用いた並列演算装置
WO2008023576A1 (fr) * 2006-08-23 2008-02-28 Nec Corporation Élément de traitement, système de processeur parallèle en mode mixte, procédé pour élément de traitement, procédé pour processeur parallèle en mode mixte, programme pour élément de traitement, et programme pour processeur parallèle en mode mixte
WO2010122746A1 (ja) * 2009-04-22 2010-10-28 パナソニック株式会社 情報処理装置
JP2014044732A (ja) * 2013-10-03 2014-03-13 Fujitsu Ltd マルチコアプロセッサシステム、制御方法および制御プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
上野 伸也、外2名: "「命令フェッチ機構の共有に基づく低消費エネルギー化手法の提案」", 電子情報通信学会2010年総合大会講演論文集, vol. エレクトロニクス講演論文集2, JPN6018019014, 2 March 2010 (2010-03-02), JP, pages 108, ISSN: 0003801948 *

Also Published As

Publication number Publication date
US20160041912A1 (en) 2016-02-11
US9715454B2 (en) 2017-07-25
JP6396715B2 (ja) 2018-09-26

Similar Documents

Publication Publication Date Title
US11567780B2 (en) Apparatus, systems, and methods for providing computational imaging pipeline
CN107408036B (zh) 用户级分叉与结合处理器、方法、系统和指令
US7814252B2 (en) Asymmetric multiprocessor
US10860487B2 (en) Multi-core processing device and method of transferring data between cores thereof
US9727385B2 (en) Graphical processing unit (GPU) implementing a plurality of virtual GPUs
US20120198165A1 (en) Mechanism to Update the Status of In-Flight Cache Coherence In a Multi-Level Cache Hierarchy
US20120173847A1 (en) Parallel processor and method for thread processing thereof
JP2012038293A (ja) マシンビジョン用マルチプロセッサシステムオンチップ
US8694705B2 (en) Information processing device
US9201821B2 (en) Interrupt timestamping
EP3979072B1 (en) Firmware boot task distribution to enable low latency boot performance
US10872004B2 (en) Workload scheduling and coherency through data assignments
US7337251B2 (en) Information processing device with priority-based bus arbitration
JP2007219816A (ja) マルチプロセッサシステム
JP2007004382A (ja) マルチプロセッサシステム
US9965395B2 (en) Memory attribute sharing between differing cache levels of multilevel cache
JP6396715B2 (ja) データ処理装置
TW201423403A (zh) 共用資源的存取請求之有效率處理
US9035961B2 (en) Display pipe alternate cache hint
US20080244221A1 (en) Exposing system topology to the execution environment
JP5636276B2 (ja) 半導体装置
JP2008041059A (ja) マルチプロセッサ制御装置及び情報処理装置
KR20210091048A (ko) Soc의 동적 열 분배를 위한 시스템, 장치 및 방법
US11157329B2 (en) Technology for managing per-core performance states
Dongare et al. Design of Shared Resource Based Multicore Embedded Controller Using LEON Processor

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20170330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180727

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180807

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180830

R150 Certificate of patent or registration of utility model

Ref document number: 6396715

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150