JP2574019B2 - DMA transfer method - Google Patents
DMA transfer methodInfo
- Publication number
- JP2574019B2 JP2574019B2 JP63325520A JP32552088A JP2574019B2 JP 2574019 B2 JP2574019 B2 JP 2574019B2 JP 63325520 A JP63325520 A JP 63325520A JP 32552088 A JP32552088 A JP 32552088A JP 2574019 B2 JP2574019 B2 JP 2574019B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- address
- memory
- transfer
- dma
- 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.)
- Expired - Lifetime
Links
Landscapes
- Bus Control (AREA)
Description
【発明の詳細な説明】 〔概要〕 プロセッサー・システムにおいてDMAコントローラに
よりメモリ間でデータを直接転送させる方式に関し、 編集用のメモリを必要とせずに然もCPUの処理能力を
低下させないDMA転送方式を実現することを目的とし、 CPUによって初期設定・起動されたDMAコントローラが
出力する各データブロックの転送ワード数の回数分だけ
各データブロックに対する同じインデックスアドレスを
該DMAコントローラの制御下で出力するアドレス変換回
路と、各データブロックの先頭アドレスを転送順に格納
しておき該インデックスアドレスに対応させた各データ
ブロックの先頭アドレスを上位アドレスとして出力する
インデックスメモリと、各データブロックの転送ワード
数分づつ計数して次に転送すべきデータの下位アドレス
を出力するカウンタ回路と、各データブロックのデータ
を格納しておき該上位アドレスと該下位アドレスに応答
して対応するデータを該DMAコントローラの制御下で出
力するデータメモリとで構成する。DETAILED DESCRIPTION OF THE INVENTION [Overview] Regarding a method for directly transferring data between memories by a DMA controller in a processor system, a DMA transfer method that does not require a memory for editing and does not lower the processing performance of the CPU. Address conversion that outputs the same index address for each data block as the number of transfer words of each data block output by the DMA controller initialized and activated by the CPU under the control of the DMA controller for the purpose of realization A circuit, an index memory for storing the start address of each data block in the order of transfer, and outputting the start address of each data block corresponding to the index address as an upper address, and counting by the number of transfer words of each data block. Output the lower address of the data to be transferred next. And a data memory for storing data of each data block and outputting corresponding data in response to the upper address and the lower address under the control of the DMA controller.
本発明は、プロセッサー・システムにおいてダイレク
ト・メモリ・アクセス(以下、DMAと言う)コントロー
ラによりメモリ間でデータを直接転送させる方式に関す
るものである。The present invention relates to a system in which data is directly transferred between memories by a direct memory access (hereinafter, referred to as DMA) controller in a processor system.
プロセッサー(以下、CPUという)は処理する情報量
が増えるにつれ、その処理速度が低下するので、これを
防ぐためにプロセッサーがDMAコントローラによりデー
タ転送を行わせることによりプロセッサーの処理負荷の
軽減を図ることが必要になっている。As the amount of information to be processed increases, the processing speed of the processor (hereinafter referred to as the CPU) decreases. Is needed.
一般に、DMA転送方式ではデータ転送元のメモリの先
頭アドレスと、データ転送先の先頭アドレスと、転送す
るデータ数とを予めプロセッサーのプログラムに与えて
おくことによりメモリ間でデータ転送を行うが、メモリ
空間の異なるデータブロックをDMAによりデータを転送
する方式としては、次のものがある。In general, in the DMA transfer method, data transfer is performed between memories by giving a start address of a data transfer source memory, a start address of a data transfer destination, and the number of data to be transferred to a processor program in advance. As a method of transferring data to data blocks in different spaces by DMA, there are the following methods.
(1)データブロックA、B、Cから成るメモリ空間
からメモリ空間に移すことにより編集し、その後、CP
UがDMAコントローラを制御してメモリ空間からデータ
ブロックA〜Cを組み合わせ一つの情報としてDMA転送
する方式(第7図参照)。(1) Editing by moving from the memory space consisting of the data blocks A, B, and C to the memory space,
U controls the DMA controller to combine the data blocks A to C from the memory space and perform DMA transfer as one piece of information (see FIG. 7).
(2)メモリ空間のデータブロックA、B、Cについ
て個別にCPUがDMAコントローラを制御してDMA転送を行
う方式(第8図参照)。(2) A method in which the CPU individually controls the DMA controller for data blocks A, B, and C in the memory space to perform DMA transfer (see FIG. 8).
第7図に示した従来方式では、編集用のメモリ空間
が別途必要となってしまい、また第8図に示した従来方
式では、出力ポートからの転送速度が速い場合はアンダ
ーフローにならないようにCPUは各データブロックのDMA
転送終了をいち早く検出し、次のデータブロックのDMA
転送のための設定を行わなければならないため、CPUが
処理する情報量が大きくなり処理能力が落ちるという問
題点があった。The conventional method shown in FIG. 7 requires a separate memory space for editing, and the conventional method shown in FIG. 8 prevents underflow when the transfer speed from the output port is high. CPU is DMA for each data block
The transfer end is detected as soon as possible, and the DMA of the next data block is
Since the transfer settings must be made, there is a problem that the amount of information processed by the CPU is increased and the processing capability is reduced.
従って、本発明は、編集用のメモリを必要とせずに然
もCPUの処理能力を低下させないDMA転送方式を実現する
ことを目的とする。Therefore, an object of the present invention is to realize a DMA transfer method that does not require a memory for editing and does not lower the processing performance of a CPU.
第1図は上記の目的を達成するための本発明に係るDM
A転送方式を原理的に示した図で、本発明では、CPUによ
って初期設定・起動されたDMAコントローラ1が出力す
る各データブロックの転送ワード数の回数分だけ各デー
タブロックに対する同じインデックスアドレスを該DMA
コントローラ1の制御下で出力するアドレス変換回路2
と、各データブロックの先頭アドレスを転送順に格納し
ておき該インデックスアドレスに対応させた各データブ
ロックの先頭アドレスを上位アドレスとして出力するイ
ンデックスメモリ3と、アドレス変換回路2によって制
御され各データブロックの転送ワード数分づつ計数して
次に転送すべきデータの下位アドレスを出力するカウン
タ回路4と、各データブロックのデータを格納しておき
該上位アドレスと該下位アドレスに応答して対応するデ
ータを該DMAコントローラ1の制御下で出力するデータ
メモリ5と、を備えている。FIG. 1 shows a DM according to the present invention for achieving the above object.
In the present invention, the same index address for each data block as the number of transfer words of each data block output by the DMA controller 1 initialized and activated by the CPU is assigned to the data block. DMA
Address conversion circuit 2 that outputs under the control of controller 1
And an index memory 3 for storing the top address of each data block in the transfer order and outputting the top address of each data block corresponding to the index address as an upper address; A counter circuit 4 for counting the number of words to be transferred and outputting the lower address of data to be transferred next; storing data of each data block and storing corresponding data in response to the upper address and the lower address; A data memory 5 for outputting under the control of the DMA controller 1.
第1図に示した本発明の構成の作用について、メモリ
空間の異なるデータブロックA,B,CをA,C,Bと並び替えて
DMA転送を行う場合の動作を例にとって第2図及び第3
図により説明する。Regarding the operation of the configuration of the present invention shown in FIG. 1, data blocks A, B, and C having different memory spaces are rearranged to A, C, and B.
FIGS. 2 and 3 show an example of an operation when a DMA transfer is performed.
This will be described with reference to the drawings.
まず、各データブロックA,B,Cの先頭アドレスAA,AB,A
Cを転送順にインデックスメモリ3に書き込んでおき、D
MAコントローラ1に対しては転送情報の全ワード数NA+
NC+NBとインデックスメモリ3中のインデックスアドレ
スAIとを設定し、起動をかける。First, the start address AA, AB, A of each data block A, B, C
Write C to the index memory 3 in the order of transfer, and
For the MA controller 1, the total number of words of transfer information NA +
NC + NB and the index address AI in the index memory 3 are set and activated.
DMAコントローラ1は、第1ワードを転送するために
インデックスアドレスを格納した先頭のアドレスAIを出
力する。アドレス変換回路2は、このインデックスアド
レスAIを第3図に示すような表に従ってデータブロック
Aのワード数分だけインデックスメモリ3に対して同じ
アドレスAIを与えると同時にカウンタ回路4をリセット
する。インデックスメモリ3はアドレスAIに格納されて
いる先頭アドレスAAを上位アドレスとしてデータメモリ
5に与える。The DMA controller 1 outputs a head address AI storing an index address for transferring the first word. The address conversion circuit 2 gives the same address AI to the index memory 3 by the number of words of the data block A according to the table shown in FIG. 3 and resets the counter circuit 4 at the same time. The index memory 3 gives the head address AA stored in the address AI to the data memory 5 as an upper address.
データメモリ5は、この上位アドレスAAと、カウンタ回
路4がカウントするワード数分に相当する下位アドレス
によりデータブロックAの各ワードを順次、DMAコント
ローラ1の制御により出力される。The data memory 5 sequentially outputs each word of the data block A based on the upper address AA and the lower addresses corresponding to the number of words counted by the counter circuit 4 under the control of the DMA controller 1.
このようにしてDMAコントローラ1は、第3図に示すよ
うに、転送情報の全ワード数NA+NB+NCを転送し終わる
までアドレスをインクリメントして出力し続ける。In this way, as shown in FIG. 3, the DMA controller 1 keeps incrementing and outputting the address until the transfer of the total number of words NA + NB + NC of the transfer information is completed.
例えば、第n(NA<n<(NA+NC))ワードの転送は、
データメモリ5に対して上位アドレスABと下位アドレス
(n-NA)が与えられ、データブロックBの第(n-NA)ワ
ードが出力転送されることになる。For example, the transfer of the n-th (NA <n <(NA + NC)) word is
The upper address AB and the lower address (n-NA) are given to the data memory 5, and the (n-NA) word of the data block B is output and transferred.
このように、データ転送に先立って各データブロックの
先頭アドレスを転送順に所定のメモリに格納し、その
後、1回のDMAコントローラの設定・起動のみで全ての
データブロックを指定順にDMA転送することが可能とな
る。In this way, it is possible to store the head address of each data block in a predetermined memory in the transfer order prior to the data transfer, and then perform DMA transfer of all the data blocks in the specified order only by setting and starting the DMA controller once. It becomes possible.
第4図は本発明に係るDMA転送方式の一実施例を示す
構成図であり、この実施例では、テーブルROM上に格納
された固定データブロックを組み合わせ、さらに任意デ
ータであるヘッダデータを付けて一つのパケット情報と
し、出力ポートより他の装置に転送する機能を本発明に
より実現したものである。このため、CPU10とDMAコント
ローラ1との間にはアドレスデコーダ等で構成されるI/
Oアクセス制御回路11が設けられ、データメモリ5から
出力されるデータとインデックスメモリ3から出力され
るヘッダデータとをアドレス変換回路2からのセレクト
信号によりセレクタ12が選択してDMAコントローラ1の
制御の下に出力ポート13から出力されるようになってい
る。また、インデックスメモリ3は、CPUバスとDMAバス
を分離するため、デュアルポートRAMで構成されてお
り、データメモリ5は、第5図(2)に示すように一実
施例として同一ワード長Nの固定データブロックが格納
されたテーブルROM構成となっている。また、アドレス
変換回路2は第1図におけるカウンタ回路4の機能を含
んでおり、パケット情報のヘッダデータ長や、個々のデ
ータブロック長が一定値であるため、ROM回路で構成さ
れている。尚、aはCPUアドレス、bはCPUデータ、cは
CPU制御信号、dはDMAアドレス、eはDMA制御信号、f
はアドレス変換回路2からの出力アドレス、gはデータ
メモリ5への上位アドレス、hはデータメモリ5への下
位アドレス、sはセレクタ12へのセレクト信号をそれぞ
れ示している。FIG. 4 is a block diagram showing one embodiment of the DMA transfer system according to the present invention. In this embodiment, fixed data blocks stored on a table ROM are combined, and header data as arbitrary data is added. According to the present invention, a function of transferring one packet information from an output port to another device is realized. Therefore, between the CPU 10 and the DMA controller 1, an I / O
An O access control circuit 11 is provided, and the selector 12 selects data output from the data memory 5 and header data output from the index memory 3 by a select signal from the address conversion circuit 2 to control the DMA controller 1. Output is provided from the output port 13 below. The index memory 3 is constituted by a dual port RAM in order to separate the CPU bus and the DMA bus, and the data memory 5 has the same word length N as one embodiment as shown in FIG. 5 (2). It has a table ROM configuration in which fixed data blocks are stored. The address conversion circuit 2 includes the function of the counter circuit 4 in FIG. 1, and is constituted by a ROM circuit because the header data length of packet information and the length of each data block are constant. Note that a is a CPU address, b is CPU data, and c is
CPU control signal, d is DMA address, e is DMA control signal, f
Denotes an output address from the address conversion circuit 2, g denotes an upper address to the data memory 5, h denotes a lower address to the data memory 5, and s denotes a select signal to the selector 12.
以下、第4図に示した実施例の動作を第5図及び第6
図を参照して説明する。Hereinafter, the operation of the embodiment shown in FIG. 4 will be described with reference to FIGS.
This will be described with reference to the drawings.
第5図(3)に示すパケット情報を転送する場合、CP
U10は、CPUアドレスa、データb、制御信号cによりイ
ンデックスメモリ3に第5図(1)のデータを書き込
み、更にDMAコントローラ1に対し、I/Oアクセス制御回
路11を介して第5図(3)のパケット情報の総ワード長
NH+3N及び第5図(1)のデータの先頭のインデックス
アドレスAIを設定して起動をかける。DMAコントローラ
1は、転送サイクル毎にAI,AI+1,AI+2…の順にDMAア
ドレスdを出力する。これを受けてアドレス変換回路2
は、第6図に示すアドレス変換表に従ってインデックス
メモリ3に与えるインデックスアドレスfとデータメモ
リ5に与える下位アドレスhとセレクト信号sとを出力
する。尚、ヘッダデータについてはインデックスアドレ
スfは各ワード毎に1つづつインクリメントする。When transferring the packet information shown in FIG.
U10 writes the data of FIG. 5 (1) into the index memory 3 by the CPU address a, the data b, and the control signal c, and further sends the data to the DMA controller 1 via the I / O access control circuit 11 in FIG. 3) Total word length of packet information
Start by setting NH + 3N and the index address AI at the head of the data in FIG. 5 (1). The DMA controller 1 outputs the DMA address d in the order of AI, AI + 1, AI + 2,... Every transfer cycle. In response, the address conversion circuit 2
Outputs an index address f given to the index memory 3, a lower address h given to the data memory 5, and a select signal s according to the address conversion table shown in FIG. For the header data, the index address f is incremented by one for each word.
セレクト信号sは、情報のヘッダデータの転送中はイ
ンデックスメモリ3と出力ポート13を接続し、その後の
データブロックの転送中はデータメモリ5と出力ポート
13とを接続するようにセレクタ回路12に対して制御をか
ける。The select signal s connects the index memory 3 and the output port 13 during the transfer of the header data, and the data memory 5 and the output port during the subsequent transfer of the data block.
The selector circuit 12 is controlled so that the selector circuit 13 is connected to the selector circuit 13.
また、データブロックの転送中は、インデックスメモ
リ3から出力されるアドレスデータ、すなわち上位アド
レスfにより第5図(2)に示すデータメモリ5におけ
る転送ブロックの位置AA,AB,AC,ADが、そして、アドレ
ス変換回路2から出力される下位アドレスhにより転送
ブロック(Nワード)中の転送ワードの位置がそれぞれ
指定されてデータメモリ5から転送すべき1ワード毎に
出力される。In addition, during the transfer of the data block, the address data output from the index memory 3, that is, the position AA, AB, AC, AD of the transfer block in the data memory 5 shown in FIG. The position of the transfer word in the transfer block (N word) is specified by the lower address h output from the address conversion circuit 2, and is output from the data memory 5 for each word to be transferred.
従って、第5図(1)に示すインデックスアドレスの
順に第5図(2)に示すデータメモリ5中のデータが読
み出されて第5図(3)に示す如くヘッダデータ+各N
ワードのデータブロックA,D,Bが出力ポート13から転送
されることとなる。Therefore, the data in the data memory 5 shown in FIG. 5 (2) is read out in the order of the index addresses shown in FIG. 5 (1), and the header data + each N
The word data blocks A, D, and B will be transferred from the output port 13.
上記動作におけるインデックスメモリ3、データメモ
リ5、出力ポート13のリード・ライト制御は、DMAコン
トローラ1が出力するDMA制御信号eによって行われ
る。The read / write control of the index memory 3, the data memory 5, and the output port 13 in the above operation is performed by the DMA control signal e output from the DMA controller 1.
尚、上記の説明では、DMAコントローラ1からアドレ
ス変換回路2へのDMAアドレスdは、インデックスメモ
リ3の先頭アドレスAIが“0"であれば、特にアドレスAI
を必要とせずに総ワード長分のアドレスインクリメント
を行えばよいことは言うまでもない。In the above description, the DMA address d from the DMA controller 1 to the address conversion circuit 2 is particularly the address AI if the head address AI of the index memory 3 is “0”.
It is needless to say that the address increment for the total word length may be performed without the need for the address.
本発明によれば、データ転送に先立ち、予めアドレス
変換回路とインデックスメモリとデータメモリに転送す
べきメモリ空間の異なるデータブロックの各先頭アドレ
ス(インデックス)とワード数を記憶しておき、その
後、DMAコントローラの初期設定・起動のみで全てのデ
ータブロックを指定順にDMA転送するように構成したの
で、CPUはDMAコントローラの設定・起動を一度行うのみ
で全てのデータ・ブロックを指定順に出力ポートへDMA
転送することが可能となる。従って、大量のデータ編集
や何回ものDMAコントローラの設定・起動を行うこと無
く、システムとしてCPUの処理能力が向上する上に、デ
ータメモリをCPUのメモリ空間から分離してインデック
スのみで管理することが可能となるため、メモリ資源の
節約にもつながる効果がある。According to the present invention, prior to data transfer, each head address (index) and the number of words of a data block having a different memory space to be transferred to an address conversion circuit, an index memory, and a data memory are stored in advance, Since all data blocks are DMA-transferred in the specified order only by initial setting / starting of the controller, the CPU only needs to set / start the DMA controller once and transfer all data blocks to the output port in the specified order.
It becomes possible to transfer. Therefore, without having to edit a large amount of data and setting and starting up the DMA controller many times, the processing capacity of the CPU is improved, and the data memory is separated from the memory space of the CPU and managed only by the index. Therefore, there is an effect that memory resources can be saved.
加えて、下位アドレスをカウンタ回路より出力してい
るため、データメモリをCPUのアドレスバスから完全に
切り離すことができ、以て大量のデータ領域をCPUのメ
モリ空間より分離してメモリ空間を有効に使用すること
ができることになる。In addition, since the lower address is output from the counter circuit, the data memory can be completely separated from the CPU address bus, thereby separating a large amount of data area from the CPU memory space and making the memory space effective. Can be used.
第1図は、本発明に係るDMA転送方式を原理的に示すブ
ロック図、 第2図及び第3図は、第1図に示す本発明の動作説明
図、 第4図は、本発明に係るDMA転送方式の一実施例を示す
ブロック図、 第5図及び第6図は、第4図の実施例の動作説明図、 第7図及び第8図は、従来方式の動作説明図、である。 第1図において、 1…DMAコントローラ、2…アドレス変換回路、3…イ
ンデックスメモリ、4…カウンタ回路、5…データメモ
リ。 図中、同一符号は同一又は相当部分を示す。FIG. 1 is a block diagram showing the principle of a DMA transfer system according to the present invention. FIGS. 2 and 3 are explanatory diagrams of the operation of the present invention shown in FIG. 1. FIG. FIGS. 5 and 6 are explanatory diagrams of the operation of the embodiment of FIG. 4, and FIGS. 7 and 8 are explanatory diagrams of the operation of the conventional system. . In FIG. 1, 1 ... DMA controller, 2 ... address conversion circuit, 3 ... index memory, 4 ... counter circuit, 5 ... data memory. In the drawings, the same reference numerals indicate the same or corresponding parts.
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭61−851(JP,A) 特開 昭60−247764(JP,A) ──────────────────────────────────────────────────続 き Continuation of the front page (56) References JP-A-61-851 (JP, A) JP-A-60-247764 (JP, A)
Claims (1)
トローラ(1)が出力する各データブロックの転送ワー
ド数の回数分だけ各データブロックに対する同じインデ
ックスアドレスを該DMAコントローラ(1)の制御下で
出力するアドレス変換回路(2)と、 各データブロックの先頭アドレスを転送順に格納してお
き該インデックスアドレスに対応させた各データブロッ
クの先頭アドレスを上位アドレスとして出力するインデ
ックスメモリ(3)と、 該アドレス変換回路(2)によって制御され、各データ
ブロックの転送ワード数分づつ計数して次に転送すべき
データの下位アドレスを出力するカウンタ回路(4)
と、 各データブロックのデータを格納しておき該上位アドレ
スと該下位アドレスに応答して対応するデータを該DMA
コントローラ(1)の制御下で出力するデータメモリ
(5)と、 を備えたことを特徴とするDMA転送方式。1. The same index address for each data block as the number of transfer words of each data block output by the DMA controller (1) initialized and activated by the CPU under the control of the DMA controller (1). An address conversion circuit (2) for outputting, an index memory (3) for storing the head address of each data block in the transfer order, and outputting the head address of each data block corresponding to the index address as an upper address; A counter circuit (4) controlled by an address conversion circuit (2) for counting the number of words to be transferred of each data block and outputting the lower address of data to be transferred next
And storing the data of each data block and storing the corresponding data in response to the upper address and the lower address in the DMA.
A data memory (5) for outputting data under the control of a controller (1).
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63325520A JP2574019B2 (en) | 1988-12-23 | 1988-12-23 | DMA transfer method |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP63325520A JP2574019B2 (en) | 1988-12-23 | 1988-12-23 | DMA transfer method |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH02171848A JPH02171848A (en) | 1990-07-03 |
| JP2574019B2 true JP2574019B2 (en) | 1997-01-22 |
Family
ID=18177793
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP63325520A Expired - Lifetime JP2574019B2 (en) | 1988-12-23 | 1988-12-23 | DMA transfer method |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2574019B2 (en) |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS60247764A (en) * | 1984-05-23 | 1985-12-07 | Nec Corp | Memory address control system |
-
1988
- 1988-12-23 JP JP63325520A patent/JP2574019B2/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPH02171848A (en) | 1990-07-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPS6027964A (en) | Memory access control circuit | |
| JP2574019B2 (en) | DMA transfer method | |
| KR100223626B1 (en) | First-in and first-out memory circuit | |
| JPH05173933A (en) | Direct memory access transfer system | |
| KR910006792B1 (en) | Access memory expansion circuit of direcrt memory access controller | |
| JP3496942B2 (en) | Memory access method | |
| JPH06103026A (en) | Memory system | |
| JPS6273353A (en) | Memory read control circuit | |
| JPH0317143B2 (en) | ||
| JPS6186859A (en) | Bus selector | |
| JPS62151955A (en) | Memory addressing system | |
| JPH0368046A (en) | Memory access system | |
| JPS5829046A (en) | Memory sorting system | |
| JPH04245556A (en) | Instruction memory | |
| JPH0380470A (en) | Storage controller | |
| JPS6074074A (en) | Priority control system | |
| JPS61198351A (en) | Direct memory access control circuit | |
| JPS6341966A (en) | Direct memory access transfer device | |
| JPH0424852A (en) | Multi-port access system | |
| JPH03184143A (en) | Memory access method | |
| JPH01255057A (en) | Log data storing system | |
| JPS6385841A (en) | memory system | |
| JPS61264404A (en) | Programmable controller | |
| JPS63185161A (en) | memory management device | |
| JPS6155135B2 (en) |