JP2007026365A - Memory controller - Google Patents
Memory controller Download PDFInfo
- Publication number
- JP2007026365A JP2007026365A JP2005211412A JP2005211412A JP2007026365A JP 2007026365 A JP2007026365 A JP 2007026365A JP 2005211412 A JP2005211412 A JP 2005211412A JP 2005211412 A JP2005211412 A JP 2005211412A JP 2007026365 A JP2007026365 A JP 2007026365A
- Authority
- JP
- Japan
- Prior art keywords
- priority
- memory
- memory controller
- priority address
- memory access
- 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.)
- Withdrawn
Links
Images
Abstract
Description
本発明は、複数マスターが単一もしくは複数メモリを共有する計算機システムにおけるメモリコントローラに係わり、複数マスター間、もしくは単一マスター内のアクセス優先順位制御方式に関するものである。 The present invention relates to a memory controller in a computer system in which a plurality of masters share a single memory or a plurality of memories, and relates to an access priority control method between a plurality of masters or within a single master.
図2は従来のメモリコントローラにより複数マスターからのメモリアクセスを制御するシステムのブロック図である。1はASIC(Application Specific Integrated Circuit)であり、メモリ2は例えば、大容量のDRAM(Dynamic Random Access Memory)である。また、ASIC1とメモリ2間は、3メモリバスで接続される。ASIC1は4のメモリコントローラ、7−0〜7−nの複数処理ユニットおよびメモリコントローラと複数処理ユニットを接続する共有バス5からなる。メモリコントローラ4は内部にメモリアクセスコマンド発行キュー6を持つ。処理ユニット(7−0〜7―n)からのメモリアクセス要求は共有バス5を介して、メモリコントローラ4に伝えられる。複数の処理ユニットから同時にアクセス要求があった場合、共有バス5では、処理ユニット(7−0〜7―n)からのアクセス要求の調停が行われる。このアクセス要求は一旦、メモリアクセスコマンド発行キュー6に保持される。メモリアクセスコマンド発行キュー内部のメモリアクセスコマンドはメモリバス3の状態およびメモリアクセスコマンド発行キュー6内に保持されているメモリアクセスコマンドの内容に応じてリオーダーリングが行われ、コマンド発行キュー内の先頭にあるメモリアクセスコマンドがメモリ2に発行される。前記コマンド発行キューは通常メモリバンド幅を最大にするように設計されている。
FIG. 2 is a block diagram of a system for controlling memory access from a plurality of masters by a conventional memory controller.
また、半導体プロセスの進歩と共にASIC1に搭載される処理ユニットの数は増大している。一方で半導体パッケージの制約からASIC1の外部に接続可能なメモリ2は限られており、1つのメモリを共有する処理ユニットの数は増大している。
又、従来例としては、例えば特許文献1と特許文献2と特許文献3をあげることが出来る。
Moreover, as a prior art example,
複数の処理ユニットを含む計算機システムにおいて、アプリケーションプログラムのリアルタイム性が課題となる場合に、ソフトウェアによって複数処理ユニットからのメモリアクセスの優先順位を設定することが必要となる。 In a computer system including a plurality of processing units, when the real time property of an application program becomes a problem, it is necessary to set the priority order of memory access from the plurality of processing units by software.
特定の処理ユニットに優先権を与える事により、メモリアクセスの優先順位を設定する事が可能である。しかしながら、複数処理ユニットを同一ASIC内に搭載した場合、各CPUが実行しているアプリケーションの優先順位に応じたメモリアクセスの優先順位設定が困難となる。 By giving priority to a specific processing unit, it is possible to set the priority of memory access. However, when multiple processing units are mounted in the same ASIC, it becomes difficult to set the priority order of memory access according to the priority order of applications executed by each CPU.
また、メモリコントローラと処理ユニット間を接続するバス上でラウンドロビン等のアービトレーションにより処理ユニットを限定せずに優先順位設定を実行すると、リアルタイム性を保証することが困難となってしまう。 Further, if priority setting is performed without limiting processing units by arbitration such as round robin on a bus connecting the memory controller and the processing units, it becomes difficult to guarantee real-time performance.
また、共有バス上で適切な優先順位決定がなされた場合でも、バンド幅を最大限にすることを意図したメモリコントローラに入力された場合、バンド幅を最大限にするようにリオーダーリングされ、リアルタイム性の確保が困難となる場合がある。 Also, even when proper prioritization is made on the shared bus, it is reordered to maximize bandwidth when input to a memory controller that is intended to maximize bandwidth, It may be difficult to ensure real-time performance.
さらに、負荷分散のため、特定の処理ユニット群で処理を分散する場合等に該当処理ユニット群に優先権を与える方法が無く、リアルタイム性の保証が困難な状況である。 Furthermore, because of load distribution, there is no method for giving priority to a corresponding processing unit group when processing is distributed among specific processing unit groups, and it is difficult to guarantee real-time performance.
本発明は、複数処理ユニットを搭載したASICやマルチプロセッサ計算機システムにおいて、リアルタイム製の改善を測ることを目的とする。 An object of the present invention is to measure improvements made in real time in an ASIC or multiprocessor computer system equipped with a plurality of processing units.
このような課題を解決するために、本発明のうち請求項1記載発明の特徴は、複数の処理ユニットからのメモリアクセスを制御するメモリコントローラにおいて、ソフトウェアにより設定される優先アドレス領域を保持する手段と、前記優先アドレス領域に基づきメモリアクセスコマンドのリオーダーリング可能なメモリアクセスコマンド発行キューと、を具備した点にある。
In order to solve such a problem, a feature of the invention described in
請求項2記載発明の特長は優先アドレス領域を保持する手段が優先アドレスを設定したマスターIDと優先アドレス設定の有効ビットを保持し、前記マスターIDと有効ビットによる優先アドレス設定の排他制御機構を具備した点にある。 According to a second aspect of the present invention, there is provided an exclusive control mechanism for setting a priority address based on the master ID and the valid bit, wherein the means for holding the priority address area holds the master ID in which the priority address is set and the effective bit for setting the priority address. It is in the point.
請求項3記載発明の特長は前記優先アドレス領域を保持する手段は各優先アドレスの優先順位を保持し、前記リオーダーリング可能なメモリアクセスコマンド発行キューは各優先アドレスとその優先順位に基づきリオーダーリングが可能な点にある。 According to a third aspect of the present invention, the means for holding the priority address area holds the priority of each priority address, and the reorderable memory access command issue queue is reordered based on each priority address and its priority. It is in the point where a ring is possible.
請求項4記載発明の特長は請求項2および請求項3の特徴を具備した点にある。
The feature of the invention described in
請求項5記載発明の特徴は請求項1乃至請求項4記載のメモリコントローラにおいて優先アドレスによるリオーダーリング実行のイネーブル機能を搭載した点にある。 According to a fifth aspect of the present invention, the memory controller according to any one of the first to fourth aspects is provided with a reordering execution enable function based on a priority address.
請求項6記載発明の特徴は、メモリコントローラの有する機能を有する要素がコンピュータシステムに取り込まれた点にある。
The feature of the invention described in
以上説明した事から明らかなように本発明によればCPUを含む各処理ユニットの処理の優先順位と使用アドレス領域に基づきメモリアクセスの優先順位を設定でき、処理内容に応じたメモリアクセスの優先順位が容易に設定できる。 As is apparent from the above description, according to the present invention, it is possible to set the memory access priority based on the processing priority and the used address area of each processing unit including the CPU, and the memory access priority according to the processing content. Can be set easily.
更に、複数CPUもしくは複数処理ユニットで処理を共有して実行する場合にでも、使用アドレス空間を特定し優先アドレス設定レジスタに設定する事で、メモリアクセスの優先順位を容易に設定できる。 Further, even when processing is shared and executed by a plurality of CPUs or a plurality of processing units, the priority order of memory access can be easily set by specifying the used address space and setting it in the priority address setting register.
更に、メモリバンド幅が重要なアクセスの場合、優先アドレス設定によるリオーダーリングを無効にする事でメモリバンド幅を優先させる事が出来る。 Furthermore, in the case of an access where the memory bandwidth is important, the memory bandwidth can be prioritized by invalidating the reordering by the priority address setting.
以下図面を参照して本発明の実施形態を説明する。 Embodiments of the present invention will be described below with reference to the drawings.
(第1の実施例)
図1は本発明の実施例を示す。10はASIC(Application Specific Integrated Circuit)であり、11はメモリである。また、ASIC10とメモリ11間は、メモリバス12で接続される。ASIC10は13のメモリコントローラ、19−1〜19−nのCPU、20−1〜20−nの複数処理ユニットと、メモリコントローラとCPU、複数処理ユニットを接続する共有バス18からなる。メモリコントローラ13は内部にメモリアクセスコマンド発行キュー14と優先アドレス保持レジスタ15を持つ。更に、メモリアクセスコマンド発行キュー内にはメモリへのアクセスコマンドを保持する17−1〜17−nのキューとキューのリオーダーリング制御部16よりなる。CPU(19−1〜19−n)は内部パス(18)を介して優先アドレス保持レジスタ(15)へアクセスし、レジスタの情報を更新可能である。処理ユニット(20−1〜20−n)およびCPU(19−1〜19−n)からのメモリアクセス要求は共有バス(18)を介して、メモリコントローラ(13)に伝えられる。複数の処理ユニットおよび複数CPUから同時にアクセス要求があった場合、共有バス(18)では、処理ユニット(10−1〜10−n)およびCPU(19−1〜19−n)からのアクセス要求の調停が行われる。このアクセス要求は一旦、メモリアクセスコマンド発行キュー(14)内部のアクセスコマンドキュー(17−1〜17−n)に保持される。
(First embodiment)
FIG. 1 shows an embodiment of the present invention.
優先アドレス保持レジスタ15は、図3に示すように優先アドレスのスタートおよびエンドポイントを示す構成、もしくは図4に示すような優先アドレスのスタートおよび範囲を示す構成からなる。 The priority address holding register 15 has a configuration indicating the start and end point of the priority address as shown in FIG. 3, or a configuration indicating the start and range of the priority address as shown in FIG.
メモリアクセスコマンドは図5のフローに基づきメモリアクセスコマンド発行キュー(14)に登録される。要求コマンドのアドレスが優先アドレスレジスタ(15)の設定に該当しない場合、要求コマンドは登録済みのコマンドの最後尾に追加される。要求コマンドのアドレスが優先アドレス設定レジスタ(15)の設定に該当する場合、登録済みのコマンドの内、優先度設定レジスタ(15)の設定に該当するコマンドを検索し、該当コマンドの最後尾に要求コマンドを挿入する。 The memory access command is registered in the memory access command issue queue (14) based on the flow of FIG. If the address of the request command does not correspond to the setting of the priority address register (15), the request command is added to the end of the registered command. When the address of the request command corresponds to the setting of the priority address setting register (15), the command corresponding to the setting of the priority setting register (15) is searched from the registered commands, and the request is requested at the end of the corresponding command. Insert a command.
メモリアクセスコマンド発行が可能な場合はアクセスコマンドキュー(17−1)の先頭から順にメモリに対して発行される。 If a memory access command can be issued, the memory access command is issued to the memory in order from the top of the access command queue (17-1).
次に、実際の処理フローについて例を用いて説明する。あるリアルタイム性の高い処理をCPU19−1、CPU19−2で共有して実行すると同時にCPU19−3が別の処理を実行する場合を考える。ソフトウェアは対象データを処理するためのメモリ領域を確保する。例えば、図6の様なメモリ領域を確保したとする。この後、CPU19−1およびCPU19−2の処理のリアルタイム性を考慮し、このメモリ領域(図6では、0x2000_0000-0x6000_0000)を優先アドレス設定レジスタ(15)に保存する。その後、CPU19−1,およびCPU19−2は優先度の高い処理を実行する際に、メモリに対してアクセス要求(a)を発行する。同時にCPU19−3からメモリアクセス要求(b)があった場合、このアクセス要求(b)は優先アドレス設定外であり、アクセス要求(a)に対して優先順位が低いため、アクセス要求(a)が優先的にメモリに発行される。 Next, an actual processing flow will be described using an example. Consider a case in which a CPU 19-1 and a CPU 19-2 execute a process having a high real-time property while executing another process at the same time. The software secures a memory area for processing the target data. For example, assume that a memory area as shown in FIG. 6 is secured. Thereafter, in consideration of real-time processing of the CPU 19-1 and CPU 19-2, this memory area (0x2000_0000-0x6000_0000 in FIG. 6) is stored in the priority address setting register (15). Thereafter, the CPU 19-1 and the CPU 19-2 issue an access request (a) to the memory when executing a process with high priority. At the same time, when there is a memory access request (b) from the CPU 19-3, the access request (b) is outside the priority address setting and has a lower priority than the access request (a). Priority is issued to memory.
CPU19−3の処理が終了し、新たにCPU19−3単独でリアルタイム性の高い処理を実施するために、図7のようなメモリ領域を確保した場合、同様にこのメモリ領域(図6では、0x6000_0000-0x8000_0000)を優先アドレスレジスタ(15)に保存する。この場合、2つの優先アドレスレジスタの設定により、優先アドレス設定領域は0x2000_0000−0x8000_0000となり、CPU19−1からCPU19−3のメモリアクセスコマンドが同じ優先度を持つ。 When the processing of the CPU 19-3 is completed and a new memory area as shown in FIG. 7 is secured in order to newly execute processing with high real-time by the CPU 19-3 alone, this memory area (0x6000_0000 in FIG. -0x8000_0000) is stored in the priority address register (15). In this case, by setting the two priority address registers, the priority address setting area becomes 0x2000_0000-0x8000_0000, and the memory access commands from the CPU 19-1 to the CPU 19-3 have the same priority.
(第2の実施例)
図8は優先アドレス設定レジスタ(15)の構成を示す。本実施例では、優先アドレス設定レジスタ(15)は優先アドレスと同時にマスターIDおよび有効ビットを含む。優先アドレス設定レジスタ(15)は有効ビットが1を示し、かつ、マスターIDが優先アドレスの更新要求を発行しているマスターIDと異なる場合には更新が不可能である。
(Second embodiment)
FIG. 8 shows the configuration of the priority address setting register (15). In this embodiment, the priority address setting register (15) includes a master ID and a valid bit simultaneously with the priority address. The priority address setting register (15) cannot be updated when the valid bit indicates 1 and the master ID is different from the master ID issuing the priority address update request.
例えば、1組の優先アドレス設定レジスタが実装され、マスターとして、CPU19−1、CPU19−2,CPU19−3が実装されている場合、各CPUから優先アドレスの設定が可能であるが、既にCPU19−1が優先アドレスの設定を行っており優先アドレス設定が有効な場合、優先アドレス設定を変更できるのはCPU19−1のみであり、CPU19−2,CPU19−3は変更する事が出来ない。CPU19−1が優先アドレス設定を無効にしてからのみCPU19−2,CPU19−3は優先アドレスの設定が可能である。 For example, when a set of priority address setting registers are mounted and the CPU 19-1, CPU 19-2, and CPU 19-3 are mounted as masters, priority addresses can be set from each CPU, but the CPU 19- When 1 is a priority address setting and the priority address setting is valid, only the CPU 19-1 can change the priority address setting, and the CPU 19-2 and CPU 19-3 cannot. Only after the CPU 19-1 disables the priority address setting, the CPU 19-2 and CPU 19-3 can set the priority address.
(第3の実施例)
図9は優先アドレス設定レジスタ(15)の構成を示す。本実施例では、優先アドレス設定レジスタ(15)は優先アドレスと優先度を含む構成となっており、メモリアクセスコマンド発行キューは優先アドレスとその優先度に基づきリオーダーリングを実施する。
(Third embodiment)
FIG. 9 shows the configuration of the priority address setting register (15). In this embodiment, the priority address setting register (15) includes a priority address and priority, and the memory access command issue queue performs reordering based on the priority address and its priority.
1 ASIC
2 メモリ
3 メモリバス
4 メモリコントローラ
5 バス
6 メモリアクセスコマンド発行キュー
7−0〜7−n 処理ユニット
10 ASIC
11 メモリ
12 メモリバス
13 メモリコントローラ
14 メモリアクセスコマンド発行キュー
15 優先アドレス設定レジスタ
16 リオーダーリング制御ブロック
17−1〜17−n アクセスコマンドキュー
18 共有バス
19−1〜19−n CPU
20−1〜20−n 処理ユニット
1 ASIC
2 Memory 3
11 Memory 12 Memory Bus 13
20-1 to 20-n processing unit
Claims (6)
優先アドレスを保持する手段とを有し、
前記優先アドレス設定情報に基づき、前記コマンド発行キュー内のコマンドのリオーダーリングを実施する手段を備えた事を特徴とするメモリコントローラ。 It has a memory access command issue queue that can be reordered and a means for holding a priority address.
A memory controller comprising means for reordering commands in the command issue queue based on the priority address setting information.
優先アドレスを保持する手段は優先アドレスを設定したマスターIDと優先アドレス設定の有効ビットを保持し、
前記有効ビットが設定されている場合は保持されているマスターIDと一致するマスターのみが有効ビットもしくは優先アドレスの設定を可能とする手段を備えた事を特徴とするメモリコントローラ。 The memory controller of claim 1.
The means for holding the priority address holds the master ID that sets the priority address and the valid bit for setting the priority address,
A memory controller comprising means for enabling only a master that matches a held master ID to set a valid bit or a priority address when the valid bit is set.
優先アドレスを保持する手段は複数のアドレスとその優先順位を保持し、
前記優先アドレス設定情報とアドレスの優先順位設定に基づき、メモリアクセスコマンド発行キュー内のコマンドのリオーダーリングを実施する手段を備えた事を特徴とするメモリコントローラ。 The memory controller of claim 1.
The means for holding priority addresses holds a plurality of addresses and their priorities,
A memory controller comprising means for reordering commands in a memory access command issue queue based on the priority address setting information and address priority setting.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005211412A JP2007026365A (en) | 2005-07-21 | 2005-07-21 | Memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005211412A JP2007026365A (en) | 2005-07-21 | 2005-07-21 | Memory controller |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007026365A true JP2007026365A (en) | 2007-02-01 |
Family
ID=37787001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005211412A Withdrawn JP2007026365A (en) | 2005-07-21 | 2005-07-21 | Memory controller |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007026365A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022023891A1 (en) * | 2020-07-31 | 2022-02-03 | International Business Machines Corporation | Instruction dispatch routing |
-
2005
- 2005-07-21 JP JP2005211412A patent/JP2007026365A/en not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022023891A1 (en) * | 2020-07-31 | 2022-02-03 | International Business Machines Corporation | Instruction dispatch routing |
US11327766B2 (en) | 2020-07-31 | 2022-05-10 | International Business Machines Corporation | Instruction dispatch routing |
GB2612550A (en) * | 2020-07-31 | 2023-05-03 | Ibm | Instruction dispatch routing |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5275414B2 (en) | Readable virtual DMA control and status register | |
JP2007026366A (en) | Memory controller | |
US7689732B2 (en) | Method for improving flexibility of arbitration of direct memory access (DMA) engines requesting access to shared DMA channels | |
JP2009032243A (en) | Optimal use of buffer space by storage controller for writing directly retrieved data to memory | |
JP2008276391A (en) | Memory access control device | |
JP2012008919A (en) | Information processing device | |
JP2009199414A (en) | Microcomputer | |
US20120166682A1 (en) | Memory mapping apparatus and multiprocessor system on chip platform including the same | |
JP5911548B1 (en) | Apparatus, method, and computer program for scheduling access request to shared memory | |
JP2005293596A (en) | Arbitration of data request | |
JP2007172112A (en) | Memory controller | |
US20070204081A1 (en) | Bus system and method for operating a bus system | |
JP2007026365A (en) | Memory controller | |
JP4193746B2 (en) | Matrix bus connection system | |
JP5932261B2 (en) | Memory control device and memory control method | |
JP2014038652A (en) | Communication device, control method of the same, and program | |
WO2005101219A1 (en) | Memory controller and semiconductor device | |
US20080209085A1 (en) | Semiconductor device and dma transfer method | |
JP2007172430A (en) | Semiconductor integrated circuit | |
JP2007506174A (en) | Integrated circuit having a plurality of communication digital signal processors | |
JP2005107873A (en) | Semiconductor integrated circuit | |
JP5390967B2 (en) | Processor system and control method thereof | |
JP2006268734A (en) | Memory access controller | |
JP3094944B2 (en) | Arbitration method and device | |
JP7003752B2 (en) | Data transfer device, data transfer method, program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20081007 |