JP2008077625A - ユーザ定義の拡張演算を処理する演算システムおよび方法 - Google Patents

ユーザ定義の拡張演算を処理する演算システムおよび方法 Download PDF

Info

Publication number
JP2008077625A
JP2008077625A JP2007008660A JP2007008660A JP2008077625A JP 2008077625 A JP2008077625 A JP 2008077625A JP 2007008660 A JP2007008660 A JP 2007008660A JP 2007008660 A JP2007008660 A JP 2007008660A JP 2008077625 A JP2008077625 A JP 2008077625A
Authority
JP
Japan
Prior art keywords
processor
extended
processing
functional unit
processing system
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
JP2007008660A
Other languages
English (en)
Inventor
Hee Seok Kim
熙 錫 金
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2008077625A publication Critical patent/JP2008077625A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】ソフトウェアパイプラインを用いて演算処理の効率性を高めるように基本演算(primitive operation)およびユーザ定義の拡張演算(user defined extended operation)が処理できるシステムおよび方法を提供する。
【解決手段】コンピュータプログラムの演算(operation)を処理する演算処理システムにおいて、基本演算(primitive operation)を処理する複数の機能ユニット(FU、functional unit)と、機能ユニットの制御によって拡張演算(extended operation)を処理するプロセッサ(processor)とを含む。
【選択図】図3

Description

本発明は、ユーザ定義の拡張演算を処理する演算システムおよび方法に関し、より詳細には、ソフトウェアパイプラインを用いて演算処理の効率性を高めるために、基本演算(primitive operation)およびユーザ定義の拡張演算(user defined extended operation)の処理を行えるようにするシステムおよび方法に関するものである。
最近、コンピュータ、PDAおよび携帯電話などのようにプログラムを実行し得る演算装置を含む装置などが幅広く普及されるに伴い、プログラムを実行するための演算処理を迅速に行えるようにする方法が研究されている。このような研究結果の1つとしてソフトウェアパイプライン(software pipelining)技法が挙げられる。
図1は、ソフトウェアパイプライン技法を行う方法を説明するための図である。
符号110は、演算処理システムが処理すべきソフトウェアプログラムの一部を示す。図中、A、B、C、Dは各プログラムを構成する基本単位である演算(operation)を意味し、一般に、ALU(arithmetic logic unit)を用いて処理し得る演算(例えば、足し算、引き算、掛け算、シフト、論理和、論理積など)と、メモリアクセス(memory access)のために提供される演算(ロード、ストアなど)とを含む。また、最終行のJMPLという命令語は「最上行の演算Aの前に位置したL:に戻る」という意味である。すなわち、符号110のプログラムを行うと、A、B、C、Dの演算が順に行われ、さらにAからDまでの演算が継続して繰り返される。
符号120では、ソフトウェアパイプライン技法を利用せずに符号110のプログラムを行う場合の過程を示す。符号110のプログラムは、別途の条件がないので無限に繰り返されるが、ここでは比較の便宜上、4回の反復に限定した。符号120のように、ソフトウェアパイプラインを行わなければ、A、B、C、Dの演算が順に行われ、さらにAの演算が行われる。このように4回繰り返すと、合計16回の演算が行われることになる。図中、各段階をサイクル(cycle)とし、符号120では合計16サイクルの演算時間がかかる。
符号130では、ソフトウェアパイプライン技法を用いて符号110のプログラムを行う場合の過程を示す。同図に示すように、ソフトウェアパイプライン技法によれば、第1ループの一番目の演算Aが行われ、第1ループの演算Bが行われるとき、第2ループの一番目の演算であるAが同時に行われる。前記A、B、C、Dの演算がそれぞれ独立的であれば、4つの演算を同時に行うことができる。このように演算を同時に行うことにより、演算を一層効率的に行うことができる。本例では、最大4つの演算を同時に行うことにより、符号120と同様にして4回繰り返すが、合計7サイクルで完了することができる。このようにソフトウェアパイプライン技法は、繰り返し演算処理において極めて効率的な方法である。
しかし、ソフトウェアパイプライン技法を利用するためには、ループ(loop)内に条件フロー(condition flow)が存在してはならない。条件フローとは、条件によって別の演算を行わせる演算のことである。例えば、XとYを比較して、Xの方が大きければ演算Aを行い、Yの方が大きければ演算Bを行う。すなわち、条件によって処理演算が決定されることを意味する。
このような条件フローがループ(loop)内に含まれると、符号130の如く所定の順序で演算を繰り返すことができなくなり、パイプライン構成が極めて困難となる。符号130と同様にして演算順序が既に定められている場合は、続いて繰り返すと、4行目のようにD、C、B、Aの演算群(operation group)を処理し続けることになるので、パイプラインの構成が容易となるが、その中間に別の演算が含まれると、同じ演算群の繰り返し処理ができなくなることから、パイプラインの構成が困難となる。
しかし、プログラムのほとんどは条件フローを含んでおり、このため、条件フローが存在しないループに対してのみソフトウェアパイプライン技法を使用すれば、その使用範囲は極めて狭まる。
条件フローを含むループに対してもソフトウェアパイプラインを可能にする試みが行われている。その一例として、条件フローを含む部分を1つの新しい演算と定義し、前記新しい演算を処理するためのハードウェアを追加することにより、まるで条件フローが存在せず、前記新しい演算が行われるように動作する。しかし、この方法は、複雑な演算を処理するハードウェアを追加する必要があるのでコストが上昇するという問題があり、またハードウェア製作時に定義した新しい演算以外の演算が含まれる場合には、条件フローを含む部分を処理し得ないという問題点があった。
本発明では、条件フローを含むループに対してソフトウェアパイプライン技法を適用可能にすることはもとより、ユーザによる新しい演算の定義および追加を可能にすることにより、ソフトウェアパイプライン技法を一層幅広く利用できるようにして、演算を効率的に処理し得る演算処理システムおよび方法に関して提案する。
本発明は、前述したような従来の技術を改善するために案出されたもので、ソフトウェアパイプライン技法を容易に利用できるようにすることを目的とする。
また、本発明は、拡張演算(extended operation)を別途のプロセッサが処理するようにすることにより、ソフトウェア的に拡張演算を処理できるようにすることを目的とする。
さらに、本発明は、ソフトウェア的に拡張演算が処理できるようにすることにより、ユーザが所望する拡張演算を追加できるようにすることを目的とする。
なお、本発明は、エクセプション(exception)を発生させ、プロセッサで拡張演算を処理するようにし、プロセッサのエクセプションハンドラー(exception handler)を活用することにより、効率的にプロセッサを利用できるようにすることにある。
前記目的を達成するために、本発明の一実施形態に係る演算処理システムは、コンピュータプログラムの演算(operation)を処理する演算処理システムにおいて、基本演算(primitive operation)を処理する複数の機能ユニット(FU、functional unit)と、前記機能ユニットの制御によって拡張演算(extended operation)を処理するプロセッサ(processor)とを含む。
また、本発明の一実施形態に係る演算処理方法は、コンピュータプログラムの演算(operation)を処理する演算処理方法において、機能ユニット(FU、functional unit)で前記演算を受信する段階と、前記演算が基本演算(primitive operation)である場合、前記機能ユニットで前記演算を処理する段階と、前記演算が拡張演算(extended operation)である場合、プロセッサを制御して前記拡張演算を処理する段階とを含む。
本発明における「演算(operation)」というのは、プログラムの基本単位のことである。コンピュータなどの装置で動作するプログラムは、複数の演算よりなるが、通常、演算はプロセッサの設計時に定義されてハードウェア(hardware)的に処理される。ゆえに、ハードウェアの構成後には演算を追加できないが、本発明では、ユーザが定義した拡張演算の追加を可能にすることを特徴とするので、既存のハードウェア的に処理する演算を基本演算(primitive operation)とし、ユーザが定義した演算を拡張演算(extended operation)とする。
本発明によれば、ソフトウェアパイプライン技法を容易に使用することができる。
また、本発明によれば、拡張演算(extended operation)を別途のプロセッサによって処理できるようにすることにより、ソフトウェア的に拡張演算を処理することができる。
また、本発明によれば、ソフトウェア的に拡張演算を処理できるようにすることにより、ユーザが所望する拡張演算を追加することができる。
また、本発明によれば、エクセプション(exception)を発生させてプロセッサによって拡張演算を処理できるようにすることにより、プロセッサのエクセプションハンドラー(exception handler)を活用することができ、その結果、プロセッサを効率よく用いることができる。
以下、添付図面および添付図面に記載の内容を参照して本発明の好適な実施の形態を詳細に説明する。しかしながら、本発明は、後述する実施の形態によって限定されるものではない。
同じ部材については、他の図面上に示す場合であっても、同じ参照符号を付するものとする。
図2は、本発明の一実施形態に係る演算処理システムの構成を示す構成図である。
同図に示すように、本発明の一実施形態に係る演算処理システムは、プロセッサ(processor)210、レジスタファイル(register file)220および複数の機能ユニット(FU、functional unit)230を含み、複数の機能ユニット230は再構成アレイ(RA、reconfigurable array)を構成する。以下、各構成要素別に詳述する。
プロセッサ(processor)210とは、コンピュータ、PDA、PMP、携帯電話などの装置に備えて各装置で動作するプログラム(program)の演算(operation)を処理する装置を示す。プログラムはプロセッサで処理し得る複数の演算よりなる。この演算は、ALU(arithmetic logic unit)を用いて処理する演算(例えば、足し算、引き算、掛け算、シフト、論理和、論理積など)と、メモリアクセス(memory access)のために提供される演算(ロード、ストアなど)とを含む。よって、プロセッサ210は、数学演算を処理し得るALU装置と、メモリにアクセス(access)し得る装置とを含むように構成することができる。プロセッサ210の種類によって処理できる演算の種類が変わるが、本発明では、プロセッサ210の種類に関係なくいずれのプロセッサ210を適用しても構わない。
レジスタファイル(register file)220は、通常プロセッサ210がメモリデータにアクセスするために用いられるレジスタメモリ(register memory)が複数集まったものである。通常、コンピュータなどの装置において、データを格納する中央メモリはデータにアクセスするアクセス時間(access time)が長いので、メモリにプロセッサ210が直接アクセスすると、1サイクル(cycle)にかかる時間が長くなる。よって、プロセッサ210が迅速にアクセスすることが可能なレジスタメモリを用意しておき、プロセッサ210のメモリへのアクセスの命令により、中央メモリのデータをレジスタメモリに格納しておき、プロセッサ210はレジスタメモリにアクセスしてデータを確認する。
本発明では、機能ユニット230がプロセッサ210を制御して拡張演算の処理を行わせるとき、プロセッサ210が最も迅速にアクセスできるメモリであるレジスタファイル220に、演算に必要な入力値を記録することにより、プロセッサが最大限迅速に必要な演算を処理できるようにする。
また、本発明のレジスタファイル220は、1つのレジスタファイル220を用いて機能ユニット230とプロセッサ210との間のデータのやり取りを可能にし、機能ユニット230およびプロセッサ210がそれぞれのレジスタファイル220にアクセスし、レジスタファイル220間のデータの送受信を可能にすることができる。本発明は、かかるレジスタファイル220の構成によって限定されるものではない。
機能ユニット(FU、functional unit)230とは、演算を処理するために構成されたハードウェアのことであり、各機能ユニット230別に処理可能な演算が定義されている。よって、処理する演算の種類によって機能ユニット230も変わる。通常機能ユニット230は、複数の入力値を受信して演算処理を行い、この演算による結果値を返送(return)する。
また、機能ユニット230は、プロセッサ210を制御して拡張演算(extended operation)の処理を行うために、プロセッサを制御する機能を果すことができる。例えば、機能ユニット230は、プロセッサが認識し得るエクセプション(exception)を発生させることにより、プロセッサが機能ユニット230が発生させたエクセプションに対応して拡張演算の処理を行わせる。
再構成アレイ(reconfigurable array)240は、複数の機能ユニット230よりなるもので、複数の機能ユニットを同時に動作させて複数の演算を同時に処理できるようにする。この複数の演算が同時に処理できることから、再構成アレイ240を用いると、ソフトウェアパイプラインを実現することができる。再構成アレイ240には、多様な演算を処理する機能ユニット230を含んでも良いし、各機能ユニット230間でデータの送受信に用いられる連結線および送受信データを格納する臨時記憶装置を含んでも良い。また、プロセッサ210にデータが伝達できるように、さらにレジスタファイル220にデータを格納できるようにレジスタファイル220との連結線を含んでも良い。
再構成アレイ240に含まれた各機能ユニット230はそれぞれの演算を行い、演算結果を他の機能ユニット230に伝達して、この演算結果を基にして他の演算を行わせることができる。よって、演算の順序によって、データの効率的な移動のために機能ユニット230を適切に配置する必要がある。
図3は、本発明の一実施形態に係る演算処理システムから拡張演算を処理するためのシステム構成を示す構成図である。
同図に示すように、本発明の一実施の形態による演算処理システムは、機能ユニット310、プロセッサ320、レジスタファイル330および拡張演算追加部340を含む。以下、各構成要素別に詳述する。
機能ユニット310は、基本演算(primitive operation)を処理し、プロセッサ320を制御して拡張演算(extended operation)の処理を行わせる。機能ユニット310は、プログラムを構成する基本単位である演算(operation)を処理するハードウェア装置であって、演算に必要な複数の入力値351、352および353を受信して演算を行い、その後、結果値354を返還(return)する。各機能ユニット310には、ハードウェア設計時から処理できる演算の種類が決められている。例えば、ある機能ユニット310は、足し算および引き算の演算を行い、他の機能ユニット310は足し算および引き算の演算はもとより、掛け算および割り算の演算をも行う。さらに、他の機能ユニット310は、小数点演算(floating point operation)を処理することができる。
このように機能ユニット310で設計されたハードウェアを用いて処理できる演算を基本演算(primitive operation)とし、機能ユニット310では基本演算を処理してその結果を返送する。機能ユニット310には、基本演算を処理するために複数の入力値(351、352および353)が入力されるが、演算の種類によって所要入力値の数が変わる。
このように機能ユニット310で処理すべき演算が基本演算である場合は、機能ユニット310のハードウェアを用いて処理することができる。しかし、処理すべき演算が拡張演算である場合は、拡張演算は機能ユニット310のハードウェアを用いて処理することができないので、プロセッサ320を制御して処理させる。拡張演算は、普通ソフトウェアパイプラインの実現を困難にするコントロールフロー(control flow)を含む演算であって、複数の基本演算(primitive operation)が結合されたプログラム形態を有する。このようにコントロールフローを含む複数の基本演算が結合された拡張演算を、機能ユニット310がプロセッサ320を制御することによって1回で処理することにより、ソフトウェアパイプラインを容易に実現することができる。
機能ユニット310が処理すべき演算が拡張演算である場合、機能ユニット310は、拡張演算の入力値(351、352および353)をレジスタファイル330にコピーすることで、プロセッサ320による確認を可能にする。プロセッサは、最もアクセスしやすいメモリで演算に必要な入力値を確認することができる。入力値のコピー後、機能ユニット310は、プロセッサ320に対してエクセプション(exception)370を発生する。エクセプション370は、コンピュータなどの装置に問題が発生したり、入力装置から入力されて処理すべき状況が発生したりする場合、処理中である作業を停止して即時処理を行えるようにする信号を意味する。よって、エクセプション370が発生すると、プロセッサ320は処理中の作業を停止し、エクセプション370に対応する動作を行う。このようにエクセプション370に対応する動作を行わせるモジュールをエクセプションハンドラー(exception handler)と言う。エクセプションハンドラーはエクセプション370の種類を把握し、エクセプションの種類に対応する演算を行わせる。このようなエクセプションハンドラーは、通常プロセッサに基本的に含まれているため、エクセプションハンドラーに機能ユニット310からのエクセプション370を処理する演算を追加することだけで、機能ユニット310のプロセッサ320への制御を可能にする。
拡張演算は、プログラム形態で構成されるので、機能ユニット310がエクセプションを発生すると、プロセッサ320のエクセプションハンドラーは、エクセプション370を確認し、拡張演算を処理するためのプログラムを動作させる。このとき、拡張演算が種々存在する場合があるので、エクセプション370とともに拡張演算の演算番号(operation number)380をプロセッサ320に伝達することにより、エクセプションハンドラーで拡張演算の処理用プログラムの種類を決定することができる。
プロセッサ320は、拡張演算の処理するためのプログラムを処理する装置であって、上記のようにエクセプションハンドラーの動作に応じて拡張演算の種類に対応するプログラムを動作させる。このように拡張演算を処理するために、プロセッサ320は、複数の拡張演算をそれぞれ処理するためのプログラムのプログラムコードを記録装置に格納し、これらを用いて拡張演算を処理することができる。このとき、拡張演算の種類を識別するために、演算番号(operation number)とプログラムコードとを対応させて格納し、機能ユニット310からエクセプション370とともに受信する演算番号380に対応するプログラムコードを記録装置から確認することができる。
また、プロセッサ320は、拡張演算の処理に必要な入力値をレジスタファイル330から受信することができる。入力値を機能ユニット310からレジスタファイル330にコピーするので、プロセッサ320は最も迅速にアクセス可能なメモリであるレジスタファイルから入力値を受信することができる。また、プロセッサ320は、拡張演算を処理し、その処理結果をレジスタファイル330に記録して機能ユニットで確認できるようにする。機能ユニット310では、レジスタファイル330を参考して処理結果を受信し、これを結果値354として返送するように構成することができる。
上記のように拡張演算を処理すると、機能ユニット310を使用する側では、機能ユニット310の内部動作と関係なく機能ユニットに入力値(351、352および353)を入力し、演算による結果値354の受信することができるので、コントロールフローを含む複数の基本演算よりなる拡張演算を1つの基本演算と同様にして処理することができる。よって、コントロールフローが存在しない場合と同様にして演算を処理することができるので、ソフトウェアパイプラインを容易に実現することができる。
例えば、下記のようなループ(loop)があれば、従来の技術では4、5行目のコントロールフローのために、ソフトウェアパイプライニングを実現することができなかった。
1:while(TRUE){
2:a = 10;
3:b = a + c;
4:if(a > b) d = a;
5:else d = b;
6:}
したがって、前述したプログラムの4、5行目を処理する「max」という拡張演算を定義することにより、下記のようにコントロールフロー無しのプログラムに変えることができる。
1:while(TRUE){
2:a = 10;
3:b = a + c;
4:d = max(a、b);
5:}
実際に前述のプログラムにおいてmaxはコントロールフローを含んでいるが、機能ユニット310がプロセッサ320を制御して処理することにより、足し算のような1つの演算として処理されるので、前述のプログラムのループは、コントロールフローを含まない3個の演算よりなるプログラムになって、ソフトウェアパイプラインを実現することができる。
レジスタファイル330は、機能ユニット310からプロセッサ320にデータを伝送するために用いられるメモリであって、プロセッサが最も迅速にアクセスできるので、拡張演算の処理速度を高めることができる。レジスタファイル330は複数のレジスタメモリよりなり、機能ユニット310およびプロセッサ320がそれぞれのレジスタファイル330にアクセスしてデータを用い、レジスタファイル330間でデータの送受信を可能にすることができ、1つのレジスタファイルを共有することができる。
拡張演算追加部340は、ユーザから拡張演算に対する追加要請を受信し、プロセッサ320に対して追加要請に対応する拡張演算を処理させるように設定する。この追加要請は、プロセッサ320が拡張演算を処理するために動作するプログラムのプログラムコードを含むように構成することができる。拡張演算は、複数の基本演算よりなるプログラムの形態を有するので、拡張演算を処理するためのプログラムが記憶装置に格納されていなければ、プロセッサ320は拡張演算を処理することができない。よって、ユーザの追加要請によって拡張演算を追加する場合、拡張演算に対応するプログラムコードを受信して格納しなければならない。
また、拡張演算追加部340は、追加要請に対応する拡張演算に演算番号(operation number)を付与し、受信したプログラムコードを演算番号に対応させて記録装置に格納することができる。したがって、機能ユニット310から演算番号をプロセッサ320に伝送することだけで、プロセッサは処理すべき拡張演算を確認し、演算番号に対応するプログラムコードを記憶装置で確認して動作させることにより、拡張演算の処理を行うように構成できる。
このように、拡張演算追加部340を用いてユーザが容易に拡張演算を追加することができ、ハードウェア装置の追加なしにユーザの必要に応じて演算を拡張することができる。
図4は、本発明の一実施形態に係る演算処理方法の流れを示す流れ図である。
段階S401では、機能ユニット(FU、functional unit)で処理すべき演算を受信する。通常機能ユニットでは、メモリに格納されているプログラムの演算を読み込んで処理する。この演算は、基本演算および拡張演算を含む。
段階S402では、段階S401で受信した演算が基本演算であるか否かを確認する。基本演算か拡張演算かを区分するために、演算コード(OP code)に基本演算および拡張演算の可否を確認できるbitを追加するように構成でき、他にも多様な方法で基本演算および拡張演算を区分するように構成できる。基本演算および拡張演算を区分する方法は、何れの方法を本発明に適用しても良いし、本発明はこのような区分方法によって制限されるものではない。
段階S403では、段階S401で受信した演算が段階S402で基本演算であると判断された場合、この演算を処理する。機能ユニットは、本来基本演算を処理するためのハードウェアを含んでいるので、このハードウェアを用いることにより、この基本演算を処理することができる。
段階S404では、段階S401で受信した演算が段階S402で拡張演算であると判断された場合、演算の入力値をレジスタファイルに格納する。レジスタファイルはプロセッサが直接アクセス(access)できるメモリ装置であるので、機能ユニットから入力値をレジスタファイルに格納することにより、プロセッサで入力値を簡単に確認することができる。
段階S405では、プロセッサに対してエクセプションを発生し、拡張演算の処理を行う。エクセプションが発生すると、プロセッサのエクセプションハンドラーが動作してエクセプションを処理する。したがって、このエクセプションに対応して拡張演算を処理するようにエクセプションハンドラーを設定することにより、別途の通信なしにプロセッサを制御することができる。
段階S406では、プロセッサで拡張演算を処理し、その処理結果をレジスタファイルに格納する。この拡張演算に対する処理結果は、さらに拡張演算を処理するように制御した機能ユニットで確認して返送する。このため、機能ユニットを用いる側では、機能ユニットが直接演算を処理するか、プロセッサを制御して処理するかの可否を確認できないので、拡張演算を基本演算と同様にして処理することができる。
段階S407では、機能ユニットでレジスタファイルに格納された処理結果を受信し、これを結果値として返送する。このように機能ユニットは、プロセッサと別途の通信チャンネルを構成しなくても、レジスタファイルを用いて入力値を伝送し、その結果値を受信するように構成できる。
本発明に係る演算処理方法は、多様なコンピュータ手段を用いて行えるプログラム命令の形態で実現され、コンピュータ読み取り可能媒体に記録できる。コンピュータ読み取り可能媒体としては、プログラム命令、データファイル、データ構造などを単独でまたは組み合わせて含むことができる。媒体に記録されるプログラム命令は、本発明によって特別に設計および構成されたものであって良いし、コンピュータソフトウェアの当業者に公知されて使用可能なものであっても良い。コンピュータ読み取り可能記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスクおよび磁気テープのような磁気媒体(magnetic media)と、CD−ROM、DVDのような光記録媒体(optical media)と、フロプティカルディスク(floptical disk)のような磁気―光媒体(magneto-optical media)と、ROM ロム(Read Only Memory)、RAM、フラッシュメモリと、などのようなプログラム命令を格納および処理できるように特別に構成されたハードウェア装置が含まれる。プログラム命令の例としては、コムパイラによって生成される機械語コードはもとより、インタープリターなどを用いてコンピュータによって実行できる高級言語コードを含む。上記のハードウェア装置は、本発明の動作を行うために1つ以上のソフトウェアモジュールとして作動するように構成することができ、その逆もできる。
以上、実施形態および図面を挙げて本発明について説明したが、これは単なる例示的なものに過ぎず、本発明はこれらに限定されるものではない。なお、特許請求の範囲において請求するように、本発明の要旨を逸脱することなく、この技術分野における通常の知識を有する者であれば種々の修正および変更が可能である。よって、特許請求の範囲に記載された技術的思想の範疇内において各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
ソフトウェアパイプライン(software pipelining)技法を行う方法を示す図である。 本発明の一実施形態に係る演算処理システムの構成を示す構成図である。 本発明の一実施形態に係る演算処理システムで拡張演算を処理するためのシステム構成を示す構成図である。 本発明の一実施形態に係る演算処理方法の流れを示す流れ図である。
符号の説明
310 機能ユニット(FU、functional unit)
320 プロセッサ(processor)
330 レジスタファイル(register file)
340 拡張演算追加部
351 入力値1
352 入力値2
353 入力値3
354 結果値
370 エクセプション(exception)
380 演算番号(operation number)

Claims (17)

  1. コンピュータプログラムの演算を処理する演算処理システムにおいて、
    基本演算を処理する複数の機能ユニットと、
    前記機能ユニットの制御によって拡張演算を処理するプロセッサと、
    を含むことを特徴とする演算処理システム。
  2. 前記機能ユニットは、
    前記演算が前記基本演算である場合には前記基本演算を直接処理し、前記演算が前記拡張演算である場合には前記プロセッサで前記拡張演算を処理するように制御することを特徴とする請求項1に記載の演算処理システム。
  3. 前記機能ユニットは、
    前記演算が拡張演算である場合、前記演算の入力値をレジスタファイルに格納し、前記プロセッサにエクセプションを発生させて前記演算を処理するようにすることを特徴とする請求項1に記載の演算処理システム。
  4. 前記機能ユニットは、
    前記演算の種類を示す演算番号を前記プロセッサに伝送することを特徴とする請求項3に記載の演算処理システム。
  5. 演算の種類を示す演算番号を、前記演算番号に対応する演算を処理するためのプログラムコードと対応させて格納する記録装置をさらに含み、
    前記プロセッサは、
    前記記録装置を参照して前記演算番号に対応するプログラムコードを実行して前記演算を処理することを特徴とする請求項4に記載の演算処理システム。
  6. 前記プロセッサは、前記演算に対する処理結果を前記レジスタファイルに格納し、
    前記機能ユニットは、前記レジスタファイルから前記処理結果を受信することを特徴とする請求項3に記載の演算処理システム。
  7. 前記機能ユニットは、
    前記受信した処理結果を前記演算に対する結果値として返送することを特徴とする請求項6に記載の演算処理システム。
  8. 前記複数の機能ユニットは、再構成アレイを構成することを特徴とする請求項1に記載の演算処理システム。
  9. 前記複数の機能ユニットは、複数の前記基本演算を処理すると同時に、前記拡張演算を前記プロセッサで処理するように制御することを特徴とする請求項1に記載の演算処理システム。
  10. 拡張演算に対する追加要請を受信し、前記プロセッサで前記追加要請に対応する拡張演算が処理できるように設定する拡張演算追加部をさらに含むことを特徴とする請求項1に記載の演算処理システム。
  11. 前記追加要請は、
    前記プロセッサで前記拡張演算を処理するためのプログラムコードを含むことを特徴とする請求項10に記載の演算処理システム。
  12. 前記拡張演算追加部は、
    前記追加要請に対応する拡張演算に演算番号を付与し、前記プログラムコードを前記演算番号に対応させて記録装置に格納することを特徴とする請求項11に記載の演算処理システム。
  13. コンピュータプログラムの演算を処理する演算処理方法において、
    機能ユニットで前記演算を受信する段階と、
    前記演算が基本演算である場合、前記機能ユニットで前記演算を処理する段階と、
    前記演算が拡張演算である場合、プロセッサを制御して前記拡張演算を処理する段階と、
    を含むことを特徴とする演算処理方法。
  14. 前記拡張演算を処理する前記段階は、
    少なくとも前記機能ユニットの1つを用いて前記演算の入力値をレジスタファイルに格納する段階と、
    少なくとも前記機能ユニットの1つを用いて前記プロセッサによりエクセプションを発生させて前記演算を処理するようにする段階と、
    を含むことを特徴とする請求項13に記載の演算処理方法。
  15. 前記拡張演算を処理する前記段階は、
    前記プロセッサで、前記演算に対する処理結果を前記レジスタファイルに格納する段階と、
    少なくとも前記機能ユニットの1つを用いて、前記レジスタファイルから前記処理結果を受信する段階と、
    をさらに含むことを特徴とする請求項14に記載の演算処理方法。
  16. 前記拡張演算を処理する前記段階は、
    前記機能ユニットで、前記受信した処理結果を結果値として返送する段階をさらに含むことを特徴とする請求項15に記載の演算処理方法。
  17. 請求項13〜16のいずれかに記載の方法を実行するためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2007008660A 2006-09-18 2007-01-18 ユーザ定義の拡張演算を処理する演算システムおよび方法 Pending JP2008077625A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060090060A KR100781340B1 (ko) 2006-09-18 2006-09-18 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법

Publications (1)

Publication Number Publication Date
JP2008077625A true JP2008077625A (ja) 2008-04-03

Family

ID=38616389

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007008660A Pending JP2008077625A (ja) 2006-09-18 2007-01-18 ユーザ定義の拡張演算を処理する演算システムおよび方法

Country Status (4)

Country Link
US (1) US20080072012A1 (ja)
EP (1) EP1903433B1 (ja)
JP (1) JP2008077625A (ja)
KR (1) KR100781340B1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012035699A1 (ja) * 2010-09-15 2012-03-22 日本電気株式会社 情報処理装置、情報処理方法、設計支援システム、及びプログラムが格納された非一時的なコンピュータ可読媒体
US8270723B2 (en) 2010-04-07 2012-09-18 Sony Corporation Recognition device, recognition method, and program

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101515568B1 (ko) 2009-02-03 2015-04-28 삼성전자 주식회사 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치
KR101270763B1 (ko) 2011-02-21 2013-06-03 서울대학교산학협력단 재구성형 프로세싱 어레이 구조 생성 방법
KR101996842B1 (ko) * 2018-12-26 2019-07-08 (주)자람테크놀로지 사용자 정의 명령어 셋을 지원하는 하드웨어 고속 연산 결합형 risc-v 기반 연산 장치 및 그 방법

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62154145A (ja) * 1985-12-27 1987-07-09 Nec Corp 動的拡張ス−パ−バイザ・コ−ル割込み処理方式
JPS63214804A (ja) * 1987-03-03 1988-09-07 Fanuc Ltd Plc用プロセツサ及びplc
JPS63215592A (ja) * 1987-02-27 1988-09-08 Furukawa Electric Co Ltd:The 化合物半導体の製造方法
JPH04308937A (ja) * 1991-04-05 1992-10-30 Toshiba Corp コード生成方法
WO1996010226A1 (en) * 1994-09-26 1996-04-04 Bull Hn Information Systems Inc. Sharing register stack by two cpu execution units
JPH08286908A (ja) * 1995-04-17 1996-11-01 Ricoh Co Ltd 動的に再設定自在な処理ユニット、システム及び方法
JPH08320796A (ja) * 1994-09-09 1996-12-03 Hitachi Ltd データ処理装置
JP2001147902A (ja) * 1999-11-22 2001-05-29 Nec Corp マイクロプロセッサシステム
JP2006505056A (ja) * 2002-10-31 2006-02-09 エス・アール・シィ・コンピューターズ・インコーポレイテッド 制御フローグラフ表現を制御データフローグラフ表現に変換するためのシステムおよび方法
JP2006215592A (ja) * 2004-10-27 2006-08-17 Internatl Business Mach Corp <Ibm> 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0519348B1 (en) * 1991-06-19 1999-07-28 Hewlett-Packard Company Co-processor supporting architecture adapted to a processor which does not natively support co-processing
JPH07219774A (ja) * 1994-02-07 1995-08-18 Fujitsu Ltd データ処理装置および例外処理方法
US5784640A (en) * 1996-03-18 1998-07-21 Advanced Micro Devices, Inc. CPU with DSP function preprocessor having look-up table for translating instruction sequences intended to perform DSP function into DSP macros
US5956518A (en) * 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US6085307A (en) * 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof
US6505290B1 (en) * 1997-09-05 2003-01-07 Motorola, Inc. Method and apparatus for interfacing a processor to a coprocessor
US6122719A (en) * 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
DE69827589T2 (de) * 1997-12-17 2005-11-03 Elixent Ltd. Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
US6480952B2 (en) * 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
US6163835A (en) * 1998-07-06 2000-12-19 Motorola, Inc. Method and apparatus for transferring data over a processor interface bus
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
JP3616556B2 (ja) 1999-06-29 2005-02-02 株式会社東芝 拡張命令を処理する並列プロセッサ
JP3951560B2 (ja) * 2000-06-14 2007-08-01 セイコーエプソン株式会社 信号供給装置及びその検査方法、並びにそれを用いた半導体装置及びデータ線駆動ic
KR100379837B1 (ko) * 2000-06-30 2003-04-11 주식회사 에이디칩스 확장명령어 축약장치
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
US6754804B1 (en) * 2000-12-29 2004-06-22 Mips Technologies, Inc. Coprocessor interface transferring multiple instructions simultaneously along with issue path designation and/or issue order designation for the instructions
US7210022B2 (en) * 2001-05-15 2007-04-24 Cloudshield Technologies, Inc. Apparatus and method for interconnecting a processor to co-processors using a shared memory as the communication interface
GB2376100B (en) * 2001-05-31 2005-03-09 Advanced Risc Mach Ltd Data processing using multiple instruction sets
US7346881B2 (en) * 2002-05-13 2008-03-18 Tensilica, Inc. Method and apparatus for adding advanced instructions in an extensible processor architecture
GB0215033D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Instruction set translation method
KR20040002305A (ko) * 2002-06-29 2004-01-07 주식회사 에이디칩스 중앙처리장치

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62154145A (ja) * 1985-12-27 1987-07-09 Nec Corp 動的拡張ス−パ−バイザ・コ−ル割込み処理方式
JPS63215592A (ja) * 1987-02-27 1988-09-08 Furukawa Electric Co Ltd:The 化合物半導体の製造方法
JPS63214804A (ja) * 1987-03-03 1988-09-07 Fanuc Ltd Plc用プロセツサ及びplc
JPH04308937A (ja) * 1991-04-05 1992-10-30 Toshiba Corp コード生成方法
JPH08320796A (ja) * 1994-09-09 1996-12-03 Hitachi Ltd データ処理装置
WO1996010226A1 (en) * 1994-09-26 1996-04-04 Bull Hn Information Systems Inc. Sharing register stack by two cpu execution units
JPH08286908A (ja) * 1995-04-17 1996-11-01 Ricoh Co Ltd 動的に再設定自在な処理ユニット、システム及び方法
JP2001147902A (ja) * 1999-11-22 2001-05-29 Nec Corp マイクロプロセッサシステム
JP2006505056A (ja) * 2002-10-31 2006-02-09 エス・アール・シィ・コンピューターズ・インコーポレイテッド 制御フローグラフ表現を制御データフローグラフ表現に変換するためのシステムおよび方法
JP2006215592A (ja) * 2004-10-27 2006-08-17 Internatl Business Mach Corp <Ibm> 再構成可能な、命令レベルのハードウェアによる高速化のためにマイクロプロセッサとともにfpgaテクノロジを使用する方法および装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8270723B2 (en) 2010-04-07 2012-09-18 Sony Corporation Recognition device, recognition method, and program
WO2012035699A1 (ja) * 2010-09-15 2012-03-22 日本電気株式会社 情報処理装置、情報処理方法、設計支援システム、及びプログラムが格納された非一時的なコンピュータ可読媒体
JPWO2012035699A1 (ja) * 2010-09-15 2014-01-20 日本電気株式会社 情報処理装置、情報処理方法、設計支援システム、及びプログラム

Also Published As

Publication number Publication date
EP1903433B1 (en) 2012-12-12
KR100781340B1 (ko) 2007-11-30
EP1903433A1 (en) 2008-03-26
US20080072012A1 (en) 2008-03-20

Similar Documents

Publication Publication Date Title
KR101699910B1 (ko) 재구성 가능 프로세서 및 그 제어 방법
US20120216011A1 (en) Apparatus and method of single-instruction, multiple-data vector operation masking
EP2423821A2 (en) Processor, apparatus, and method for fetching instructions and configurations from a shared cache
CN107766079A (zh) 处理器以及用于在处理器上执行指令的方法
CN111324294B (zh) 存取张量数据的方法和装置
US20100211747A1 (en) Processor with reconfigurable architecture
EP3729261B1 (en) A centralized-distributed mixed organization of shared memory for neural network processing
JP2008077625A (ja) ユーザ定義の拡張演算を処理する演算システムおよび方法
US20200133672A1 (en) Hybrid and efficient approach to accelerate complicated loops on coarse-grained reconfigurable arrays (cgra) accelerators
JP2021507352A (ja) メモリ装置及びそれを制御するための方法
US9804903B2 (en) Data processing apparatus for pipeline execution acceleration and method thereof
CN106133709A (zh) 用于防止存储器中的存储体冲突的方法和装置
CN111158757B (zh) 并行存取装置和方法以及芯片
KR100781358B1 (ko) 데이터 처리 시스템 및 그의 데이터 처리방법
US8555097B2 (en) Reconfigurable processor with pointers to configuration information and entry in NOP register at respective cycle to deactivate configuration memory for reduced power consumption
JP5231949B2 (ja) 半導体装置、および、半導体装置によるデータ処理方法
KR20220052355A (ko) 인공지능 모드를 가진 메모리 시스템의 데이터 복사
CN101470600B (zh) 一种超长指令字处理的方法和装置
US8631173B2 (en) Semiconductor device
US9727528B2 (en) Reconfigurable processor with routing node frequency based on the number of routing nodes
CN112486904A (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
CN104834501A (zh) 一种基于l结构处理器的寄存器和寄存器操作方法
JP2007334819A (ja) ベクトルリネーミング方式およびベクトル型計算機
EP2434409B1 (en) Processor and method thereof
US11061678B1 (en) Systems and methods for optimizing nested loop instructions in pipeline processing stages within a machine perception and dense algorithm integrated circuit

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091102

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110302

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110307

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120904