JP2017527014A - 算術論理ユニットにおいて使用するためのベクトルスケーリング命令 - Google Patents

算術論理ユニットにおいて使用するためのベクトルスケーリング命令 Download PDF

Info

Publication number
JP2017527014A
JP2017527014A JP2017502104A JP2017502104A JP2017527014A JP 2017527014 A JP2017527014 A JP 2017527014A JP 2017502104 A JP2017502104 A JP 2017502104A JP 2017502104 A JP2017502104 A JP 2017502104A JP 2017527014 A JP2017527014 A JP 2017527014A
Authority
JP
Japan
Prior art keywords
vector
component
scaling
exponent
scaling value
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
JP2017502104A
Other languages
English (en)
Other versions
JP6542352B2 (ja
JP2017527014A5 (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2017527014A publication Critical patent/JP2017527014A/ja
Publication of JP2017527014A5 publication Critical patent/JP2017527014A5/ja
Application granted granted Critical
Publication of JP6542352B2 publication Critical patent/JP6542352B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49936Normalisation mentioned as feature only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/552Powers or roots, e.g. Pythagorean sums
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/552Indexing scheme relating to groups G06F7/552 - G06F7/5525
    • G06F2207/5525Pythagorean sum, i.e. the square root of a sum of squares
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

少なくとも1つのプロセッサがベクトルの成分を受信し得、ここにおいて、ベクトルの成分の各々が少なくとも1つの指数を備える。少なくとも1つのプロセッサはさらに、ベクトルの成分のそれぞれの指数の中から最大指数を決定し得、最大指数に少なくとも部分的に基づいてスケーリング値を決定し得る。少なくとも1つのプロセッサの算術論理ユニットが、ベクトルの成分のそれぞれの指数の各々からスケーリング値を減算することによって、ベクトルをスケーリングし得る。

Description

[0001] 本開示は、コンピュータ処理におけるベクトルスケーリング(vector scaling)に関する。
[0002] ベクトル正規化(vector normalization)は、ベクトルの長さを計算することと、次いで、ベクトルの各成分(component)をベクトルの計算された長さで除算することとを必要とする、ベクトルに関する演算である。3次元ベクトル(three-dimensional vector)(x,y,z)の長さが(x2+y2+z2)の平方根として計算される場合、そのような計算は、ベクトルの(x,y,z)値が大きい場合、計算の中間結果を記憶するレジスタ(register)をオーバーフロー(overflow)させることがある。
[0003] 本開示は、コンピュータ処理におけるベクトルスケーリングのための技法を提示する。本開示の技法によれば、ベクトルが正規化される前に、ベクトルは、正規化中にベクトルの長さを計算することが、ベクトルの長さを計算することの中間結果を記憶するレジスタをオーバーフローさせることがないように、スケーリング(scale)され得る。グラフィックス処理ユニット(GPU:graphics processing unit)の算術および論理ユニット(ALU:arithmetic and logic unit)が、ベクトルダウンスケーリング(vector downscaling)を実行するための3サイクルスケール命令(three-cycle scale instruction)を実行するように構成され得る。ALUによって与えられるベクトルダウンスケーリングを実行するための命令(instruction)は、潜在的に、ソフトウェアベースのベクトルダウンスケーリングよりも比較的効率的にベクトルダウンスケーリングを実行し得る。
[0004] 本開示の一例では、ベクトルをスケーリングするための方法が、少なくとも1つのプロセッサ(processor)によって、ベクトルの成分を受信することを含み得、ここにおいて、ベクトルの成分の各々は少なくとも1つの指数(exponent)を備える。本方法は、少なくとも1つのプロセッサによって、ベクトルの成分のそれぞれの指数の中から最大指数(maximum exponent)を決定することをさらに含み得る。本方法は、少なくとも1つのプロセッサによって、最大指数に少なくとも部分的に基づいてスケーリング値(scaling value)を決定することをさらに含み得る。本方法は、少なくとも1つのプロセッサの算術論理ユニット(ALU:arithmetic logic unit)によって、ベクトルの成分のそれぞれの指数の各々からスケーリング値を減算(subtract)することによって、ベクトルをスケーリングすることをさらに含み得る。
[0005] 本開示の別の例では、ベクトルをスケーリングするための装置が、ベクトルの成分を記憶するように構成されたメモリを含み得、ここにおいて、ベクトルの成分の各々は少なくとも1つの指数を備える。本装置は、ベクトルの成分のそれぞれの指数の中から最大指数を決定することと、最大指数に少なくとも部分的に基づいてスケーリング値を決定することとを行うように構成された少なくとも1つのプロセッサをさらに含み得る。本装置は、ベクトルの成分のそれぞれの指数の各々からスケーリング値を減算することによって、ベクトルをスケーリングするように構成された算術論理ユニット(ALU)をさらに含み得る。
[0006] 本開示の別の例では、ベクトルをスケーリングするための装置が、ベクトルの成分を受信するための手段を含み得、ここにおいて、ベクトルの成分の各々は少なくとも1つの指数を備える。本装置は、ベクトルの成分のそれぞれの指数の中から最大指数を決定するための手段をさらに含み得る。本装置は、最大指数に少なくとも部分的に基づいてスケーリング値を決定するための手段をさらに含み得る。本装置は、ベクトルの成分のそれぞれの指数の各々からスケーリング値を減算することによって、ベクトルをスケーリングするための手段をさらに含み得る。
[0007] 本開示の別の例では、コンピュータ可読記憶媒体(computer-readable storage medium)が、実行されたとき、1つまたは複数のプログラマブルプロセッサ(programmable processor)に、ベクトルの成分を受信することと、ここにおいて、ベクトルの成分の各々が少なくとも1つの指数を備える、ベクトルの成分のそれぞれの指数の中から最大指数を決定することと、最大指数に少なくとも部分的に基づいてスケーリング値を決定することと、ベクトルの成分のそれぞれの指数の各々から最大指数を減算することによって、ベクトルをスケーリングすることとを行わせる命令を記憶し得る。
[0008] 1つまたは複数の例の詳細が添付の図面および以下の説明に記載されている。他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになろう。
[0009] 本開示の1つまたは複数の態様を実装するように構成され得る例示的なコンピューティングデバイスを示すブロック図。 [0010] 図1のCPU、GPU、およびシステムメモリの例示的な実装形態をさらに詳細に示すブロック図。 [0011] 本開示で開示する技法に従ってスケーリングされ得る例示的な3次元ベクトルを示す概念図。 [0012] ベクトルの各成分を表すための例示的な浮動小数点フォーマット(floating point format)を示す概念図。 [0013] ベクトルをスケーリングするための例示的なプロセスを示すフローチャート。
[0014] 概して、本開示は、ベクトル正規化演算が演算の中間結果を記憶するレジスタをオーバーフローさせないように、ハードウェアを介してベクトルをスケーリングするための技法について説明する。一例では、プロセッサが、ベクトルをスケーリングするためのソフトウェアコード(software code)を実行し得る。3次元ベクトルの場合、ソフトウェアコードは、3次元ベクトルの最も大きい成分を決定し、3次元ベクトルの各成分を最も大きい成分で除算するためのコードを含み得る。しかしながら、ベクトルをスケーリングするためのソフトウェアコードは、ベクトルをスケーリングするためのハードウェアベースの技法よりも遅くなり得る。したがって、ベクトルをスケーリングするためのハードウェアベースの手法が、性能を増加させ得る。
[0015] 中央処理ユニット(CPU:central processing unit)またはグラフィックス処理ユニット(GPU)などのプロセッサが、ハードウェア算術論理ユニット(ALU)を含み得る。ALUは、整数算術(integer arithmetic)および論理演算(logical operation)を迅速に実行することが可能であるデジタル回路であり得る。したがって、ALUは、より効率的にベクトルをスケーリングするための理想的な1つのハードウェアであり得る。しかしながら、ALUは、しばしば、加算、減算、AND、およびOR演算などの単純な演算のみを実行するように設計され得るので、ALUは、ベクトルの成分を最も大きい成分で除算することを一般的に含む、ベクトルをスケーリングするための上記で説明した技法を実装するために必要な乗算または除算演算をサポートしないことがある。
[0016] 本開示の態様によれば、GPUまたはCPUなど、少なくとも1つのプロセッサが、ベクトルの成分を受信し得、ここにおいて、ベクトルの成分の各々が少なくとも1つの指数を備える、ベクトルの成分のそれぞれの指数の中から最大指数を決定し得る。少なくとも1つのプロセッサはさらに、最大指数に少なくとも部分的に基づいてスケーリング値を決定し得る。CPUまたはGPUのALUは、ベクトルの成分のそれぞれの指数の各々からスケーリング係数(scaling factor)を減算することによって、ベクトルをスケーリングし得る。
[0017] 図1は、本開示の1つまたは複数の態様を実装するように構成され得る例示的なコンピューティングデバイスを示すブロック図である。図1に示されているように、コンピューティングデバイス2は、限定はしないが、ビデオデバイス、メディアプレーヤ、セットトップボックス、携帯電話およびいわゆるスマートフォンなどのワイヤレスハンドセット、携帯情報端末(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、ゲーミングコンソール、ビデオ会議ユニット、タブレットコンピューティングデバイスなどを含むコンピューティングデバイスであり得る。図1の例では、コンピューティングデバイス2は、中央演算処理装置(CPU)6と、システムメモリ10と、GPU12とを含み得る。コンピューティングデバイス2はまた、ディスプレイプロセッサ14と、トランシーバモジュール3と、ユーザインターフェース4と、ディスプレイ8とを含み得る。トランシーバモジュール3とディスプレイプロセッサ14とは両方とも、CPU6および/またはGPU12と同じ集積回路(IC)の一部であり得るか、両方ともCPU6および/またはGPU12を含む1つまたは複数のICの外部にあり得るか、あるいはCPU6および/またはGPU12を含むICの外部にあるIC中に形成され得る。
[0018] コンピューティングデバイス2は、明快のために図1に示されていない追加のモジュールまたはユニットを含み得る。たとえば、コンピューティングデバイス2は、コンピューティングデバイス2がモバイルワイヤレス電話である例において電話通信を実現するために、そのいずれも図1に示されていないスピーカーおよびマイクロフォンを含み、またはコンピューティングデバイス2がメディアプレーヤである例においてスピーカーを含み得る。コンピューティングデバイス2はまた、ビデオカメラを含み得る。さらに、コンピューティングデバイス2に示された様々なモジュールおよびユニットは、コンピューティングデバイス2のあらゆる例において必要であるとは限らない。たとえば、ユーザインターフェース4およびディスプレイ8は、コンピューティングデバイス2が、デスクトップコンピュータ、あるいは外部ユーザインターフェースまたはディスプレイとインターフェースする能力がある他のデバイスである例において、コンピューティングデバイス2の外部にあり得る。
[0019] ユーザインターフェース4の例としては、限定はしないが、トラックボール、マウス、キーボード、および他のタイプの入力デバイスがある。ユーザインターフェース4はまた、タッチスクリーンであり得、ディスプレイ8の一部として組み込まれ得る。トランシーバモジュール3は、コンピューティングデバイス2と別のデバイスまたはネットワークとの間のワイヤレスまたはワイヤード通信を可能にするための回路を含み得る。トランシーバモジュール3は、ワイヤードまたはワイヤレス通信のための変調器、復調器、増幅器および他のそのような回路を含み得る。
[0020] プロセッサ6は、実行のためのコンピュータプログラムの命令を処理するように構成された中央処理ユニット(CPU)など、マイクロプロセッサであり得る。プロセッサ6は、コンピューティングデバイス2の動作を制御する汎用または専用プロセッサを備え得る。ユーザが、プロセッサ6に1つまたは複数のソフトウェアアプリケーションを実行させるために、コンピューティングデバイス2に入力を与え得る。プロセッサ6上で実行するそれらのソフトウェアアプリケーションは、たとえば、オペレーティングシステム、ワードプロセッサアプリケーション、電子メールアプリケーション、スプレッドシートアプリケーション、メディアプレーヤアプリケーション、ビデオゲームアプリケーション、グラフィカルユーザインターフェースアプリケーション、または別のプログラムを含み得る。さらに、プロセッサ6は、GPU12の動作を制御するためのGPUドライバ22を実行し得る。ユーザは、ユーザ入力インターフェース4を介してコンピューティングデバイス2に結合された、キーボード、マウス、マイクロフォン、タッチパッド、または別の入力デバイスなどの1つまたは複数の入力デバイス(図示せず)を介して、コンピューティングデバイス2に入力を与え得る。
[0021] プロセッサ6上で実行するソフトウェアアプリケーションは、ディスプレイ8へのグラフィックスデータのレンダリング(rendering)を引き起こすようにプロセッサ6に命令する、1つまたは複数のグラフィックスレンダリング命令を含み得る。いくつかの例では、ソフトウェア命令は、たとえば、オープングラフィックスライブラリ(OpenGL(登録商標):Open Graphics Library)アプリケーションプログラミングインターフェース(API:application programming interface)、オープングラフィックスライブラリエンベディッドシステムズ(OpenGL ES:Open Graphics Library Embedded Systems)API、Direct3D API、X3D API、RenderMan API、WebGL API、あるいは他の公開またはプロプライエタリ規格グラフィックスAPIなど、グラフィックスAPIに準拠し得る。グラフィックスレンダリング命令を処理するために、プロセッサ6は、GPU12にグラフィックスデータのレンダリングの一部または全部を実行させるために、(たとえば、GPUドライバ22を通して)GPU12に1つまたは複数のグラフィックスレンダリングコマンドを発行し得る。いくつかの例では、レンダリングされるべきグラフィックスデータは、グラフィックスプリミティブ(graphics primitive)のリスト、たとえば、点、線、三角形、四角形、三角形ストリップ(triangle strip)などを含み得る。
[0022] GPU12は、1つまたは複数のグラフィックスプリミティブをディスプレイ8にレンダリングするためにグラフィックス演算を実行するように構成され得る。したがって、プロセッサ6上で実行しているソフトウェアアプリケーションのうちの1つがグラフィックス処理を必要とするとき、プロセッサ6は、ディスプレイ8にレンダリングするために、GPU12にグラフィックスコマンドとグラフィックスデータとを与え得る。グラフィックスデータは、たとえば、描画コマンド、状態情報、プリミティブ情報、テクスチャ情報などを含み得る。GPU12は、いくつかの事例では、プロセッサ6よりも、複雑なグラフィック関係演算の効率的な処理を行う、高度並列構造で構築され得る。たとえば、GPU12は、並列な様式で複数の頂点またはピクセルに対して演算するように構成された、シェーダユニット(shader unit)など、複数の処理要素を含み得る。GPU12の高度並列特性は、いくつかの事例では、GPU12が、プロセッサ6を使用してディスプレイ8にシーンを直接描画するよりも迅速に、グラフィックス画像(たとえば、GUIならびに2次元(2D)および/または3次元(3D)のグラフィックスシーン)をディスプレイ8上に描画することを可能にし得る。
[0023] GPU12は、いくつかの事例では、コンピューティングデバイス2のマザーボードに組み込まれ得る。他の事例では、GPU12は、コンピューティングデバイス2のマザーボード中のポートに取り付けられたグラフィックスカード上に存在し得、または場合によっては、コンピューティングデバイス2と相互動作するように構成された周辺デバイス内に組み込まれ得る。GPU12は、1つまたは複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、あるいは他の等価な集積またはディスクリート論理回路など、1つまたは複数のプロセッサを含み得る。GPU12はまた、1つまたは複数のプロセッサコアを含み得、したがって、GPU12はマルチコアプロセッサと呼ばれることがある。
[0024] GPU12は、グラフィックスメモリ40に直接結合され得る。したがって、GPU12は、バスを使用することなしに、グラフィックスメモリ40からデータを読み取り、グラフィックスメモリ40にデータを書き込み得る。言い換えれば、GPU12は、オフチップメモリの代わりに、ローカルストレージを使用してデータをローカルに処理し得る。そのようなグラフィックスメモリ40は、オンチップメモリと呼ばれることがある。これは、大量のバストラフィックを経験することがある、バスを介してデータを読み取りおよび書き込みするGPU12の必要をなくすことによって、GPU12がより効率的な様式で動作することを可能にする。しかしながら、いくつかの事例では、GPU12は、別個のメモリを含まず、代わりにバスを介してシステムメモリ10を利用し得る。グラフィックスメモリ40は、たとえば、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)ダイナミックRAM(DRAM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM(登録商標))、フラッシュメモリ、磁気データ媒体または光記憶媒体など、1つまたは複数の揮発性または不揮発性メモリあるいは記憶デバイスを含み得る。
[0025] いくつかの例では、GPU12は、十分に形成された画像をシステムメモリ10に記憶し得る。ディスプレイプロセッサ14は、システムメモリ10から画像を取り出し、ディスプレイ8のピクセルを、画像を表示するために点灯させる値を出力し得る。ディスプレイ8は、GPU12によって生成された画像コンテンツを表示するコンピューティングデバイス2のディスプレイであり得る。ディスプレイ8は、液晶ディスプレイ(LCD)、有機発光ダイオードディスプレイ(OLED)、陰極線管(CRT)ディスプレイ、プラズマディスプレイ、または別のタイプのディスプレイデバイスであり得る。
[0026] 上記で説明したように、GPU12は、整数算術、浮動小数点、および論理演算を実行するデジタル回路であり得るALU24を含み得る。ALU24によって実行され得る演算は、加算、減算、およびビット単位演算を含み得る。いくつかの例では、ALU24は、乗算および除算などの演算を実行することが可能でないことがある。いくつかの例では、プロセッサ6はまた、それが算術および論理演算を実行するデジタル回路であり得るという点でALU24と同様に動作し得る、ALUを含み得る。
[0027] 図2は、図1のプロセッサ6、GPU12、およびシステムメモリ10の例示的な実装形態をさらに詳細に示すブロック図である。図2に示されているように、プロセッサ6は、その各々がプロセッサ上で実行する1つまたは複数のソフトウェアアプリケーションまたはサービスであり得る、少なくとも1つのソフトウェアアプリケーション18と、グラフィックスAPI20と、GPUドライバ22とを含み得る。
[0028] プロセッサ6およびGPU12にとって利用可能なメモリは、システムメモリ10と、フレームバッファ16とを含み得る。フレームバッファ16は、システムメモリ10の一部であり得るか、またはシステムメモリ10とは別個であり得る。フレームバッファ16は、レンダリングされた画像データを記憶し得る。
[0029] ソフトウェアアプリケーション18は、GPU12の機能を利用する任意のアプリケーションであり得る。たとえば、ソフトウェアアプリケーション18は、GUIアプリケーション、オペレーティングシステム、ポータブルマッピングアプリケーション、エンジニアリングまたは芸術アプリケーション(artistic application)のためのコンピュータ支援設計プログラム、ビデオゲームアプリケーション、あるいは2Dまたは3Dグラフィックスを使用する別のタイプのソフトウェアアプリケーションであり得る。
[0030] ソフトウェアアプリケーション18は、グラフィカルユーザインターフェース(GUI:graphical user interface)および/またはグラフィックスシーンをレンダリングするようにGPU12に命令する1つまたは複数の描画命令を含み得る。たとえば、描画命令は、GPU12によってレンダリングされるべき1つまたは複数のグラフィックスプリミティブのセットを定義する命令を含み得る。いくつかの例では、描画命令は、GUIにおいて使用される複数のウィンドウ処理面の全部または一部を集合的に定義し得る。追加の例では、描画命令は、アプリケーションによって定義されたモデル空間内または世界空間内の1つまたは複数のグラフィックスオブジェクトを含む、グラフィックスシーンの全部または一部を集合的に定義し得る。
[0031] ソフトウェアアプリケーション18は、1つまたは複数のグラフィックスプリミティブを表示可能なグラフィックス画像にレンダリングするための1つまたは複数のコマンドをGPU12に発行するために、グラフィックスAPI20を介してGPUドライバ22を呼び出し得る。たとえば、ソフトウェアアプリケーション18は、GPU12にプリミティブ定義(primitive definition)を与えるために、グラフィックスAPI20を介してGPUドライバ22を呼び出し得る。いくつかの事例では、プリミティブ定義は、描画プリミティブ、たとえば、三角形、長方形、三角形ファン(triangle fan)、三角形ストリップなどのリストの形式でGPU12に与えられ得る。プリミティブ定義は、レンダリングされるべきプリミティブに関連付けられた1つまたは複数の頂点を指定する頂点仕様を含み得る。頂点仕様は、各頂点についての位置座標、ならびにいくつかの事例では、たとえば、色座標、法線ベクトル、およびテクスチャ座標など、頂点に関連付けられた他の属性を含み得る。プリミティブ定義はまた、プリミティブタイプ情報(たとえば、三角形、長方形、三角形ファン、三角形ストリップなど)、スケーリング情報、回転情報などを含み得る。
[0032] ソフトウェアアプリケーション18によってGPUドライバ22に発行された命令に基づいて、GPUドライバ22は、プリミティブをレンダリングするためにGPU12が実行するための1つまたは複数の演算を指定する1つまたは複数のコマンドを構築し得る。GPU12がCPU6からコマンドを受信したとき、グラフィックス処理パイプライン(graphics processing pipeline)が、コマンドを復号し、コマンド中で指定された演算を実行するようにグラフィックス処理パイプラインを構成する。たとえば、グラフィックス処理パイプラインにおける入力アセンブラが、プリミティブデータを読み取り、グラフィックス処理パイプラインにおける他のグラフィックスパイプラインステージによる使用のためにデータをプリミティブにアセンブルし得る。指定された演算を実行した後、グラフィックス処理パイプラインは、レンダリングされたデータを、ディスプレイデバイスに関連付けられたフレームバッファ16に出力する。
[0033] フレームバッファ16は、GPU12のためにデスティネーションピクセル(destination pixel)を記憶する。デスティネーションピクセルは、一意のスクリーンピクセルロケーションに関連付けられ得る。いくつかの例では、フレームバッファ16は、各デスティネーションピクセルについて色成分とデスティネーションアルファ値とを記憶し得る。たとえば、フレームバッファ16は、各ピクセルについて赤、緑、青、アルファ(RGBA)成分を記憶し得、「RGB」成分は色値に対応し、「A」成分はデスティネーションアルファ値に対応する。フレームバッファ16とシステムメモリ10とは別個のメモリユニットであるものとして示されているが、他の例では、フレームバッファ16は、システムメモリ10の一部であり得る。
[0034] いくつかの例では、グラフィックス処理パイプラインは、頂点シェーダステージ、ハルシェーダステージ(hull shader stage)、ドメインシェーダステージ、ジオメトリシェーダステージ、およびピクセルシェーダステージのうちの1つまたは複数を含み得る。グラフィックス処理パイプラインのこれらのステージは、シェーダステージと見なされ得る。これらのシェーダステージは、GPU12においてシェーダユニット46上で実行する1つまたは複数のシェーダプログラムとして実装され得る。シェーダユニット46は、処理構成要素のプログラマブルパイプラインとして構成された1つまたは複数のシェーダユニットを備え得る。いくつかの例では、シェーダユニット46は、「シェーダプロセッサ(shader processor)」または「ユニファイドシェーダ(unified shader)」と呼ばれることがあり、グラフィックスをレンダリングするために、ジオメトリ、頂点、ピクセル、または他のシェーディング演算を実行し得る。
[0035] GPU12は、グラフィックス処理パイプラインにおける頂点シェーダステージ、ハルシェーダステージ、ドメインシェーダステージ、ジオメトリシェーダステージ、およびピクセルシェーダステージのうちの1つまたは複数を実行するためにコマンドをシェーダユニット46に送ることによって、頂点シェーディング、ハルシェーディング、ドメインシェーディング、ジオメトリシェーディング、ピクセルシェーディングなどの様々なシェーディング演算を実行するようにシェーダユニット46を指定し得る。いくつかの例では、GPUドライバ22が、1つまたは複数のシェーダプログラムをコンパイルし、コンパイルされたシェーダプログラムを、GPU12内に含まれている1つまたは複数のプログラマブルシェーダユニット上にダウンロードするように構成され得る。シェーダプログラムは、たとえば、OpenGLシェーディング言語(GLSL)、ハイレベルシェーディングランゲージ(HLSL)、グラフィックスのためのC(Cg)シェーディング言語など、高レベルシェーディング言語で書き込まれ得る。コンパイルされたシェーダプログラムは、GPU12内のシェーダユニット46の動作を制御する1つまたは複数の命令を含み得る。たとえば、シェーダプログラムは、頂点シェーダステージの機能を実行するためにシェーダユニット46によって実行され得る頂点シェーダプログラム、ハルシェーダステージの機能を実行するためにシェーダユニット46によって実行され得るハルシェーダプログラム、ドメインシェーダステージの機能を実行するためにシェーダユニット46によって実行され得るドメインシェーダプログラム、ジオメトリシェーダステージの機能を実行するためにシェーダユニット46によって実行され得るジオメトリシェーダプログラム、および/またはピクセルシェーダの機能を実行するためにシェーダユニット46によって実行され得るピクセルシェーダプログラムを含み得る。頂点シェーダプログラムは、プログラマブル頂点シェーダユニットまたはユニファイドシェーダユニットの実行を制御し、1つまたは複数の頂点ごとの演算を指定する命令を含み得る。
[0036] シェーダユニット46はプロセッサコア48を含み得、プロセッサコア48の各々は、フェッチングおよび復号演算のための1つまたは複数の構成要素と、算術計算を行うための1つまたは複数の算術論理ユニットと、1つまたは複数のメモリと、キャッシュと、レジスタとを含み得る。いくつかの例では、プロセッサコア48は、スカラー処理要素と呼ばれることもある。プロセッサコア48の各々は汎用レジスタ25を含み得る。汎用レジスタ25は、プロセッサコア48中のALU24によって直接アクセスされるべきデータを記憶し得る。たとえば、汎用レジスタ25は、ALU24によってスケーリングされるべきベクトル成分を記憶し得、ALU24によって出力された、スケーリングされたベクトル成分をも記憶し得る。
[0037] プロセッサコア48の各々は、ALU24など、スカラーALUを含み得る。上記で説明したように、ALU24は、整数算術、浮動小数点、および論理演算を実行するデジタル回路であり得る。ALU24によって実行され得る演算は、加算、減算、およびビット単位演算を含み得る。いくつかの例では、ALU24は、乗算および除算などの演算を実行することが可能でないことがある。本開示の態様によれば、ALU24は、ベクトルの成分をスケーリングすることによって、ベクトルをスケーリングし得る。ALU24はまた、ベクトルのスケーリングされた成分をグラフィックスメモリ40または汎用レジスタ25に出力し得る。
[0038] グラフィックスメモリ40は、GPU12の集積回路に物理的に組み込んだオンチップストレージまたはメモリである。グラフィックスメモリ40がオンチップであるので、GPU12は、システムバスを介してシステムメモリ10から値を読み取るか、またはそれに値を書き込むよりも迅速に、グラフィックスメモリ40から値を読み取り、またはそれに値を書き込むことが可能であり得る。グラフィックスメモリ40は、ベクトルの成分を記憶し得、ALU24によるスケーリングの後のベクトルのスケーリングされた成分をも記憶し得る。グラフィックスメモリ40は、各成分が符号付きビット、シグニフィカント(significant)、および指数としてグラフィックスメモリ40に記憶され得るように、ベクトルの成分を浮動小数点フォーマットで記憶し得る。
[0039] 図3は、CPU6またはGPU12によってスケーリングされ得る例示的な3次元ベクトルを示すブロック図である。図3に示されているように、3次元直交座標系52におけるベクトル50は、ベクトル50のそれぞれの成分54A〜54C(「成分54」)の値を示すタプル(x,y,z)によって表され得る。ベクトル50の成分54は、x成分54Aと、y成分54Bと、z成分54Cとを含み得る。
[0040] 上記で説明したように、ベクトル50の成分54の各成分は、符号付きビット、仮数(significand)、および指数(exponent)としてグラフィックスメモリ40または汎用レジスタ25に記憶される浮動小数点値(floating point value)であり得る。たとえば、例示的な浮動小数点値1.2345は、12345が仮数(significand)または仮数(mantissa)であり得、−4が底(base)10の指数であり得るような、12345*10-4に等しくなり得る。他の例では、指数は底2の指数であり得る。負の指数値を表すために、指数は、指数値が正の値に変換されるように、バイアスされるかまたはオフセットされ得る。たとえば、指数値−4が11としてメモリに記憶され得るように、値15が指数に加算され得る。
[0041] 図4は、ベクトル50の成分54の各成分を表すための例示的な浮動小数点フォーマットを示す概念図である。上記で説明したように、ベクトル50の成分54の各成分は浮動小数点値であり得る。図4に示されているように、成分54の各成分は、浮動小数点フォーマット60で表され得る。浮動小数点フォーマット60は、浮動小数点フォーマット60によって表される浮動小数点値の符号を示す符号ビット(sign bit)62を含み得る。符号ビット62は、浮動小数点値の符号が負の場合は1であり得、浮動小数点値の符号が正の場合は0であり得る。浮動小数点フォーマット60は、指数64と仮数66とをさらに含み得る。一例では、32ビットIEEE浮動小数点フォーマット60の場合、符号ビット62は1ビットであり得、指数64は、127のバイアスを用いた8ビットであり得、仮数66は、整数が隠された23ビットであり得る。たとえば、浮動小数点値−82.3125は、−1.01001001012*26に等しくなり得る。この例では、符号ビット62は1に設定され得る。指数64は、127のバイアスにより13310である、10000101であり得、仮数66は、整数ビットが隠され得るので、01001001010000000000000であり得る。
[0042] 本開示の態様によれば、プロセッサ6またはGPU12は、プロセッサ6またはGPU12が、ベクトル正規化演算の中間結果を記憶するレジスタをオーバーフローさせることなしにベクトル50のベクトル正規化を実行し得るように、ベクトル50をスケーリングするためにALU24を使用し得る。ALU24はハードウェア回路であり得るので、ベクトル50のそのようなスケーリングは、たとえば、シェーダユニット46によって実行されるソフトウェアにおいて実行される代わりに、ハードウェアにおいて実行され得る。さらに、ALU24は、加算演算および減算演算を実行するための機能を含み得るが、乗算演算および/または除算演算を実行するための機能を含まないことがあるので、ALU24は、乗算演算または除算演算のいずれをも実行することなしにベクトル50スケーリングすることが可能であり得る。ベクトル50をスケーリングするために、GPU12は、ベクトル50の成分54を受信し得る。たとえば、ベクトル50が3次元ベクトルである場合、GPU12は、ベクトル50のx成分54A、y成分54B、およびz成分54Cを受信し得る。ベクトル50の成分54は、システムメモリ10、グラフィックスメモリ40、シェーダユニット46のメモリ、汎用レジスタ25など、メモリに記憶され得る。
[0043] 上記で説明したように、ベクトル50の成分54は各々、少なくとも仮数と指数とを含む浮動小数点値であり得る。GPU12は、成分54の指数の中から最大指数を決定し得る。たとえば、成分54の指数が−1、2、および5である場合、GPU12は、成分54の指数の中からの最大指数が5であると決定し得る。いくつかの例では、成分54の指数の中から最大指数を決定することは、成分54の指数の中から最大値指数(maximum value exponent)を決定することを含み得る。したがって、たとえば、成分54の指数が−1、2、および5である場合、GPU12は、5が2または−1よりも大きいので、成分54の中からの最大値指数が5であると決定し得る。
[0044] GPU12が成分54の指数の中から最大指数を決定したことに応答して、GPU12は、成分54の指数の各々をスケーリングするためのスケーリング値を決定し得る。一例では、スケーリング値は最大指数に等しくなり得るので、成分54の指数のためのスケーリング値は5であり得る。別の例では、GPU12は、スケーリングの後のスケーリングされた指数のアンダーフローおよび/またはオーバーフローを防止するように、スケーリング値を決定し得る。この場合、GPU12は、最大指数に少なくとも部分的に基づいてスケーリング値を決定し得る。たとえば、スケーリング値は、最大指数+定数であり得る。たとえば、スケーリング値は、最大指数−(maximum_representable_exponent−1)/2+1であり得る。maximum_representable_exponentは、成分54の浮動小数点フォーマットから導出された定数である、最大表現可能指数(maximum representable exponent)であり得る。たとえば、32ビットIEEE浮動小数点数(floating point number)の場合、最大表現可能指数は128である。32ビット浮動小数点数における指数は8ビットを用いて表されるので、指数範囲は[−127,128](すなわち、両端値を含む−127から128まで)である。別の例では、GPU12は、(最大指数−1)/2−2になるようにスケーリング値を決定し得る。したがって、最大指数15を仮定すれば、スケーリング値は、(15−1)/2−2であり得、それは5であり得る。
[0045] GPU12がスケーリング値を決定したことに応答して、ALU24は、成分54の各指数からスケーリング値を減算することによって成分54の各成分をスケーリングするように構成され得る。たとえば、ベクトル50のx成分54A、y成分54B、およびz成分54Cについての指数値−1、2、および5を仮定し、GPU12が、5が成分54の指数の中からの最大指数であると決定することを仮定し、GPU12が、最大指数の値になるようにスケーリング値を決定すること(すなわち、スケーリング値を5に設定すること)を仮定すれば、ALU24は、x成分54Aについての指数値−1から5を減算し得、ALU24は、y成分54Bについての指数値2から5を減算し得、ALU24は、z成分54Cについての指数値5から5を減算し得、それぞれx成分54A、y成分54B、およびz成分54Cについての指数値−6、−3、および0を有する、スケーリングされた成分54を生じる。ALU24によって出力された指数を含む、得られたスケーリングされた成分は、グラフィックスメモリ40、システムメモリ10、汎用レジスタ25など、メモリに記憶され得る。
[0046] 上記で説明したように、いくつかの例では、成分54の指数は、バイアスされた指数(biased exponent)であり得る。GPU12およびALU24は、非バイアス指数(unbiased exponent)と同様の様式で、バイアスされた成分を処理し得る。たとえば、15が成分54の各指数に加算されるように、成分54の指数の値−1、2、および5が15だけバイアスされる場合、成分54のバイアスされた指数の値は14、17、および20であり得る。したがって、GPU12は、成分54のバイアスされた指数の中からの最大指数が20であると決定し得る。GPU12が成分54のバイアスされた指数の中から最大指数を決定したことに応答して、GPU12は、最大指数に少なくとも部分的に基づいてスケーリング値を決定し得る。この例では、GPU12は、スケーリング値を最大指数の値に設定し得る。GPU12がスケーリング値を決定したことに応答して、ALU24は、成分54の各指数からスケーリング値を減算することによって成分54の各成分をスケーリングし得る。たとえば、ベクトル50のx成分54A、y成分54B、およびz成分54Cについてのバイアスされた指数値14、17、および20を仮定し、GPU12が、20が成分54の指数の中からの最大指数であると決定することと、スケーリング値が最大指数の値に設定されることとを仮定すれば、ALU24は、x成分54Aについての指数値14から20を減算し得、ALU24は、y成分54Bについての指数値17から20を減算し得、ALU24は、z成分54Cについての指数値20から20を減算し得る。ALU24は、成分54の各指数にバイアス15を加算し、それぞれx成分54A、y成分54B、およびz成分54Cについてのバイアスされた指数値9、12、および15を有する、スケーリングされた成分54を生じ得る。
[0047]
ALU24は、ALU24が第1のクロックサイクル(clock cycle)においてスケーリングされたx成分を出力し、第2のクロックサイクルにおいてスケーリングされたy成分を出力し、第3のクロックサイクルにおいてスケーリングされたz成分を出力し得るように、クロックサイクルごとに1つのスケーリングされた成分を出力するように構成され得る。ベクトル50のスケーリングを実行するための例示的な擬似コード(pseudocode)は、次のように表され得る。
Figure 2017527014
[0048] 上記の擬似コードに示されているように、src0、src1、およびsrc2は、3次元ベクトルの成分のソースメモリロケーションであり得る。dstは、第1のスケーリングされた成分のためのメモリ中の宛先ロケーションであり得、dst+1は、第2のスケーリングされた成分のためのメモリ中の次の連続する宛先ロケーションであり得、dst+2は、第3のスケーリングされた成分のためのメモリ中の次の連続する宛先ロケーションであり得る。わかるように、スケーリングされた成分は、メモリ中の連続するメモリロケーションに記憶され得る。
[0049] 上記に示されているように、GPU12は、成分のいずれかが無限(infinite)であるか、または数(number)でないかどうかを決定し得る。成分が、定義されていないかまたは表現不可能な値である場合、成分は数でないことがある。数でない成分は、指数64が1で満たされ得、仮数66が非0値になり得る。そうである場合、ベクトルの成分はスケーリングされない。他の場合、GPU12は、成分の指数の中からの最大指数に少なくとも部分的に基づいてスケーリング値を決定し得る。src0、src1、およびsrc2中の成分の各々について、指数が0または非正規数(denormal number)である場合、成分はスケーリングされない。非正規数は、最も小さい正規数(normal number)よりも小さい大きさをもつ非0数(non-zero number)であり得る。他の場合、ALU24は、成分の指数をスケーリング値だけ減算することによって、成分をスケーリングし得る。いくつかの例では、宛先メモリロケーションdst、dst+1、またはdst+2のいずれかが、ソースメモリロケーションsrc0、src1、またはsrc2と重複し得る。
[0050] GPU12は、ベクトルのスケーリングされた成分を出力するためのスケーリング関数を(rpt2)scale.x、(r)x、(x,y,z)として与えることができ、(rpt2)は、スケーリング命令が、それが3次元ベクトルのスケーリングされたx成分、y成分、およびz成分を出力するために合計3回実行し得るように、初期実行の後に2回繰り返すことになることよりも示し得る。scale.xは、スケーリング関数のための関数名であり得、ただし、scale.xにおけるxは、ベクトルのスケーリングされていない成分を記憶するソースメモリロケーションの開始ロケーションであり得る。(r)xは、スケーリング命令が繰り返されることになることを示し得、(r)xにおけるxは、ベクトルのスケーリングされた成分を記憶するための宛先メモリロケーションの開始ロケーションであり得る。(x,y,z)は、スケーリング関数によってスケーリングされることになるベクトルの成分であり得る。ある時間量中にALU24のパイプラインに発行され得るスケーリング命令の数であり得る、ALU24についてのスループット(throughput)は、スケーリング命令ごとに3サイクルであり得る。発行から完了までのスケーリング命令を実行するためにかかる総時間量であり得る、スケーリング命令を実行する際のALU24のレイテンシ(latency)は、スケーリング命令の実装形態によって異なり得る。
[0051] 図5は、ベクトルをスケーリングするための例示的なプロセスを示すフローチャートである。図5に示されているように、プロセスは、プロセッサ6またはGPU12によって、ベクトルの成分を受信することを含み得、ここにおいて、ベクトルの成分の各々が少なくとも1つの指数を備える(502)。プロセスは、プロセッサ6またはGPU12によって、ベクトルの成分のそれぞれの指数の中から最大指数を決定することをさらに含み得る(504)。プロセスは、プロセッサ6またはGPU12によって、最大成分(maximum component)に少なくとも部分的に基づいてスケーリング値を決定することをさらに含み得る(506)。プロセスは、プロセッサ6またはGPU12のALU24によって、ベクトルの成分のそれぞれの指数の各々からスケーリング値を減算することによってベクトルをスケーリングすることをさらに含み得る(508)。
[0052] いくつかの例では、ベクトルをスケーリングすることは、ALU24によって、乗算演算または除算演算を実行することなしにベクトルをスケーリングすることをさらに含み得る。いくつかの例では、ベクトルの成分の各々が浮動小数点数であり得、ここにおいて、浮動小数点数が、符号ビット、仮数、および指数として表され得る。いくつかの例では、ベクトルは3次元ベクトルを備え得、ベクトルの成分は、x成分と、y成分と、z成分とを備え得る。いくつかの例では、ベクトルをスケーリングすることが、ALU24によって、第1のクロックサイクルにおいてベクトルのx成分の第1の指数からスケーリング値を減算することによってベクトルのx成分をスケーリングすることと、ALU24によって、第2のクロックサイクルにおいてベクトルのy成分の第2の指数からスケーリング値を減算することによってベクトルのy成分をスケーリングすることと、ALU24によって、第3のクロックサイクルにおいてベクトルのz成分の第3の指数からスケーリング値を減算することによってベクトルのz成分をスケーリングすることとを含み得る。いくつかの例では、プロセスは、スケーリングされたx成分と、スケーリングされたy成分と、スケーリングされたz成分とをメモリ中の連続する記憶ロケーション(consecutive storage locations)に出力することをさらに含み得る。いくつかの例では、ALU24はハードウェアデジタル回路(hardware digital circuit)であり得る。
[0053] いくつかの例では、最大指数に少なくとも部分的に基づいてスケーリング値を決定することは、最大指数になるようにスケーリング値を決定することを含み得る。いくつかの他の例では、最大指数に少なくとも部分的に基づいてスケーリング値を決定することは、最大指数と最大代表指数(maximum representative exponent)とに少なくとも部分的に基づいてスケーリング値を決定することを含み得る。
[0054] 1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータデータ記憶媒体または通信媒体を含み得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータあるいは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−ray(登録商標)ディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲に含まれるべきである。
[0055] コードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積またはディスクリート論理回路など、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」および「処理ユニット」という用語は、前述の構造、または本明細書で説明した技法の実装に好適な任意の他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内に与えられるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[0056] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
[0057] 様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内にある。
[0057] 様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
ベクトルをスケーリングするための方法であって、前記方法は、
少なくとも1つのプロセッサによって、ベクトルの成分を受信することと、ここにおいて、前記ベクトルの前記成分の各々が少なくとも1つの指数を備える、
前記少なくとも1つのプロセッサによって、前記ベクトルの前記成分のそれぞれの指数の中から最大指数を決定することと、
前記最大指数に少なくとも部分的に基づいてスケーリング値を決定することと、
前記少なくとも1つのプロセッサの算術論理ユニット(ALU)によって、前記ベクトルの前記成分の前記それぞれの指数の各々から前記スケーリング値を減算することによって、前記ベクトルをスケーリングすることと
を備える、方法。
[C2]
前記ベクトルの前記成分の各々が浮動小数点数を備え、ここにおいて、前記浮動小数点数が、符号ビット、仮数、および前記指数として表される、C1に記載の方法。
[C3]
前記ベクトルが3次元ベクトルを備え、
前記ベクトルの前記成分が、x成分と、y成分と、z成分とを備える、
C1に記載の方法。
[C4]
前記ベクトルをスケーリングすることが、
前記ALUによって、第1のクロックサイクルにおいて前記ベクトルの前記x成分の第1の指数から前記スケーリング値を減算することによって、前記ベクトルの前記x成分をスケーリングすることと、
前記ALUによって、第2のクロックサイクルにおいて前記ベクトルの前記y成分の第2の指数から前記スケーリング値を減算することによって、前記ベクトルの前記y成分をスケーリングすることと、
前記ALUによって、第3のクロックサイクルにおいて前記ベクトルの前記z成分の第3の指数から前記スケーリング値を減算することによって、前記ベクトルの前記z成分をスケーリングすることと
をさらに備える、C3に記載の方法。
[C5]
前記スケーリングされたx成分と、前記スケーリングされたy成分と、前記スケーリングされたz成分とをメモリ中の連続する記憶ロケーションに出力すること
をさらに備える、C4に記載の方法。
[C6]
前記ALUがハードウェアデジタル回路を備える、C1に記載の方法。
[C7]
前記最大指数に少なくとも部分的に基づいてスケーリング値を決定することが、
前記最大指数になるように前記スケーリング値を決定することを備える、C1に記載の方法。
[C8]
前記最大指数に少なくとも部分的に基づいてスケーリング値を決定することが、
前記最大指数と最大代表指数とに少なくとも部分的に基づいて前記スケーリング値を決定することを備える、C1に記載の方法。
[C9]
ベクトルをスケーリングするための装置であって、前記装置は、
ベクトルの成分を記憶するように構成されたメモリと、ここにおいて、前記ベクトルの前記成分の各々が少なくとも1つの指数を備える、
前記ベクトルの前記成分のそれぞれの指数の中から最大指数を決定することと、
前記最大指数に少なくとも部分的に基づいてスケーリング値を決定することと
を行うように構成された少なくとも1つのプロセッサと、
前記ベクトルの前記成分の前記それぞれの指数の各々から前記スケーリング値を減算することによって、前記ベクトルをスケーリングするように構成された算術論理ユニット(ALU)と
を備える、装置。
[C10]
前記ベクトルの前記成分の各々が浮動小数点数を備え、ここにおいて、前記浮動小数点数が、符号ビット、仮数、および前記指数として表される、C9に記載の装置。
[C11]
前記ベクトルが3次元ベクトルを備え、
前記ベクトルの前記成分が、x成分と、y成分と、z成分とを備える、
C9に記載の装置。
[C12]
前記ALUが、
第1のクロックサイクルにおいて前記ベクトルの前記x成分の第1の指数から前記スケーリング値を減算することによって、前記ベクトルの前記x成分をスケーリングすることと、
第2のクロックサイクルにおいて前記ベクトルの前記y成分の第2の指数から前記スケーリング値を減算することによって、前記ベクトルの前記y成分をスケーリングすることと、
第3のクロックサイクルにおいて前記ベクトルの前記z成分の第3の指数から前記スケーリング値を減算することによって、前記ベクトルの前記z成分をスケーリングすることと
を行うように構成された、C11に記載の装置。
[C13]
前記ALUが、
前記スケーリングされたx成分と、前記スケーリングされたy成分と、前記スケーリングされたz成分とを前記メモリ中の連続する記憶ロケーションに出力することを行うように構成された、C12に記載の装置。
[C14]
前記ALUがハードウェアデジタル回路を備える、C9に記載の装置。
[C15]
前記少なくとも1つのプロセッサが、
前記最大指数になるように前記スケーリング値を決定することを行うように構成された、C9に記載の装置。
[C16]
前記少なくとも1つのプロセッサが、
前記最大指数と最大代表指数とに少なくとも部分的に基づいて前記スケーリング値を決定することを行うように構成された、C9に記載の装置。
[C17]
ベクトルをスケーリングするための装置であって、前記装置は、
ベクトルの成分を受信するための手段と、ここにおいて、前記ベクトルの前記成分の各々が少なくとも1つの指数を備える、
前記ベクトルの前記成分のそれぞれの指数の中から最大指数を決定するための手段と、
前記最大指数に少なくとも部分的に基づいてスケーリング値を決定するための手段と、
前記ベクトルの前記成分の前記それぞれの指数の各々から前記スケーリング値を減算することによって、前記ベクトルをスケーリングするための手段と
を備える、装置。
[C18]
前記ベクトルの前記成分の各々が浮動小数点数を備え、ここにおいて、前記浮動小数点数が、符号ビット、仮数、および前記指数として表される、C17に記載の装置。
[C19]
前記ベクトルが3次元ベクトルを備え、
前記ベクトルの前記成分が、x成分と、y成分と、z成分とを備える、
C18に記載の装置。
[C20]
前記ベクトルをスケーリングするための前記手段が、
第1のクロックサイクルにおいて前記ベクトルの前記x成分の第1の指数から前記スケーリング値を減算することによって、前記ベクトルの前記x成分をスケーリングするための手段と、
第2のクロックサイクルにおいて前記ベクトルの前記y成分の第2の指数から前記スケーリング値を減算することによって、前記ベクトルの前記y成分をスケーリングするための手段と、
第3のクロックサイクルにおいて前記ベクトルの前記z成分の第3の指数から前記スケーリング値を減算することによって、前記ベクトルの前記z成分をスケーリングするための手段と
を備える、C19に記載の装置。
[C21]
前記ベクトルをスケーリングするための前記手段が、
前記スケーリングされたx成分と、前記スケーリングされたy成分と、前記スケーリングされたz成分とをメモリ中の連続する記憶ロケーションに出力するための手段をさらに備える、C20に記載の装置。
[C22]
前記最大指数に少なくとも部分的に基づいてスケーリング値を決定するための前記手段が、
前記最大指数になるように前記スケーリング値を決定するための手段を備える、C17に記載の装置。
[C23]
前記最大指数に少なくとも部分的に基づいてスケーリング値を決定するための前記手段が、
前記最大指数と最大代表指数とに少なくとも部分的に基づいて前記スケーリング値を決定するための手段を備える、C17に記載の装置。
[C24]
実行されたとき、1つまたは複数のプログラマブルプロセッサに、
ベクトルの成分を受信することと、ここにおいて、前記ベクトルの前記成分の各々が少なくとも1つの指数を備える、
前記ベクトルの前記成分のそれぞれの指数の中から最大指数を決定することと、
前記最大指数に少なくとも部分的に基づいてスケーリング値を決定することと、
前記ベクトルの前記成分の前記それぞれの指数の各々から前記スケーリング値を減算することによって、前記ベクトルをスケーリングすることと
を行わせる命令を記憶するコンピュータ可読記憶媒体。
[C25]
前記ベクトルの前記成分の各々が浮動小数点数を備え、ここにおいて、前記浮動小数点数が、符号ビット、仮数、および前記指数として表される、C24に記載のコンピュータ可読記憶媒体。
[C26]
前記ベクトルが3次元ベクトルを備え、
前記ベクトルの前記成分が、x成分と、y成分と、z成分とを備える、
C24に記載のコンピュータ可読記憶媒体。
[C27]
前記命令が、前記1つまたは複数のプログラマブルプロセッサに、
第1のクロックサイクルにおいて前記ベクトルの前記x成分の第1の指数から前記スケーリング値を減算することによって、前記ベクトルの前記x成分をスケーリングすることと、
第2のクロックサイクルにおいて前記ベクトルの前記y成分の第2の指数から前記スケーリング値を減算することによって、前記ベクトルの前記y成分をスケーリングすることと、
第3のクロックサイクルにおいて前記ベクトルの前記z成分の第3の指数から前記スケーリング値を減算することによって、前記ベクトルの前記z成分をスケーリングすることと
をさらに行わせる、C26に記載のコンピュータ可読記憶媒体。
[C28]
前記命令が、前記1つまたは複数のプログラマブルプロセッサに、
前記スケーリングされたx成分と、前記スケーリングされたy成分と、前記スケーリングされたz成分とをメモリ中の連続する記憶ロケーションに出力することをさらに行わせる、C27に記載のコンピュータ可読記憶媒体。
[C29]
前記命令が、前記1つまたは複数のプログラマブルプロセッサに、
前記最大指数になるように前記スケーリング値を決定することをさらに行わせる、C24に記載のコンピュータ可読記憶媒体。
[C30]
前記命令が、前記1つまたは複数のプログラマブルプロセッサに、
前記最大指数と最大代表指数とに少なくとも部分的に基づいて前記スケーリング値を決定すること
をさらに行わせる、C24に記載のコンピュータ可読記憶媒体。

Claims (30)

  1. ベクトルをスケーリングするための方法であって、前記方法は、
    少なくとも1つのプロセッサによって、ベクトルの成分を受信することと、ここにおいて、前記ベクトルの前記成分の各々が少なくとも1つの指数を備える、
    前記少なくとも1つのプロセッサによって、前記ベクトルの前記成分のそれぞれの指数の中から最大指数を決定することと、
    前記最大指数に少なくとも部分的に基づいてスケーリング値を決定することと、
    前記少なくとも1つのプロセッサの算術論理ユニット(ALU)によって、前記ベクトルの前記成分の前記それぞれの指数の各々から前記スケーリング値を減算することによって、前記ベクトルをスケーリングすることと
    を備える、方法。
  2. 前記ベクトルの前記成分の各々が浮動小数点数を備え、ここにおいて、前記浮動小数点数が、符号ビット、仮数、および前記指数として表される、請求項1に記載の方法。
  3. 前記ベクトルが3次元ベクトルを備え、
    前記ベクトルの前記成分が、x成分と、y成分と、z成分とを備える、
    請求項1に記載の方法。
  4. 前記ベクトルをスケーリングすることが、
    前記ALUによって、第1のクロックサイクルにおいて前記ベクトルの前記x成分の第1の指数から前記スケーリング値を減算することによって、前記ベクトルの前記x成分をスケーリングすることと、
    前記ALUによって、第2のクロックサイクルにおいて前記ベクトルの前記y成分の第2の指数から前記スケーリング値を減算することによって、前記ベクトルの前記y成分をスケーリングすることと、
    前記ALUによって、第3のクロックサイクルにおいて前記ベクトルの前記z成分の第3の指数から前記スケーリング値を減算することによって、前記ベクトルの前記z成分をスケーリングすることと
    をさらに備える、請求項3に記載の方法。
  5. 前記スケーリングされたx成分と、前記スケーリングされたy成分と、前記スケーリングされたz成分とをメモリ中の連続する記憶ロケーションに出力すること
    をさらに備える、請求項4に記載の方法。
  6. 前記ALUがハードウェアデジタル回路を備える、請求項1に記載の方法。
  7. 前記最大指数に少なくとも部分的に基づいてスケーリング値を決定することが、
    前記最大指数になるように前記スケーリング値を決定すること
    を備える、請求項1に記載の方法。
  8. 前記最大指数に少なくとも部分的に基づいてスケーリング値を決定することが、
    前記最大指数と最大代表指数とに少なくとも部分的に基づいて前記スケーリング値を決定すること
    を備える、請求項1に記載の方法。
  9. ベクトルをスケーリングするための装置であって、前記装置は、
    ベクトルの成分を記憶するように構成されたメモリと、ここにおいて、前記ベクトルの前記成分の各々が少なくとも1つの指数を備える、
    前記ベクトルの前記成分のそれぞれの指数の中から最大指数を決定することと、
    前記最大指数に少なくとも部分的に基づいてスケーリング値を決定することと
    を行うように構成された少なくとも1つのプロセッサと、
    前記ベクトルの前記成分の前記それぞれの指数の各々から前記スケーリング値を減算することによって、前記ベクトルをスケーリングするように構成された算術論理ユニット(ALU)と
    を備える、装置。
  10. 前記ベクトルの前記成分の各々が浮動小数点数を備え、ここにおいて、前記浮動小数点数が、符号ビット、仮数、および前記指数として表される、請求項9に記載の装置。
  11. 前記ベクトルが3次元ベクトルを備え、
    前記ベクトルの前記成分が、x成分と、y成分と、z成分とを備える、
    請求項9に記載の装置。
  12. 前記ALUが、
    第1のクロックサイクルにおいて前記ベクトルの前記x成分の第1の指数から前記スケーリング値を減算することによって、前記ベクトルの前記x成分をスケーリングすることと、
    第2のクロックサイクルにおいて前記ベクトルの前記y成分の第2の指数から前記スケーリング値を減算することによって、前記ベクトルの前記y成分をスケーリングすることと、
    第3のクロックサイクルにおいて前記ベクトルの前記z成分の第3の指数から前記スケーリング値を減算することによって、前記ベクトルの前記z成分をスケーリングすることと
    を行うように構成された、請求項11に記載の装置。
  13. 前記ALUが、
    前記スケーリングされたx成分と、前記スケーリングされたy成分と、前記スケーリングされたz成分とを前記メモリ中の連続する記憶ロケーションに出力すること
    を行うように構成された、請求項12に記載の装置。
  14. 前記ALUがハードウェアデジタル回路を備える、請求項9に記載の装置。
  15. 前記少なくとも1つのプロセッサが、
    前記最大指数になるように前記スケーリング値を決定すること
    を行うように構成された、請求項9に記載の装置。
  16. 前記少なくとも1つのプロセッサが、
    前記最大指数と最大代表指数とに少なくとも部分的に基づいて前記スケーリング値を決定すること
    を行うように構成された、請求項9に記載の装置。
  17. ベクトルをスケーリングするための装置であって、前記装置は、
    ベクトルの成分を受信するための手段と、ここにおいて、前記ベクトルの前記成分の各々が少なくとも1つの指数を備える、
    前記ベクトルの前記成分のそれぞれの指数の中から最大指数を決定するための手段と、
    前記最大指数に少なくとも部分的に基づいてスケーリング値を決定するための手段と、
    前記ベクトルの前記成分の前記それぞれの指数の各々から前記スケーリング値を減算することによって、前記ベクトルをスケーリングするための手段と
    を備える、装置。
  18. 前記ベクトルの前記成分の各々が浮動小数点数を備え、ここにおいて、前記浮動小数点数が、符号ビット、仮数、および前記指数として表される、請求項17に記載の装置。
  19. 前記ベクトルが3次元ベクトルを備え、
    前記ベクトルの前記成分が、x成分と、y成分と、z成分とを備える、
    請求項18に記載の装置。
  20. 前記ベクトルをスケーリングするための前記手段が、
    第1のクロックサイクルにおいて前記ベクトルの前記x成分の第1の指数から前記スケーリング値を減算することによって、前記ベクトルの前記x成分をスケーリングするための手段と、
    第2のクロックサイクルにおいて前記ベクトルの前記y成分の第2の指数から前記スケーリング値を減算することによって、前記ベクトルの前記y成分をスケーリングするための手段と、
    第3のクロックサイクルにおいて前記ベクトルの前記z成分の第3の指数から前記スケーリング値を減算することによって、前記ベクトルの前記z成分をスケーリングするための手段と
    を備える、請求項19に記載の装置。
  21. 前記ベクトルをスケーリングするための前記手段が、
    前記スケーリングされたx成分と、前記スケーリングされたy成分と、前記スケーリングされたz成分とをメモリ中の連続する記憶ロケーションに出力するための手段
    をさらに備える、請求項20に記載の装置。
  22. 前記最大指数に少なくとも部分的に基づいてスケーリング値を決定するための前記手段が、
    前記最大指数になるように前記スケーリング値を決定するための手段
    を備える、請求項17に記載の装置。
  23. 前記最大指数に少なくとも部分的に基づいてスケーリング値を決定するための前記手段が、
    前記最大指数と最大代表指数とに少なくとも部分的に基づいて前記スケーリング値を決定するための手段
    を備える、請求項17に記載の装置。
  24. 実行されたとき、1つまたは複数のプログラマブルプロセッサに、
    ベクトルの成分を受信することと、ここにおいて、前記ベクトルの前記成分の各々が少なくとも1つの指数を備える、
    前記ベクトルの前記成分のそれぞれの指数の中から最大指数を決定することと、
    前記最大指数に少なくとも部分的に基づいてスケーリング値を決定することと、
    前記ベクトルの前記成分の前記それぞれの指数の各々から前記スケーリング値を減算することによって、前記ベクトルをスケーリングすることと
    を行わせる命令を記憶するコンピュータ可読記憶媒体。
  25. 前記ベクトルの前記成分の各々が浮動小数点数を備え、ここにおいて、前記浮動小数点数が、符号ビット、仮数、および前記指数として表される、請求項24に記載のコンピュータ可読記憶媒体。
  26. 前記ベクトルが3次元ベクトルを備え、
    前記ベクトルの前記成分が、x成分と、y成分と、z成分とを備える、
    請求項24に記載のコンピュータ可読記憶媒体。
  27. 前記命令が、前記1つまたは複数のプログラマブルプロセッサに、
    第1のクロックサイクルにおいて前記ベクトルの前記x成分の第1の指数から前記スケーリング値を減算することによって、前記ベクトルの前記x成分をスケーリングすることと、
    第2のクロックサイクルにおいて前記ベクトルの前記y成分の第2の指数から前記スケーリング値を減算することによって、前記ベクトルの前記y成分をスケーリングすることと、
    第3のクロックサイクルにおいて前記ベクトルの前記z成分の第3の指数から前記スケーリング値を減算することによって、前記ベクトルの前記z成分をスケーリングすることと
    をさらに行わせる、請求項26に記載のコンピュータ可読記憶媒体。
  28. 前記命令が、前記1つまたは複数のプログラマブルプロセッサに、
    前記スケーリングされたx成分と、前記スケーリングされたy成分と、前記スケーリングされたz成分とをメモリ中の連続する記憶ロケーションに出力すること
    をさらに行わせる、請求項27に記載のコンピュータ可読記憶媒体。
  29. 前記命令が、前記1つまたは複数のプログラマブルプロセッサに、
    前記最大指数になるように前記スケーリング値を決定すること
    をさらに行わせる、請求項24に記載のコンピュータ可読記憶媒体。
  30. 前記命令が、前記1つまたは複数のプログラマブルプロセッサに、
    前記最大指数と最大代表指数とに少なくとも部分的に基づいて前記スケーリング値を決定すること
    をさらに行わせる、請求項24に記載のコンピュータ可読記憶媒体。
JP2017502104A 2014-07-15 2015-06-22 算術論理ユニットにおいて使用するためのベクトルスケーリング命令 Active JP6542352B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/331,991 2014-07-15
US14/331,991 US20160019027A1 (en) 2014-07-15 2014-07-15 Vector scaling instructions for use in an arithmetic logic unit
PCT/US2015/036960 WO2016010681A1 (en) 2014-07-15 2015-06-22 Vector scaling instructions for use in an arithmetic logic unit

Publications (3)

Publication Number Publication Date
JP2017527014A true JP2017527014A (ja) 2017-09-14
JP2017527014A5 JP2017527014A5 (ja) 2018-07-12
JP6542352B2 JP6542352B2 (ja) 2019-07-10

Family

ID=53541917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017502104A Active JP6542352B2 (ja) 2014-07-15 2015-06-22 算術論理ユニットにおいて使用するためのベクトルスケーリング命令

Country Status (7)

Country Link
US (1) US20160019027A1 (ja)
EP (1) EP3170069B1 (ja)
JP (1) JP6542352B2 (ja)
CN (1) CN106489131A (ja)
ES (1) ES2750977T3 (ja)
HU (1) HUE047059T2 (ja)
WO (1) WO2016010681A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108153514A (zh) * 2017-12-19 2018-06-12 北京云知声信息技术有限公司 一种浮点向量加速方法及装置
US20200371784A1 (en) * 2019-05-24 2020-11-26 Texas Instruments Incorporated Vector floating-point scale

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08101919A (ja) * 1994-09-30 1996-04-16 Sony Corp 数値変換装置および座標値整数化装置
JPH09212362A (ja) * 1996-01-31 1997-08-15 Hitachi Ltd マイクロプロセッサ
JPH1124887A (ja) * 1997-07-01 1999-01-29 Sega Enterp Ltd ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体
JP2002149397A (ja) * 2000-11-13 2002-05-24 Nec Microsystems Ltd 固定小数点データ生成方法及び固定小数点データ生成回路
JP2003177960A (ja) * 2001-12-12 2003-06-27 Matsushita Electric Ind Co Ltd 演算装置及び記憶装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6614431B1 (en) * 2001-01-18 2003-09-02 David J. Collodi Method and system for improved per-pixel shading in a computer graphics system
US7154848B2 (en) * 2002-05-29 2006-12-26 General Dynamics Corporation Methods and apparatus for generating a multiplexed communication signal
US8326904B2 (en) * 2009-01-27 2012-12-04 International Business Machines Corporation Trigonometric summation vector execution unit
GB2483902B (en) * 2010-09-24 2018-10-24 Advanced Risc Mach Ltd Vector floating point argument reduction
US20140136582A1 (en) * 2012-11-12 2014-05-15 Futurewei Technologies, Inc. Method and apparatus for digital automatic gain control

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08101919A (ja) * 1994-09-30 1996-04-16 Sony Corp 数値変換装置および座標値整数化装置
JPH09212362A (ja) * 1996-01-31 1997-08-15 Hitachi Ltd マイクロプロセッサ
JPH1124887A (ja) * 1997-07-01 1999-01-29 Sega Enterp Ltd ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体
JP2002149397A (ja) * 2000-11-13 2002-05-24 Nec Microsystems Ltd 固定小数点データ生成方法及び固定小数点データ生成回路
JP2003177960A (ja) * 2001-12-12 2003-06-27 Matsushita Electric Ind Co Ltd 演算装置及び記憶装置

Also Published As

Publication number Publication date
CN106489131A (zh) 2017-03-08
WO2016010681A1 (en) 2016-01-21
JP6542352B2 (ja) 2019-07-10
EP3170069B1 (en) 2019-07-24
ES2750977T3 (es) 2020-03-30
HUE047059T2 (hu) 2020-04-28
US20160019027A1 (en) 2016-01-21
EP3170069A1 (en) 2017-05-24

Similar Documents

Publication Publication Date Title
JP6273380B2 (ja) レイトレーシングアプリケーションにおけるツリー横断のための開始ノード決定
JP6495378B2 (ja) 選択的ラスタライゼーション
JP6271768B2 (ja) 共有されるデータチャネルを用いるシェーダパイプライン
JP6595101B2 (ja) 後期深度試験と保守的深度試験との間の動的切替え
JP6193531B1 (ja) 融合された乗算−加算演算のエミュレーション
JP6325756B2 (ja) 単一パスの表面スプラッティング
CN108701367B (zh) 单遍次包围体阶层光栅化
JP2018514855A (ja) ハイブリッド2d/3dグラフィックスレンダリング
TW201407534A (zh) 鑲嵌後邊緣快取
US9779471B2 (en) Transparent pixel format converter
JP6542352B2 (ja) 算術論理ユニットにおいて使用するためのベクトルスケーリング命令
US10089708B2 (en) Constant multiplication with texture unit of graphics processing unit
CN111127620B (zh) 一种生成半球域采样模式的方法、装置及计算机存储介质
US10157443B1 (en) Deferred batching of incremental constant loads
US20200004533A1 (en) High performance expression evaluator unit

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180530

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180530

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181009

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190612

R150 Certificate of patent or registration of utility model

Ref document number: 6542352

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250