JP2010146102A - Arithmetic processor and storage area allocation method - Google Patents
Arithmetic processor and storage area allocation method Download PDFInfo
- Publication number
- JP2010146102A JP2010146102A JP2008319993A JP2008319993A JP2010146102A JP 2010146102 A JP2010146102 A JP 2010146102A JP 2008319993 A JP2008319993 A JP 2008319993A JP 2008319993 A JP2008319993 A JP 2008319993A JP 2010146102 A JP2010146102 A JP 2010146102A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- arithmetic
- storage area
- circuit
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System (AREA)
Abstract
Description
本発明は、演算処理に対してメモリを構成する技術に関し、特に機能の変更が可能な演算処理装置においてメモリを構成する技術に関する。 The present invention relates to a technique for configuring a memory for arithmetic processing, and more particularly to a technique for configuring a memory in an arithmetic processing device capable of changing functions.
近年、ALU(Arithmetic Logic Unit)と呼ばれる基本演算機能を1つ以上持つ演算ユニットを備えた処理装置(プロセッサ)の開発が進められている(たとえば特許文献1参照)。この演算ユニットは、複数のALUを含むALU列と、ALU列の間に設けられた接続部を備えて構成される。処理装置においては、ALUアレイに対してコマンドデータが設定されることにより、ALU回路の演算機能と、前後段のALU列を接続する接続部が制御され、全体として所期の演算処理が実現される。コマンドデータは、一般にC言語等の高級プログラム言語で記述されたソースプログラムからデータフローグラフ(DFG:Data Flow Graph)を作成し、その情報をもとに作成される。 In recent years, development of processing devices (processors) including an arithmetic unit having one or more basic arithmetic functions called ALU (Arithmetic Logic Unit) has been promoted (see, for example, Patent Document 1). This arithmetic unit is configured to include an ALU column including a plurality of ALUs and a connection portion provided between the ALU columns. In the processing device, by setting command data to the ALU array, the arithmetic function of the ALU circuit and the connection part connecting the preceding and succeeding ALU columns are controlled, and the expected arithmetic processing is realized as a whole. The The command data is generally created based on the data flow graph (DFG: Data Flow Graph) created from a source program written in a high-level program language such as C language.
複数の演算ユニットをもつ処理装置では、実現したい演算処理によって各演算ユニットの必要とするメモリ量が異なるため、メモリ構成を可変にできることが望ましい。そのため、メモリ再構成回路を備えた半導体装置を提案するものがある(たとえば特許文献2参照)。
しかしながら、特許文献2に開示された半導体装置では、すべての演算ユニットがすべてのRAMを用いて、必要とする容量のメモリを構成する。そのため、メモリ再構成に必要なスイッチや配線が多くなり、半導体装置全体の回路規模が増大している。
However, in the semiconductor device disclosed in
本発明はこうした状況に鑑みてなされたもので、その目的は、回路規模の縮小化に貢献するメモリ構成技術を提供することにある。 The present invention has been made in view of such circumstances, and an object thereof is to provide a memory configuration technique that contributes to a reduction in circuit scale.
上記課題を解決するために、本発明のある態様の演算処理装置は、機能の変更が可能な演算処理装置であって、演算処理を行なう複数の演算ユニットと、複数の記憶領域と、各演算ユニットに対して、少なくとも1つの記憶領域を用いてアドレス空間を構成する記憶領域構成回路とを備える。少なくとも1つの記憶領域は、複数の演算ユニットの一部にのみ接続されている。 In order to solve the above problems, an arithmetic processing device according to an aspect of the present invention is an arithmetic processing device capable of changing a function, and includes a plurality of arithmetic units that perform arithmetic processing, a plurality of storage areas, and each arithmetic operation. The unit includes a storage area configuration circuit that forms an address space using at least one storage area. At least one storage area is connected to only some of the plurality of arithmetic units.
本発明の別の態様もまた、演算処理装置である。この装置は、機能の変更が可能な演算処理装置であって、複数の独立した演算処理を行なう少なくとも1つの演算ユニットと、複数の記憶領域と、各演算処理に対して、少なくとも1つの記憶領域を用いてアドレス空間を構成する記憶領域構成回路とを備える。少なくとも1つの記憶領域は、複数の演算処理の一部にのみ利用されるように演算ユニットに接続されている。 Another embodiment of the present invention is also an arithmetic processing device. This apparatus is an arithmetic processing unit capable of changing functions, and includes at least one arithmetic unit that performs a plurality of independent arithmetic processes, a plurality of storage areas, and at least one storage area for each arithmetic process. And a storage area configuration circuit that configures an address space. At least one storage area is connected to the arithmetic unit so as to be used only for a part of the plurality of arithmetic processes.
本発明のさらに別の態様は、記憶領域割当方法である。この方法は、複数の演算処理を実行することができ、かつ演算処理に対する記憶領域を構成可能な記憶領域構成回路を備えた演算処理装置に対して、各演算処理に割り当てる記憶領域を定める記憶領域割当方法であって、各演算処理が保持しなければならないデータ量に応じて、各演算処理が使用可能な記憶領域を割り当てる。 Yet another aspect of the present invention is a storage area allocation method. In this method, a storage area for determining a storage area to be assigned to each arithmetic process is provided for an arithmetic processing apparatus having a storage area configuration circuit capable of executing a plurality of arithmetic processes and having a storage area for the arithmetic process. According to the allocation method, a storage area that can be used by each arithmetic processing is allocated according to the amount of data that each arithmetic processing must hold.
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。 It should be noted that any combination of the above components and the expression of the present invention expressed as a method, apparatus, system, and computer program are also effective as an aspect of the present invention.
本発明によれば、効率的なメモリ構成技術を提供することができる。 According to the present invention, an efficient memory configuration technique can be provided.
図1は、実施の形態に係る処理装置10の基本構成図である。処理装置10は、集積回路装置26、コンパイル部30、データフローグラフ処理部31、設定データ生成部32および記憶部34を備える。処理装置10は、機能の変更が可能な演算処理装置として構成される。
FIG. 1 is a basic configuration diagram of a
集積回路装置26は1チップとして構成され、演算ユニット12、設定部14、制御部18、内部状態保持回路20、第1フィードバック経路24、メインメモリ27および第2フィードバック経路29を備える。演算ユニット12は複数の演算器で構成され、設定を変更することにより、機能の変更を可能とするリコンフィギュラブル回路である。演算ユニット12は組合せ回路または順序回路等の論理回路として構成される。第1フィードバック経路24および第2フィードバック経路29は、フィードバックパスとして機能し、演算ユニット12の出力を、演算ユニット12の入力に接続する。
The
演算ユニット12は、それぞれが複数の演算機能を選択的に実行可能な論理回路の多段配列と、前段の論理回路の出力と後段の論理回路の入力の接続関係を設定可能な接続部とを備える。構造的には、複数の論理回路列の間に、論理回路列間の接続用結線を設定する接続部が設けられる。演算ユニット12は、複数段に配列された各論理回路の機能、および論理回路間の接続を任意に設定することで、機能の変更を可能とする。
The
演算ユニット12は、パイプライン構成を有し、複数のスレッドを同時に実行することができる。スレッドは、演算ユニット12に実行させる処理単位であり、各スレッドの処理は、それ自体で完結する。複数のスレッドは、互いに独立して実行され、スレッド同士の間でデータの受け渡しがあるものであってもよい。処理装置10は、複数種類の回路のコンフィギュレーションを演算ユニット12上で同時に実現できる。
The
設定部14は、第1回路設定部14a、第2回路設定部14b、第3回路設定部14c、および第4回路設定部14dを有し、演算ユニット12に所期の回路を構成するための設定データ40を供給する。各回路設定部14a〜14dは、プログラムカウンタのカウント値に基づいて、保持するデータを出力するコマンドメモリとして構成されてもよい。この場合、制御部18がシーケンサとして機能してプログラムカウンタの出力を制御し、設定データ40がコマンドメモリから出力されるコマンドデータとなる。
The
ここでは演算ユニット12が、4段のALU列で構成されたALUアレイであることを前提とする。具体的に、第1回路設定部14a、第2回路設定部14b、第3回路設定部14cおよび第4回路設定部14dは、それぞれ異なるスレッドを実行するための設定データ40を、演算ユニット12のパイプラインにおいて、各段における接続部およびALU列で構成されるリコンフィギュラブルユニットに所定の順序で供給する。これにより、ALUアレイの各段には、それぞれ異なる種類の回路の一部が構成されることになり、マルチスレッド処理機能が実現される。
Here, it is assumed that the
内部状態保持回路20は、例えばデータフリップフロップ(DFF)などの順序回路として構成され、演算ユニット12の出力を受け付ける。内部状態保持回路20は第1フィードバック経路24に接続されており、演算ユニット12の出力を直接演算ユニット12の入力にフィードバックさせる。なお第1フィードバック経路24は、演算ユニット12の最下段の出力のみを最上段に入力するように構成されてもよい。
The internal
メインメモリ27は、演算ユニット12から出力される出力データを格納するためのRAMにより構成される。メインメモリ27は、演算ユニット12の出力データを一時的に保持し、演算ユニット12に戻す機能をもつ。メインメモリ27は、制御部18からのチップイネーブル(CE)信号およびアドレス信号に基づいて、データの書込/読出を行う。メインメモリ27は第2フィードバック経路29に接続されており、制御部18からの読出指示に基づいて、所期のタイミングでデータを演算ユニット12の入力にフィードバックさせる。なお、設定部14がコマンドメモリとして構成されている場合、コマンドメモリから供給されるコマンドデータで、メインメモリ27のデータの書込/読出を行ってもよい。
The
処理装置10においては、演算ユニット12の出力を演算ユニット12の入力にフィードバックする経路が、第1フィードバック経路24および第2フィードバック経路29の2系統存在する。第1フィードバック経路24は、メインメモリ27を介さないために、演算ユニット12の出力データを高速にフィードバック処理することが可能である。一方、第2フィードバック経路29は、制御部18からの指示により所期のタイミングでデータ信号を演算ユニット12に供給することができる。このように、第1フィードバック経路24または第2フィードバック経路29は、演算ユニット12上に再構成する回路に応じて適宜使い分けられる。
In the
演算ユニット12は、機能の変更が可能な論理回路を有して構成される。複数の論理回路は、マトリックス状に配置された構造をとってもよい。各論理回路の機能と、論理回路間の接続関係は、設定部14により供給される設定データ40に基づいて設定される。また、論理回路内において、基本演算素子同士を接続する組合せ用結線も、設定データ40に基づいて設定される。設定データ40は、以下の手順で生成される。
The
集積回路装置26により実現されるべきプログラム36が、記憶部34に保持されている。プログラム36は、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをC言語などの高級言語で記述したものである。コンパイル部30は、記憶部34に格納されたプログラム36をコンパイルし、データフローグラフ(DFG)38に変換して記憶部34に格納する。データフローグラフ38は、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。一般に、データフローグラフ38は、上から下に向かって演算が進むように作成される。
A
データフローグラフ処理部31は、コンパイル部30により生成されたデータフローグラフ38から、所定の規則を有するデータフローの一群を探索する。このデータフローの一群は、演算ノード間に所定の接続関係を有するノードの集合であって、予め記憶部34において登録されている。データフローグラフ処理部31は、所定のデータフローの一群を探索して、その一群を構成するノード数よりも少ない数のノードに置換する。
The data flow
なお、データフローの一群から置換されたノードは、演算ユニット12の論理回路で処理可能なノードである必要がある。これに対応して、論理回路は、置換されたノードを処理するために、自身のもつ複数の基本演算素子を所定の順序で組み合わせるための組合せ用結線を有して構成される。これにより、論理回路は基本演算素子の数を増やすことなく、組合せ用結線をもつことで、複数の基本演算素子により実行される新たな演算機能をもつことができる。言い換えると、論理回路における複数の基本演算素子の可能な組合せに応じて、所定の規則を有するデータフローの一群を予め登録し、データフローグラフ処理部31が、1つの論理回路において実行可能なデータフローの一群を探索して、1つのノードに置換することが可能となる。
The node replaced from the group of data flows needs to be a node that can be processed by the logic circuit of the
設定データ生成部32は、データフローグラフ処理部31により処理されたデータフローグラフ38から設定データ40を生成する。設定データ40は、データフローグラフ38を演算ユニット12にマッピングするためのデータであり、演算ユニット12における論理回路の機能や論理回路間の接続関係を定める。
The setting
なお設定データ生成部32は、コンパイル部30により生成されたメモリ(RAM)と演算ユニット12またはスレッドなどの演算処理単位との関係をもとに、メモリと演算ユニット12との接続関係、およびメモリアクセスに関する制御を定める設定データ40も生成する。この設定データ40は、メインメモリ27の再構成に利用される。
Note that the setting
図2は、演算ユニット12の構成を示す。演算ユニット12は、複数の演算機能を選択的に実行可能な論理回路50より構成される論理回路列を複数備える。具体的に、演算ユニット12は、論理回路列の多段配列と、各段に設けられた接続部52を備えて構成される。接続部52は、前段の論理回路の出力と後段の論理回路の入力の任意の接続関係あるいは予め定められた接続関係の組合せの中から選択された接続関係を設定することができる。また接続部52は、前段の論理回路の出力信号を保持することができる。演算ユニット12では、論理回路の多段配列構造により、上段から下段に向かって演算が進められる。
FIG. 2 shows the configuration of the
演算ユニット12は、論理回路50としてALU(Arithmetic Logic Unit)を有している。ALUは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ALUは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ALUが、2つの入力端子と1つの出力端子を有して構成される。なおALUは、3つ以上の入力端子を有してもよく、また2つ以上の出力端子を有してもよい。
The
図示のように、演算ユニット12は、縦方向にX個、横方向にY個のALUが配置されたX段Y列のALUアレイとして構成される。図2は、4段のALU列53を有するALUアレイを示し、接続部52a、ALU列53a、接続部52b、ALU列53b、接続部52c、ALU列53c、接続部52d、ALU列53d、接続部52eが、この順に接続されている。接続部52と後段のALU列53はリコンフィギュラブルユニットを構成し、リコンフィギュラブルユニットにおいて接続部52は、外部から入力される変数や定数を、後段のALU列53における所期のALUに供給する機能を有している。また接続部52は、前段のALUの演算結果を外部に直接出力することもできる。なおALUアレイは、複数のALUの物理的配置がアレイ状である必要はなく、ALU間の接続関係がアレイ状に構成されていればよい。
As shown in the figure, the
ALU11、ALU12、・・・、ALU1Yから構成される第1段のALU列53aには、接続部52aを介して変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、接続部52bに設定された接続にしたがって、ALU21、ALU22、・・・、ALU2Yから構成される第2段のALU列53bに入力される。接続部52bにおいては、ALU列53aの出力とALU列53bの入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように結線が構成されており、設定により所期の結線が有効となる。以下、最終段である接続部52eまで同様の構成である。各接続部52はDFF回路としての機能を有し、最終段の接続部52eは、図1に示す内部状態保持回路20として機能してもよい。
Variables and constants are input to the first-
回路のコンフィギュレーションは1クロックで行われる。具体的に、設定部14が1クロックごとに設定データを演算ユニット12にマッピングする。なお図1では、設定部14が4つの第1回路設定部14a〜第4回路設定部14dを有しているが、図2に示すように演算ユニット12が、5つの接続部52および4つのALU列53で構成される場合は、各接続部52および各ALU列53に設定データ40を供給するために、設定部14は、9つの回路設定部を有して構成されてもよい。
Circuit configuration is performed in one clock. Specifically, the setting
各ALU列53の出力は、後段の接続部52に保持される。複数スレッドの実行中、接続部52のDFF回路は、前段の論理回路から出力されるデータを保持し、次のクロックで、前段の論理回路が実行していたスレッドと同一のスレッドを実行する後段の論理回路に、保持したデータを供給する。このように、1つのスレッドの処理は、クロックごとに1つ後段のALU列53において実行されることになる。最終段で処理されると、また最上段のALU列からクロックごとに1段ずつ下がっていく。これにより、マルチスレッド処理を実行でき、効率的な回路コンフィギュレーションを実現できる。 The output of each ALU column 53 is held in the subsequent connection unit 52. During the execution of a plurality of threads, the DFF circuit of the connection unit 52 holds the data output from the preceding logic circuit and executes the same thread as the thread executed by the preceding logic circuit at the next clock. The held data is supplied to the logic circuit. As described above, the processing of one thread is executed in the ALU row 53 at the next stage for each clock. When processing is performed in the final stage, it is lowered one stage at a time from the uppermost ALU column. Thereby, multi-thread processing can be executed, and an efficient circuit configuration can be realized.
図3は、マルチスレッド処理を説明するための説明図である。第Tクロックで、ALU列53aがスレッド1を、ALU列53bがスレッド4を、ALU列53cがスレッド3を、ALU列53dがスレッド2をそれぞれ処理する。次の第(T+1)クロックで、ALU列53aがスレッド2を、ALU列53bがスレッド1を、ALU列53cがスレッド4を、ALU列53dがスレッド3をそれぞれ処理する。このように、各スレッドが、1クロックごとに後段のALU列53により処理されることで、マルチスレッド処理が実行される。
FIG. 3 is an explanatory diagram for explaining multithread processing. At the T-th clock, the
図1に戻って、回路の構成時、制御部18は、設定データ40を記憶部34から選択して読み出し、設定部14に供給する。設定部14は、各設定データ40を格納する。設定部14がコマンドメモリとして構成されている場合、制御部18は設定部14に対してプログラムカウンタ値を与え、設定部14は、そのカウンタ値に応じて格納した設定データを、コマンドデータとして演算ユニット12に設定する。なお、設定部14は、キャッシュメモリや他の種類のメモリを有して構成されてもよい。なお、本例においては、制御部18が記憶部34から設定データ40を受けて、その設定データを設定部14に供給する構成について説明するが、制御部18を介さずに、予め設定部14に設定データを格納しておいてもよい。
Returning to FIG. 1, when the circuit is configured, the
設定部14は、設定データ40を演算ユニット12に設定し、演算ユニット12に回路を逐次再構成させる。これにより、演算ユニット12は、所期の演算を実行できる。演算ユニット12は、基本セルとして高性能の演算能力のあるALUを用いており、また演算ユニット12および設定部14を1チップ上に構成することから、コンフィグレーションを高速に1クロックで実現することができる。制御部18はクロック機能を有し、クロック信号は、メインメモリ27に供給される。また制御部18は4進カウンタを含み、カウント信号を設定部14に供給してもよい。
The setting
図1は、1つの演算ユニット12を備えた処理装置10の基本構成を示すが、以下において、処理装置10は、複数の演算ユニット12を有し、各演算ユニット12がメインメモリ27を構成するために使用可能な記憶領域(RAM)を制限することで、全体の回路規模を小型化する。具体的には演算ユニット12とRAMの接続をハードウェア上で制限することで、回路規模を削減しつつ、接続制限されたなかで、演算ユニット12にRAMを効率的に割り当てる。なお以下では、処理装置10が、複数の演算ユニット12のメインメモリ27の構成機能を有する例について説明するが、メインメモリ27の再構成機能は、演算ユニット単位のほか、スレッド単位で実現されてもよい。
FIG. 1 shows a basic configuration of a
図4は、本実施形態の処理装置10の構成の一例を示す。図4に示す処理装置10は複数の演算ユニット12a、12b、12c、12dを備え、各演算ユニット12に対してメモリを再構成可能なメモリ構成機能をもつ。メモリ群として、共通メモリ回路60、個別メモリ回路70、個別メモリ回路80が設けられ、共通メモリ回路60、個別メモリ回路70、80のそれぞれは、第1選択回路110と2つのRAM100とから構成される。なお各メモリ回路は、3つ以上のRAM100を有してもよく、また1つのRAM100のみを有してもよい。なお処理装置10は、複数の集積回路装置26(図1参照)を備え、複数の集積回路装置26で使用できる再構成機能をもつメモリを有した構成をとってもよい。またこの場合、再構成機能をもつメモリを使用しない演算ユニット12が存在してもよい。
FIG. 4 shows an example of the configuration of the
具体的に共通メモリ回路60は、演算ユニット12a、12b、12dにより使用可能であり、第1選択回路110aと、RAM100e、100fを有する。個別メモリ回路70は、演算ユニット12a、12bのみにより使用可能であり、第1選択回路110bと、RAM100a、100bを有する。個別メモリ回路80は、演算ユニット12c、12dのみにより使用可能であり、第1選択回路110cと、RAM100c、100dを有する。ここでは、RAM100aの容量が2048バイトで、それ以外のRAM100b〜100fの容量が1024バイトであるとし、各演算ユニット12での演算結果や途中のデータを保持するメモリを、メモリ群のRAM100を用いて構成する例を示す。
Specifically, the
演算ユニット12に対して、メモリ群との接続を選択する第2選択回路120が設けられる。第2選択回路120aは、演算ユニット12aに対して設けられ、共通メモリ回路60または個別メモリ回路70のいずれかと演算ユニット12aとを接続する。第2選択回路120bは、演算ユニット12bに対して設けられ、共通メモリ回路60または個別メモリ回路70のいずれかと演算ユニット12bとを接続する。第2選択回路120cは、演算ユニット12cに対して設けられるが、演算ユニット12cは共通メモリ回路60を使用しないため、この例では第2選択回路120cは存在しなくてもよい。第2選択回路120dは、演算ユニット12dに対して設けられ、共通メモリ回路60または個別メモリ回路80のいずれかと演算ユニット12dとを接続する。
A second selection circuit 120 that selects connection with the memory group is provided for the
処理装置10において、第1選択回路110および第2選択回路120は、演算ユニットに対して記憶領域を必要とする場合に少なくとも1つの記憶領域(RAM100)を用いてアドレス空間を構成する記憶領域構成回路を形成する。処理装置10において、少なくとも1つのRAM100は、複数の演算ユニットの一部にのみ接続されており、これにより回路規模を削減することができる。たとえばRAM100c、100dは、演算ユニット12c、12dにのみ接続されており、演算ユニット12a、12bには接続されていない。
In the
図5は、本実施形態の処理装置10の構成の変形例を示す。図5に示す処理装置10は、1つの演算ユニット12が、複数のスレッドを処理する。図示の例では、演算ユニット12aが、スレッド1、2を実行し、演算ユニット12bが、スレッド3、4を実行する。図5に示す処理装置10は、各スレッドに対してメモリを再構成可能なメモリ構成機能をもつ。なお、図4および図5に示す処理装置10において、メモリを構成するための第1選択回路110a〜110c、第2選択回路120a〜120dの配置は同じであり、以下は、図4に示す処理装置10に関連して、メモリの構成機能を説明する。
FIG. 5 shows a modification of the configuration of the
図6は、各演算ユニット12に対してRAM100を用いてメインメモリ27を構成した例を示す。メインメモリ27の構成手法については、図16(a)〜図16(c)に関連して詳述する。この例では、演算ユニット12aが容量3072バイトのメモリを、演算ユニット12bが容量1024バイトのメモリを、演算ユニット12cが容量1024バイトのメモリを、演算ユニット12dが容量2048バイトのメモリを必要としている。
FIG. 6 shows an example in which the
図6に示すメモリ構成例では、演算ユニット12aに対して、共通メモリ回路60のRAM100e(容量1024バイト)と、個別メモリ回路70のRAM100a(容量2048バイト)とにより、容量3072バイトの1つのメインメモリ27aが構成されている。演算ユニット12bに対しては、個別メモリ回路70のRAM100bにより、容量1024バイトのメインメモリ27bが構成され、演算ユニット12cに対しては、個別メモリ回路80のRAM100cにより、容量1024バイトのメインメモリ27cが構成され、メインメモリ27dに対しては、個別メモリ回路80のRAM100dと、共通メモリ回路60のRAM100fとにより、容量2048バイトの1つのメインメモリ27dが構成されている。図中、addrは、メインメモリ27におけるアドレスを示す。
In the memory configuration example shown in FIG. 6, for the
図7は、共通メモリ回路60の構成を示す。共通メモリ回路60は、第1選択回路110aおよびRAM100e、100fを有して構成されており、第1選択回路110aは、メモリ制御回路130e、130fと、読出制御回路150aとを備える。メモリ制御回路130e、130fの構成は同じであるため、メモリ制御回路130fの図示は省略する。また読出制御回路150aは、読出データを、演算ユニット12aに設けられた第2選択回路120aに供給するための回路であり、本実施形態では、共通メモリ回路60が、演算ユニット12a以外にも、演算ユニット12b、12dに接続されているため、読出データを第2選択回路120b、120dに供給するための読出制御回路(図示せず)がさらに設けられる。メモリ制御回路130はRAM100ごとに設けられ、読出制御回路150は演算ユニット12ごとに設けられる。なお、図7ではRAM100を演算処理に割り当てる例として、RAM100を演算ユニット12に対して割り当てる回路構成を示しているが、既述したようにRAM100をスレッドに対して割り当てることも可能である。
FIG. 7 shows the configuration of the
なお図7は共通メモリ回路60の構成を示しているが、個別メモリ回路70、80も、共通メモリ回路60と同様に構成することができる。
Although FIG. 7 shows the configuration of the
メモリ制御回路130は、自身が制御するRAM100へのアクセスであるかを判定し、それによってRAM100を制御するための回路である。以下、RAM100eのメモリ制御回路130eを例に説明する。
The memory control circuit 130 is a circuit for determining whether the access is to the
set_a、set_bはメモリ構成情報である。具体的にset_aはRAM100eがどの演算ユニット12のメモリを構成しているか示す情報であり、set_bは構成されたメモリのアドレス空間のうちのどこに相当するか示す情報である。なおset_a、set_bは、どの演算ユニット12にも使用されないという情報を有してもよい。マルチプレクサ(MUX)132、134、136は、接続する演算ユニット12a、12b、12dから供給される書込データ(w_data)、アドレス信号(addr)、書込判定信号(w_en)のそれぞれから、RAM100eを使用可能な演算ユニット12のうちのひとつを選択する回路であり、set_aによって制御される。例えば、図6のメモリ構成例では、RAM100eは演算ユニット12aのメインメモリ27aの一部として構成されているため、set_aは演算ユニット12aを示す信号となっており、MUX132、134、136は、それぞれ演算ユニット12aに関するw_data、addr、w_enを選択する。
set_a and set_b are memory configuration information. Specifically, set_a is information indicating which of the
アクセス判定回路138は、addrの特定ビット(以下、判定ビット信号と呼ぶ)を用いてaddrがset_bで示されたアドレス範囲に入っているかどうかを判定する。ここで、容量が1024バイトと2048バイトのような複数の種類のRAM100が存在する場合、容量の小さいRAMもしくは同じ容量のRAMの個数が多い順に小さいアドレス値を割り当てるようにすると、addrの上位のビットを見ることによってアクセス判定回路138が効率的に判定することが可能である。例えば、図6に示すメモリ構成例では、演算ユニット12aはRAM100aとRAM100eを使用するため、容量の小さいもしくは同じ容量のRAMの個数が多いという条件に合致するRAM100eをアドレス値0から1023に割り当て、RAM100aをアドレス値1024から3071に割り当てる。そうすると、addrの下位から11ビット目以上のビットを判定ビット信号とし、判定ビット信号が0であればRAM100eへのアクセスであることが判定される。この場合、set_bは0を示す信号となり、アクセス判定回路138は判定ビット信号が0かどうかを判定し、0ならアクティブ、0でないならネガティブとして結果を出力する。
The
CE生成回路142は、アクセス判定回路138の出力と選択されたw_enからRAM100eの制御信号を生成する。例えば、アクセス判定回路138の出力と選択されたw_enがともにアクティブならRAM100eに書き込みを行なわせる信号を出力し、アクセス判定回路138の出力がアクティブであって、w_enがアクティブでないならRAM100eに読み出しを行なわせる信号を出力する。
The
読出制御回路150aは、メモリ群のRAM100e、100fから読み出されたデータ(r_data)のうち、演算ユニット12aに渡す読出データを選択する。読出制御回路150aは、読出データ変換回路152、154と読出データ選択回路156から形成される。以下、RAM100eに対して設けられた読出データ変換回路152を例に説明する。読出データ変換回路152は、r_dataが演算ユニット12aのr_dataであればそのまま出力し、そうでなければ0(全ビット0)に変換して出力する。r_dataが演算ユニット12aのr_dataであるかどうかは、set_aと、メモリ制御回路130eのアクセス判定回路138の出力をRAMの読み出しにかかる時間分、遅延回路140にて遅延したデータ(select)とを用いて判定する。すなわち、set_aが演算ユニット12aを示す信号であり、かつアクセス判定回路138の出力であるselectがアクティブであれば演算ユニット12aのr_dataであることが判定される。読出データ選択回路156は、各RAM100e、100fの読出データ変換回路152、154からの出力のうち、演算ユニット12aのr_dataを選択する。この選択は、読出データ変換回路152、154の出力の論理和(OR)をとることで実現される。したがって、読出データ選択回路156からは、メモリ群のRAM100eまたはRAM100fから読み出されたデータが演算ユニット12aのr_dataの場合はそのデータ値が出力され、演算ユニット12aのr_dataでない場合は0が出力される。
The
なお読出データ変換回路152、154が、それぞれのr_dataが演算ユニット12aのr_dataでない場合に全ビット0に変換して出力するとしたが、他の信号値たとえば全ビット1に変換して出力してもよい。このとき、読出データ選択回路156は、読出データ変換回路152、154の双方からの出力が全ビット1のときは0を出力し、そうでない場合は、読出データ変換回路152、154の出力の論理積(AND)をとって出力する。
Note that the read
以上はRAM100eのメモリ制御回路130eについての説明であるが、他のRAM100のメモリ制御回路130も、同様の構成を有する。
The above is the description of the
図8は、第2選択回路120の回路構成を示す。第2選択回路120は、複数のメモリ群からのr_dataのうち、ひとつを選択する。回路構成は、読出制御回路150aの読出データ選択回路156と同様であり、各メモリ群からのデータの論理和(OR)をとる読出データ選択回路158を有して構成される。第2選択回路120aは、読出データ選択回路158を有して、図6に示すメモリ構成例では、演算ユニット12aのメインメモリ27aを構成するRAM100a、RAM100eの一方の読出データを演算ユニット12aに供給する。同様に第2選択回路120dは、演算ユニット12dのメインメモリ27dを構成するRAM100d、RAM100fの一方の読出データを演算ユニット12dに供給する。第2選択回路120bは、RAM100bの読出データを演算ユニット12bに供給し、第2選択回路120cは、RAM100cの読出データを演算ユニット12cに供給する。
FIG. 8 shows a circuit configuration of the second selection circuit 120. The second selection circuit 120 selects one of r_data from a plurality of memory groups. The circuit configuration is the same as that of the read
以上のように、演算ユニット12によって使用できるメモリ群を制限することにより、選択回路や接続線を削減することができ、配置配線の自由度が高まるとともに、回路規模が削減される。これにより、動作速度の向上し、処理時間が短くなる。
As described above, by limiting the memory group that can be used by the
さらに、読出制御回路150aと第2選択回路120aにおいて、それぞれ読出データ選択回路156と読出データ選択回路158とを設けることで、メモリ群と演算ユニット12の間の配線数が少なくできる。また、読出データ変換回路152、154にて所望のデータでない場合は読出データを0値に変換することにより、論理和をとって所望のデータのみを出力できるようにしたことで、読出データ選択回路156での制御信号を不要にしている。これらにより、配置配線の自由度が高まり、さらには回路規模が削減され、動作速度が向上し、処理時間が短くなる。
Further, the
共通メモリ回路60のメモリ構成情報set_a、set_bは、設定部14または制御部18から供給されてもよく、リコンフィギュラブル回路である演算ユニット12のコンフィギュレーション時に設定されてもよい。前者の場合は、プロセッサの動作時にダイナミックにメモリ構成を変更できるため、演算ユニット12の処理バリエーションを増やすことができる。また、後者の場合は、メモリ構成情報をRAMごとに独立して配置できるなど、配置配線の自由度が高まる。これにより回路規模が削減され、さらに動作速度の向上により、処理時間が短くなる。
The memory configuration information set_a and set_b of the
また、RAM100によってアドレス値の割り当てを限定することによって、メモリ構成情報やメモリ群に供給するアドレスaddrのビット幅を削減することができ、回路規模が削減される。これにより、動作速度を向上でき、処理時間を短くできる。アドレス値の割当の限定手法としては具体的に、異なる記憶容量をもつRAM100によってアドレス空間を構成する場合に、アドレス空間には、記憶容量の小さいRAM100から順に小さいアドレス値を割り当てる。また、これとは別に、同じ記憶容量のRAM100が存在する場合に、同じ記憶容量のRAM100の個数が多いものから順に、小さいアドレス値を割り当ててもよい。また、複数の演算ユニット12に使用可能なRAM100に、小さいアドレス値を割り当ててもよい。
Further, by limiting the assignment of address values by the
例えば、図4に示す処理装置10の例では、共通メモリ回路60のRAM100e、100fの判定ビット信号を0もしくは1のみ、個別メモリ回路70のRAM100aの判定ビット信号を0から5、RAM100bの判定ビット信号を0から3、個別メモリ回路80のRAM100c、100dの判定ビット信号を0から3と制限することができる。この場合、共通メモリ回路60のRAM100e、100fのset_bは1ビット、RAM100b、100c、100dのset_bは2ビットでよいことになる。なおアドレス値の割り当てを限定しなければ、いずれもset_bは3ビット必要となるため、アドレス値の割り当ての限定には、回路規模を削減できる利点がある。また、共通メモリ回路60に送るアドレスaddrのビット幅は、制限がない場合13ビット必要であるが、このように制限した場合、演算ユニット12a、12bの出力時に共通メモリ回路60に送るアドレスaddrの12ビット目を12ビット目と13ビット目の論理和値(OR値)に変換すれば、12ビットでよいことになる。
For example, in the example of the
図9は、本実施形態の処理装置10の構成のさらなる変形例を示す。図9に示す処理装置10は、1つの演算ユニット12aを備え、演算ユニット12aが、スレッド1、2、3、4を実行する。図9に示す処理装置10は、各スレッドに対してメモリを再構成可能なメモリ構成機能をもつ。第2選択回路120a〜120dは、それぞれスレッド1〜4に対して、それぞれのスレッドとRAM100との間のデータの送受を可能とするために設けられる。
FIG. 9 shows a further modification of the configuration of the
このように演算ユニット12が、複数の独立した処理(スレッド)を実行可能なリコンフィギュラブル回路で構成される場合、メモリ群の使用制限をスレッド単位に設定することも可能である。図4と比較すると、演算ユニット12とスレッドとを単純に置き換えたものとみることができる。これは、図4では処理単位が演算ユニット12であったのに対して、図9では処理単位がスレッドであることの違いでしかないためであり、したがって、本実施形態のメモリ構成技術は、処理単位ごとに実行可能であることが分かる。
As described above, when the
なお、処理装置10が複数の演算ユニット12を備え、各演算ユニット12ごとに個別メモリ回路が設けられ、またすべての演算ユニット12が共通メモリ回路にアクセス可能な構成としてもよい。この構成によると、個別メモリ回路は演算ユニット専用のメモリとすることができるため、回路規模を削減できるとともに、共通メモリ回路はすべての演算ユニットで共用するために、メモリ構成の柔軟性を維持することも可能となる。
Note that the
以上は、処理装置10のハードウェア構成について説明した。以下では、マルチスレッド処理において、さらにメモリの有効利用を図るべく、メモリのアドレス空間を共用する技術について説明する。マルチスレッド処理は、複数の演算ユニット12において実行されてよいが、以下では説明を簡単にするために、図9に示す処理装置10の構成にしたがって、アドレス空間共用技術を説明する。
The hardware configuration of the
図10は、演算ユニット12の構成の一例を示す。この演算ユニット12は、複数のスレッドがメモリのアドレス空間を共用するアドレス空間共用回路を構成する。このアドレス空間共用回路では、各スレッド1〜4のそれぞれに対してメモリが割り当てられているなかで、スレッド3がスレッド1のメモリのアドレス空間を共用できる。アドレス空間共用回路は、出力選択回路170および入力選択回路180、182により実現される。
FIG. 10 shows an example of the configuration of the
MUX160a、160b、160c、160dは、接続部52の入力側に設けられ、接続部52の下段のALU列53が処理するスレッドに割り当てられているRAM100からの読出データを選択して出力する。具体的にMUX160aは、各スレッドのRAM100からの読出データのうち、1段目のALU列53aが処理するスレッドのデータを選択して接続部52aに供給する。MUX160e、160f、160g、160hは、接続部52の出力側に設けられ、RAM100にアクセス(書込または読出)するデータのうち、特定のスレッドを処理しているALU列53の下段の接続部52からのデータを選択して出力する。具体的にMUX160eは、各ALU列53で処理されたスレッドのデータのうち、処理されたスレッド4のデータを選択して、スレッド4に割り当てられているRAM100に出力する。これらのMUX160は、4進カウンタ(図示せず)から出力される制御信号により制御されてよい。
The
図11は、スレッド1とスレッド3とでアドレス空間を共用するときの出力選択回路170の動作を示す。複数スレッドでメモリのアドレス空間を共用しない場合は、MUX160e、160f、160g、160hの選択により、各段のALU列53から所期のメモリにアクセスできる。一方、図11に示すようにスレッド1とスレッド3とでメモリアドレス空間を共用する場合は、1段目のALU列53a、2段目のALU列53bからのみメモリにアクセスでき、またメモリからの読出データの入力は、3段目のALU列53c、4段目のALU列53dに制限される。ここで段を制限するとは、読出データの入力を、特定の段に限定することを意味している。
FIG. 11 shows the operation of the
出力選択回路170は、スレッド3がスレッド1用のメモリを使用しない場合は、常にスレッド1のメモリアクセスデータを選択する。一方でスレッド3がスレッド1用のメモリを使用する場合は、出力選択回路170が、スレッド1が1段目のALU列53aまたは2段目のALU列53bで処理されているときはスレッド1のメモリアクセスデータを、それ以外のとき、つまりスレッド3が1段目のALU列53aまたは2段目のALU列53bで処理されているときはスレッド3のメモリアクセスデータを選択する。すなわち、共用時の出力選択回路170は、図11における出力選択回路170への2つの入力のうち、実線で示されている入力を常に選択するように動作する。この例では、第Tクロックで、ALU列53aで処理されたスレッド1の出力データ、第(T+1)クロックで、ALU列53bで処理されたスレッド1の出力データ、第(T+2)クロックで、ALU列53aで処理されたスレッド3の出力データ、第(T+3)クロックで、ALU列53bで処理されたスレッド3の出力データが選択される。
The
入力選択回路180、182は、MUX160c、160dに供給される4進カウンタからの制御信号を変換する回路である。メモリアドレス空間の共用が行われない場合、MUX160cは、各スレッドのメモリからの読出データのうち、常にALU列53cが処理するスレッドのデータを選択する。これは、入力選択回路180がない場合と同じである。そしてメモリアドレス空間の共用を行なう場合は、3段目のALU列53cがスレッド3を処理するときはスレッド1用メモリからのデータを選択し、それ以外のときは、3段目のALU列53cが処理するスレッドのメモリのデータを選択する。
The
同様に、メモリアドレス空間の共用が行われない場合、MUX160dは、各スレッドのメモリからの読出データのうち、常にALU列53dが処理するスレッドのデータを選択する。これは入力選択回路182がない場合と同じである。そしてメモリアドレス空間の共用を行う場合は、4段目のALU列53dがスレッド3を処理するときはスレッド1用メモリからのデータを選択し、それ以外のときは、4段目のALU列53dが処理するスレッドのメモリのデータを選択する。すなわち、スレッド1用メモリからのデータは、図11に示すように、スレッド1またはスレッド3が動作している3段目のALU列53cまたは4段目のALU列53dに入力される。
Similarly, when the memory address space is not shared, the
このように、メモリのアドレス空間を複数のスレッドで共用する場合、アクセス可能なリコンフィギュラブル回路の段を制限し、共用するアドレス空間に同時にアクセスしないようにアクセスタイミングを制御することにより、複数のスレッドが同時にメモリにアクセスしないようにしている。 As described above, when the memory address space is shared by a plurality of threads, a plurality of accessible reconfigurable circuit stages are limited, and the access timing is controlled so as not to access the shared address space at the same time. Threads are prevented from accessing memory at the same time.
図12は、図9に示す処理装置10において、スレッド1とスレッド3がメモリアドレス空間を共用したときのメモリ構成例を示す。スレッド3はスレッド1のメモリを使用することにより、スレッド3が、メモリアドレス空間の非共用時に使用できるメモリの容量よりも大きな容量を使用することができる。例えば、スレッド3が必要とするメモリの容量が2500バイトであった場合、図9を参照すると、メモリ空間の非共用時には最大でもRAM100c、100dの2048バイトしか利用できないため、スレッド3の処理を実行できるメモリを構成することができない。そのため、個別メモリ回路80のRAM100の数もしくは容量を増やす必要があるが、本実施形態のようにメモリアドレス空間をスレッド1と共用可能とすると、スレッド3が、2500バイトのメモリを利用することが可能となる。
FIG. 12 shows a memory configuration example when the
このとき、スレッド1の処理に必要なメモリの容量が500バイトであった場合、メモリアドレス空間の非共用時に1024バイトの容量のRAMをひとつ使うと、524バイトの容量が余ってしまうが、2500バイトを必要とするスレッド3と3072バイトのメモリアドレス空間を共用することで、容量の余りは僅か72バイトとなり、メモリを有効に使用することができる。このように、共用機能により、メモリの効率的な使用が可能となることで、RAM100の数やRAM100の容量を少なく構成でき、回路規模を削減できる。さらに、スレッド3がスレッド1とメモリを共有することにより、スレッド4は個別メモリ回路80のすべてのRAM100c、100dを使用できることとなり、スレッド4で実行する処理のバリエーションを増やすことができる。
At this time, if the capacity of the memory required for the processing of the
さらに、複数のスレッドでメモリのアドレス空間を共用することにより、メモリを介してデータの受け渡しが可能なため、処理の効率化ができ、処理時間を短くできる。ここでは、1つの演算ユニット12aのスレッド同士でのメモリアクセスをリコンフィギュラブル回路の段で制限することで、メモリのアドレス空間を共用する構成の例を示したが、異なる演算ユニット12のスレッド同士でアドレス空間を共用できてもよく、演算ユニット12同士でアドレス空間を共用できてもよい。また、ある演算ユニット12のスレッドと、別の演算ユニット12との間でアドレス空間を共用できてもよい。また、さらには、3つ以上の演算ユニット12もしくはスレッドでアドレス空間を共用してもよい。
Further, by sharing the memory address space among a plurality of threads, data can be transferred via the memory, so that the processing efficiency can be improved and the processing time can be shortened. Here, an example of a configuration in which a memory address space is shared by restricting memory access between threads of one
図13は、2つの演算ユニット12の構成例を示す。この例では、各演算ユニット12a、12bのスレッドに対して、RAM100が割り当てられている。演算ユニット12a、12bは、それぞれで実行するスレッドがメモリのアドレス空間を共用するアドレス空間共用回路を構成する。このアドレス空間共用回路では、演算ユニット12aで実行する各スレッド1〜4のそれぞれに対してメモリが割り当てられており、また演算ユニット12bで実行する各スレッド5〜8のそれぞれに対してメモリが割り当てられているなかで、スレッド7がスレッド1とメモリのアドレス空間を共用し、スレッド7とスレッド1とは、それぞれ異なる演算ユニット12b、12aで処理されている。アドレス空間共用回路は、出力選択回路170aおよび入力選択回路180a、182aにより実現される。出力選択回路170a、入力選択回路180a、182aの動作は、図10に関連して説明したものと同じである。
FIG. 13 shows a configuration example of the two
図14は、2つの演算ユニット12の別の構成例を示す。ここでは、各演算ユニット12a、12bに対して、RAM100が割り当てられている。演算ユニット12a、12bは、メモリのアドレス空間を共用するアドレス空間共用回路を構成する。出力選択回路170bは、メモリのアドレス空間を共用しない場合は常に演算ユニット12aの出力を選択するように動作し、共用する場合は、4進カウンタ(図示せず)からの制御信号にしたがって演算ユニット12aまたは演算ユニット12bの出力を選択する。たとえば出力選択回路170bは、4進カウンタの最初の2つのカウント値に対しては演算ユニット12aの出力を選択し、後の2つのカウント値に対しては演算ユニット12bの出力を選択するように動作してよい。また、入力選択回路180bは、メモリのアドレス空間を共用しない場合は常に演算ユニット12b用メモリからのデータをMUX160から出力させ、共用する場合は、演算ユニット12a用メモリまたは演算ユニット12b用メモリからのデータを選択する。この例では、共用を行なう場合、たとえば演算ユニット12aのメモリアクセスは1段目、2段目、入力は3段目、4段目に制限され、演算ユニット12bのメモリアクセスは3段目、4段目、入力は1段目、2段目に制限される。
FIG. 14 shows another configuration example of the two
なお、演算ユニット12が多段構成をとらない場合に、例えば、2つの演算ユニット12a、12bでメモリのアドレス空間を共用するのであれば、交互にメモリにアクセスするようにアクセスタイミングを制御すればよい。以上のようにメモリのアドレス空間をスレッド間、演算ユニット間、またはスレッドと演算ユニット間で共用可能とすることで、回路規模の削減や処理時間の短縮を実現でき、処理装置10における消費電力の低減化や、処理装置10の処理パフォーマンスの向上を実現することが可能となる。
When the
以下において、メモリとの接続が制限された処理装置10において、メモリを演算ユニット12またはスレッドに対して、効率的に割り当てる手法について説明する。以下、メモリを割り当てる対象を「対象処理」とよぶ。ここで、処理装置10において処理単位がスレッドである場合には、スレッドが対象処理であり、またマルチスレッド処理を行わない処理装置10においては、演算ユニット12が1つの処理を実行するため、演算ユニット12が対象処理となる。
Hereinafter, a method for efficiently allocating memory to the
図15は、メモリと対象処理との接続がハードウェア上で制限された処理装置10の構成を示す。共通メモリ回路210は、RAM200e、200f、200gを有し、個別メモリ回路220は、RAM200a、200b、200cを有し、個別メモリ回路230は、RAM200dを有する。対象処理250および対象処理260は、共通メモリ回路210および個別メモリ回路220を使用可能であり、対象処理270は、共通メモリ回路210および個別メモリ回路230を使用可能である。図15中、各RAM200に対して付された数字は、メモリ容量(単位なし)を示す。たとえばRAM200aは、128のメモリ容量をもち、RAM200cは、32のメモリ容量をもっている。また各対象処理に対して付された数字は、メモリに格納する必要があるデータ量を示す。たとえば対象処理250は、190のデータ量をメモリに格納する必要があり、また対象処理260は、60のデータ量をメモリに格納する必要がある。以下、各対象処理250、260、270にメモリを割り当てる技術について説明する。
FIG. 15 shows a configuration of the
図16(a)、図16(b)、図16(c)は、メモリ割当処理のフローチャートを示す。以下において、メモリと対象処理とが図15に示すように接続されている場合に、各対象処理に対してメモリを割り当てる例を説明する。このメモリ割当処理では、各対象処理で扱うデータ量を、順次RAM200に振り分けていく。このフローチャートにおいて、「未割当データ」は、RAM200に対して、まだ割り当てられていないデータを意味し、たとえば対象処理250に対してRAM200aが既に割り当てられていると、未割当データは、62(=190−128)として表現される。メモリ割当処理は、図1に示すコンパイル部30により実行される。コンパイル部30は、メモリ割当処理を行う前に、各対象処理が保持しなければならないデータ量を取得する。また、使用可能なメモリの容量も予め取得する。
FIGS. 16A, 16B, and 16C are flowcharts of the memory allocation process. In the following, an example in which memory is allocated to each target process when the memory and the target process are connected as shown in FIG. 15 will be described. In this memory allocation process, the amount of data handled in each target process is sequentially allocated to the RAM 200. In this flowchart, “unallocated data” means data not yet allocated to the RAM 200. For example, if the
まず未割当データのある対象処理が存在するか判定される(S10)。すべての対象処理に対してメモリが割り当てられていれば(S10のN)、本フローは終了する。メモリ割当処理の開始時は、まだ対象処理に対してメモりが割り当てられていないため(S10のY)、S12に進む。 First, it is determined whether there is a target process with unallocated data (S10). If memory is allocated to all target processes (N in S10), this flow ends. At the start of the memory allocation process, since no memory has been allocated to the target process (Y in S10), the process proceeds to S12.
S12では、未割当データのある対象処理のうち、使用可能なメモリの総容量が最も小さい対象処理を処理群aとして設定する。使用可能なメモリの総容量とは、各対象処理がアクセス可能なメモリの総容量を意味する。図15を参照すると、メモリのアクセス制限から、使用可能なメモリの総容量が最も小さい対象処理は対象処理270であるため、処理群aに対象処理270が設定される。続いて、処理群aに含まれる対象処理のうち、未割当データ量の最も大きい対象処理を、処理xとして設定する(S14)。この場合、処理群aに含まれる対象処理が、対象処理270のみであるため、対象処理270が処理xとして特定される。続いて、処理xが使用可能なすべてのRAMを、候補メモリbとして設定する(S16)。図15を参照して、対象処理270が使用可能なRAM200d、200e、200f、200gが、候補メモリbとして特定される。これらの候補メモリbは、候補メモリ群を構成する。
In S12, among the target processes having unallocated data, the target process having the smallest total usable memory capacity is set as the process group a. The total memory capacity that can be used means the total memory capacity that can be accessed by each target process. Referring to FIG. 15, the
このように対象処理270に候補メモリbが設定できた場合(S18のY)、候補メモリbを容量が大きい順にソートし、その順番を保持する(S20)。なお、メモリ容量が同じ場合には、使用される可能性のある対象処理の数が少ない順にソートする。候補メモリbであるRAM200d、200e、200f、200gに関して言えば、すべて同じ32の容量を有しているが、RAM200dは、対象処理270のみにより使用される可能性があるのに対し、共通メモリ回路210に含まれる200e、200f、200gは、対象処理250、260、270の3つの対象処理により使用される可能性がある。したがって、これらは、RAM200d、200e、200f、200gの順にソートされ、その順番が保持される。S20にしたがってRAM200の割り当てを試行する順番を定めることで、メモリの割当可能性を高めることができるとともに、割り当て後のメモリの総容量を小さく抑えることも可能となる。
When the candidate memory b can be set in the
まず、保持したRAM200の順序を示すiを1にセットし(S22)、候補メモリ群のi番目のRAM200を候補メモリcとする(S24)。ここでは、RAM200dが候補メモリcとして設定される。続いて、候補メモリcの容量が処理xの未割当データ量以下であるか判定される(S26)。ここでは候補メモリc(RAM200d)の容量が32、処理x(対象処理270)の未割当データ量が30であり、候補メモリcの容量が処理xの未割当データ量より大きい(S26のN)。
First, i indicating the order of the stored RAM 200 is set to 1 (S22), and the i-th RAM 200 in the candidate memory group is set as a candidate memory c (S24). Here, the
続いて、処理群aのうち、使用可能なメモリが処理xと同じ対象処理を処理群d(処理xを含む)とし、処理群dの未割当データ量を、それよりも大きいメモリの最小容量の倍数で表した値の合計をeとする(S28)。ここでは、処理群aが対象処理270のみであるため処理群dは対象処理270となり、その未割当データ量は30である。このときメモリの最小容量は32であり、32の倍数で且つ30よりも大きい値であって最小の値は32である。したがって、e=32と特定される。ここでは、最小容量のメモリをいくつ使用して未割当データ量が割り当て可能かを調べ、未割当データ量をメモリの最小容量の単位で表している。これは、S28から以下のS32ですべての未割当データが候補メモリcより容量が小さいメモリを使って割り当てできるかを調べるためである。その際、例えば、未割当データ量が10と20の2つの処理がある場合、本来は容量32のメモリをそれぞれの処理に割り当てることになるが、メモリの最小容量単位で表していないと、未割当データ量の合計が30なので容量32のメモリ1つで割り当てできると判断してしまう危険性があり、それを解決するためにメモリの最小容量単位で表している。次に、S30では、候補メモリ群のうち、候補メモリcより容量が小さいメモリの容量の合計をfとする。ここでRAM200d〜200gのうち、候補メモリc(RAM200d)より容量が小さいメモリはないので、f=0となる。
Subsequently, in the processing group a, a target process whose usable memory is the same as that of the processing x is a processing group d (including the processing x), and the unallocated data amount of the processing group d is set to a minimum memory capacity larger than that. The sum of the values expressed in multiples of e is set as e (S28). Here, since the processing group a is only the
ここでeとfとを比較し(S32)、この場合はe(=32)>f(=0)(S32のY)であるため、候補メモリcを処理xの未割当データに割り当てる(S34)。これによりRAM200dが対象処理270に割り当てられる。このとき処理x(対象処理270)のデータはすべて割り当てられたことになり、したがって処理xに未割当データはなくなるため(S36のN)、S10に戻る。
Here, e and f are compared (S32), and in this case, e (= 32)> f (= 0) (Y in S32), so that the candidate memory c is assigned to the unallocated data of the process x (S34). ). As a result, the
このとき未割当データのある対象処理として対象処理250、260が存在し(S10のY)、S12では、使用可能なメモリの総容量が最も小さい対象処理が処理群aとして選ばれる。ここでは、対象処理250、260の使用可能なメモリの総容量が同じであるため、双方の対象処理250、260が処理群aとして設定される。続いてS14で、未割当データ量の大きい対象処理250が処理xとして設定され、S16で、対象処理250が使用可能なメモリであるRAM200a、200b、200c、200e、200f、200gが、候補メモリbとして設定される。これらの候補メモリbは、候補メモリ群を構成する。
At this time, there are
候補メモリbが存在しているため(S18のY)、S20で、候補メモリbが容量の大きい順にソートされ、その順番が保持される。なお、メモリ容量が同じ場合には、使用される可能性のある対象処理の数が少ない順にソートする。候補メモリbであるRAM200a、200b、200c、200e、200f、200gに関して言えば、候補メモリbは、RAM200a、200b、200c、200e、200f、200gの順にソートされ、その順番が保持される。
Since the candidate memory b exists (Y in S18), the candidate memory b is sorted in descending order of capacity in S20, and the order is maintained. When the memory capacities are the same, sorting is performed in ascending order of the number of target processes that may be used. Regarding the
保持したRAM200の順序を示すiを1にセットし(S22)、候補メモリ群のi番目のRAM200を候補メモリcとする(S24)。ここでは、RAM200aが候補メモリcとして設定される。続いて、候補メモリcの容量が処理xの未割当データ量以下であるか判定される(S26)。ここでは候補メモリc(RAM200a)の容量が128、処理x(対象処理250)の未割当データ量が190であり、候補メモリcの容量が処理xの未割当データ量より小さい(S26のY)。したがって候補メモリcを処理xの未割当データに割り当て(S34)、これによりRAM200aが対象処理250に割り当てられる。このとき処理x(対象処理250)に未割当データが存在するため(S36のY)、S12に戻る。このとき対象処理250の未割当データ量は62(=192−128)となる。
I indicating the order of the stored RAMs 200 is set to 1 (S22), and the i-th RAM 200 in the candidate memory group is set as a candidate memory c (S24). Here, the
続いて、S12では、処理群aに対象処理250(未割当データ量62)、対象処理260(未割当データ量60)が選ばれる。S14では、処理群aのうち、未割当データ量の大きい対象処理250が処理xに設定される。S16で、処理xが使用可能なRAM200b、200c、200e、200f、200gが候補メモリbに設定される。候補メモリが存在するため(S18のY)、S20では、候補メモリbがソートされて、RAM200b、200c、200e、200f、200gの順番が保持される。そして、i=1(S22)として、S24では、まずRAM200bが候補メモリcに設定される。
Subsequently, in S12, the target process 250 (unallocated data amount 62) and the target process 260 (unallocated data amount 60) are selected as the processing group a. In S14, the
続いて、候補メモリcの容量が処理xの未割当データ量以下であるか判定され(S26)、ここでは候補メモリc(RAM200b)の容量が128、処理x(対象処理250)の未割当データ量が62である(S26のN)。S28において、処理群aのうち、使用可能なメモリが処理xと同じ対象処理を処理群d(処理xを含む)とし、処理群dの未割当データ量を、それよりも大きいメモリの最小容量の倍数で表した値の合計をeとする(S28)。ここでは、処理群aが対象処理250、260であり、対象処理250、260は使用可能なメモリが同じであるため、処理群dは対象処理250、260となる。このとき対象処理250、260の未割当データ量は、それぞれ62、60である。このときメモリの最小容量は32であり、32の倍数で且つ62、60よりも大きい値であって最小の値はそれぞれ64、64である。したがって、e=128(=64+64)と特定される。
Subsequently, it is determined whether the capacity of the candidate memory c is equal to or less than the unallocated data amount of the process x (S26). Here, the capacity of the candidate memory c (
次に、S30では、候補メモリ群のうち、候補メモリc(RAM200b)より容量が小さいメモリの容量の合計をfとする。ここでRAM200c、200e、200f、200gが、候補メモリc(RAM200b)より容量が小さいため、f=128(=32+32+32+32となる。このときe=f(S32のN)となり、iを1インクリメントして(S38)、候補メモリ群のi番目のメモリと(i−1)番目のメモリの容量が同じか判定される(S40)。このとき2番目のメモリ(RAM200c)と1番目のメモリ(RAM200b)とは容量が異なるため(S40のN)、S24に戻る。S24では、2番目のメモリであるRAM200cが、候補メモリcとして設定される。
Next, in S30, let f be the total memory capacity of the candidate memory group that is smaller than the candidate memory c (
S26では、候補メモリcの容量(32)が、処理xの未割当データ量(62)以下であるため(S26のY)、候補メモリcを処理xの未割当データに割り当て(S34)、これによりRAM200cが対象処理250に割り当てられる。このとき処理x(対象処理250)に未割当データが存在するため(S36のY)、S12に戻る。このとき対象処理250の未割当データ量は30(=62−32)となる。
In S26, since the capacity (32) of the candidate memory c is equal to or less than the unallocated data amount (62) of the process x (Y in S26), the candidate memory c is allocated to the unallocated data of the process x (S34). Thus, the
続いて、S12では、処理群aに対象処理250(未割当データ量30)、対象処理260(未割当データ量60)が選ばれる。S14では、処理群aのうち、未割当データ量の大きい対象処理260が処理xに設定される。S16で、処理xが使用可能なRAM200b、200e、200f、200gが候補メモリbに設定される。候補メモリが存在するため(S18のY)、S20では、候補メモリbがソートされて、RAM200b、200e、200f、200gの順番が保持される。そして、i=1(S22)として、S24では、まずRAM200bが候補メモリcに設定される。
Subsequently, in S12, the target process 250 (unallocated data amount 30) and the target process 260 (unallocated data amount 60) are selected as the processing group a. In S14, the
続いて、候補メモリcの容量が処理xの未割当データ量以下であるか判定され(S26)、ここでは候補メモリc(RAM200b)の容量が128、処理x(対象処理260)の未割当データ量が60である(S26のN)。S28において、処理群aのうち、使用可能なメモリが処理xと同じ対象処理を処理群d(処理xを含む)とし、処理群dの未割当データ量を、それよりも大きいメモリの最小容量の倍数で表した値の合計をeとする(S28)。ここでは、処理群aが対象処理250、260であり、対象処理250、260は使用可能なメモリが同じであるため、処理群dは対象処理250、260となる。このとき対象処理250、260の未割当データ量は、それぞれ30、60である。このときメモリの最小容量は32であり、32の倍数で且つ30、60よりも大きい値であって最小の値はそれぞれ32、64である。したがって、e=96(=32+64)と特定される。
Subsequently, it is determined whether the capacity of the candidate memory c is equal to or less than the unallocated data amount of the process x (S26). Here, the capacity of the candidate memory c (
次に、S30では、候補メモリ群のうち、候補メモリc(RAM200b)より容量が小さいメモリの容量の合計をfとする。ここでRAM200e、200f、200gが、候補メモリc(RAM200b)より容量が小さいため、f=96(=32+32+32となる。このときe=f(S32のN)となり、iを1インクリメントして(S38)、候補メモリ群のi番目のメモリと(i−1)番目のメモリの容量が同じか判定される(S40)。このとき2番目のメモリ(RAM200e)と1番目のメモリ(RAM200b)とは容量が異なるため(S40のN)、S24に戻る。S24では、2番目のメモリであるRAM200eが、候補メモリcとして設定される。
Next, in S30, let f be the total memory capacity of the candidate memory group that is smaller than the candidate memory c (
S26では、候補メモリcの容量(32)が、処理xの未割当データ量(60)以下であるため(S26のY)、候補メモリcを処理xの未割当データに割り当て(S34)、これによりRAM200eが対象処理260に割り当てられる。このとき処理x(対象処理260)に未割当データが存在するため(S36のY)、S12に戻る。このとき対象処理260の未割当データ量は28(=60−32)となる。
In S26, since the capacity (32) of the candidate memory c is equal to or less than the unallocated data amount (60) of the process x (Y in S26), the candidate memory c is allocated to the unallocated data of the process x (S34). Thus, the
続いて、S12では、処理群aに対象処理250(未割当データ量30)、対象処理260(未割当データ量28)が選ばれる。S14では、処理群aのうち、未割当データ量の大きい対象処理250が処理xに設定される。S16で、処理xが使用可能なRAM200b、200f、200gが候補メモリbに設定される。候補メモリが存在するため(S18のY)、S20では、候補メモリbがソートされて、RAM200b、200f、200gの順番が保持される。そして、i=1(S22)として、S24では、まずRAM200bが候補メモリcに設定される。
Subsequently, in S12, the target process 250 (unallocated data amount 30) and the target process 260 (unallocated data amount 28) are selected as the processing group a. In S14, the
続いて、候補メモリcの容量が処理xの未割当データ量以下であるか判定され(S26)、ここでは候補メモリc(RAM200b)の容量が128、処理x(対象処理250)の未割当データ量が30である(S26のN)。S28において、処理群aのうち、使用可能なメモリが処理xと同じ対象処理を処理群d(処理xを含む)とし、処理群dの未割当データ量を、それよりも大きいメモリの最小容量の倍数で表した値の合計をeとする(S28)。ここでは、処理群aが対象処理250、260であり、対象処理250、260は使用可能なメモリが同じであるため、処理群dは対象処理250、260となる。このとき対象処理250、260の未割当データ量は、それぞれ30、28である。このときメモリの最小容量は32であり、32の倍数で且つ30、28よりも大きい値であって最小の値はそれぞれ32、32である。したがって、e=64(=32+32)と特定される。
Subsequently, it is determined whether the capacity of the candidate memory c is equal to or less than the unallocated data amount of the process x (S26). Here, the capacity of the candidate memory c (
次に、S30では、候補メモリ群のうち、候補メモリc(RAM200b)より容量が小さいメモリの容量の合計をfとする。ここでRAM200f、200gが、候補メモリc(RAM200b)より容量が小さいため、f=64(=32+32)となる。このときe=f(S32のN)となり、iを1インクリメントして(S38)、候補メモリ群のi番目のメモリと(i−1)番目のメモリの容量が同じか判定される(S40)。このとき2番目のメモリ(RAM200f)と1番目のメモリ(RAM200b)とは容量が異なるため(S40のN)、S24に戻る。S24では、2番目のメモリであるRAM200fが、候補メモリcとして設定される。
Next, in S30, let f be the total memory capacity of the candidate memory group that is smaller than the candidate memory c (
S26では、候補メモリcの容量(32)が、処理xの未割当データ量(30)以上であるため(S26のY)、候補メモリcを処理xの未割当データに割り当て(S34)、これによりRAM200fが対象処理250に割り当てられる。このとき処理x(対象処理260)には未割当データが存在しなくなり(S36のN)、S10に戻る。
In S26, since the capacity (32) of the candidate memory c is equal to or larger than the unallocated data amount (30) of the process x (Y in S26), the candidate memory c is allocated to the unallocated data of the process x (S34). Thus, the
このとき未割当データのある対象処理260が存在し(S10のY)、S12では、対象処理260が処理群aとして選ばれる。続いてS14で、対象処理260が処理xとして設定され、S16で、対象処理260が使用可能なメモリであるRAM200b、200gが、候補メモリbとして設定される。
At this time, there is a
候補メモリbが存在しているため(S18のY)、S20で、候補メモリbが容量の大きい順にソートされ、その順番が保持される。このとき、候補メモリbは、RAM200b、200gの順にソートされ、その順番が保持される。
Since the candidate memory b exists (Y in S18), the candidate memory b is sorted in descending order of capacity in S20, and the order is maintained. At this time, the candidate memory b is sorted in the order of the
保持したRAM200の順序を示すiを1にセットし(S22)、候補メモリ群のi番目のRAM200を候補メモリcとする(S24)。ここでは、RAM200bが候補メモリcとして設定される。続いて、候補メモリcの容量が処理xの未割当データ量以下であるか判定される(S26)。ここでは候補メモリc(RAM200b)の容量が128、処理x(対象処理260)の未割当データ量が28であり、候補メモリcの容量が処理xの未割当データ量より大きい(S26のN)。
I indicating the order of the stored RAMs 200 is set to 1 (S22), and the i-th RAM 200 in the candidate memory group is set as a candidate memory c (S24). Here, the
続いて、処理群aのうち、使用可能なメモリが処理xと同じ対象処理を処理群d(処理xを含む)とし、処理群dの未割当データ量を、それよりも大きいメモリの最小容量の倍数で表した値の合計をeとする(S28)。ここでは、処理群aが対象処理260のみであるため処理群dは対象処理260となり、その未割当データ量は28である。このときメモリの最小容量は32であり、32の倍数で且つ28よりも大きい値であって最小の値は32である。したがって、e=32と特定される。次に、S30では、候補メモリ群のうち、候補メモリcより容量が小さいメモリの容量の合計をfとする。ここでRAM200b、200gのうち、候補メモリc(RAM200b)より容量が小さいメモリはRAM200gであり、f=32となる。
Subsequently, in the processing group a, a target process whose usable memory is the same as that of the processing x is a processing group d (including the processing x), and the unallocated data amount of the processing group d is set to a minimum memory capacity larger than that. The sum of the values expressed in multiples of e is set as e (S28). Here, since the process group a is only the
このときe=f(S32のN)となり、iを1インクリメントして(S38)、候補メモリ群のi番目のメモリと(i−1)番目のメモリの容量が同じか判定される(S40)。このとき2番目のメモリ(RAM200g)と1番目のメモリ(RAM200b)とは容量が異なるため(S40のN)、S24に戻る。S24では、2番目のメモリであるRAM200gが、候補メモリcとして設定される。
At this time, e = f (N in S32), i is incremented by 1 (S38), and it is determined whether the capacities of the i-th memory and the (i-1) -th memory in the candidate memory group are the same (S40). . At this time, since the second memory (
このとき候補メモリc(RAM200g)の容量が32、処理x(対象処理260)の未割当データ量が28であり、候補メモリcの容量が処理xの未割当データ量より大きい(S26のN)。
At this time, the capacity of the candidate memory c (
続いて、処理群aのうち、使用可能なメモリが処理xと同じ対象処理を処理群d(処理xを含む)とし、処理群dの未割当データ量を、それよりも大きいメモリの最小容量の倍数で表した値の合計をeとする(S28)。ここでは、処理群aが対象処理260のみであるため処理群dは対象処理260となり、その未割当データ量は28である。このときメモリの最小容量は32であり、32の倍数で且つ28よりも大きい値であって最小の値は32である。したがって、e=32と特定される。次に、S30では、候補メモリ群のうち、候補メモリcより容量が小さいメモリの容量の合計をfとする。ここでRAM200b、200gのうち、候補メモリc(RAM200g)より容量が小さいメモリは存在しないため、f=0となる。
Subsequently, in the processing group a, a target process whose usable memory is the same as that of the processing x is a processing group d (including the processing x), and the unallocated data amount of the processing group d is set to a minimum memory capacity larger than that. The sum of the values expressed in multiples of e is set as e (S28). Here, since the process group a is only the
ここでeとfとを比較し(S32)、この場合はe(=32)>f(=0)(S32のY)であるため、候補メモリcを処理xの未割当データに割り当てる(S34)。これによりRAM200gが対象処理260に割り当てられる。このとき処理x(対象処理260)のデータはすべて割り当てられたことになり、したがって処理xに未割当データはなくなるため(S36のN)、S10に戻る。S10では、すべての対象処理についてメモリの割り当てが完了したため(S10のN)、本フローが終了する。
Here, e and f are compared (S32), and in this case, e (= 32)> f (= 0) (Y in S32), so that the candidate memory c is assigned to the unallocated data of the process x (S34). ). As a result, the
なお、S18において候補メモリbが存在しない場合(S18のN)、処理xが使用可能なメモリで、かつすでに割り当てられているメモリのうち割当先の処理が別のメモリに割当変更可能なメモリxがあるか判定される(S42)。そのようなメモリxが存在しない場合(S42のN)、割当ができず、本フローは終了する。一方で、そのようなメモリxが存在する場合(S42のY)、メモリxの割当先の処理において、メモリxの割当を別のメモリに変更し(S44)、メモリxを処理xの未割当データに割り当て(S46)、S36に移行する。このように、候補メモリbが存在しない場合には、すでに割り当てられているメモリを変更することで、再度、メモリの割り当て処理を実行する。 If the candidate memory b does not exist in S18 (N in S18), the memory x can be used for the process x, and the memory x that can be reassigned to another memory among the already allocated memories. It is determined whether there is (S42). If such a memory x does not exist (N in S42), allocation cannot be performed, and this flow ends. On the other hand, when such a memory x exists (Y of S42), in the process of the allocation destination of the memory x, the allocation of the memory x is changed to another memory (S44), and the memory x is not allocated to the process x. Data is assigned (S46), and the process proceeds to S36. As described above, when the candidate memory b does not exist, the memory allocation process is executed again by changing the already allocated memory.
図17は、対象処理に割り当てたRAMを示す。
以上により、コンパイル部30は、各対象処理へのメモリ割り当てを自動で行なうことができ、ユーザの開発効率を向上させることができる。また、この割当処理を実行することで、使用するメモリの総容量を極力小さくできる。メモリは一般的に容量が大きくなるほど消費電力が大きくなるため、使用するメモリの総容量を小さくすることで、メモリの消費電力を低減することができる。例えば、図15において、本手法を用いず、対象処理250から順に、使用可能なRAM200を、符号として付しているアルファベット順に割り当てていくと、対象処理250にはRAM200a、200b、対象処理260にはRAM200c、200e、対象処理270にはRAM200d、200fが割り当てられる。したがって、この場合の割り当てられたRAM200の総容量は384となり、図17における割り当てられたRAM200の総容量(320)よりも大きくなる。
FIG. 17 shows the RAM allocated to the target process.
As described above, the compiling
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。 The embodiment disclosed this time should be considered as illustrative in all points and not restrictive. The scope of the present invention is defined by the terms of the claims, rather than the description above, and is intended to include any modifications within the scope and meaning equivalent to the terms of the claims.
10・・・処理装置、12・・・演算ユニット、14・・・設定部、18・・・制御部、20・・・内部状態保持回路、24・・・第1フィードバック経路、26・・・集積回路装置、27・・・メインメモリ、29・・・第2フィードバック経路、30・・・コンパイル部、31・・・データフローグラフ処理部、32・・・設定データ生成部、34・・・記憶部、36・・・プログラム、38・・・データフローグラフ、40・・・設定データ、50・・・論理回路、60・・・共通メモリ回路、70,80・・・個別メモリ回路、100・・・RAM、110・・・第1選択回路、120・・・第2選択回路、130・・・メモリ制御回路、138・・・アクセス判定回路、140・・・遅延回路、142・・・CE生成回路、150・・・読出制御回路、152,154・・・読出データ変換回路、156,158・・・読出データ選択回路、170・・・出力選択回路、180,182・・・入力選択回路、200・・・RAM、210・・・共通メモリ回路、220,230・・・個別メモリ回路。
DESCRIPTION OF
Claims (12)
演算処理を行なう複数の演算ユニットと、
複数の記憶領域と、
各演算ユニットに対して、少なくとも1つの記憶領域を用いてアドレス空間を構成する記憶領域構成回路と、を備え、
少なくとも1つの記憶領域は、複数の演算ユニットの一部にのみ接続されていることを特徴とする演算処理装置。 An arithmetic processing device capable of changing functions,
A plurality of arithmetic units for performing arithmetic processing;
Multiple storage areas;
A storage area configuration circuit that forms an address space using at least one storage area for each arithmetic unit, and
At least one storage area is connected to only a part of a plurality of arithmetic units.
複数の独立した演算処理を行なう少なくとも1つの演算ユニットと、
複数の記憶領域と、
各演算処理に対して、少なくとも1つの記憶領域を用いてアドレス空間を構成する記憶領域構成回路と、を備え、
少なくとも1つの記憶領域は、複数の演算処理の一部にのみ利用されるように演算ユニットに接続されていることを特徴とする演算処理装置。 An arithmetic processing device capable of changing functions,
At least one arithmetic unit for performing a plurality of independent arithmetic processes;
Multiple storage areas;
A storage area configuration circuit that forms an address space using at least one storage area for each arithmetic processing, and
At least one storage area is connected to an arithmetic unit so as to be used only for a part of a plurality of arithmetic processes.
供給されるアドレス信号の一部のビットに基づいて、
アドレス空間を構成する少なくとも1つの記憶領域のうち、データの書き込みもしくは読み出しを行う記憶領域を選択する制御回路と、
少なくとも1つの記憶領域から読み出されたデータからひとつを選択する読出データ選択回路と、を有し、
前記制御回路は、記憶領域ごとに設けられることを特徴とする請求項1または2に記載の演算処理装置。 The storage area configuration circuit includes:
Based on some bits of the address signal supplied,
A control circuit for selecting a storage area to which data is written or read out of at least one storage area constituting the address space;
A read data selection circuit for selecting one of data read from at least one storage area,
The arithmetic processing apparatus according to claim 1, wherein the control circuit is provided for each storage area.
第1の演算処理が、第2の演算処理に対して構成されるアドレス空間を使用可能とする場合に、第1演算処理と第2演算処理が、共用するアドレス空間に同時にアクセスしないように、アドレス空間への出力または入力する段を制限することを特徴とする請求項7に記載の演算処理装置。 The arithmetic unit has a multistage arrangement structure of logic circuits,
When the first arithmetic processing enables the use of the address space configured for the second arithmetic processing, the first arithmetic processing and the second arithmetic processing do not access the shared address space at the same time. The arithmetic processing apparatus according to claim 7, wherein output stages to the address space or input stages are limited.
各演算処理が保持しなければならないデータ量を取得するステップと、
使用可能な記憶領域の容量を取得するステップと、
各演算処理が保持しなければならないデータ量に応じて、各演算処理が使用可能な記憶領域を割り当てるステップと、
を備えることを特徴とする記憶領域割当方法。 A storage area allocating method for determining a storage area to be assigned to each arithmetic process for an arithmetic processing apparatus having a storage area configuration circuit capable of executing a plurality of arithmetic processes and configuring a storage area for the arithmetic process. And
Obtaining the amount of data that each arithmetic process must hold;
Obtaining the amount of storage space available;
Allocating a storage area that can be used by each arithmetic processing according to the amount of data that each arithmetic processing must hold;
A storage area allocating method comprising:
選択した演算処理から、記憶領域の割り当てを行うことを特徴とする請求項10に記載の記憶領域割当方法。 A step of selecting a calculation process in which the total capacity of the usable storage area is the smallest among the calculation processes for which storage area allocation has not been completed;
The storage area allocation method according to claim 10, wherein the storage area is allocated from the selected arithmetic processing.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008319993A JP2010146102A (en) | 2008-12-16 | 2008-12-16 | Arithmetic processor and storage area allocation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008319993A JP2010146102A (en) | 2008-12-16 | 2008-12-16 | Arithmetic processor and storage area allocation method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010146102A true JP2010146102A (en) | 2010-07-01 |
Family
ID=42566518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008319993A Pending JP2010146102A (en) | 2008-12-16 | 2008-12-16 | Arithmetic processor and storage area allocation method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010146102A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016535913A (en) * | 2013-10-31 | 2016-11-17 | シリコン テーラー リミテッド | Pipelined configurable processor |
JP2020522825A (en) * | 2017-03-14 | 2020-07-30 | アズールエンジン テクノロジーズ ヂュハイ インク.Azurengine Technologies Zhuhai Inc. | Reconfigurable parallel processing |
-
2008
- 2008-12-16 JP JP2008319993A patent/JP2010146102A/en active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016535913A (en) * | 2013-10-31 | 2016-11-17 | シリコン テーラー リミテッド | Pipelined configurable processor |
US10275390B2 (en) | 2013-10-31 | 2019-04-30 | Silicon Tailor Limited | Pipelined configurable processor |
JP2020522825A (en) * | 2017-03-14 | 2020-07-30 | アズールエンジン テクノロジーズ ヂュハイ インク.Azurengine Technologies Zhuhai Inc. | Reconfigurable parallel processing |
US10956360B2 (en) | 2017-03-14 | 2021-03-23 | Azurengine Technologies Zhuhai Inc. | Static shared memory access with one piece of input data to be reused for successive execution of one instruction in a reconfigurable parallel processor |
US11176085B2 (en) | 2017-03-14 | 2021-11-16 | Azurengine Technologies Zhuhai Inc. | Reconfigurable parallel processing with various reconfigurable units to form two or more physical data paths and routing data from one physical data path to a gasket memory to be used in a future physical data path as input |
US11182334B2 (en) | 2017-03-14 | 2021-11-23 | Azurengine Technologies Zhuhai Inc. | Shared memory access for reconfigurable parallel processor using a plurality of memory ports each comprising an address calculation unit |
US11182336B2 (en) | 2017-03-14 | 2021-11-23 | Azurengine Technologies Zhuhai Inc. | Reconfigurable parallel processing with a temporary data storage coupled to a plurality of processing elements (PES) to store a PE execution result to be used by a PE during a next PE configuration |
US11182335B2 (en) | 2017-03-14 | 2021-11-23 | Azurengine Technologies Zhuhai Inc. | Circular reconfiguration for reconfigurable parallel processor using a plurality of memory ports coupled to a commonly accessible memory unit |
US11182333B2 (en) | 2017-03-14 | 2021-11-23 | Azurengine Technologies Zhuhai Inc. | Private memory access for reconfigurable parallel processor using a plurality of memory ports each comprising an address calculation unit |
US11226927B2 (en) | 2017-03-14 | 2022-01-18 | Azurengine Technologies Zhuhai Inc. | Reconfigurable parallel processing |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7580963B2 (en) | Semiconductor device having an arithmetic unit of a reconfigurable circuit configuration in accordance with stored configuration data and a memory storing fixed value data to be supplied to the arithmetic unit, requiring no data area for storing fixed value data to be set in a configuration memory | |
JP4900717B2 (en) | Reconfigurable device | |
JP4104538B2 (en) | Reconfigurable circuit, processing device provided with reconfigurable circuit, function determination method of logic circuit in reconfigurable circuit, circuit generation method, and circuit | |
US20200363966A1 (en) | Scaling out architecture for dram-based processing unit (dpu) | |
CN101796484B (en) | Thread optimized multiprocessor architecture | |
JP4484756B2 (en) | Reconfigurable circuit and processing device | |
CN112149811A (en) | Scheduling perception tensor distribution module | |
US20060004979A1 (en) | Semiconductor device | |
WO2007069506A1 (en) | Storage region allocation system, method, and control device | |
US11893475B2 (en) | Neural network accelerator writable memory | |
JP4423953B2 (en) | Semiconductor integrated circuit | |
US6463518B1 (en) | Generation of memory addresses for accessing a memory utilizing scheme registers | |
JP2010146102A (en) | Arithmetic processor and storage area allocation method | |
US20170192821A1 (en) | Distributed real-time computing framework using in-storage processing | |
US6754801B1 (en) | Method and apparatus for a shift register based interconnection for a massively parallel processor array | |
US20110185152A1 (en) | Reconfigurable circuit and semiconductor integrated circuit | |
JP2012008747A (en) | Integration device, memory allocation method and program | |
US7536499B2 (en) | Memory access control device and processing system having same | |
JP4260086B2 (en) | Data flow graph generation device, processing device, reconfigurable circuit. | |
JP5196538B2 (en) | Semiconductor integrated circuit design method, semiconductor integrated circuit design program, and semiconductor integrated circuit | |
JP4562679B2 (en) | Data flow graph generator | |
JP4436734B2 (en) | Processing equipment | |
JP4562678B2 (en) | Data flow graph reconstruction device, setting data generation device for reconfigurable circuit, and processing device | |
JP2009217619A (en) | Device, method and program for combining operations | |
JP4610236B2 (en) | Setting data generator |