JP7141401B2 - プロセッサおよび情報処理システム - Google Patents

プロセッサおよび情報処理システム Download PDF

Info

Publication number
JP7141401B2
JP7141401B2 JP2019537972A JP2019537972A JP7141401B2 JP 7141401 B2 JP7141401 B2 JP 7141401B2 JP 2019537972 A JP2019537972 A JP 2019537972A JP 2019537972 A JP2019537972 A JP 2019537972A JP 7141401 B2 JP7141401 B2 JP 7141401B2
Authority
JP
Japan
Prior art keywords
data
instruction
circular
shift register
processor
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.)
Active
Application number
JP2019537972A
Other languages
English (en)
Other versions
JPWO2019039113A1 (ja
Inventor
浩 小林
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.)
Sony Semiconductor Solutions Corp
Original Assignee
Sony Semiconductor Solutions 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 Sony Semiconductor Solutions Corp filed Critical Sony Semiconductor Solutions Corp
Publication of JPWO2019039113A1 publication Critical patent/JPWO2019039113A1/ja
Application granted granted Critical
Publication of JP7141401B2 publication Critical patent/JP7141401B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Description

本技術は、メモリからロードしたデータに対して所定の演算を行うプロセッサに関する。
近年のRISC(Reduced Instruction Set Computer)に代表されるロードストアアーキテクチャでは、メモリにアクセスする命令をロード命令およびストア命令に限定することにより、命令セットアーキテクチャを単純化している。すなわち、ロード命令およびストア命令以外の命令では、オペランドとして指定できるのはレジスタだけであり、メモリアドレスやそのオフセットを指定することはできない。これにより、例えばメモリからレジスタにデータを読み出すロード命令と演算を実行する演算命令とを分離することにより、レジスタを参照する命令におけるデータ待ち時間をなくし、コンパイラによる高速化のための命令スケジューリングを容易に行うことができるようになっている。例えば、ロードストアアーキテクチャをベースとして演算処理を行うプロセッサが提案されている(例えば、特許文献1参照。)。
特開2006-154979号公報
上述の従来技術では、ロードされたデータに対して演算を行った後でメモリにストアするという処理を繰り返すことによって、一連の処理が進んでいく。しかしながら、フィルタ演算のようにフィルタ係数やデータが繰り返し参照される場合には、一度参照したフィルタ係数やデータを再びメモリからロードする必要が生じる。そのため、データをロード/ストアするメモリアクセス数とそのロード/ストアするメモリのアドレス計算などのために命令数が増加し、その結果、処理時間と消費電力が増加してしまうという問題があった。
本技術はこのような状況に鑑みて生み出されたものであり、プロセッサにおいて循環的にデータを供給して、重複するメモリアクセスを抑制することを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、複数のデータを保持して循環して読み出す循環バッファと、上記循環バッファをオペランドとして指定する命令を実行する命令実行部とを具備するプロセッサおよびそのプロセッサを含む情報処理システムである。これにより、プロセッサによる命令の実行において循環バッファから循環的にデータを供給するという作用をもたらす。
また、この第1の側面において、上記命令実行部は、メモリから上記循環バッファにデータをロードし、または、上記循環バッファに保持されるデータを上記メモリにストアするロードストアユニットを備えてもよい。これにより、循環バッファとメモリとの間でデータを転送させるという作用をもたらす。
また、この第1の側面において、上記ロードストアユニットは、上記循環バッファの一部にデータを追加ロードするようにしてもよい。これにより、データを追加しながら循環バッファから循環的にデータを供給するという作用をもたらす。
また、この第1の側面において、上記命令実行部は、上記循環バッファをオペランドとして演算を行う演算ユニットを備えてもよい。これにより、循環バッファから演算ユニットに循環的にデータを供給するという作用をもたらす。この場合において、上記演算ユニットは、複数の上記循環バッファに保持されたデータ間の演算を行うようにしてもよく、また、上記循環バッファに保持されたデータと汎用レジスタに保持されたデータとの演算を行うようにしてもよい。例えば、上記演算ユニットは、複数の上記循環バッファに保持されたデータ間の積和演算を行うようにしてもよい。また、上記演算ユニットは、一つの上記循環バッファに保持されたフィルタ係数と他の上記循環バッファに保持された対象データとの間のフィルタ演算を実行してその演算結果をさらに他の上記循環バッファに保持させるようにしてもよい。
また、この第1の側面において、上記命令実行部は、上記循環バッファと汎用レジスタとの間でデータ転送を行うデータ転送ユニットを備えてもよい。これにより、循環バッファと汎用レジスタとの間でデータを転送させるという作用をもたらす。
また、この第1の側面において、上記循環バッファは、複数段のレジスタからなるシフトレジスタと、上記シフトレジスタから出力されたデータを上記シフトレジスタに循環させ、または、新たなデータを上記シフトレジスタに入力する循環セレクタを備えてもよい。この場合において、上記シフトレジスタは、上記複数段のレジスタに保持されるデータを次段に進めるか否か、および、上記循環セレクタから入力されたデータを上記複数段のレジスタのうちの任意段の上記レジスタに保持させるかを制御するシフトセレクタを備えてもよい。
本技術によれば、プロセッサにおいて循環的にデータを供給して、重複するメモリアクセスを抑制することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の実施の形態における情報処理システムの構成例を示す図である。 本技術の実施の形態におけるプロセッサ100の構成例を示す図である。 本技術の実施の形態におけるリングバッファ150の構成例を示す図である。 本技術の実施の形態におけるリングバッファ150に保持されるデータをソフトウェアから見た例を示す図である。 本技術の実施の形態におけるプロセッサ100の命令セットの一例を示す図である。 本技術の実施の形態における情報処理システムの2次元画像フィルタ演算への適用例を示す図である。 本技術の実施の形態の2次元画像フィルタ演算への適用例におけるデータ参照関係を示す図である。 本技術の実施の形態の2次元画像フィルタ演算への適用例におけるプログラム例を示す図である。 本技術の実施の形態の2次元画像フィルタ演算への適用例における処理手順例を示す流れ図の前半である。 本技術の実施の形態の2次元画像フィルタ演算への適用例における処理手順例を示す流れ図の後半である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.実施の形態(プロセッサ構成の例)
2.適用例(フィルタ演算の適用例)
<1.実施の形態>
[情報処理システムの構成]
図1は、本技術の実施の形態における情報処理システムの構成例を示す図である。この情報処理システムは、プロセッサ100およびメモリ200を備える。プロセッサ100は、所定の命令セットによる命令列からなるプログラムを実行するプロセッサである。メモリ200は、プロセッサ100によって実行されるプログラムや、そのプログラムの実行に必要なデータを記憶するメモリである。
プロセッサ100は、メモリ200に記憶されるプログラムの各命令を、メモリ200からフェッチして、デコードする。そして、プロセッサ100は、そのデコード結果に従って各命令を実行する。また、プロセッサ100は、命令の実行に必要なデータをメモリ200からロードして、その後、処理されたデータをメモリ200にストアする。
図2は、本技術の実施の形態におけるプロセッサ100の構成例を示す図である。このプロセッサ100は、制御系ユニットとして、命令フェッチユニット111と、命令デコードユニット112と、プログラムカウンタ113と、パイプライン制御部190とを備える。また、このプロセッサ100は、レジスタファイル120と、演算ユニット130と、ロードストアユニット140と、リングバッファ150と、データ転送ユニット160とを備える。
命令フェッチユニット111は、メモリ200から命令をフェッチするものである。命令デコードユニット112は、フェッチした命令をデコードするものである。プログラムカウンタ113は、プログラム中の実行対象となる命令のアドレスを指し示すものである。パイプライン制御部190は、プロセッサ100の命令パイプラインを制御するものである。
レジスタファイル120は、命令のオペランドとして参照される汎用レジスタである。例えば、32ビットまたは64ビットのデータを数ワードから数十ワード程度(場合によっては百数十ワード)が汎用レジスタとして設定される。
演算ユニット130は、演算命令において指定された演算を行う実行部である。演算の種類としては、例えば、加算、減算、乗算、除算の四則演算が該当するが、これらを組み合わせた積和演算なども想定される。演算命令のオペランドとして、レジスタファイル120に加えて、リングバッファ150を指定することができる。
ロードストアユニット140は、メモリ200からデータをロードし、または、データをメモリ200にストアするメモリアクセス部である。ロードしたデータの格納先、および、ストアするデータの供給元として、レジスタファイル120に加えて、リングバッファ150を指定することができる。
リングバッファ150は、データを循環的に参照できるバッファである。このリングバッファ150は、シフトレジスタ151および循環セレクタ152を備える。シフトレジスタ151は、複数段のレジスタに保持されるデータをクロックに同期して順次シフトする機能を有するレジスタである。循環セレクタ152は、シフトレジスタ151から出力されたデータをシフトレジスタ151に循環させ、または、新たなデータをシフトレジスタ151に入力するよう選択するセレクタである。これにより、リングバッファ150は、命令に従ってデータを循環的に保持してそのデータを参照することができる。リングバッファ150は、複数備えるようにしてもよい。この例では、リングバッファ150として、ロード用に2つのリングバッファ(#0および#1)とストア用に1つのリングバッファ(#2)が設けられている。
データ転送ユニット160は、レジスタ間のデータの転送を行う転送部であり、特に、レジスタファイル120とリングバッファ150との間のデータ転送を行う。これにより、リングバッファ150に保持されるデータを汎用レジスタに展開し、または、汎用レジスタのデータをリングバッファ150に蓄積していくことが可能となる。
なお、ロードストアユニット140は、特許請求の範囲に記載の循環バッファの一例である。また、演算ユニット130、ロードストアユニット140、または、データ転送ユニット160は、特許請求の範囲に記載の命令実行部の一例である。
[リングバッファ]
図3は、本技術の実施の形態におけるリングバッファ150の構成例を示す図である。このリングバッファ150は、上述のようにシフトレジスタ151および循環セレクタ152を備える。そして、シフトレジスタ151は、複数段のレジスタ153からなり、レジスタ153の入力にはそれぞれシフトセレクタ154が設けられる。
シフトレジスタ151において、各レジスタ153の出力は、次段のシフトセレクタ154に入力されるとともに、自身の入力部のシフトセレクタ154にも入力される。これにより、レジスタ153に保持されるデータを次段にシフトさせるか、自段に維持させるかを選択することができる。
また、シフトレジスタ151の最終段のレジスタ153の出力は、循環セレクタ152に入力される。循環セレクタ152は、最終段のレジスタ153の出力、および、新たなデータの何れか一方を選択して、シフトセレクタ154に出力する。シフトセレクタ154の各々は、循環セレクタ152からの出力を選択することができるようになっている。これにより、任意の長さで循環するリングバッファを形成することができる。また、新たなデータを任意のレジスタ153に設定することもできる。これらは、後述のように、命令において指定することが可能である。
図4は、本技術の実施の形態におけるリングバッファ150に保持されるデータをソフトウェアから見た例を示す図である。この例では、循環長が8のリングバッファを想定している。
先頭読出し位置158にはデータ#0が保持されている。これは、物理的には最終段のレジスタ153にデータ#0が保持されていることを意味する。その後、先頭読出し位置158は時計回りに移動する。これにより、データ#1が先頭読出し位置158になる。これは、物理的には最終段のレジスタ153にデータ#1が保持されていることを意味する。このとき、データ#0は循環セレクタ152を介して末尾である8段目のレジスタ153に保持される。その後、先頭読出し位置158は時計回りに移動していく。
データ#7が先頭読出し位置158となった後、先頭読出し位置158は再びデータ#0となる。このように制御することにより、8つのデータを循環的に参照することができる。
また、このリングバッファ150には新たなデータを追加することができるため、新たなデータに更新しながら所定回数繰り返し参照することが可能となる。これは、後述のようなフィルタ演算などに特に有用である。
[命令セット]
図5は、本技術の実施の形態におけるプロセッサ100の命令セットの一例を示す図である。ここでは、特にリングバッファ150に関連する命令を示している。
LD(Load)命令は、メモリ200からデータをロードするための命令である。「LD BUFn size [address]」の形式は、メモリ200のaddressからsizeワード分のデータを第n番目のリングバッファ150にロードすることを意味する。また、「LD BUFn +size」の形式は、メモリ200からsizeワード分のデータを第n番目のリングバッファ150に追加してロードすることを意味する。なお、このLD命令は、この命令の完了を待たずに後続命令を実行できるノンブロッキング命令である。
ST(Store)命令は、メモリ200にデータをストアするための命令である。「ST BUFn size [address]」の形式は、第n番目のリングバッファ150からsizeワード分のデータをメモリ200のaddressにストアすることを意味する。なお、このST命令は、この命令の完了を待たずに後続命令を実行できるノンブロッキング命令である。
MOV(Move)命令は、レジスタ間のデータ転送を行う命令である。「MOV BUFn Rn」の形式は、第n番目の汎用レジスタから第n番目のリングバッファ150にデータを転送することを意味する。「MOV Rn BUFn」の形式は、第n番目のリングバッファ150から第n番目の汎用レジスタにデータを転送することを意味する。
MAC(Multiply Accumulate)命令は、積和演算を行う命令である。「MAC Rn BUFi BUFj」の形式は、第i番目と第j番目のリングバッファ150の乗算結果を累積加算した結果を第n番目の汎用レジスタに格納することを意味する。なお、このMACは演算命令の一例であり、リングバッファ150同士の加算など様々な演算命令を設けることができる。
<2.適用例>
[2次元画像フィルタ演算への適用例]
図6は、本技術の実施の形態における情報処理システムの2次元画像フィルタ演算への適用例を示す図である。ここでは、次式に示す2次元画像フィルタ演算を実行するプログラムを想定する。
Figure 0007141401000001
Figure 0007141401000002
この例では、入力p(x,y)を入力データin_dataとし、出力f(x,y)を出力データout_dataとしている。フィルタ係数coefは3×3の2次元フィルタであり、これを単位として入力データin_dataとの積和演算を行う。入力データin_dataはリングバッファ#1に格納され、フィルタ係数coefはリングバッファ#0に格納される。また、出力データout_dataはリングバッファ#2に格納される。
最初の3×3の積和演算の演算結果「-5」が得られた後、入力データin_dataにおいて下方に1行シフトして次の3×3の演算結果「5」が得られる。下方にさらに2回シフトして、その間演算結果「-3」および「-3」が得られる。その後、再び最上行に戻り右方に1列シフトして次の3×3の演算結果「2」が得られる。同様の動作を繰り返して最後の演算結果「9」が得られる。
図7は、本技術の実施の形態の2次元画像フィルタ演算への適用例におけるデータ参照関係を示す図である。
フィルタ係数coefは3×3の9要素であり、繰り返しの度に同じものが参照される。そのため、フィルタ係数coefは、リングバッファ#0においてバッファサイズ「9」により循環参照される。
また、入力データin_dataは、繰り返しの度に一部ずつが異なるデータに差し替えられる。そのため、入力データin_dataは、リングバッファ#1において追加ロードを繰り返しながら循環参照される。すなわち、9つのデータのうち第4番目から第9番目のデータが循環参照され、先頭の3つのデータは追加ロードにより新たなデータに差し替えられる。それ以降は、同じ要領で循環参照が行われる。
図8は、本技術の実施の形態の2次元画像フィルタ演算への適用例におけるプログラム例を示す図である。
第1行目のLD命令は、メモリ200から9つのフィルタ係数coefをリングバッファ#0にロードする命令である。ラベルBEGINはこのプログラムの先頭を示している。「#9」はバッファサイズの即値「9」を意味する。
第2行目のMOV命令は、入力データin_dataのロードポインタを汎用レジスタR0にセットする命令である。この値は入力データin_dataのロード命令(第3行目および第19行目)において参照される。
第3行目のLD命令は、メモリ200から入力データin_dataをバッファサイズ「9」のリングバッファ#1にロードする命令である。「#9」はバッファサイズの即値「9」を意味する。
第4行目のMOV命令は、出力データout_dataのストアポインタを汎用レジスタR1にセットする命令である。この値は出力データout_dataのストア命令(第5行目)において参照される。
第5行目のST命令は、この後で演算結果が出力データout_dataとして格納されるリングバッファ#2をメモリ200にストアする命令である。ここではバッファサイズの指定が省略されているため、バッファサイズは無限長であり、リングバッファ#2はFIFO(First-In First-Out:先入れ先出し)動作を行う。なお、このST命令は、メモリ200の初期アドレスを予め設定するものであり、演算結果が格納された後にメモリ200にストアされるタイミングについては情報処理システムの実装に依存する。アドレスポインタの管理はリングバッファ#2において自動的に実行されるため、このST命令により初期設定をしておくことにより、アドレスポインタの管理は不要となる。
第6行目のMOV命令は、出力データout_dataのデータ数「16」をループカウンタとして汎用レジスタR2にセットする命令である。
第7行目のMOV命令は、フィルタ係数coefのサイズ「9」をループカウンタとして汎用レジスタR3にセットする命令である。ラベルLOOP_16は、第17行目の分岐命令によって形成されるループの飛び先を示している。
第8行目のMOV命令は、演算結果を格納する汎用レジスタR4をゼロにクリアする命令である。
第9行目のMAC命令は、フィルタ演算を行う積和演算命令であり、リングバッファ#0とリングバッファ#1との乗算結果を累積加算した結果を汎用レジスタR4に格納するものである。ラベルLOOP_9は、第11行目の分岐命令によって形成されるループの飛び先を示している。
第10行目のDEC命令は、ループカウンタである汎用レジスタR3から「1」を減算するデクリメント命令である。
第11行目のBNZ命令は、汎用レジスタR3の値がゼロでなければラベルLOOP_9に分岐する分岐命令である。したがって、第9行目および第10行目の命令は、それぞれ9回繰り返されることになる。
第12行目のMOV命令は、フィルタ演算結果を格納する汎用レジスタR4をリングバッファ#2に転送する命令である。
第13行目のMOD命令は、出力データ数のループカウンタである汎用レジスタR2を「4」で割った剰余を、汎用レジスタR5にセットする剰余算命令である。
第14行目のBNZ命令は、第13行目のMOD命令における剰余算の結果がゼロでなければラベルJUMP_0の第18行目に分岐する分岐命令である。入力データin_dataに対する3×3の演算は1行ずつシフトしながら4回実行され、その後先頭行に戻って1列シフトした3×3の演算が再び実行される。この4回ずつの演算を行うためにこのBNZ命令による分岐が行われる。
第15行目のLD命令は、メモリ200から新たな入力データin_dataをリングバッファ#1に追加ロードする命令である。上述のように9つのデータのうち、6つのデータが引き続き循環して参照されるが、新たに3つのデータの追加が必要になる。このLD命令により新たな3つのデータが追加ロードされる。
第16行目のDEC命令は、出力データ数のループカウンタである汎用レジスタR2から「1」を減算するデクリメント命令である。
第17行目のBNZ命令は、出力データ数のループカウンタである汎用レジスタR2の値がゼロでなければラベルLOOP_16に分岐する分岐命令である。したがって、第7行目から第14行目の命令は、それぞれ16回繰り返されることになる。
第18行目のSUB命令は、入力データin_dataのロードポインタである汎用レジスタR0から「35」を減算する命令である。これにより、入力データin_dataの末尾から先頭にロードポインタがリセットされる。ラベルJUMP_0は、第14行目の分岐命令の飛び先である。
第19行目のLD命令は、メモリ200から入力データin_dataをバッファサイズ「9」のリングバッファ#1にロードする命令である。
第20行目のDEC命令は、出力データ数のループカウンタである汎用レジスタR2から「1」を減算するデクリメント命令である。
第21行目のBNZ命令は、出力データ数のループカウンタである汎用レジスタR2がゼロでなければラベルLOOP_16に分岐する分岐命令である。
第22行目はHALT命令であり、ラベルBEGINからENDまでのプログラムの実行は終了する。
図9および図10は、本技術の実施の形態の2次元画像フィルタ演算への適用例における処理手順例を示す流れ図である。
まず、第1行目のLD命令により、メモリ200から9つのフィルタ係数coefをリングバッファ#0にロードする(ステップS911)。そして、第2行目のMOV命令により、入力データin_dataのロードポインタを汎用レジスタR0にセットする(ステップS912)。
また、第3行目のLD命令により、メモリ200から入力データin_dataをバッファサイズ「9」のリングバッファ#1にロードする(ステップS913)。そして、第4行目のMOV命令により、出力データout_dataのストアポインタを汎用レジスタR1にセットする(ステップS914)。
また、第5行目のST命令により、この後で演算結果が出力データout_dataとして格納されるリングバッファ#2をメモリ200にストアする(ステップS915)。そして、第6行目のMOV命令により、出力データout_dataのデータ数「16」をループカウンタとして汎用レジスタR2にセットする(ステップS916)。
その後、出力データ数「16」のループに入り、第7行目のMOV命令により、フィルタ係数coefのサイズ「9」をループカウンタとして汎用レジスタR3にセットする(ステップS921)。第8行目のMOV命令により、演算結果を格納する汎用レジスタR4をゼロにクリアする(ステップS922)。
第9行目のMAC命令により、リングバッファ#0とリングバッファ#1との乗算結果を累積加算した結果を汎用レジスタR4に格納する(ステップS923)。そして、第10行目のDEC命令により、ループカウンタである汎用レジスタR3から「1」を減算する(ステップS924)。この汎用レジスタR3の値が、第11行目のBNZ命令においてゼロでなければ(ステップS925:No)、ステップS923以降の処理が繰り返される。汎用レジスタR3の値がゼロになると(ステップS925:Yes)、次のステップS926に進む。
第12行目のMOV命令により、フィルタ演算結果を格納する汎用レジスタR4をリングバッファ#2に転送する(ステップS926)。そして、第13行目のMOD命令により、出力データ数のループカウンタである汎用レジスタR2を「4」で割った剰余を求める。その結果、剰余算の結果がゼロであれば(ステップS927:Yes)、第15行目のLD命令により、メモリ200から新たな入力データin_dataをリングバッファ#1に追加ロードする(ステップS928)。また、第16行目のDEC命令は、出力データ数のループカウンタである汎用レジスタR2から「1」を減算する(ステップS929)。その後、ステップS921以降の処理を繰り返す。
一方、第13行目の剰余算の結果がゼロでなければ(ステップS927:No)、第18行目のSUB命令により、入力データin_dataのロードポインタである汎用レジスタR0から「35」を減算する(ステップS931)。そして、第19行目のLD命令により、メモリ200から入力データin_dataをバッファサイズ「9」のリングバッファ#1にロードする。また、第20行目のDEC命令により、出力データ数のループカウンタである汎用レジスタR2から「1」を減算する(ステップS932)。その結果、第21行目のBNZ命令により、出力データ数のループカウンタである汎用レジスタR2がゼロでなければ(ステップS933:No)、ステップS921以降の処理を繰り返す。出力データ数のループカウンタである汎用レジスタR2がゼロになると(ステップS933:Yes)、処理を終了する。
このように、本技術の実施の形態によれば、プロセッサ100においてリングバッファ150をオペランドとして指定する命令セットを設けることにより、循環的にデータを供給することができ、重複するメモリアクセスを抑制することができる。例えば、多次元フィルタ演算などの処理を実行する際に、命令数およびメモリアクセス数を削減することができる。また、これにより、処理時間および消費電力を削減することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
なお、本技術は以下のような構成もとることができる。
(1)複数のデータを保持して循環して読み出す循環バッファと、
前記循環バッファをオペランドとして指定する命令を実行する命令実行部と
を具備するプロセッサ。
(2)前記命令実行部は、メモリから前記循環バッファにデータをロードし、または、前記循環バッファに保持されるデータを前記メモリにストアするロードストアユニットを備える前記(1)に記載のプロセッサ。
(3)前記ロードストアユニットは、前記循環バッファの一部にデータを追加ロードする前記(2)に記載のプロセッサ。
(4)前記命令実行部は、前記循環バッファをオペランドとして演算を行う演算ユニットを備える前記(1)から(3)のいずれかに記載のプロセッサ。
(5)前記演算ユニットは、複数の前記循環バッファに保持されたデータ間の演算を行う前記(4)に記載のプロセッサ。
(6)前記演算ユニットは、複数の前記循環バッファに保持されたデータ間の積和演算を行う前記(5)に記載のプロセッサ。
(7)前記演算ユニットは、一つの前記循環バッファに保持されたフィルタ係数と他の前記循環バッファに保持された対象データとの間のフィルタ演算を実行してその演算結果をさらに他の前記循環バッファに保持させる前記(5)に記載のプロセッサ。
(8)前記演算ユニットは、前記循環バッファに保持されたデータと汎用レジスタに保持されたデータとの演算を行う前記(4)から(7)のいずれかに記載のプロセッサ。
(9)前記命令実行部は、前記循環バッファと汎用レジスタとの間でデータ転送を行うデータ転送ユニットを備える前記(1)から(8)のいずれかに記載のプロセッサ。
(10)前記循環バッファは、
複数段のレジスタからなるシフトレジスタと、
前記シフトレジスタから出力されたデータを前記シフトレジスタに循環させ、または、新たなデータを前記シフトレジスタに入力する循環セレクタを備える
前記(1)から(9)のいずれかに記載のプロセッサ。
(11)前記シフトレジスタは、前記複数段のレジスタに保持されるデータを次段に進めるか否か、および、前記循環セレクタから入力されたデータを前記複数段のレジスタのうちの任意段の前記レジスタに保持させるかを制御するシフトセレクタを備える
前記(10)に記載のプロセッサ。
(12)メモリと、
前記メモリからロードした複数のデータを保持して循環して読み出す循環バッファと、
前記循環バッファをオペランドとして指定する命令を実行する命令実行部と
を具備する情報処理システム。
100 プロセッサ
111 命令フェッチユニット
112 命令デコードユニット
113 プログラムカウンタ
120 レジスタファイル
130 演算ユニット
140 ロードストアユニット
150 リングバッファ
151 シフトレジスタ
152 循環セレクタ
153 レジスタ
154 シフトセレクタ
160 データ転送ユニット
190 パイプライン制御部
200 メモリ

Claims (10)

  1. 複数のデータを保持する複数段のレジスタからなるシフトレジスタと、前記シフトレジスタから出力されたデータを前記シフトレジスタに循環させ、または、新たなデータを前記シフトレジスタに入力する循環セレクタとを備えて、前記複数のデータを保持して循環して読み出す循環バッファと、
    前記循環バッファをオペランドとして指定する命令を実行する命令実行部と
    を具備し、
    前記シフトレジスタは、前記複数段のレジスタに保持されるデータを次段に進めるか否か、および、前記循環セレクタから入力されたデータを前記複数段のレジスタのうちの任意段の前記レジスタに保持させるかを制御するシフトセレクタを備える
    プロセッサ。
  2. 前記命令実行部は、メモリから前記循環バッファにデータをロードし、または、前記循環バッファに保持されるデータを前記メモリにストアするロードストアユニットを備える請求項1記載のプロセッサ。
  3. 前記ロードストアユニットは、前記循環バッファの一部にデータを追加ロードする請求項2記載のプロセッサ。
  4. 前記命令実行部は、前記循環バッファをオペランドとして演算を行う演算ユニットを備える請求項1記載のプロセッサ。
  5. 前記演算ユニットは、複数の前記循環バッファに保持されたデータ間の演算を行う請求項4記載のプロセッサ。
  6. 前記演算ユニットは、複数の前記循環バッファに保持されたデータ間の積和演算を行う請求項5記載のプロセッサ。
  7. 前記演算ユニットは、一つの前記循環バッファに保持されたフィルタ係数と他の前記循環バッファに保持された対象データとの間のフィルタ演算を実行してその演算結果をさらに他の前記循環バッファに保持させる請求項5記載のプロセッサ。
  8. 前記演算ユニットは、前記循環バッファに保持されたデータと汎用レジスタに保持されたデータとの演算を行う請求項4記載のプロセッサ。
  9. 前記命令実行部は、前記循環バッファと汎用レジスタとの間でデータ転送を行うデータ転送ユニットを備える請求項1記載のプロセッサ。
  10. メモリと、
    前記メモリからロードした複数のデータを保持する複数段のレジスタからなるシフトレジスタと、前記シフトレジスタから出力されたデータを前記シフトレジスタに循環させ、または、新たなデータを前記シフトレジスタに入力する循環セレクタとを備えて、前記複数のデータを保持して循環して読み出す循環バッファと、
    前記循環バッファをオペランドとして指定する命令を実行する命令実行部と
    を具備し、
    前記シフトレジスタは、前記複数段のレジスタに保持されるデータを次段に進めるか否か、および、前記循環セレクタから入力されたデータを前記複数段のレジスタのうちの任意段の前記レジスタに保持させるかを制御するシフトセレクタを備える
    情報処理システム。
JP2019537972A 2017-08-24 2018-07-06 プロセッサおよび情報処理システム Active JP7141401B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017160812 2017-08-24
JP2017160812 2017-08-24
PCT/JP2018/025667 WO2019039113A1 (ja) 2017-08-24 2018-07-06 プロセッサおよび情報処理システム

Publications (2)

Publication Number Publication Date
JPWO2019039113A1 JPWO2019039113A1 (ja) 2020-08-06
JP7141401B2 true JP7141401B2 (ja) 2022-09-22

Family

ID=65440034

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019537972A Active JP7141401B2 (ja) 2017-08-24 2018-07-06 プロセッサおよび情報処理システム

Country Status (3)

Country Link
US (1) US11029956B2 (ja)
JP (1) JP7141401B2 (ja)
WO (1) WO2019039113A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006004042A (ja) 2004-06-16 2006-01-05 Renesas Technology Corp データ処理装置
JP2017079017A (ja) 2015-10-21 2017-04-27 キヤノン株式会社 畳み込み演算装置

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3154996B2 (ja) 1989-05-17 2001-04-09 京セラ株式会社 画像処理方法
US5249148A (en) * 1990-11-26 1993-09-28 Motorola, Inc. Method and apparatus for performing restricted modulo arithmetic
US5416847A (en) * 1993-02-12 1995-05-16 The Walt Disney Company Multi-band, digital audio noise filter
US5655132A (en) 1994-08-08 1997-08-05 Rockwell International Corporation Register file with multi-tasking support
US5739691A (en) * 1995-11-28 1998-04-14 The Regents Of The University Of California Multi-frequency digital low pass filter for magnetic resonance imaging
JPH11102282A (ja) 1997-09-25 1999-04-13 Nec Eng Ltd インタフェースバッファ回路
US6052766A (en) * 1998-07-07 2000-04-18 Lucent Technologies Inc. Pointer register indirectly addressing a second register in the processor core of a digital processor
US7068780B1 (en) * 2000-08-30 2006-06-27 Conexant, Inc. Hybrid echo canceller
FI20010924A (fi) * 2001-05-03 2002-11-04 Nokia Corp Mikroprosessorin muistinkäsittely
US7721069B2 (en) * 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
JP2006154979A (ja) 2004-11-25 2006-06-15 Sony Corp 浮動小数点数演算回路
US20070198901A1 (en) * 2005-07-12 2007-08-23 Amit Ramchandran Configurable interface for connecting various chipsets for wireless communication to a programmable (multi-)processor
US20130101010A1 (en) * 2007-09-05 2013-04-25 Raúl Alejandro Casas Method and apparatus for joint decoding and equalization
US8051226B2 (en) * 2008-06-13 2011-11-01 Freescale Semiconductor, Inc. Circular buffer support in a single instruction multiple data (SIMD) data processor
US8060724B2 (en) * 2008-08-15 2011-11-15 Freescale Semiconductor, Inc. Provision of extended addressing modes in a single instruction multiple data (SIMD) data processor
US8219286B2 (en) * 2010-04-28 2012-07-10 Delphi Technologies, Inc. Noise reduction for occupant detection system and method
WO2014190263A2 (en) * 2013-05-24 2014-11-27 Coherent Logix, Incorporated Memory-network processor with programmable optimizations
GB2558220B (en) * 2016-12-22 2019-05-15 Advanced Risc Mach Ltd Vector generating instruction
CN108400921B (zh) * 2017-02-04 2021-02-26 华为技术有限公司 一种非缓冲环状网络

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006004042A (ja) 2004-06-16 2006-01-05 Renesas Technology Corp データ処理装置
JP2017079017A (ja) 2015-10-21 2017-04-27 キヤノン株式会社 畳み込み演算装置

Also Published As

Publication number Publication date
JPWO2019039113A1 (ja) 2020-08-06
WO2019039113A1 (ja) 2019-02-28
US20200201641A1 (en) 2020-06-25
US11029956B2 (en) 2021-06-08

Similar Documents

Publication Publication Date Title
CN111213125B (zh) 使用simd指令进行高效的直接卷积
US7793079B2 (en) Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
TW200527203A (en) A data processing apparatus and method for moving data between registers and memory
US20140047218A1 (en) Multi-stage register renaming using dependency removal
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
JP2009037302A (ja) 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
JP2011090592A (ja) 情報処理装置とその命令デコーダ
JP2620511B2 (ja) データ・プロセッサ
CN107851013A (zh) 元素大小增加指令
KR101586770B1 (ko) 데이터 처리 장치
TWI490781B (zh) 用於選擇向量運算之元素的裝置及方法
JPH03286332A (ja) デジタルデータ処理装置
EP1193594B1 (en) Register renaming apparatus and processor
JP7141401B2 (ja) プロセッサおよび情報処理システム
US8604946B2 (en) Data processing device and data processing method
CN114365083A (zh) 压缩辅助指令
JP2000322235A (ja) 情報処理装置
US20080022072A1 (en) System, method and medium processing data according to merged multi-threading and out-of-order scheme
JP5659772B2 (ja) 演算処理装置
JP5630798B1 (ja) プロセッサーおよび方法
JPH1153189A (ja) 演算装置、演算方法及びコンピュータ読み取り可能な記録媒体
JP2010271799A (ja) 並列計算装置
JP5437878B2 (ja) 情報処理装置
JP2006285721A (ja) 演算処理装置および演算処理方法
JP5786719B2 (ja) ベクトルプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220804

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: 20220816

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220909

R150 Certificate of patent or registration of utility model

Ref document number: 7141401

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150