JPH06230963A - Memory access controller - Google Patents

Memory access controller

Info

Publication number
JPH06230963A
JPH06230963A JP5034302A JP3430293A JPH06230963A JP H06230963 A JPH06230963 A JP H06230963A JP 5034302 A JP5034302 A JP 5034302A JP 3430293 A JP3430293 A JP 3430293A JP H06230963 A JPH06230963 A JP H06230963A
Authority
JP
Japan
Prior art keywords
instruction
memory access
memory
address
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP5034302A
Other languages
Japanese (ja)
Inventor
Kazuya Okabe
和也 岡部
Makoto Odajima
眞 小田島
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP5034302A priority Critical patent/JPH06230963A/en
Publication of JPH06230963A publication Critical patent/JPH06230963A/en
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

PURPOSE:To speed up program processing while adjusting conflict relation by comparing the memory address of an instruction during its execution. CONSTITUTION:Plural instructions are read out of a program and held temporarily in an instruction buffer part 7. At this state, an address calculation part 8 calculates the addresses of the respective instructions, which are stored in a memory access buffer part 12 while their memory addresses are made to correspond to one another. An address comparison part 14 compares the memory addresses of the respective instructions stored in the memory access buffer part 12 to judge the conflict relation. When memory addresses conflict with each other, control for execution from an instruction which is read out first is performed according to the sequence relation of the instructions displayed at the memory access buffer part 12.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は、プログラムから読み出
された複数の命令を実行可能なものから順不同に実行
し、演算速度を高速化する場合に使用されるメモリアク
セス制御装置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a memory access control device used when a plurality of instructions read from a program are executed in an unordered order from the executable one to increase the operation speed.

【0002】[0002]

【従来の技術】情報処理装置が実行するプログラムは、
通常多くの命令を配列して構成される。一般に、プログ
ラムを実行する場合にはその初めから順に命令を読み出
し、呼び出された順に命令を実行する。しかしながら、
これでは十分な処理速度の高速化を図れない。そこで、
プログラムから複数の命令を次々に読み出し、これらの
命令の中で実行可能な命令を検出し、競合が発生しない
限り順不同に命令を実行させ、演算器の利用効率を高め
る方法が紹介されている(Mike Johnson“Superscalar
Microprocessor Architecture”Prentice Hall 199
0)。この手法を実現するためには、メモリアクセス命
令によるメモリアドレスの競合を解決する必要がある。
その方法は、例えば次のような文献に紹介されている。
(a)「DSN型スーパースカラプロセッサプロトタイ
プのロード/ストアパイプライン」情報処理学会計算機
アーキテクチャ研究会86−4
2. Description of the Related Art A program executed by an information processing device is
It is usually constructed by arranging many instructions. Generally, when executing a program, the instructions are read in order from the beginning and the instructions are executed in the order in which they are called. However,
This cannot sufficiently increase the processing speed. Therefore,
A method has been introduced in which a plurality of instructions are read from a program one after another, an executable instruction among these instructions is detected, the instructions are executed in random order unless conflict occurs, and the utilization efficiency of a computing unit is improved ( Mike Johnson “Superscalar
Microprocessor Architecture ”Prentice Hall 199
0). In order to realize this method, it is necessary to solve the memory address conflict due to the memory access instruction.
The method is introduced in the following documents, for example.
(A) "Load / Store Pipeline of DSN Superscalar Processor Prototype" IPSJ Computer Architecture Research Group 86-4

【0003】メモリアドレスの競合としては、LAS
(load after store)、SAL(store after load)、
SAS(store after store )の3種類が存在する。複
数のメモリアクセス命令の間にこのような依存関係があ
った場合、これを検出し、必ず先に読み出された命令を
先に実行するような処置を考えなければならない。その
ために、これから実行しようとするメモリアクセス命令
のメモリアドレスと、まだ実行されていない全ての先に
読み出されたメモリアクセス命令のメモリアドレスとを
予め比較する処理が必要となる。
LAS is a memory address conflict.
(Load after store), SAL (store after load),
There are three types of SAS (store after store). When there is such a dependency among a plurality of memory access instructions, it is necessary to detect this and always consider a measure to execute the instruction read first. Therefore, it is necessary to compare in advance the memory address of the memory access instruction to be executed with the memory addresses of all the previously read memory access instructions that have not yet been executed.

【0004】図2に、メモリアクセス命令の動作説明図
を示す。図に示すように、プログラム1は命令C1、C
2…C5というように複数の命令により構成されてお
り、上から下に向かって各命令が読み出されるものとす
る。このとき、例えば命令C1、C3及びC4がメモリ
アクセス命令であるとした場合、例えば命令C1がメモ
リアドレスA1をアクセスし、命令C3はメモリアドレ
スA2をアクセスするものとする。また、命令C4は同
じくメモリアドレスA2をアクセスするものとする。こ
の場合、命令C3を命令C1に先行して実行しても命令
C1による処理に影響を与えることはない。しかしなが
ら、命令C3よりも命令C4を先に実行すると、同一メ
モリアドレスA2に対しアクセスを行うため、その内容
が書き換えられたよう場合、実行結果に矛盾を生じる。
従って、命令C3と命令C4のメモリアドレスが同一か
どうかを判断し、同一ならば命令C4よりも命令C3の
実行を必ず先行させるといった制御が必要となる。
FIG. 2 is a diagram for explaining the operation of the memory access instruction. As shown in the figure, program 1 has instructions C1 and C
It is assumed that each instruction is read from top to bottom, such as 2 ... C5. At this time, if the instructions C1, C3 and C4 are memory access instructions, for example, the instruction C1 accesses the memory address A1 and the instruction C3 accesses the memory address A2. The instruction C4 also accesses the memory address A2. In this case, the execution of the instruction C3 prior to the instruction C1 does not affect the processing by the instruction C1. However, if the instruction C4 is executed before the instruction C3, the same memory address A2 is accessed, so that if the contents are rewritten, the execution result becomes inconsistent.
Therefore, it is necessary to determine whether the memory addresses of the instruction C3 and the instruction C4 are the same, and if they are the same, the control of causing the instruction C3 to precede the instruction C4 without fail.

【0005】しかしながら、このようなメモリアドレス
は命令をデコードしただけでは判明しない。図3に、メ
モリアドレス生成タイミング説明図を示す。この図は、
命令C3と命令C4とが実行され、メモリアドレスが生
成される過程を示すもので、タイミングT1、T2、T
3、T4というように時間が経過していくものとする。
図に示すように、命令C3をタイミングT1でフェッチ
し、タイミングT2でそのデコードを行う。この段階で
は、まだメモリアドレスは判明しない。その後、タイミ
ングT3において、命令を実行する際にアドレス計算が
行われる。このとき、メモリアドレスA2が判明する。
命令C4についても同様のタイミングで処理が行われ、
タイミングT3において、メモリアドレスが生成されて
その内容が比較される。従って、この段階でメモリアド
レスの競合が発見され、命令C3が先に実行されること
になる。
However, such a memory address is not known only by decoding the instruction. FIG. 3 shows a memory address generation timing explanatory diagram. This figure is
It shows a process in which the instruction C3 and the instruction C4 are executed and a memory address is generated. Timings T1, T2, T
It is assumed that time elapses, such as 3 and T4.
As shown in the figure, the instruction C3 is fetched at the timing T1 and is decoded at the timing T2. At this stage, the memory address is not known yet. After that, at timing T3, address calculation is performed when the instruction is executed. At this time, the memory address A2 is known.
The instruction C4 is processed at the same timing,
At timing T3, memory addresses are generated and their contents are compared. Therefore, at this stage, a memory address conflict is found and the instruction C3 is executed first.

【0006】パイプライン処理では、一方の命令の処理
が他方より1マシンサイクル先行する。従って、上記の
ような処理を行うためには、一方の命令のアドレス計算
を終了した段階でメモリアドレスを保持し、更に各命令
については、その読み出し順序関係を明確にしておく必
要がある。このような処理をプログラム実行時に行うこ
とは容易でないことから、従来、例えばコンパイル時に
実行順序を指定する情報を命令に付加するようにしてい
た。一般に、メモリアクセス命令は次の3種類に分類さ
れる。まず、「strongly Ordered」という命令は、命令
順序通り実行すべき命令である。競合関係の存在が明ら
かな場合や競合関係の存在が判断できない場合には、こ
の命令は読み出し順通りに実行する。また、「weakly O
rdered」という命令は、同一データ型のメモリアクセス
命令相互間で順序通りに実行されることを確保する命令
である。従って、異なるデータ型に対するメモリアクセ
ス命令相互間では適用されない。また、「Unorderd」と
いう命令は、全く読み出し順に従わないで実行できる命
令である。これは各命令が全く相互に依存競合関係が無
いと断定できる場合に適用される。従って、このような
命令については順不同に実行され、高速演算処理が可能
となる。
In pipeline processing, the processing of one instruction precedes the other by one machine cycle. Therefore, in order to perform the above-described processing, it is necessary to hold the memory address at the stage when the address calculation of one instruction is completed, and to clarify the read order relationship of each instruction. Since it is not easy to perform such processing at the time of executing a program, conventionally, for example, information for designating an execution order is added to an instruction at the time of compilation. Generally, memory access instructions are classified into the following three types. First, the instruction "strongly Ordered" is an instruction that should be executed in the order of instructions. When it is clear that a competitive relationship exists or when it cannot be determined that this competitive relationship exists, this instruction is executed in the order of reading. Also, "weakly O
The instruction "rdered" is an instruction that ensures that memory access instructions of the same data type are executed in order. Therefore, it does not apply between memory access instructions for different data types. The instruction "Unordered" is an instruction that can be executed without following the reading order at all. This applies when it can be concluded that each instruction has no mutually dependent competitive relationship. Therefore, such instructions are executed in any order, and high-speed arithmetic processing is possible.

【0007】[0007]

【発明が解決しようとする課題】ところで、上記のよう
な従来技術では、演算処理の実行前に命令順序を設定し
てしまう。従って、実行前に判断できないような順序関
係がある場合、競合関係が発生するケースを考慮して、
命令を読み出し順に実行させるような設定を行うことに
なる。従って、実際にプログラムを実行していく段階で
命令間に競合関係が無いとわかっても、これらの命令は
読み出し順に実行されるため、プログラムの十分な処理
高速化が図れないといった解決すべき課題があった。更
に、予め競合関係は発生しないと判断され、命令順序に
従わないで実行できるとした命令が実行中に依存関係を
発生し、演算処理結果にエラーが生じるといった状態の
発生するおそれも皆無ではない。また、上記のような処
置を行うためには、予め各命令にその命令の種類を示す
情報を付加する新たなビットを必要とする。従って、プ
ログラム全体を格納するためのメモリの容量が大きくな
るといった解決すべき課題もあった。本発明は以上の点
に着目してなされたもので、命令を実行中にそのメモリ
アドレスを比較し、競合関係を調整しながらプログラム
処理の高速化を図るメモリアクセス制御装置を提供する
ことを目的とするものである。
By the way, in the prior art as described above, the instruction order is set before the execution of the arithmetic processing. Therefore, if there is an order relation that cannot be judged before execution, consider the case where a conflict occurs and
Settings are made so that the instructions are executed in the order of reading. Therefore, even if it is found that there is no competition between instructions at the stage of actually executing the program, these instructions are executed in the order of reading, so that the processing speed of the program cannot be sufficiently increased. was there. Furthermore, there is a possibility that a situation may occur in which it is determined in advance that a conflict relationship does not occur, and an instruction that can be executed without following the instruction order causes a dependency relationship during execution, resulting in an error in the operation processing result. . In addition, in order to carry out the above-mentioned treatment, a new bit is added to each instruction in advance to add information indicating the type of the instruction. Therefore, there is also a problem to be solved that the capacity of the memory for storing the entire program becomes large. The present invention has been made in view of the above points, and it is an object of the present invention to provide a memory access control device that speeds up program processing while comparing memory addresses of instructions during execution and adjusting a competition relationship. It is what

【0008】[0008]

【課題を解決するための手段】本発明のメモリアクセス
制御装置は、プログラムから読み出された複数の命令を
実行前に読み出して保持する命令バッファ部と、前記命
令バッファ部内のメモリアクセス命令のアクセス対象と
なるメモリアドレスを計算するアドレス計算部と、前記
命令バッファ部中の各メモリアクセス命令の実行順と各
命令のメモリアドレス及びデータを表示するメモリアク
セスバッファ部と、前記各命令のメモリアドレスを比較
するアドレス比較部と、メモリアドレスの一致した競合
命令があったとき、前記メモリアクセスバッファ部を参
照して、先に読み出された命令の実行を優先させるメモ
リアクセス制御部とを備えたことを特徴とするものであ
る。
A memory access control apparatus according to the present invention accesses an instruction buffer unit for reading and holding a plurality of instructions read from a program before execution, and a memory access instruction in the instruction buffer unit. An address calculation unit that calculates a target memory address, a memory access buffer unit that displays the execution order of each memory access instruction in the instruction buffer unit and the memory address and data of each instruction, and a memory address of each instruction An address comparison unit for comparing and a memory access control unit that prioritizes execution of the previously read instruction by referring to the memory access buffer unit when there is a conflicting instruction with a matching memory address It is characterized by.

【0009】[0009]

【作用】この装置は、プログラムから複数の命令を読み
出し、一旦命令バッファ部に保持する。この段階でアド
レス計算部により各命令のアドレス計算が実行され、命
令と命令のメモリアドレスとが対応付けられてメモリア
クセスバッファ部に格納される。アドレス比較部は、メ
モリアクセスバッファ部に格納された各命令のメモリア
ドレスを比較し、競合関係を判断する。メモリアドレス
が競合した場合、メモリアクセスバッファ部に表示され
た命令の順序関係に従い、最初に読み出された命令から
実行する制御が行われる。従って、メモリアクセス命令
のメモリアドレスの競合は、常に実行時に判断され、そ
の段階で競合が発生しないと判断された命令は順不同に
実行されるため、処理速度を最大限に高速化できる。し
かも、命令に予めその実行順を示す情報を付加する必要
はなくなる。
This device reads a plurality of instructions from the program and temporarily holds them in the instruction buffer section. At this stage, the address calculation unit executes the address calculation of each instruction, and the instruction and the memory address of the instruction are associated with each other and stored in the memory access buffer unit. The address comparison unit compares the memory address of each instruction stored in the memory access buffer unit and determines the competition relationship. When the memory addresses conflict, the instruction read first is executed according to the order relation of the instructions displayed in the memory access buffer section. Therefore, the memory address conflict of the memory access instruction is always determined at the time of execution, and the instruction determined to have no conflict at that stage is executed out of order, so that the processing speed can be maximized. Moreover, it is not necessary to add information indicating the execution order to the instruction in advance.

【0010】[0010]

【実施例】以下、本発明を図の実施例を用いて詳細に説
明する。図1は、本発明のメモリアクセス制御装置実施
例を示すブロック図である。図の装置は、命令キャッシ
ュ5に格納されたプログラムを構成する各命令を読み出
し、メモリ6をアクセスする等によってその処理を実行
するための装置である。この命令キャッシュ5から読み
出された命令を格納するために、命令バッファ部7が設
けられている。また、この他に、アドレス計算部8、レ
ジスタファイル9、メモリアクセス命令制御部10等が
設けられている。メモリアクセス命令制御部10には、
メモリアクセス命令デコード部11、メモリアクセスバ
ッファ部12、命令番号制御部13及びアドレス比較部
14が設けられている。また、メモリアクセス命令制御
部10とメモリ6との間には、メモリアクセス制御部1
5が設けられている。
The present invention will be described in detail below with reference to the embodiments shown in the drawings. FIG. 1 is a block diagram showing an embodiment of a memory access control device of the present invention. The device shown in the figure is a device for reading out each instruction constituting a program stored in the instruction cache 5 and executing the processing by accessing the memory 6 or the like. An instruction buffer unit 7 is provided to store the instructions read from the instruction cache 5. In addition to this, an address calculation unit 8, a register file 9, a memory access instruction control unit 10 and the like are provided. The memory access instruction control unit 10 includes
A memory access instruction decoding unit 11, a memory access buffer unit 12, an instruction number control unit 13, and an address comparison unit 14 are provided. Further, between the memory access instruction control unit 10 and the memory 6, the memory access control unit 1
5 are provided.

【0011】命令キャッシュ5は、プログラム実行の高
速化を図るために、プログラムの一部を転送し格納して
おくための従来良く知られたキャッシュメモリから構成
される。命令バッファ部7は、本発明において新たに設
けられたもので、命令キャッシュ5から複数のメモリア
クセス命令をその実行前に読み出し、保持しておくため
の記憶部から構成される。この命令バッファ部7は、命
令部7−1と番号部7−2とにより構成される。命令部
7−1には読み出された命令が格納され、番号部7−2
には各命令を識別するための番号が格納される。この番
号は、メモリアクセスバッファ部12に格納されるメモ
リアドレス等と、命令バッファ部7に格納された命令の
うちメモリアクセス命令とを対応付けるために設けられ
る符号である。
The instruction cache 5 comprises a conventionally well-known cache memory for transferring and storing a part of a program in order to speed up the program execution. The instruction buffer unit 7 is newly provided in the present invention, and is composed of a storage unit for reading and holding a plurality of memory access instructions from the instruction cache 5 before executing them. The instruction buffer unit 7 is composed of an instruction unit 7-1 and a number unit 7-2. The instruction unit 7-1 stores the read instruction, and the number unit 7-2
A number for identifying each instruction is stored in. This number is a code provided for associating a memory address or the like stored in the memory access buffer unit 12 with a memory access instruction of the instructions stored in the instruction buffer unit 7.

【0012】アドレス計算部8は、命令バッファ部7に
格納された各命令を解読し、その命令がメモリアクセス
命令であった時にそのアドレスを計算するための演算処
理部である。レジスタファイル9は、そのアドレス計算
等に必要なデータを格納したデータメモリから構成され
る。メモリアクセス命令制御部10のメモリアクセス命
令デコード部11は、命令キャッシュ5から読み出され
た各命令をデコードするための回路である。この回路は
命令のメモリアクセス命令であることを識別する。メモ
リアクセスバッファ部12は、後で説明する図5に示し
たメモリアクセステーブル21を格納し、ここに各命令
のメモリアドレス等に関する情報を保持する記憶領域か
ら構成される。なお、メモリアクセスバッファ部12に
設けられたメモリアクセステーブル21と、命令バッフ
ァ部7に格納された各命令との対応付けを行うために、
命令番号制御部13が設けられ、ここに命令番号キュー
22が格納される。
The address calculation unit 8 is an arithmetic processing unit for decoding each instruction stored in the instruction buffer unit 7 and calculating the address when the instruction is a memory access instruction. The register file 9 is composed of a data memory that stores data necessary for the address calculation and the like. The memory access instruction decoding unit 11 of the memory access instruction control unit 10 is a circuit for decoding each instruction read from the instruction cache 5. This circuit identifies the instruction as a memory access instruction. The memory access buffer unit 12 stores a memory access table 21 shown in FIG. 5, which will be described later, and is composed of a storage area that holds information about the memory address of each instruction. In order to associate the memory access table 21 provided in the memory access buffer unit 12 with each instruction stored in the instruction buffer unit 7,
The instruction number control unit 13 is provided, and the instruction number queue 22 is stored therein.

【0013】図4に、命令番号キュー説明図を示す。こ
の命令番号キューは、命令バッファ部7に格納できる命
令の数だけ各命令を識別する番号値を備えている。ここ
では、例えばその数を“8”とし、番号値は“1”から
“8”までが用意されている。そして、その番号値を格
納するフィールドには、それぞれValフィールドが付
加されており、その番号値が有効かどうかを示すように
なっている。即ち、Valフィールドが“1”の場合に
は、その番号値は有効であり、命令バッファ部7に新た
に格納されるメモリアクセス命令に、その番号値を付加
することができることを表わす。
FIG. 4 is an explanatory diagram of the instruction number queue. This instruction number queue has number values for identifying each instruction by the number of instructions that can be stored in the instruction buffer unit 7. Here, for example, the number is set to "8", and the number values "1" to "8" are prepared. Then, a Val field is added to each field for storing the number value so as to indicate whether or not the number value is valid. That is, when the Val field is “1”, the number value is valid, and the number value can be added to the memory access instruction newly stored in the instruction buffer unit 7.

【0014】図5に、メモリアクセステーブル説明図を
示す。このメモリアクセステーブルは、命令番号フィー
ルドと、命令フィールド、メモリアドレスフィールド、
レジスタ名フィールド、データフィールド及びValフ
ィールドから構成される。命令番号フィールドには、上
記命令バッファ部7に格納された命令に付加された番号
が記入される。即ち、例えば命令番号キューのValフ
ィールドは、予め全て“1”となっており、命令バッフ
ァ部7に最初の命令が1個格納されると、命令番号キュ
ーの番号値1のValフィールドが“0”となる。そし
て、その番号値が命令バッファ部7の番号部に格納され
ると同時に、メモリアクセステーブル21の最上段にそ
の番号値が格納される。これによって、命令バッファ部
7に格納された命令とメモリアクセステーブル21の中
に格納された情報との対応付けが行われる。
FIG. 5 is an explanatory diagram of the memory access table. This memory access table has an instruction number field, an instruction field, a memory address field,
It is composed of a register name field, a data field and a Val field. In the instruction number field, the number added to the instruction stored in the instruction buffer unit 7 is entered. That is, for example, the Val fields of the instruction number queues are all "1" in advance, and when one instruction is stored in the instruction buffer unit 7, the Val field of the number value 1 of the instruction number queue is "0". "It becomes. Then, the number value is stored in the number portion of the instruction buffer unit 7, and at the same time, the number value is stored in the uppermost stage of the memory access table 21. As a result, the instruction stored in the instruction buffer unit 7 and the information stored in the memory access table 21 are associated with each other.

【0015】メモリアクセステーブル21の命令フィー
ルドには、命令バッファ部7に格納された命令の種別が
格納される。上記命令バッファ部7には、この実施例で
はメモリアクセス命令のみが格納される。そして、その
命令が、例えばSTORE命令とLOAD命令とに分類
される。従って、命令フィールドにはSTOREあるい
はLOADのいずれかの表示データが格納されることに
なる。メモリアドレスフィールドには、その命令のアク
セス対象となるメモリアドレスが格納される。このメモ
リアドレスは、先に説明したアドレス計算部8により演
算処理されて得られたデータである。レジスタ名フィー
ルドには、STOREやLOADを行う際に使用される
データを一時的に保持するレジスタ番号が格納される。
データフィールドには、そのLOADやSTOREに使
用されるデータが格納される。また、Valフィールド
には、そのテーブルの各行の内容が有効かどうかを示す
値が格納される。有効の場合は“1”、無効の場合は
“0”とされる。
The instruction field of the memory access table 21 stores the type of instruction stored in the instruction buffer unit 7. In the embodiment, only the memory access instruction is stored in the instruction buffer unit 7. Then, the instruction is classified into, for example, a STORE instruction and a LOAD instruction. Therefore, display data of either STORE or LOAD is stored in the command field. The memory address field stores a memory address to be accessed by the instruction. This memory address is data obtained by arithmetic processing by the address calculator 8 described above. The register name field stores a register number that temporarily holds data used when performing STORE or LOAD.
The data used for the LOAD or STORE is stored in the data field. In the Val field, a value indicating whether the contents of each row of the table are valid is stored. When it is valid, it is "1", and when it is invalid, it is "0".

【0016】以下、本発明の装置の動作例を具体的に順
を追って説明する。図6は、メモリアクセス命令動作タ
イミングチャートである。例えば、図1に示す装置の命
令キャッシュ5から2個のメモリアクセス命令が命令バ
ッファ部7に読み出され保持されたとする。この命令
は、図6(a)及び(b)に示す通りの内容のもので、
一方はSTORE命令、他方はLOAD命令である。な
お、その第1引数は、それぞれR2、R3と表示されて
いるが、これらは命令実行の際のデータを保持するレジ
スタ番号である。また、第2引数はR10、R11と表
示されているが、これらはメモリアクセスのためのアド
レスレジスタ番号を示している。また、この装置はパイ
プライン処理を実行しており、図6に示すように、各命
令の処理は、fがフェッチ、dがデコード、eが実行、
mがメモリアクセス、wがレジスタへの書込みという5
種類のステージから構成される。
Hereinafter, an example of the operation of the device of the present invention will be specifically described in order. FIG. 6 is a memory access instruction operation timing chart. For example, assume that two memory access instructions are read from the instruction cache 5 of the device shown in FIG. 1 and held in the instruction buffer unit 7. This command has the content as shown in FIGS. 6 (a) and 6 (b).
One is a STORE instruction and the other is a LOAD instruction. The first argument is indicated as R2 and R3, respectively, and these are register numbers for holding data at the time of instruction execution. Also, the second argument is displayed as R10 and R11, which indicate the address register numbers for memory access. Further, this apparatus executes pipeline processing. As shown in FIG. 6, in processing of each instruction, f is fetch, d is decode, and e is
m is memory access and w is register writing 5
It consists of different stages.

【0017】プログラム実行開始前には、図4に示す命
令番号キューのValフィールドの値は全て“1”、図
5に示すメモリアクセステーブルのValフィールド
は、いずれもその値が全て“0”になっている。ここ
で、タイミングT1でSTORE命令が命令キャッシュ
5から命令バッファ部7にフェッチされる。このとき、
予め図1に示すメモリアクセス命令デコード部11が、
読み出された命令がメモリアクセス命令であることを認
識する。この場合、そのSTORE命令が命令バッファ
部7の命令部7−1に格納される。そして、命令番号制
御部13は、命令番号キューの最初の番号値1につい
て、そのValフィールドを無効、即ち値“0”に切り
換えると共に、番号値“1”を命令バッファ部7の番号
部7−2に格納する。また、メモリアクセスバッファ部
12は、同一の番号値をメモリアクセステーブル21の
命令番号フィールドに格納すると共に、その段のVal
フィールドを有効、即ち“1”に切り換える。
Before the execution of the program, all the values of the Val field of the instruction number queue shown in FIG. 4 are "1", and the values of all the Val fields of the memory access table shown in FIG. 5 are all "0". Has become. Here, at timing T1, the STORE instruction is fetched from the instruction cache 5 into the instruction buffer unit 7. At this time,
The memory access instruction decoding unit 11 shown in FIG.
Recognize that the read instruction is a memory access instruction. In this case, the STORE instruction is stored in the instruction section 7-1 of the instruction buffer section 7. Then, the instruction number control unit 13 invalidates the Val field of the first number value 1 of the instruction number queue, that is, switches it to the value “0”, and sets the number value “1” to the number unit 7- of the instruction buffer unit 7. Store in 2. In addition, the memory access buffer unit 12 stores the same number value in the instruction number field of the memory access table 21, and at the same time Val
The field is enabled, that is, switched to "1".

【0018】次のタイミングT2では、タイミングT1
でフェッチされたSTORE命令の詳細なデコードが行
われ、レジスタ番号R10からアドレス計算のためのメ
モリアドレスが読み出される。このレジスタは、図1に
示すレジスタファイル9に設けられている。このとき、
例えばSTOREすべきデータをレジスタ番号R2のレ
ジスタから読み出そうとしたが、レジスタデータハザー
ドによって読み出すことができないとする。なお、レジ
スタデータハザードというのは、他の命令等によりレジ
スタ番号R2のレジスタが占有されており、別の命令で
使用できないような状態をいう。この段階で、メモリア
クセステーブル21のレジスタ名フィールドにそのレジ
スタ名が書き込まれる。なお、このようなレジスタデー
タハザードの状態は、例えばタイミングT4の終了時ま
で続くものとする。
At the next timing T2, the timing T1
The STORE instruction fetched in (1) is decoded in detail, and the memory address for address calculation is read from the register number R10. This register is provided in the register file 9 shown in FIG. At this time,
For example, it is assumed that the data to be stored is read from the register of the register number R2, but it cannot be read due to the register data hazard. The register data hazard means a state in which the register with the register number R2 is occupied by another instruction or the like and cannot be used by another instruction. At this stage, the register name is written in the register name field of the memory access table 21. Note that such a register data hazard state is assumed to continue until the end of timing T4, for example.

【0019】一方、タイミングT2において、LOAD
命令が命令キャッシュ5からフェッチされ、メモリアク
セス命令デコード部11においてデコードされる。この
場合にも、タイミングT3において、先に実行されたS
TORE命令と同様にその命令が命令バッファ部7に格
納され、命令番号キューから番号値2が取り出され、そ
の番号が番号部7−2に格納される。また、図5に示す
メモリアクセステーブル21の命令番号フィールドにそ
の番号値が格納され、Valフィールドが有効になる。
タイミングT3においては、STORE命令のアドレス
が計算されるが、このタイミングでLOAD命令のデコ
ードが行われ、メモリアクセステーブル21には、その
LOAD命令の実行のためのレジスタ名R3がレジスタ
名フィールドに書き込まれる。
On the other hand, at timing T2, LOAD
The instruction is fetched from the instruction cache 5 and decoded by the memory access instruction decoding unit 11. Also in this case, at the timing T3, the S executed earlier is executed.
Similar to the TORE instruction, that instruction is stored in the instruction buffer unit 7, the number value 2 is fetched from the instruction number queue, and the number is stored in the number unit 7-2. The number value is stored in the instruction number field of the memory access table 21 shown in FIG. 5, and the Val field becomes valid.
At the timing T3, the address of the STORE instruction is calculated, but the LOAD instruction is decoded at this timing, and the register name R3 for executing the LOAD instruction is written in the register name field in the memory access table 21. Be done.

【0020】タイミングT4では、本来STORE命令
のメモリアクセスが行われるはずである。しかしなが
ら、STOREすべきデータを保持するレジスタ番号R
2のレジスタの読み出しができないため、メモリアクセ
スステージに進むことができない。タイミングT5で、
STORE命令によるレジスタ番号R2のレジスタの読
み出しが可能になる。そこで、このレジスタに格納され
たデータをメモリアクセステーブル21のデータフィー
ルドに書き出し、命令バッファ部7から該当する番号値
1の命令が取り出される。STORE命令により必要な
データをメモリアクセステーブルに移した結果、命令バ
ッファ部7へSTORE命令を保存する必要がなくなっ
たためで、これにより次のメモリアクセス命令の保護が
可能になる。
At timing T4, the memory access of the STORE instruction is supposed to be performed. However, the register number R that holds the data to be stored
Since the second register cannot be read, the memory access stage cannot proceed. At timing T5,
It becomes possible to read the register of the register number R2 by the STORE instruction. Therefore, the data stored in this register is written in the data field of the memory access table 21, and the instruction with the corresponding number value 1 is fetched from the instruction buffer unit 7. As a result of moving the necessary data to the memory access table by the STORE instruction, it is no longer necessary to store the STORE instruction in the instruction buffer unit 7, so that the next memory access instruction can be protected.

【0021】このLOAD命令では、アドレス競合がな
ければSTORE命令に先行してメモリアクセスが可能
となる。従って、アドレス比較部14がSTORE命令
のメモリアドレスとLOAD命令のメモリアドレスとを
比較する。即ち、タイミングT3において、STORE
命令のメモリアドレスが計算され、タイミングT4にお
いてLOAD命令のメモリアドレスがアドレス計算部8
によって計算され、両者が一致するか比較されて競合判
断が行われる。この実施例の場合には、図5に示すメモ
リアクセステーブル21のメモリアドレスフィールドに
示すように、メモリアドレスが一致しないため、LOA
D命令の先行処理が可能となる。従って、LOAD命令
のメモリアクセスを行うことがメモリアクセス命令制御
部10からメモリアクセス制御部15に通知される。
With this LOAD instruction, memory access is possible prior to the STORE instruction if there is no address conflict. Therefore, the address comparison unit 14 compares the memory address of the STORE instruction with the memory address of the LOAD instruction. That is, at timing T3, STORE
The memory address of the instruction is calculated, and at timing T4, the memory address of the LOAD instruction is calculated by the address calculation unit 8
Competitive judgment is made by comparing and comparing both. In the case of this embodiment, the memory addresses do not match as shown in the memory address field of the memory access table 21 shown in FIG.
The D command can be processed in advance. Therefore, the memory access instruction control unit 10 notifies the memory access control unit 15 that the memory access of the LOAD instruction is performed.

【0022】一方、もしアドレス比較部14によって、
STORE命令とLOAD命令のメモリアドレスが一致
すると判断された場合には、先に読み出されたSTOR
E命令が先に実行される。この例では、予めメモリアク
セステーブルの上位の段には必ず下位の段よりも先に読
み出された命令が格納されるように設定されている。従
って、アドレス比較部14からメモリアドレスが一致す
るという情報が出力されると、自動的にメモリアクセス
テーブルの上位の段にあるValフィールドが有効なS
TORE命令が先に処理されるようにメモリアクセス制
御部15に通知される。このような構成をとることによ
り、アドレス比較部14では、命令の読み出し順序関係
を考慮した処理は必要としない。
On the other hand, if the address comparison unit 14
If it is determined that the memory addresses of the STORE instruction and the LOAD instruction match, the STOR read previously
The E instruction is executed first. In this example, it is set in advance that the instruction read out before the lower stage is always stored in the upper stage of the memory access table. Therefore, when the information that the memory addresses match is output from the address comparison unit 14, the Val field in the upper stage of the memory access table is automatically set to the valid S.
The memory access control unit 15 is notified so that the TORE instruction is processed first. By adopting such a configuration, the address comparison unit 14 does not need to process the instruction read order relationship.

【0023】タイミングT6では、STORE命令によ
るメモリアクセスが実行される。また、同一のタイミン
グでLOAD命令により得られたデータがレジスタ名R
3のレジスタに格納される。なお、LOAD命令の際に
は、メモリ6から読み出されたデータがメモリアクセス
テーブル21のデータフィールドに一旦格納される。こ
れが、タイミングT6において、レジスタ名R3のレジ
スタに書き込まれる。そして、このとき命令バッファ部
7の番号値が2のLOAD命令が取り出され、メモリア
クセステーブル21のLOAD命令に対応するValフ
ィールドが無効、即ち“0”とされる。こうして、メモ
リアクセステーブル21からLOAD命令に対する情報
が削除され、次のタイミングT7ではSTORE命令に
よるレジスタへの書込みステージを終了する。ここで、
STORE命令についてもメモリアクセステーブルのV
alフィールドが無効とされる。なお、命令番号制御部
13では、命令の実行が終了すると、命令キュー22の
Valフィールドが“0”の最上段の部分に番号値
“2”を書き込んで、そのValフィールドを“1”に
し、次の使用を可能にする。
At timing T6, memory access is executed by the STORE instruction. Also, the data obtained by the LOAD instruction at the same timing is the register name R
3 register. In the case of the LOAD instruction, the data read from the memory 6 is temporarily stored in the data field of the memory access table 21. This is written in the register with the register name R3 at timing T6. Then, at this time, the LOAD instruction with the number value of 2 in the instruction buffer unit 7 is taken out, and the Val field corresponding to the LOAD instruction in the memory access table 21 is invalidated, that is, is set to “0”. In this way, the information for the LOAD instruction is deleted from the memory access table 21, and at the next timing T7, the stage of writing to the register by the STORE instruction ends. here,
For the STORE instruction, V of the memory access table
The al field is invalid. When the execution of the instruction is completed, the instruction number control unit 13 writes the number value “2” in the uppermost portion of the instruction queue 22 where the Val field is “0”, and sets the Val field to “1”. Allows the use of:

【0024】以上のように、本発明の装置は、概略的に
は次のような原理で動作する。図7に、本発明の装置の
動作フローチャートを示す。図において、ステップS1
で命令バッファ部7から命令が取り出される。そして、
ステップS2において、アドレス計算が行われる。ステ
ップS3でメモリアクセステーブル21が参照され、ス
テップS4において、テーブルの上位に競合命令がある
かどうかが判断される。もし、競合命令がなければステ
ップS6に移り、命令が実行されるが、もし競合命令が
あればステップS5において、メモリアクセステーブル
21の上位の競合命令のValフラグが無効になるまで
待機する。即ち、必ずメモリアクセステーブルの上位に
ある命令から順にメモリアクセスが実行される。
As described above, the device of the present invention generally operates on the following principle. FIG. 7 shows an operation flowchart of the device of the present invention. In the figure, step S1
The instruction is fetched from the instruction buffer unit 7. And
In step S2, address calculation is performed. In step S3, the memory access table 21 is referred to, and in step S4, it is determined whether or not there is a conflicting instruction at the upper level of the table. If there is no conflicting instruction, the process proceeds to step S6 and the instruction is executed. If there is a conflicting instruction, in step S5, it waits until the Val flag of the higher-order conflicting instruction of the memory access table 21 becomes invalid. That is, the memory access is always executed sequentially from the higher order instruction in the memory access table.

【0025】本発明は以上の実施例に限定されない。メ
モリアドレス競合制御のためのメモリアクセステーブル
の構成は、上記の例に限定されず、少なくとも命令とそ
のメモリアドレスとが対応付けられ、更に各命令の読み
出し順序関係が明らかになっているものであればどのよ
うなものであってもよい。また、上記実施例では命令バ
ッファ部とメモリアクセステーブルに命令番号制御部か
ら同一の番号値の命令番号を付すように制御したが、も
し命令バッファ部にメモリアクセステーブルを同時に格
納することができるような構成であれば、上記のような
手段をとる必要はない。
The present invention is not limited to the above embodiments. The configuration of the memory access table for memory address conflict control is not limited to the above example, and at least the instruction and its memory address are associated with each other, and the read order relationship of each instruction is clear. It can be anything. Further, in the above embodiment, the instruction buffer unit and the memory access table are controlled by the instruction number control unit so that the instruction number having the same number value is assigned, but if the instruction buffer unit can store the memory access table at the same time. With such a configuration, it is not necessary to take the above means.

【0026】[0026]

【発明の効果】以上説明した本発明のメモリアクセス制
御装置は、命令バッファ部に対しプログラムから読み出
された複数のメモリアクセス命令を実行前に読み出して
保持し、アドレス計算部において、各命令のアクセス対
象となるメモリアドレスを計算し、メモリアクセスバッ
ファ部にメモリバッファ中の各命令の読み出し順と、命
令のアクセスアドレスとを表示し、アドレス比較部にお
いて各命令のアクセスアドレスを比較してアクセスアド
レスの一致した競合命令があったとき、先に読み出され
た命令の実行を優先させるように制御する構成としたた
め、予め各命令に実行順を示す情報を付加する必要がな
く、命令実行時に競合が明らかなものについてのみ、そ
の読み出し順に命令を実行し、それ以外の場合には順不
同に命令を実行することができ、プログラムの実行を極
めて高速に能率良く行うことができる。
The memory access control device of the present invention described above reads and holds a plurality of memory access instructions read from a program in the instruction buffer unit before execution, and the address calculation unit stores each instruction. The memory address to be accessed is calculated, the reading order of each instruction in the memory buffer and the access address of the instruction are displayed in the memory access buffer section, and the access address of each instruction is compared in the address comparison section When there is a conflicting conflicting instruction, the instruction read out first is prioritized so that it is controlled so that it is not necessary to add information indicating the execution order to each instruction in advance. Are executed in the order in which they are read, otherwise the instructions are executed in any order. It is possible, can be efficiently performed very fast program execution.

【図面の簡単な説明】[Brief description of drawings]

【図1】本発明のメモリアクセス制御装置実施例を示す
ブロック図である。
FIG. 1 is a block diagram showing an embodiment of a memory access control device of the present invention.

【図2】メモリアクセス命令の動作説明図である。FIG. 2 is an operation explanatory diagram of a memory access instruction.

【図3】メモリアドレス生成タイミング説明図である。FIG. 3 is an explanatory diagram of memory address generation timing.

【図4】命令番号キュー説明図である。FIG. 4 is an explanatory diagram of an instruction number queue.

【図5】メモリアクセステーブル説明図である。FIG. 5 is an explanatory diagram of a memory access table.

【図6】メモリアクセス命令動作タイミングチャートで
ある。
FIG. 6 is a memory access instruction operation timing chart.

【図7】本発明の装置の動作フローチャートである。FIG. 7 is an operation flowchart of the device of the present invention.

【符号の説明】[Explanation of symbols]

5 命令キャッシュ 6 メモリ 7 命令バッファ部 8 アドレス計算部 10 メモリアクセス命令制御部 12 メモリアクセスバッファ部 13 命令番号制御部 14 アドレス比較部 15 メモリアクセス制御部 5 instruction cache 6 memory 7 instruction buffer unit 8 address calculation unit 10 memory access instruction control unit 12 memory access buffer unit 13 instruction number control unit 14 address comparison unit 15 memory access control unit

Claims (1)

【特許請求の範囲】[Claims] 【請求項1】 プログラムから読み出された複数の命令
を実行前に読み出して保持する命令バッファ部と、 前記命令バッファ部内のメモリアクセス命令のアクセス
対象となるメモリアドレスを計算するアドレス計算部
と、 前記命令バッファ部中の各メモリアクセス命令の実行順
と各命令のメモリアドレス及びデータを表示するメモリ
アクセスバッファ部と、 前記各命令のメモリアドレスを比較するアドレス比較部
と、 メモリアドレスの一致した競合命令があったとき、前記
メモリアクセスバッファ部を参照して、先に読み出され
た命令の実行を優先させるメモリアクセス制御部とを備
えたことを特徴とするメモリアクセス制御装置。
1. An instruction buffer unit for reading and retaining a plurality of instructions read from a program before execution, an address calculation unit for calculating a memory address to be accessed by a memory access instruction in the instruction buffer unit, A memory access buffer unit that displays the execution order of each memory access instruction in the instruction buffer unit and the memory address and data of each instruction; an address comparison unit that compares the memory address of each instruction; A memory access control unit comprising a memory access control unit that prioritizes execution of a previously read instruction when there is an instruction, by referring to the memory access buffer unit.
JP5034302A 1993-01-29 1993-01-29 Memory access controller Pending JPH06230963A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5034302A JPH06230963A (en) 1993-01-29 1993-01-29 Memory access controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5034302A JPH06230963A (en) 1993-01-29 1993-01-29 Memory access controller

Publications (1)

Publication Number Publication Date
JPH06230963A true JPH06230963A (en) 1994-08-19

Family

ID=12410366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5034302A Pending JPH06230963A (en) 1993-01-29 1993-01-29 Memory access controller

Country Status (1)

Country Link
JP (1) JPH06230963A (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318825A (en) * 2000-05-12 2001-11-16 Fujitsu Ltd Memory access controller and atm controller
JP2010113023A (en) * 2008-11-04 2010-05-20 Yamaha Corp Digital signal processing apparatus
JP2014004804A (en) * 2012-06-27 2014-01-16 Seiko Epson Corp Control method for printer and printer
US8898435B2 (en) * 2011-11-11 2014-11-25 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing system throughput by automatically altering thread co-execution based on operating system directives
JP2018524696A (en) * 2015-06-30 2018-08-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Garbage collection without special instructions

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318825A (en) * 2000-05-12 2001-11-16 Fujitsu Ltd Memory access controller and atm controller
JP4614500B2 (en) * 2000-05-12 2011-01-19 富士通株式会社 Memory access control device
JP2010113023A (en) * 2008-11-04 2010-05-20 Yamaha Corp Digital signal processing apparatus
US8898435B2 (en) * 2011-11-11 2014-11-25 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Optimizing system throughput by automatically altering thread co-execution based on operating system directives
JP2014004804A (en) * 2012-06-27 2014-01-16 Seiko Epson Corp Control method for printer and printer
JP2018524696A (en) * 2015-06-30 2018-08-30 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation Garbage collection without special instructions

Similar Documents

Publication Publication Date Title
JP3488162B2 (en) Method and apparatus for reordering loading operations in a computer processing system
JP2818249B2 (en) Electronic computer
US7398376B2 (en) Instructions for ordering execution in pipelined processes
EP2786245B1 (en) A data processing apparatus and method for performing register renaming without additional registers
US6338134B1 (en) Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data
JP3797570B2 (en) Apparatus and method using semaphore buffer for semaphore instructions
JPH0682320B2 (en) Data processing device
JPH06230963A (en) Memory access controller
JP2012150634A (en) Vector instruction control circuit and overtaking control method for list vector
JP3145545B2 (en) Memory access device
KR960015231A (en) Enhanced Addressing Method and System
JP2904624B2 (en) Parallel processing unit
JPH01177145A (en) Information processor
JPH06149569A (en) Register number changing device
JPS61194566A (en) Vector data reference control system
TW202340938A (en) Technique for handling ordering constrained access operations
JPH0447350A (en) Main storage read/response control
JPH0391055A (en) Method for setting hardware lock, hardware lock controller, method and device for detecting hardware lock
JPH0814792B2 (en) Data processing device
JP2000267931A (en) Software execution system
JPH04266140A (en) Address conversion buffer device
JPH027129A (en) Arithmetic processing unit
JPS5897759A (en) Memory access system
JPH06309225A (en) Information processor
JPH01280851A (en) Cache store control system