JP2015114862A - データ処理装置、データ処理方法およびデータ処理プログラム - Google Patents

データ処理装置、データ処理方法およびデータ処理プログラム Download PDF

Info

Publication number
JP2015114862A
JP2015114862A JP2013256697A JP2013256697A JP2015114862A JP 2015114862 A JP2015114862 A JP 2015114862A JP 2013256697 A JP2013256697 A JP 2013256697A JP 2013256697 A JP2013256697 A JP 2013256697A JP 2015114862 A JP2015114862 A JP 2015114862A
Authority
JP
Japan
Prior art keywords
address
data
pointer
storage area
data processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013256697A
Other languages
English (en)
Other versions
JP5757320B2 (ja
Inventor
健 加納
Takeshi Kano
健 加納
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.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2013256697A priority Critical patent/JP5757320B2/ja
Priority to US14/562,980 priority patent/US9552302B2/en
Publication of JP2015114862A publication Critical patent/JP2015114862A/ja
Application granted granted Critical
Publication of JP5757320B2 publication Critical patent/JP5757320B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer Security & Cryptography (AREA)

Abstract

【課題】構造体データの移動・コピーをブロックデータとして高速に行うとともに、移動・コピーした構造体データを高速にたどることができるデータ処理装置を提供する。
【解決手段】ポインタを含む構造体データを処理するデータ処理装置であって、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる構造体データを処理する処理手段を備えるデータ処理装置とする。
【選択図】 図2

Description

本発明は、構造体データを処理するデータ処理装置、データ処理方法およびデータ処理プログラムに関する。特に、ポインタを含む構造体データを扱うデータ処理装置、データ処理方法およびデータ処理プログラムに関する。
近年、科学技術計算が実用化され、実世界にある複雑な構造を使ったシミュレーションが行われている。それらのシミュレーションでは、実世界の複雑な構造を、ポインタを用いた構造体データという形式で計算機内に表現している。ポインタとしては、絶対アドレスまたは相対アドレスのいずれかを用いるが、いずれにおいても長所と短所がある。
特許文献1には、絶対アドレスおよび相対アドレスを用いることに起因する問題点を解決する2つの手段を有するデータ処理装置について開示されている。第1の手段は、構造体データ内のポインタを相対アドレス化し、この相対アドレスを絶対アドレスに変換する手段である。第2の手段は、構造体データ内のポインタを絶対アドレスとし、この構造体データのコピー時にアドレスの変位を全てのポインタの値に加算または減算する手段である。
特許文献1によれば、構造体データの先頭を起点とする相対アドレスをポインタに用いるため、構造体データ全体を移動またはコピーした場合にポインタを書き換える必要がない。また、構造体データの各要素(ワード)が含むタグの種類に応じて、構造体データの先頭アドレスを加算することで、相対アドレスのポインタを絶対アドレスのポインタに変換することができる。その結果、アドレス変換におけるオーバーヘッドを減少でき、ポインタを含む構造体データを高速に処理することが可能となる。
特開昭63−89948号公報
一般的な構想体データの処理では、絶対アドレスのポインタを用いた構造体データを移動またはコピーする際には、元の構造体全体をポインタに従ってたどって行きながら、1要素ずつコピーする必要があり、処理時間がかかるという問題点があった。
一般的な構造体データの処理では、各ワードがポインタなのか値なのかをすぐに判断することはできない。そのため、構造体データをたどりながら、そのワードがポインタなのか値なのかを判断し、ポインタの場合には先頭アドレスの差分だけ加算する、値の場合は加算しないという操作を行う必要がある。この処理は、ある領域をブロックとして移動またはコピーする場合の数十倍の処理時間がかかる。
また、上述した特許文献1のデータ処理装置においては、構造体データの先頭アドレスをあらかじめ知っておき、一意に決めておく必要があるという問題点があった。
その理由は、一般的な構造体データは、非常に複雑な構造をしており、構造体の先頭アドレスをすぐに求めることが難しいからである。例えば、複数の構造体間でポインタが用いられている場合など、構造体データを処理する場合に複数の構造体の先頭アドレスが必要になることがある。その場合、特許文献1の方式ではレジスタが不足してしまう。
また、上述した特許文献1が開示している方法では、一般的な計算機において移動やコピーした構造体データを高速にたどることができないという問題点があった。
その理由は、特許文献1ではタグの種類によって各ワードのデータがポインタかどうかを識別し、構造体の先頭アドレスを加算して絶対アドレスのポインタとして構造体の要素を参照しているが、一般的な計算機では、そのようなタグは存在しないからである。
本発明の目的は、上述した課題を解決するデータ処理装置、データ処理方法およびデータ処理プログラムを提供することにある。
本発明のデータ処理装置は、ポインタを含む構造体データを処理するデータ処理装置であって、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる構造体データを処理する処理手段を備える。
本発明のデータ処理方法は、ポインタを含む構造体データを処理するデータ処理方法であって、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる構造体データを処理する。
本発明のデータ処理プログラムは、ポインタを含む構造体データを処理するデータ処理プログラムであって、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる構造体データを第1の記憶領域と第2の記憶領域との間において授受する際に、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用い、命令実行対象となるデータの論理アドレスを入力とし、論理アドレスを物理アドレスに変換して第1の記憶領域に出力する処理と、常に0となる初期信号および論理アドレスを入力とし、論理アドレスに格納されたデータが相対アドレスであるか否かを示す制御信号に応じてアドレス信号または初期信号のいずれかを選択して出力する処理と、選択手段の出力を入力とし、第1の記憶領域または第2の記憶領域から取得したデータと出力データとを用いて演算を実行して相対アドレスを絶対アドレスに変換する処理とをコンピュータに実行させる。
本発明のデータ処理装置、データ処理方法およびデータ処理プログラムによれば、構造体データの移動・コピーをブロックデータとして高速に行うとともに、移動・コピーした構造体データを高速にたどることができる。
本発明の実施形態に係るデータ処理システムの構成を示す機能ブロック図である。 本発明の実施形態に係るデータ処理装置の内部構成を示す機能ブロック図である。 本発明の実施形態に係るデータ処理装置の内部構成を示す機能ブロック図である。 本発明の実施形態に係るデータ処理装置におけるロード動作を説明するためのフローチャートである。 本発明の実施形態に係るデータ処理装置におけるストア動作を説明するためのフローチャートである。 本発明の実施形態に係るデータ処理装置が処理する構造体データの構造の一例を示す概念図である。 本発明の実施形態に係るデータ処理装置が処理する構造体データにおいて相対アドレスポインタをポインタに用いた場合の一例を示す概念図である。 本発明の実施例1に係るデータ処理装置の構成を示す機能ブロック図である。 本発明の実施例1に係るデータ処理装置が処理する構造体の一例を示す概念図である。 本発明の実施例1に係るデータ処理装置が処理する構造体データの構造の一例を示す概念図である。 絶対アドレスポインタをポインタに用いた比較例を示す概念図である。 比較例に係る絶対アドレスポインタをポインタに用いた構造体データをコピーする例を示す概念図である。 本発明の実施例1に係るデータ処理装置が処理する構造体データにおいて相対アドレスポインタをポインタに用いた場合の一例を示す概念図である。 本発明の実施例1に係るデータ処理装置が相対アドレスポインタをポインタに用いた構造体データをコピーする例を示す概念図である。 本発明の実施例1に係るデータ処理装置がポインタをロードする処理を説明する概念図である。 本発明の実施例1に係るデータ処理装置がポインタをロードする処理を説明する概念図である。 本発明の実施例1に係るデータ処理装置がポインタをストアする処理を説明する概念図である。 本発明の実施例1に係るデータ処理装置がポインタをストアする処理を説明する概念図である。 本発明の実施例2に係るメモリが格納する相対アドレスポインタの一例を示す概念図である。 本発明の実施例2に係るデータ処理装置の構成を示す機能ブロック図である。
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
(実施形態)
図1〜図3は、本実施形態に係るデータ処理装置の構成に関する図であり、図4および図5は本実施形態に係るデータ処理装置の動作に関する図である。また、図8および図9は、本実施形態に係るデータ処理装置が扱う構造体データを説明するための概念図である。
(構造体データ)
本実施形態に係るデータ処理装置は、ポインタを含む構造体データを扱うことを想定している。特に、ポインタとして、ポインタが書かれたワードのアドレスを起点とする相対アドレスを用いた構造体データを扱うことを想定している。
まずは、本実施形態に係るデータ処理装置1が処理対象とする構造体データについて説明する。図6は、本実施形態に係るデータ処理装置1が処理対象とする構造体データの構造を示す一例である。図6の構造においては、値A(1)から2つのポインタが出ている。2つのポインタのうち、一つはA(2)・A(3)・・・・・A(x)を指しており、もう一つはA(x+1)A(x+2)・・・・・A(y)を指している。なお、xおよびyは自然数とする。
図7は、図6の構造を構造体データとして表現した概念図である。枠内はデータを表し、データの左側に記した数字はデータが格納されるアドレスを示している。なお、図7に示した矢印は、ポインタが指すアドレスを示している。図7において、アドレス4を指す相対アドレスポインタは、データA(2)の格納アドレスである4から相対アドレスポインタの格納アドレスである2を引いた値である+2となる。同様に、アドレスx+2を指す相対アドレスポインタは、データA(x+1)の格納アドレスであるx+3から相対アドレスポインタの格納アドレスである3を引いた値である+xとなる。
このように、本実施形態においては、ポインタが書かれたワードのアドレスを起点とする相対アドレス(相対アドレスポインタ)を含む構造体データを扱う。
(構成)
続いて、本実施形態に係るデータ処理装置1の構成について詳細に説明する。
図1は、本発明の実施形態に係るデータ処理装置1を含むデータ処理システムの構成を示す機能ブロック図である。本実施形態に係るデータ処理システムは、データ処理装置1と、第1の記憶領域2と、第2の記憶領域3とを備える。
第1の記憶領域2は、例えば主記憶装置となるメモリとして実現することができる。第2の記憶領域3は、例えばCPUのレジスタファイルとして実現することができる(CPU:Central Processing Unit)。
データ処理装置1は、ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして含む構造体データのロードとストアを実行する処理手段を備える。処理手段は、図2に示したように、選択手段10と、演算手段20と、アドレス変換手段30とを有する。
アドレス変換手段30は、論理アドレスからなるアドレス信号(以下、論理アドレス)を入力とし、入力したアドレス信号を論理アドレスから物理アドレスに変換する。そして、アドレス変換手段30は、物理アドレスに変換されたアドレス信号(以下、物理アドレス)を第1の記憶領域に向けて出力する。
本実施形態におけるアドレス信号は、論理アドレスとして入力される。例えば、命令にアドレスが即値であると書かれているならば、アドレス信号は命令デコーダ(図示しない)から出力された信号である。また、例えば、命令にアドレスを格納しているレジスタ番号が指定されているならば、アドレス信号はレジスタファイルから出力された信号である。
アドレス変換手段30は、例えばメモリ管理ユニット(MMU)として実現することができる(MMU:Memory Management Unit)。
アドレス変換手段30は、論理ページと物理ページの対応表を持ち、ページング方式によって論理ページと物理ページとの対応付けを行う。対応表の論理ページには、論理アドレスの一部(例えば、ページの大きさに当たる部分を除いたアドレスの上位)が論理ページ番号として振られている。対応表においては、ある論理ページ番号に特定の物理ページ番号が対応付け、論理ページと物理ページとを対応されている。なお、アドレス変換手段30は、セグメンテーション方式やページセグメンテーション方式によってアドレス変換を行う構成としてもよい。
選択手段10は、論理アドレスと初期信号とを入力とする。初期信号は、データ処理装置1の内部で発生される常にゼロとなる信号であり、以下においては主にゼロ(0)と記載する。そして、選択手段10は、制御信号に応じて、論理アドレスとゼロ(0)のいずれかを選択して出力する。なお、選択手段10は、初期信号としてゼロ(0)を入力する構成ではなく、制御信号に応じてゼロ(0)を内部で発生させて出力する構成であってもよい。
本実施形態における制御信号は、命令デコーダからの信号であり、命令がポインタのロード命令(ストア命令)か、または通常のロード命令(ストア命令)かを示す信号となる。
選択手段10は、命令がポインタのロード命令(ストア命令)か否かによって、論理信号とゼロ(0)とのいずれかを演算手段20に向けて出力する。すなわち、命令がポインタのロード命令(ストア命令)の場合、選択手段10は論理アドレスを出力する。一方、命令がポインタのロード命令(ストア命令)ではない通常のロード命令である場合、選択手段10はゼロ(0)を出力する。
演算手段20は、選択手段10によって出力された値(論理アドレスまたは0)と、第1の記憶領域2または第2の記憶領域3から入力したデータとの間で演算処理を実行する。演算手段20は、第1の記憶領域2または第2の記憶領域3に演算処理結果を記憶させる。
演算手段20は、ロード命令が発行されて第1の記憶領域2より読み出しデータを取得した場合、第1の記憶領域2より取得した読み出しデータに、選択手段10の出力値(論理アドレスまたは0)を加算する。そして、演算手段20は、第2の記憶領域3に演算結果を記憶させる。
ここで、ポインタをロードする命令の場合、選択手段10から論理アドレスが入力されているため、論理アドレスに読み出しデータが加算されることになる。一方、ポインタをロードする命令ではない場合、選択手段10からはゼロ(0)が入力されているため、読み出しデータの値は変わらない。
また、演算手段20は、ストア命令が発行されて第2の記憶領域3よりデータを取得した場合、第2の記憶領域3より取得したデータから、選択手段10の出力値(論理アドレスまたは0)を減算する。そして、演算手段20は、第1の記憶領域2に演算結果(読み込みデータ)を記憶させる。
ここで、ポインタをストアする命令の場合、選択手段10から論理アドレスが入力されているため、第2の記憶領域より取得したデータから論理アドレスを減算することになる。一方、ポインタをストアする命令ではない場合、選択手段10からはゼロ(0)が入力されているため、第2の記憶領域より取得したデータの値は変わらない。
図3には、選択手段10および演算手段20の内部構成の詳細例を示した。
図3に示したように、選択手段10は、第1選択手段11と第2選択手段12とを含む。演算手段20は、加算手段21と減算手段22とを含む。
第1選択手段11に入力された論理アドレスは、制御信号に応じて、ポインタのロード命令の場合は論理アドレスを、通常のロード命令の場合はゼロ(0)を、加算手段21に向けて出力する。そして、加算手段21は、第1の記憶領域2より入力した読み込みデータに、第1選択手段11より入力した値(論理アドレスまたは0)を加算する。
一方、第2選択手段12に入力された論理アドレスは、制御信号に応じて、ポインタのストア命令の場合は論理アドレスを、通常のストア命令の場合はゼロ(0)を減算手段22に向けて出力する。そして、減算手段22は、第2の記憶領域3より入力したデータから、第2選択手段12より入力した値(論理アドレスまたは0)を減算する。
なお、図3に示した選択手段10および演算手段20の内部構成は一例であり、同様の機能を有する構成をもつならば、本発明の範囲に含まれるものとする。
以上が、本発明の実施形態に係るデータ処理装置1の構成についての説明である。
続いて、本発明の実施形態に係るデータ処理装置1によるデータ処理動作について、図4および図5のフローチャートを用いて説明する。
(動作)
図4は、本発明の実施形態に係るデータ処理装置1におけるロードに関する動作を説明するためのフローチャートである。
図4において、まず、選択手段10にアドレス信号(以下、論理アドレス)と制御信号が入力される(ステップS11)。論理アドレスは、アドレス変換手段30と選択手段10に入力される。制御信号は、選択手段10に選択信号として入力される。
選択手段10は、制御信号に応じた値(論理アドレスまたは0)を選択する(ステップS12)。
ここで、ポインタのロード命令である場合(ステップS12でYes)、選択手段10は、制御信号に応じた値として論理アドレスを選択する(ステップS13)。
一方、ポインタのロード命令ではなく、通常のロード命令である場合(ステップS12でNo)、選択手段10は、制御信号に応じた値としてゼロ(0)を選択する(ステップS14)。
選択手段10は、ステップS13またはS14で選択された値(論理アドレスまたは0)を演算手段20に出力する(ステップS15)。
演算手段20は、選択手段10からの出力値とともに、第1の記憶領域2よりデータ(読み込みデータ)を取得する(ステップS16)。
演算手段20は、第1の記憶領域2より取得したデータ値に、選択手段10の出力値を加算する(ステップS17)。このとき、論理アドレスを入力していた場合(ステップS12でYes)、演算手段20は、第1の記憶領域2より取得した読み込みデータ値に論理アドレスを加算する。一方、ゼロ(0)を入力していた場合(ステップS12でNo)、演算手段20は、第1の記憶領域2より取得した読み込みデータにゼロ(0)を加算する。
最後に、演算手段20は、第2の記憶領域に演算結果を出力する(ステップS18)。
すなわち、論理アドレスを入力していた場合(ステップS12でYes)、演算手段20の演算結果は、第1の記憶領域2より取得した読み込みデータに論理アドレスを加算した値となる。一方、ゼロ(0)を入力していた場合(ステップS12でNo)、演算手段20の演算結果は、第1の記憶領域2より取得した読み込みデータそのものとなる。
図5は、本発明の実施形態に係るデータ処理装置1におけるストアに関する動作を説明するためのフローチャートである。
図5において、まず、選択手段10にアドレス信号(論理アドレス)が入力される(ステップS21)と、選択手段10は、制御信号に応じた値(論理アドレスまたは0)を選択する(ステップS22)。
ここで、ポインタのストア命令である場合(ステップS22でYes)、選択手段10は論理アドレスを選択する(ステップS23)。
一方、ポインタのストア命令ではなく、通常のストア命令である場合(ステップS22でNo)、選択手段10はゼロ(0)を選択する(ステップS24)。
選択手段10は、ステップS23またはS24で選択された値(論理アドレスまたは0)を演算手段20に出力する(ステップS25)。
演算手段20は、選択手段10からの出力値とともに、第2の記憶領域3よりデータを取得する(ステップS26)。
演算手段20は、第2の記憶領域3より取得したデータから、選択手段10の出力値を減算する(ステップS27)。このとき、論理アドレスを入力していた場合(ステップS22でYes)、演算手段20は、第2の記憶領域3より取得したデータから論理アドレスを減算する。一方、ゼロ(0)が入力していた場合(ステップS22でNo)、演算手段20は、第2の記憶領域3より取得したデータからゼロ(0)を減算する。
最後に、演算手段20は、第1の記憶領域に演算結果を出力する(ステップS28)。
すなわち、論理アドレスを入力していた場合(ステップS22でYes)、演算手段20の演算結果は、第2の記憶領域3より取得したデータから論理アドレスを減算した値となる。一方、ゼロ(0)を入力していた場合(ステップS12でNo)、演算手段20の演算結果は、第2の記憶領域3より取得したデータそのものとなる。
以上が、本発明の実施形態に係るデータ処理装置1のストア動作および動作ロードに関する説明である。
以上のように、本実施形態に係るデータ処理装置においては、構造体データで用いるポインタを、ポインタが書かれたワードのアドレスを起点とする相対アドレスとする。
そして、本実施形態に係るデータ処理装置においては、ポインタをロードする命令を設けている。ポインタをロードする命令は、第1の記憶領域(メモリ)からロードしたデータに、ポインタが格納されていたアドレス(論理アドレス)を加算した結果を第2の記憶領域(レジスタ)に格納するというものである。
また、本実施形態に係るデータ処理装置においては、レジスタ内にある絶対アドレスであらわされたポインタをストアする命令を設けている。ポインタをストアする命令は、第1の記憶領域(メモリ)へストアするデータから、ストア先となるアドレス(論理アドレス)を減算した結果を第1の記憶領域(メモリ)にストアするというものである。
(効果)
本実施形態に係るデータ処理装置においては、メモリ上の構造体データが相対アドレスポインタを用いて記述されている。そのため、構造体データの移動やコピーが単純なメモリ領域のブロック転送だけで実現できる。
本実施形態に係る相対アドレスポインタを用いたデータ処理においては、メモリ上の構造体データが相対アドレスポインタを用いて記述されているため、構造体データを他の記憶領域に移動・コピーした際に、ポインタの書き換えなどは不要である。
絶対アドレスポインタを用いた場合は、ポインタの書き換えが必要となるが、本実施形態によれば、ポインタの書き換えが不要となるために、構造体データの移動やコピーをブロックデータとして高速に処理できる。
また、一般的な相対アドレスポインタでは、構造体データの先頭アドレスを参照するため、複数の構造体間でポインタが用いられている場合、複数の構造体の先頭アドレスをレジスタに格納する必要がある。そのため、レジスタの領域が不足することになる。それに対し、本実施形態によれば、複数の構造体間でポインタが用いられていたとしても、ポインタが指すアドレスは変わらず、レジスタを参照することもないため、レジスタの領域が不足することはない。
また、本実施形態によれば、メモリからポインタをロードするときに、レジスタなどに格納された他の情報なしに、絶対アドレスポインタに変換できる。ポインタのロード命令を設けることによって、レジスタには絶対アドレスポインタが格納され、相対アドレスポインタを格納する場合と比較して、構造体データの参照を高速化することができる。すなわち、移動やコピーをした構造体データを高速にたどることを可能とする。
同様に、本実施形態によれば、メモリへポインタをストアするときに、レジスタなどに格納された他の情報なしに、絶対アドレスポインタを相対アドレスポインタに変換できる。ポインタのストア命令を設けることによって、ストアするだけで、レジスタ内の絶対アドレスポインタが相対アドレスポインタとしてメモリに格納される。すなわち、ポインタをロードするときに絶対アドレスポインタとして格納されたポインタを、再度メモリにストアするだけで、本実施形態で扱う相対アドレスポインタとしてメモリに格納することが可能となる。
以上の本実施形態に係るデータ処理装置による動作は、上述のデータ処理装置とは異なる構成をもつ装置によって実現されても、本実施形態の方法を適用している限りは本発明の範囲に含まれる。また、本実施形態に係るデータ処理方法をコンピュータに実行させるデータ処理プログラムも本発明の範囲に含まれる。さらに、本実施形態に係るデータ処理プログラムを記録させたプログラム記録媒体も本発明に含まれるものである。
次に、本発明の実施形態に係るデータ処理装置について、実施例をあげて説明する。
(実施例1)
図8は、本発明の実施例1に係るデータ処理装置101を含むデータ処理システム10の構成を示す機能ブロック図である。本実施例のデータ処理システム10は、データ処理装置101と、メモリ200と、レジスタファイル300で構成される。なお、レジスタファイル300は、複数のレジスタを集積したものである。
また、本実施例のデータ処理装置101は、アドレス変換器130、加算器121、減算器122、第1マルチプレクサ111、第2マルチプレクサ112を備えている。レジスタデータ処理装置101は、メモリ200とレジスタファイル300との間におけるポインタのロードとストアを行う。
アドレス変換器130は、送られてきたアドレス信号(論理アドレス)を論理アドレスから物理アドレスに変換する。そして、アドレス変換器130は、物理アドレスに変換したアドレス信号(物理アドレス)をメモリ200に対して供給する。
加算器121は、ポインタをロードする場合には、メモリ200からの取得したデータ(読み出しデータ)に論理アドレスを加算する。
第1マルチプレクサ111は、ロード命令がポインタのロード命令か否かを示す制御信号に応じて、加算器121において、メモリ200からの読み出しデータに加える値として、論理アドレスまたはゼロ(0)を選択する。加算器121の出力データは、レジスタファイル12内のロード命令で指定されたレジスタに読み込まれる。このとき、ロード命令がポインタのロード命令である場合、レジスタには絶対アドレスポインタが読み込まれる。
減算器122は、ポインタをストアする場合に、レジスタファイル300内のストア命令で指定されたレジスタから取得したデータから論理アドレスを減算する。
第2マルチプレクサ112は、ストア命令がポインタのストア命令か否かを示す制御信号に応じて、減算器122において、レジスタファイル300のレジスタから減算する値として、論理アドレスまたはゼロ(0)を選択する。減算器122の出力である書き込みデータは、メモリ200に書き込まれる。このとき、ストア命令がポインタのストア命令である場合、メモリ200には相対アドレスポインタが書き込まれる。
以上が、実施例1に係るデータ処理装置100の構成についての説明である。
(動作)
次に、図8を使って、本実施例に係るデータ体処理装置100のロード命令の動作を説明する。なお、以下の説明は、図4のフローチャートにおいて、第1の記憶領域をメモリ200とし、第2の記憶領域をレジスタファイル300内のレジスタとして説明する。
まず、ロード命令が発行されると、アドレス信号(論理アドレス)と制御信号がデータ処理装置101に供給される。論理アドレスは、アドレス変換器130と第1マルチプレクサ111に入力される。制御信号は、第1マルチプレクサ111に選択信号として入力される(ステップ)。
論理アドレスは、アドレス変換器130によって論理アドレスから物理アドレスに変換されたアドレス信号(物理アドレス)としてメモリ200に供給される。
また、第1マルチプレクサ111においては、制御信号に応じて、ポインタのロードの場合には論理アドレスが、そうでない場合はゼロ(0)が選択される。
次に、メモリ200から読み出しデータが返却されると、加算器121において、第1マルチプレクサ111で選択された値が読み出しデータに加算される。このとき、ポインタのロードの場合には論理メモリアドレスが、そうでない場合はゼロ(0)が加算される。
そして、加算器121の演算結果が、レジスタファイル300内のロード命令で指定されたレジスタに格納される。
本実施例では、構造体データのポインタが、ポインタの格納されたメモリアドレスからの相対アドレスポインタになっている。そのため、ポインタのロードの場合、加算器121において論理アドレスが加算されるので、レジスタには絶対アドレスポインタを含む構造体データが格納されることになる。
図8を使って、本実施例に係るデータ処理装置100のストア命令の動作を説明する。なお、以下の説明は、図5のフローチャートにおいて、第1の記憶領域をメモリ200とし、第2の記憶領域をレジスタファイル300内のレジスタとして説明する。
まず、ストア命令が発行されると、論理アドレス、制御信号、レジスタファイル300内のストア命令で指定されたレジスタからのデータがデータ処理装置101に供給される。
論理アドレスは、アドレス変換器130によって論理アドレスから物理アドレスに変換され、アドレス信号(物理アドレス)としてメモリ200に供給される。論理アドレスは、アドレス変換器130と選択手段110に入力される。制御信号は、選択手段10に選択信号として入力される。
また、第2マルチプレクサ112においては、制御信号に応じて、ポインタのストア命令の場合には論理アドレスが、そうでない場合にはゼロ(0)が選択される。
さらに、減算器122において、レジスタファイル300より取得したデータから、第2マルチプレクサ112で選択された値(論理アドレスまたは0)が減算される。このとき、ポインタのストアの場合には論理アドレスが、そうでない場合はゼロ(0)が減算される。
そして、減算器122の演算結果が書き込みデータとしてメモリ200に供給される。
レジスタ内には絶対アドレスのポインタが格納されているが、減算器122において絶対アドレスポインタで記述されたポインタから、ストアされる論理アドレスが減算される。その結果、ポインタが格納されたメモリアドレスからの相対アドレスポインタを含む構造体データがメモリ200に格納される。
次に、本実施例に係る構造体データのポインタについて図を使って説明する。
図9は、構造体データで表現している構造の一例である。図9の構造においては、値Aから2つのポインタが出ている。2つのポインタは、BCまたはDEFを指している。
図10は、図9の構造の一例を構造体データとして表したものである。なお。図10においてはポインタの部分を模式的に矢印で示しているが、実際には何らかの数値によってこの矢印を表すことになる。図10の構造体データは、アドレス100〜107に格納されている。
図11は、比較例として、図10の矢印の部分に絶対アドレスポインタを用いた場合の構造体データを示している。アドレス101には、アドレス103を指す絶対アドレスポインタが格納されている。また、アドレス102には、アドレス105を指す絶対アドレスポインタが格納されている。
図12は、比較例として、図11の絶対アドレスポインタを使った構造体データをアドレス200〜207にコピーした例を示す。アドレス201、202の絶対アドレスポインタの値は、それぞれ、アドレス203、205に書き換える必要がある。
図13は、図10の矢印の部分に本発明の相対アドレスポインタを用いた場合の構造体データを示している。アドレス103を指す相対アドレスポインタは、103から相対アドレスポインタの格納アドレスである101を引いた値である+2となる。アドレス105を指す相対アドレスポインタは、105から相対アドレスポインタの格納アドレスである102を引いた値+3となる。
図14は、図13の本実施例の相対アドレスポインタを使った構造体データをアドレス200〜207にコピーした例を示す。本実施例の相対アドレスポインタを用いた構造体データでは、異なるアドレスに移動またはコピーしてもポインタの値を書き換える必要はない。そのため、構造体データをデータブロックとしてそのまま移動すればよい。
このように、本実施例に係る相対アドレスポインタを用いれば、異なるアドレスに移動またはコピーしても、ポインタの値を書き換える必要はないため、比較例の絶対アドレスポインタよりも高速で処理できる。また、一般的な相対アドレスポインタでは、構造体データの先頭アドレスをレジスタに格納しておく必要があるが、本実施例に係る相対アドレスポインタでは、ポインタが格納されているワードのアドレスを起点とするため、参照するレジスタを必要としない。
次に、実施例1に係るデータ処理装置101のロード動作について構造体データの実例を用いて説明する。
図15は、図14の構造体データのアドレス201のポインタをデータ処理装置101によってロードした例を説明するための概念図である。図15には、アドレス201からポインタ(+2)のロードを行うと、ロード命令で指定されたレジスタ(レジスタファイル300内)には絶対アドレスポインタの値203が格納されることを示している。
図16は、図14の構造体データのアドレス202のポインタをデータ処理装置101でロードした例を説明するための概念図である。図16には、アドレス202からポインタ(+3)のロードを行うと、ロード命令で指定されたレジスタには絶対アドレスのポインタの値205が格納されることを示している。
次に、実施例1に係るデータ処理装置101のストア動作について説明する。
図17は、本実施例の相対アドレスポインタを使ってアドレス300〜307に図10の構造体データを作成する過程を示している。図17においては、ストア命令を受けたデータ処理装置101が、メモリ200のアドレス301に絶対アドレスポインタ303をストアする例を示している。この際、減算器122は、絶対アドレスポインタ303のアドレス303から論理アドレス301を減算する。その結果、メモリ200のアドレス301には相対アドレスポインタの+2が格納されることになる。
図18は、本実施例の相対アドレスポインタを使ってアドレス300〜307に図10の構造体データを作成する過程を示している。図18においては、ストア命令を受けたデータ処理装置101が、メモリ200のアドレス302に絶対アドレスポインタ305をストアする例を示している。この際、減算器122は、絶対アドレスポインタ305のアドレス305から論理アドレス302を減算し、メモリ200のアドレス302には相対アドレスポインタの+3が格納されることになる。
(実施例2)
次に、実施例2について説明する。実施例1に係る相対アドレスポインタは、1ワード全体を使用していると仮定した。そのため、データ処理装置101による演算処理では、ワード全体を加算または減算していた。実施例2では、相対アドレスポインタのビット幅を少なくして、余った部分にポインタであることを示す識別子を埋め込む例を示す。図19には、実施例2に係るメモリ上の相対アドレスポインタを示す。
実施例2に係る相対アドレスポインタを用いれば、制御信号を入力しなくても、アドレス信号のみからポインタに関する命令であるか否かを判別できるようになる。そのため、アドレス信号と制御信号とを共通化することが可能となり、図20のような構成のデータ処理装置102を構成することが可能となる。
図20の構成のデータ処理装置102によれば、アドレス信号と制御信号とを共通化することが可能となるため、回路構成が簡略化される。
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
1 データ処理装置
2 第1の記憶領域
3 第2の記憶領域
10 選択手段
11 第1選択手段
12 第2選択手段
20 演算手段
21 加算手段
22 減算手段
30 アドレス変換手段
101、102 データ処理装置
111、112 マルチプレクサ
121 加算器
122 減算器
130 アドレス変換器
200 メモリ
300 レジスタファイル

Claims (10)

  1. ポインタを含む構造体データを処理するデータ処理装置であって、
    前記ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる前記構造体データを処理する処理手段を備えることを特徴とするデータ処理装置。
  2. 第1の記憶領域と第2の記憶領域との間で構造体データの授受を実行するデータ処理装置であって、
    前記処理手段は、
    命令実行対象となるデータの論理アドレスを入力とし、前記論理アドレスを物理アドレスに変換して前記第1の記憶領域に出力するアドレス変換手段と、
    常に0となる初期信号および前記論理アドレスを入力とし、前記ポインタを処理する命令であるか否かを示す制御信号に応じて前記アドレス信号または前記初期信号のいずれかを選択して出力する選択手段と、
    前記選択手段の出力を入力とし、前記第1の記憶領域または第2の記憶領域から取得したデータと前記出力データとを用いて演算を実行し、前記相対アドレスを絶対アドレスに変換する演算手段とを有することを特徴とする請求項1に記載のデータ処理装置。
  3. 前記第1の記憶領域からロードしたデータに前記論理アドレスを加算した演算結果を前記第2の記憶領域に読み込みデータとして格納するロード命令を含む請求項2に記載のデータ処理装置。
  4. 前記第1の記憶領域へストアするデータから前記論理アドレスを減算した演算結果を前記第1の記憶領域に書き込みデータとして格納するストア命令を含む請求項2または3に記載のデータ処理装置。
  5. 前記選択手段は、
    前記ロード命令を受けた場合、前記制御信号に応じて前記アドレスまたは前記初期信号を選択する第1選択手段と、
    前記ストア命令を受けた場合、前記制御信号に応じて前記アドレスまたは前記初期信号を選択する第2選択手段とを有し、
    前記演算回路は、
    前記ロード命令を受けた場合、前記ロード命令で指定された前記第1の記憶領域のアドレス値と、前記制御信号に応じて出力された値とを加算する加算手段と、
    前記ストア命令を受けた場合、前記ストア命令で指定された前記第2の記憶領域から取得した値から、前記制御信号に応じて出力された値を減算する減算手段とを有する請求項4に記載のデータ処理装置。
  6. 前記第1選択手段は、
    前記ロード命令を受けた場合、
    前記ポインタを処理する命令であれば前記論理アドレスを選択し、前記ポインタを処理する命令でなければ前記初期信号を選択し、
    前記第2選択手段は、
    前記ストア命令を受けた場合、
    前記ポインタを処理する命令であれば前記論理アドレスを選択し、前記ポインタを処理する命令でなければ前記初期信号を選択する請求項5に記載のデータ処理装置。
  7. 前記処理手段は、
    前記相対アドレスを含むポインタを記述した部位に前記構造体データがポインタであることを示す識別子を含む前記構造体データを処理することを特徴とする請求項1乃至6のいずれか一項に記載のデータ処理装置。
  8. ポインタを含む構造体データを処理するデータ処理方法であって、
    前記ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる前記構造体データを処理することを特徴とするデータ処理方法。
  9. 第1の記憶領域と第2の記憶領域との間で構造体データの授受を実行するデータ処理方法であって、
    命令実行対象となるデータの論理アドレスを入力とし、前記論理アドレスを物理アドレスに変換して前記第1の記憶領域に出力し、
    常に0となる初期信号および前記論理アドレスを入力とし、前記論理アドレスに格納されたデータが前記相対アドレスであるか否かを示す制御信号に応じて前記アドレス信号または前記初期信号のいずれかを選択して出力し、
    前記選択手段の出力を入力とし、前記第1の記憶領域または第2の記憶領域から取得したデータと前記出力データとを用いて演算を実行して前記相対アドレスを絶対アドレスに変換することを特徴とする請求項8に記載のデータ処理方法。
  10. ポインタを含む構造体データを処理するデータ処理プログラムであって、
    前記ポインタが格納されたワードのアドレスを起点とする相対アドレスをポインタとして用いる前記構造体データを第1の記憶領域と第2の記憶領域との間において授受する際に、
    命令実行対象となるデータの論理アドレスを入力とし、前記論理アドレスを物理アドレスに変換して前記第1の記憶領域に出力する処理と、
    常に0となる初期信号および前記論理アドレスを入力とし、前記論理アドレスに格納されたデータが前記相対アドレスであるか否かを示す制御信号に応じて前記アドレス信号または前記初期信号のいずれかを選択して出力する処理と、
    前記選択手段の出力を入力とし、前記第1の記憶領域または第2の記憶領域から取得したデータと前記出力データとを用いて演算を実行して前記相対アドレスを絶対アドレスに変換する処理とをコンピュータに実行させることを特徴とするデータ処理プログラム。
JP2013256697A 2013-12-12 2013-12-12 データ処理装置、データ処理方法およびデータ処理プログラム Active JP5757320B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013256697A JP5757320B2 (ja) 2013-12-12 2013-12-12 データ処理装置、データ処理方法およびデータ処理プログラム
US14/562,980 US9552302B2 (en) 2013-12-12 2014-12-08 Data processing apparatus, data processing method and program recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013256697A JP5757320B2 (ja) 2013-12-12 2013-12-12 データ処理装置、データ処理方法およびデータ処理プログラム

Publications (2)

Publication Number Publication Date
JP2015114862A true JP2015114862A (ja) 2015-06-22
JP5757320B2 JP5757320B2 (ja) 2015-07-29

Family

ID=53368481

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013256697A Active JP5757320B2 (ja) 2013-12-12 2013-12-12 データ処理装置、データ処理方法およびデータ処理プログラム

Country Status (2)

Country Link
US (1) US9552302B2 (ja)
JP (1) JP5757320B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021525415A (ja) * 2018-05-31 2021-09-24 アーム・リミテッド アクションをトリガするための装置及び方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6389948A (ja) * 1986-10-03 1988-04-20 Hitachi Ltd デ−タ処理装置
JPH05173800A (ja) * 1991-12-20 1993-07-13 Hitachi Ltd プログラム変換における定数配置方法
JPH07160590A (ja) * 1993-12-07 1995-06-23 Sansei Denshi Japan Kk 記憶データアクセス方法とその装置
JP2000224648A (ja) * 1999-01-26 2000-08-11 Telefon Ab L M Ericsson 移動無線電話システム、基地局装置、移動局装置及び移動無線電話システムにおける通信方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5644755A (en) * 1995-02-24 1997-07-01 Compaq Computer Corporation Processor with virtual system mode
US5987583A (en) * 1997-10-07 1999-11-16 Microchip Technology Inc. Processor architecture scheme and instruction set for maximizing available opcodes and address selection modes
US6625718B1 (en) * 1998-02-05 2003-09-23 Avaya Technology Corp. Pointers that are relative to their own present locations
US9081657B2 (en) * 2011-10-13 2015-07-14 Conexant Systems, Inc. Apparatus and method for abstract memory addressing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6389948A (ja) * 1986-10-03 1988-04-20 Hitachi Ltd デ−タ処理装置
JPH05173800A (ja) * 1991-12-20 1993-07-13 Hitachi Ltd プログラム変換における定数配置方法
JPH07160590A (ja) * 1993-12-07 1995-06-23 Sansei Denshi Japan Kk 記憶データアクセス方法とその装置
JP2000224648A (ja) * 1999-01-26 2000-08-11 Telefon Ab L M Ericsson 移動無線電話システム、基地局装置、移動局装置及び移動無線電話システムにおける通信方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6015004693; 藤澤 幸穂: Interface増刊 SH-1&SH-2マイコン入門 , 20040901, 36頁〜38頁, CQ出版株式会社 *
JPN6015004695; インテル株式会社: インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・マニュアル 上巻:基本アーキテクチャ , 1997, 5-6頁〜5-10頁, CQ出版株式会社 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021525415A (ja) * 2018-05-31 2021-09-24 アーム・リミテッド アクションをトリガするための装置及び方法
US11755243B2 (en) 2018-05-31 2023-09-12 Arm Limited Apparatus and method for triggering action
JP7369720B2 (ja) 2018-05-31 2023-10-26 アーム・リミテッド アクションをトリガするための装置及び方法

Also Published As

Publication number Publication date
US20150169241A1 (en) 2015-06-18
JP5757320B2 (ja) 2015-07-29
US9552302B2 (en) 2017-01-24

Similar Documents

Publication Publication Date Title
KR102123633B1 (ko) 행렬 연산 장치 및 방법
KR102185287B1 (ko) 벡터 연산 장치
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
WO2009131007A1 (ja) Simd型並列計算機システム、simd型並列計算方法及び制御プログラム
JP2009020696A (ja) 情報処理装置及びシステム
JP5757320B2 (ja) データ処理装置、データ処理方法およびデータ処理プログラム
JP5278538B2 (ja) コンパイルシステム、コンパイル方法およびコンパイルプログラム
JP2009116395A (ja) データ形式変換装置及びデータ形式変換プログラム及びデータ形式変換方法
JP2009020695A (ja) 情報処理装置及びシステム
JP2007094986A (ja) シミュレーション装置およびシミュレーション方法
JP6489985B2 (ja) プログラム開発支援装置およびプログラム開発支援ソフトウェア
US11842200B2 (en) Multi-modal gather operation
JP7025104B2 (ja) 情報処理装置、方法およびプログラム
JPS6058487B2 (ja) デ−タ処理装置
US8700887B2 (en) Register, processor, and method of controlling a processor using data type information
CN104239001A (zh) 至少一个处理流水线中的操作数生成
US11567554B2 (en) Clock mesh-based power conservation in a coprocessor based on in-flight instruction characteristics
JP3132566B2 (ja) 命令先行制御装置
JP5813484B2 (ja) Vliwプロセッサと命令構造と命令実行方法
JP6639238B2 (ja) プログラムおよびコンピュータ
CN117762933A (zh) 一种穿梭框实现方法、系统、存储介质和电子设备
JP3193929B2 (ja) 画像処理装置
JP4144601B2 (ja) 演算処理回路、データ格納回路、演算処理装置、演算処理方法、データ格納方法、および、演算結果格納読み出し方法
JP5585304B2 (ja) データ処理装置、メモリアクセス制御方法及びメモリアクセス制御プログラム
JP2013127703A (ja) ロードモジュール生成方法及びロードモジュール生成プログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150407

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150520

R150 Certificate of patent or registration of utility model

Ref document number: 5757320

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150