JP2007531072A - プログラム可能なプロセッサ及び拡張演算を伴う方法 - Google Patents

プログラム可能なプロセッサ及び拡張演算を伴う方法 Download PDF

Info

Publication number
JP2007531072A
JP2007531072A JP2006518941A JP2006518941A JP2007531072A JP 2007531072 A JP2007531072 A JP 2007531072A JP 2006518941 A JP2006518941 A JP 2006518941A JP 2006518941 A JP2006518941 A JP 2006518941A JP 2007531072 A JP2007531072 A JP 2007531072A
Authority
JP
Japan
Prior art keywords
data
memory
memory system
concatenated
operand
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
JP2006518941A
Other languages
English (en)
Other versions
JP5005342B2 (ja
Inventor
ハンセン クレイグ
ムーソーリス ジョン
マサリン アレクシア
Original Assignee
マイクロユニティ システムズ エンジニアリング インコーポレイテッド
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 マイクロユニティ システムズ エンジニアリング インコーポレイテッド filed Critical マイクロユニティ システムズ エンジニアリング インコーポレイテッド
Publication of JP2007531072A publication Critical patent/JP2007531072A/ja
Application granted granted Critical
Publication of JP5005342B2 publication Critical patent/JP5005342B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/392Floor-planning or layout, e.g. partitioning or placement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • 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
    • 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
    • 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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • 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/30018Bit or string instructions
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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
    • 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/30101Special purpose 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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
    • 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
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/158Finite field arithmetic processing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4161Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
    • H03M13/4169Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management using traceback
    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03FPHOTOMECHANICAL PRODUCTION OF TEXTURED OR PATTERNED SURFACES, e.g. FOR PRINTING, FOR PROCESSING OF SEMICONDUCTOR DEVICES; MATERIALS THEREFOR; ORIGINALS THEREFOR; APPARATUS SPECIALLY ADAPTED THEREFOR
    • G03F1/00Originals for photomechanical production of textured or patterned surfaces, e.g., masks, photo-masks, reticles; Mask blanks or pellicles therefor; Containers specially adapted therefor; Preparation thereof
    • G03F1/36Masks having proximity correction features; Preparation thereof, e.g. optical proximity correction [OPC] design processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/18Manufacturability analysis or optimisation for manufacturability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Algebra (AREA)
  • Multimedia (AREA)
  • Architecture (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

プログラム可能なプロセッサと、少なくとも2つのソースオペランド又はソースオペランドと結果オペランドを、汎用レジスタ又はデータパス幅のいずれかの幅よりも大きい幅まで拡張することにより、プロセッサの性能を改良する方法。オペランドのサイズと形態と同様に、複数のデータのデータパス幅が読まれること、又は書き込まれることができるようなメモリアドレスを指定するために、汎用レジスタの内容を使用することにより、本発明は、プロセッサのデータパス幅より十分に大きいオペランドを提供する。その上、数個の命令とこれらの命令を遂行する装置は、幅とアクセス可能な汎用レジスタの数とにオペランドが制限されなければ、性能面での優位性を獲得する。

Description

本発明は、汎用プロセッサのアーキテクチャに関し、拡張オペランドのアーキテクチャに関する。
通信製品は、ソフトウェアにおけるデジタル信号をリアルタイムで処理するために、計算の性能を強化させる必要がある。処理技術の改良を通じ、またマイクロプロセッサの設計の改良によって、性能の強化が実現されてきた。強化された並列処理、高められたクロックレート、増加された集積度、結びついた改良された設計ツール、コンパイラは、このようにより実用的になってきた。しかし、これらの改良の多くは、計算機に密接に結び付けられる必要な帯域幅の欠如に起因して、メモリオーバーヘッドと待ち時間の増加を代償としてもたらす。
プロセッサ、特に汎用プロセッサの性能レベルは、クロックレート、クロック当たりのゲート数、オペランド数、オペランドとデータパス幅、オペランドとデータパス区分の、複数の相互依存する要因、すなわち、クロックレート、クロック当たりのゲート数、オペランド数、オペランド幅とデータパス幅、オペランド区分とデータパス区分、の倍数により評価され得る。クロックレートは、回路と論理技術の選択によって大いに影響されるが、クロック当たりのゲート数の数にもまた影響される。クロック当たりのゲート数とは、1クロックサイクルの間に、パイプライン内のいくつのゲートが状態を変えることができるか、ということである。これは、データパスの中へラッチを挿入することで減らすことができる。ラッチ間のゲートの数が減れば、高いクロックが可能である。しかし、ラッチを追加することは、パイプラインの長さが長くなることをもたらし、このように命令待ち時間の増加という代償をもたらす。オペランド数についてが分かりやすい。例えば、桁上げ保存加算の技術を加えることによって、2つの値を加算するときに必要とされるよりもわずかに大きい遅延を伴って、3つの値が加算される。オペランド幅とデータパス幅は、どれだけのデータがすぐに処理され得るかを定義づける。より拡張されたデータパスは、より複雑な機能を実行することができるが、一般的に、このことはより高い実装コストをもたらす。オペランドとデータパスの区分化により、多大なピークでの使用を維持する目的をもって、幅を増やす場合のような、データパスの効率的な使用に注意が向けられる。
最後の要因である、オペランドとデータパスの区分化は、本発明の譲受人に譲渡されたアメリカ合衆国特許第5,742,840号と第5,794,060号と第5,794,061号と第5,809,321号と第5,822,603号において広範に扱われており、これらの内容の全てを参照としてここに援用する。これらには、命令の組を加えることによって汎用プロセッサの利用率を高めるシステムと方法が、記述されている。これらの命令の組は、データパスソースとして汎用レジスタの内容を使用し、指定サイズの符号に向けてオペランドを分割し、並列での稼働を実行し、結果を連結し、連結結果を汎用レジスタの中へ配置する。本発明と同様に全て同じ譲受人に譲渡されているこれらの特許は、重要な並列処理を経るメディアデータストリームの処理と伝送を最適化する汎用マイクロプロセッサについて教唆する。
先行の特許が、汎用マイクロプロセッサの利用と性能において重要な改良を提供する一方、特に、メディアデータストリームのように、ブロードバンド通信の取り扱いについて、他の進歩が見込まれる。
多くの汎用プロセッサは、データパスの大きさに合ったレジスター幅を有し、命令のためのオペランドを格納する汎用レジスタを備える。プロセッサの設計は一般的に、命令当たりアクセス可能なレジスタの数に限定される。なぜならば、これらのレジスタにアクセスするためのハードウェアは、パワーと面積において相対的に高価だからである。アクセス可能なレジスタの数がプロセッサの設計を通じて変化する一方、プロセッサの1クロック周期もしくは1パイプラインフロー内で扱うためにそのような命令が設計される時は、その数は、命令当たり2つまたは3つまたは4つのレジスタにしばしば限られる。モトローラ68000のようないくつかのプロセッサは、無限のレジスタの数をセーブしリストアする命令を有するが、そのような命令を実行するには複数のサイクルを必要とする。
モトローラ68000はまた、命令の実行のために複数のサイクル又はパイプラインフローを用いて、このようにより拡張されたデータパスを真似ることによって、狭いレジスタファイルと結び付けられた狭いデータパスを克服することを試みている。しかし、そのような複合的な精密技術は、クロックサイクルの増加が必要とされる展望においては、改良は限界に近い。汎用レジスタの幅とアクセス可能な数は、このように、レジスタベースの装置において、1つの命令で実行され得る処理の量を根本的に制限する。
プロセッサの存在は、1又は複数で汎用プロセッサのメモリシステムから読み出される
オペランドを受け取る命令を、供給する。しかし、これらのメモリオペランドが一般にレジスタオペランドに指定され、メモリシステムのデータパスがプロセッサのデータパスよりも広くないように、1サイクル又はパイプラインフロー当たりの命令1つ当たりの汎用オペランドの幅とアクセス可能な数字は、高められることはない。
命令当たりアクセス可能な汎用レジスタオペランドの数は、一般に、ロジックの複雑さと命令のサイズにより制限される。例えば、汎用レジスタの大きな数字を指定することにより、確実に望ましいが複雑な機能を実行することは、可能かもしれない。しかし、
同時に起こるレジスタの値の読み込みと回避を許可するために、従来型の設計に、かなりの量の追加ロジックが加えられなければならないだろう。ソースオペランド又は結果の、数又はサイズを増やすために、専用レジスタがいくつかの従来技術の設計において使用されている間は、明示的な命令がこれらの専用レジスタの中へ値をロード又はストアし、また、プロセッサ状態の変化の上で、これらのレジスタをセーブしリストアするためには、追加の命令が必要とされる。
汎用レジスタの結果が、その結果のためには、専用でない、又は他の特別な記憶装置が必要となるように、実行装置のサイズの結果は制限される。
結果が大きな数字の汎用レジスタを指定することは、レジスタ値の書き込みとバイパスすることが同時に起こるのを許可するために、同様に多大な追加ロジックが一般的な設計に加えられることを必要とするだろう。
実行装置のサイズの結果が制限されるとき、その結果は、単一の命令によって合理的に扱われることができる計算の量を制限する。結果として、全ての中間の結果が制限の中で表されることのできる一連の単一命令のステップにおいて、アルゴリズムは実行されねばならない。この制限を削除することによって、より大きいアルゴリズムの構成要素が単一命令として実行される中で、命令のセットは開発されることができる。そして、中間の結果が表すものは、もはやサイズに限定されない。さらに付け加えると、これらの中間の結果のうちいくつかは、より大きいアルゴリズムの構成要素の完成の上で保持されることは必要とされていない。そこで、これらの不自然さから解放されたプロセッサは、汎用レジスタファイルからこれらの結果を蓄積したり訂正したりすることなく、性能を向上させ、制御電力を減少させることができる。汎用レジスタファイルにおいて中間の結果が保持されないとき、プロセッサの命令のセットと実行されるアルゴリズムは、汎用レジスタファイルの大きさに制限されない。
それゆえに、効率的なオペランドの取り扱いと、メモリシステム又はアクセス可能な汎用レジスタならどんなものでも、のうちいずれかより大きい幅の結果を実現可能なプロセッサシステムの必要性が存在してきた。また、効率的なオペランドの取り扱いと、レジスタファイルの全体より大きい全体のサイズの結果を実現可能なプロセッサシステムの必要性も存在する。
本発明の譲受人に譲渡され、関連しているアメリカ合衆国特許第6,295,599号は、少なくとも1つのソースオペランドを、汎用レジスタ又はデータパス幅のいずれかの幅よりも大きい幅に拡張することによって、汎用プロセッサの性能を改良するためのシステムと方法を詳細に記述している。性能の更なる改良は、ソースオペランドの最多数に、メモリシステム又はアクセス可能な汎用レジスタならどんなものでも、のうちいずれかより大きい幅に拡張されることを許すことと、少なくとも1つの結果オペランドに、メモリシステム又はアクセス可能な汎用レジスタならどんなものでも、のうちいずれかより大きい幅に拡張されることを許すことにより達成される。
本発明は、少なくとも1つのソースオペランド又は少なくとも1つの結果オペランドを、汎用レジスタ又はデータパス幅のいずれかの幅よりも大きい幅に拡張することによって、汎用プロセッサの性能を改良するためのシステムと方法を提供する。さらに、もし、ソースオペランド又は少なくとも1つの結果オペランドが、幅とアクセス可能な汎用レジスタの数に制限されるのなら、効率的に実行されることができない、いくつかの命令の組が提供されるだろう。
本発明においては、プロセッサのデータパス幅よりもかなり大きい、ソースと結果のオペランドが提供される。このことは、少なくとも2以上だが典型的ないくつかのデータパス幅が読み出され得るメモリアドレスを、少なくとも1つ指定するために汎用レジスタを使用することによって、部分的には達成されている。そのような拡張オペランドに、単一サイクル内で実行されることを許可するため、演算器のデータパスは、最初の命令の実行においてメモリオペランドがコピーされる専用記憶部とともに増大される。その命令又は同じメモリアドレスを指定する他の同様な命令の更なる実行により、オペランド値を獲得するために専用記憶部から読み出すことができる。しかしながら、そのような読み出しは、メモリオペランドが命令を介在することによっては変化を受けないことを確かめる状態であることを条件とする。もしメモリオペランドが現在のまま残れば、それは、次のような状態になることである。メモリオペランドフェッチは、結果を生み出しながら、演算器において1又はそれより多くのレジスタオペランドと結び付けられ得る。汎用レジスタの結果が、その結果のためには、専用でない、又は他の特別な記憶装置が必要となるように、結果のサイズは制限される。追加の命令に対する結果のサイズは、それほど制限されることなく、また、命令を実行した上で結果オペランドが置かれる専用記憶部をそれほど利用することもないだろう。その専用記憶部は、演算器を備える論理回路と密接につながれたローカルメモリで実行されるだろう。
本発明は、拡張内蔵メモリからオペランドを受け取ることと、拡張内蔵メモリの中へ結果を預けることの、両方の演算を実行するための方法と装置を含む従来の実施形態を、拡張する。本発明は、アクセスと計算の複数の連続した周期において、拡張内蔵メモリを自立的に読み出して更新する演算を含む。本発明はまた、同時に2又はそれ以上独立してアドレス指定される、拡張内蔵メモリを用いる演算をも、記述している。
拡張演算を使用する典型的な命令は、大きいレベルのスイッチング(拡張スイッチング(Wide Switch))と、バイト又は大きいテーブル探索(拡張変換(Wide Translate))と、拡張行列乗算(Wide Multiply Matrix)と、拡張抽出行列乗算(Wide Multiply Matrix Extract)と、拡張即時抽出行列乗算(Wide Multiply Matrix Extract Immediate)と、拡張浮動小数点行列乗算(Wide Multiply Matrix Floating point)と、拡張ガロア行列乗算(Wide Multiply Matrix Galois)とを実行する拡張命令を含む。
拡張演算を使用するさらなる典型的な命令は、繰り返し方程式を解き(拡張ソルブ・ガロア(Wide Solve Galois))、速い変形を実行し(拡張部分配列変形(Wide Transform Slice))、デジタルフィルター又は運動予測を計算し(拡張抽出畳込み(Wide Convolve Extract)、拡張浮動小数点畳込み(Wide Convolve Floating-point))、ビタビ(Viterbi)又はターボ符号(turbo codes)を復号化する(拡張復号化)拡張命令と、汎用テーブル探索と、相互接続(拡張ブーリアン(Wide Boolean))とを含む。
本発明の他の局面は、高精度な算術に目一杯使用されている乗算器アレイの、効率的な使用に対応している。ただし、乗算器アレイは、他の低い精度の演算にも、部分的にのみ使用されている。このことは、汎用レジスタ又は命令の一部分として指定された調整による動的なシフト量によって調整され、レジスタ又は命令部からの制御値によって丸められた、乗算の積又は積の合計の上位の一部分を抽出することによって、実現される。丸めは、
最近点への丸めと、切り捨てと、下向きの丸めと、上向きの丸めとを含む数種のタイプのどれであってもよい。桁あふれは、通常、出力結果において正確に表現することができる、最大値と最小値への結果に限定することによって操作される。
抽出がレジスタによって制御される場合、結果において適するサイズよりも、小さいビット数に丸めて限定することを許可することにより、結果のサイズは指定され得る。このことは、桁あふれと丸めを考慮せずに、次の演算における使用のために結果が基準化されることを許可する。結果として、性能は向上する。抽出がレジスタにより制御される、それらの例において、単一のレジスタ値は、オペランドのサイズと、結果のサイズとシフト量と、丸め制御とを定義する。単一のレジスタの中にそのような制御情報を置くことにより、さもなければ、命令が、再度の性能の改良とプロセッサの汎用性の強化を必要とするようなビット数以上に、命令のサイズは減じられる。典型的な命令は、アンサンブル抽出畳込み(Ensemble Convolve Extract)と、アンサンブル抽出乗算(Ensemble Multiply Extract)と、アンサンブル抽出加算乗算(Ensemble Multiply Add Extrac)と、アンサンブル抽出スケーリング加算(Ensemble Scale Add Extract)とである。Ensemble Scale Add Extract命令への特定の関連によって、レジスタの中で、抽出制御情報は、2つのベクトル被乗数の内容へのスカラ乗数として使用される2つの値と結合される。この結合は、このように、命令のために必要なビット数を減らしながら、レジスタ数その他必要なものを減じる。
第1のデータパス幅を有する第1のメモリシステムと、それぞれが前記第1のデータパス幅より大きなデータパス幅を有する第2及び第3のメモリシステムとを備えるプログラム可能なプロセッサにおいて計算を実行する方法は、前記第1のデータパス幅を有する第1のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするステップと、前記第1のデータパス幅を有し、前記第2のメモリシステムにおいて前記第1のメモリオペランド部と連結されて第1の連結データを生成する第2のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするステップと、前記第1のデータパス幅を有する第3のメモリオペランド部を、前記第1のメモリシステムから前記第3のメモリシステムへコピーするステップと、前記第1のデータパス幅を有し、前記第3のメモリシステムにおいて前記第3のメモリオペランド部と連結されて第2の連結データを生成する第4のメモリオペランド部を、前記第1のメモリシステムから前記第3のメモリシステムへコピーするステップと、前記第1及び第2の連結データを使用して、単一命令の計算を実行するステップとを備えてもよい。
プログラム可能なプロセッサにおいて計算を実行する方法では、計算を実行するステップは、それぞれ幅が前記第1のデータパス幅より大きい前記第1の連結データの一部と前記第2の連結データの一部とを読み出し、前記第1の連結データの一部と前記第2の連結データの一部とを用いて計算を実行するステップを更に備えてもよい。
プログラム可能なプロセッサにおいて計算を実行する方法は、前記第1のメモリシステム内の前記第1及び第2の連結データのそれぞれのメモリアドレスを指定するステップを更に備えてもよい。
プログラム可能なプロセッサにおいて計算を実行する方法は、前記第1及び第2の連結データのそれぞれのメモリオペランドサイズとメモリオペランド形態を指定するステップを更に備えてもよい。
プログラム可能なプロセッサにおいて計算を実行する方法は、前記第2のメモリシステム内の前記第1の連結データと前記第3のメモリシステム内の前記第2の連結データとのそれぞれの有効性をチェックし、有効性が確認されれば、その次の命令に、前記第1及び第2の連結データを前記第1のメモリシステムからコピーすることなく使用することを許可するステップを更に備えてもよい。
プログラム可能なプロセッサにおいて計算を実行する方法は、前記第1の連結データに含まれる区分要素と前記第2の連結データに含まれる区分要素との間の畳込みを実行して、畳込みデータを生成し、前記畳込みデータの指定された部分フィールドを抽出し、抽出データを連結して前記演算器のデータパス幅と同じサイズの連結結果を生成するステップを更に備えてもよい。
第1のデータパス幅を有する第1のメモリシステムと、前記第1のデータパス幅よりも大きなデータパス幅を有する第2及び第3のメモリシステムとを備えるプログラム可能なプロセッサにおいて計算を実行する別の選択可能な方法は、前記第1のデータパス幅を有し、前記第2のメモリシステムにおいて前記第1のメモリオペランド部と連結されて第1の連結データを生成する第2のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするステップと、前記第1の連結データを使用して単一命令の計算を実行し、第2の連結データを生成するステップと、前記第1のデータパス幅を有し、前記第2の連結データの一部を含む第3のメモリオペランド部を、前記第3のメモリシステムから前記第1のメモリシステムへコピーするステップと、前記第1のデータパス幅を有し、前記第2の連結データの一部を含み、前記第3のメモリシステムにおいて前記第3のメモリオペランド部と連結される第4のメモリオペランド部を、前記第3のメモリシステムから前記第1のメモリシステムへコピーするステップとを備えてもよい。
プログラム可能なプロセッサにおいて計算を実行する別の選択可能な方法では、計算を実行するステップは、幅が前記第1のデータパス幅よりも大きい前記第1の連結データの一部を読み出し、前記第1の連結データの一部を用いて計算を実行するステップを更に備えてもよい。
プログラム可能なプロセッサにおいて計算を実行する別の選択可能な方法は、前記第1のメモリシステム内の前記第1及び第2の連結データのそれぞれのメモリアドレスを指定するステップを更に備えてもよい。
プログラム可能なプロセッサにおいて計算を実行する別の選択可能な方法は、前記第1及び第2の連結データのそれぞれのメモリオペランドサイズとメモリオペランド形態を指定するステップを更に備えてもよい。
プログラム可能なプロセッサにおいて計算を実行する別の選択可能な方法は、前記第2のメモリシステム内の前記第1の連結データと前記第3のメモリシステム内の前記第2の連結データとのそれぞれの有効性をチェックし、有効性が確認されれば、その次の命令に、前記第1の連結データを前記第1のメモリシステムからコピーすることなく使用することを許可するステップを更に備えてもよい。
計算を実行する別の選択可能な方法では、計算を実行するステップは、前記第1の連結データに含まれる区分要素の変換を実行して変換データを生成し、前記変換データの指定された部分フィールドを抽出して抽出データを生成し、前記抽出データを連結して前記第2の連結データを生成するステップを更に備えてもよい。
計算を実行する別の選択可能な方法では、計算を実行するステップは、ブール演算を用いて前記抽出データの一部を累積されたブールデータと結合し、ブール演算を用いて前記累積されたブールデータの区分要素を結合して、結合されたブールデータを生成し、前記結合されたブールデータから抽出されたデータの最上位ビットを確定して、前記最上位ビットの位置を含む結果をレジスタに返すステップを更に備えてもよい。
プログラム可能なプロセッサにおいて計算を実行する別の選択可能な方法は、前記第1及び第2の連結データに対応する第1及び第2の有効性情報を操作し、前記第1の連結データのメモリアドレスを指定する命令が完了した後で、前記第2の連結データの内容が、前記第1の連結データに代えて前記第1のメモリシステムへ供給されるステップを更に備えてもよい。
本発明によるプログラム可能なプロセッサは、第1のデータパス幅を有する第1のメモリシステムと、それぞれが前記第1のデータパス幅より大きなデータパス幅を有する第2及び第3のメモリシステムと、前記第1のデータパス幅を有する第1のメモリオペランド部を前記第1のメモリシステムから前記第2のメモリシステムへコピーするように、かつ、前記第1のデータパス幅を有し、前記第2のメモリシステムにおいて前記第1のメモリオペランド部と連結されて第1の連結データを生成する第2のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするように構成された第1のコピーモジュールと、前記第1のデータパス幅を有する第3のメモリオペランド部を前記第1のメモリシステムから前記第3のメモリシステムへコピーするように、かつ、前記第1のデータパス幅を有し、前記第3のメモリシステムにおいて前記第3のメモリオペランド部と連結されて第2の連結データを生成する第4のメモリオペランド部を、前記第1のメモリシステムから前記第3のメモリシステムへコピーするように構成された第2のコピーモジュールと、前記第1及び第2の連結データを用いて計算を実行するように構成された演算器とを備えてもよい。
プログラム可能なプロセッサにおいて、前記演算器は、幅が前記第1のデータパス幅よりも大きい前記第1及び第2の連結データのそれぞれの一部を読み出し、前記第1及び第2の連結データのそれぞれの一部を用いて計算を実行するように構成されていてもよい。
プログラム可能なプロセッサにおいて、前記演算器は、前記第1のメモリシステム内の前記第1及び第2の連結データのそれぞれのメモリアドレスを指定するように構成されていてもよい。
プログラム可能なプロセッサにおいて、前記演算器は、前記第1及び第2の連結データのそれぞれのメモリオペランドサイズとメモリオペランド形態とを指定するように構成されていてもよい。
プログラム可能なプロセッサは、前記第2のメモリシステム内の前記第1の連結データと前記第3のメモリシステム内の前記第2の連結データとのそれぞれの有効性をチェックし、有効性が確認されれば、その次の命令に、前記第1及び第2の連結データのそれぞれを前記第1のメモリシステムからコピーすることなく使用することを許可する制御部を更に備えてもよい。
プログラム可能なプロセッサにおいて、前記演算器は、前記第1の連結データに含まれる区分要素と前記第2の連結データに含まれる区分要素との間でを畳込みを行って、畳込みデータを生成し、前記畳込みデータの指定された部分フィールドを抽出し、抽出データを連結して前記演算器のデータパス幅と同じサイズの連結結果を生成するように構成されていてもよい。
プログラム可能なプロセッサにおいて、前記演算器は、前記第2の連結データに含まれる係数を用いて前記第1の連結データに含まれる区分要素の変換を実行して変換データを生成し、前記変換データの指定された部分フィールドを抽出して抽出データを生成し、前記抽出データを連結するように構成されていてもよい。
本発明による別の選択可能なプログラム可能なプロセッサは、第1のデータパス幅を有する第1のメモリシステムと、それぞれが前記第1のデータパス幅より大きなデータパス幅を有する第2及び第3のメモリシステムと、前記第1のデータパス幅を有する第1のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするように、かつ、前記第1のデータパス幅を有し、前記第2のメモリシステムにおいて前記第1のメモリオペランド部と連結されて第1の連結データを生成する第2のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするように構成された第1のコピーモジュールと、前記第1のデータパス幅を有し第2の連結データの一部を含む第3のメモリオペランド部を、前記第3のメモリシステムから前記第1のメモリシステムへコピーするように、かつ、前記第1のデータパス幅を有し、第2の連結データの一部を含み、前記第3のメモリシステムにおいて前記第3のメモリオペランド部と連結される第4のメモリオペランド部を、前記第3のメモリシステムから前記第1のメモリシステムへコピーするように構成された第2のコピーモジュールと、前記第1及び第2の連結データを用いて計算を実行するように構成された演算器とを備えてもよい。
別の選択可能なプログラム可能なプロセッサにおいて、前記演算器は、幅が前記第1のデータパス幅よりも大きい前記第1の連結データの一部を読み出し、前記第1の連結データの一部を用いて計算を実行するように構成されていてもよい。
別の選択可能なプログラム可能なプロセッサにおいて、前記演算器は、前記第1のメモリシステム内の前記第1及び第2の連結データのそれぞれのメモリアドレスを指定するように構成されていてもよい。
別の選択可能なプログラム可能なプロセッサにおいて、前記演算器は、前記第1及び第2の連結データのそれぞれのメモリオペランドサイズとメモリオペランド形態とを指定するように構成されていてもよい。
別の選択可能なプログラム可能なプロセッサは、前記第2のメモリシステム内の前記第1の連結データの有効性をチェックし、有効性が確認されれば、その次の命令に、前記第1の連結データを前記第1のメモリシステムからコピーすることなく使用することを許可する制御部を更に備えてもよい。
別の選択可能なプログラム可能なプロセッサにおいて、前記演算器は、前記第1の連結データに含まれる区分要素の変換を実行して変換データを生成し、前記変換データの指定された部分フィールドを抽出して抽出データを生成し、前記抽出データを連結して前記第2の連結データを生成するように構成されていてもよい。
別の選択可能なプログラム可能なプロセッサにおいて、前記演算器は、ブール演算を用いて前記抽出データの一部を累積されたブールデータと結合し、ブール演算を用いて前記累積されたブールデータの区分要素を結合して、結合されたブールデータを生成し、前記結合されたブールデータから抽出されたデータの最上位ビットを確定して、前記最上位ビットの位置を含む結果を供給するように構成されていてもよい。
別の選択可能なプログラム可能なプロセッサは、前記第1及び第2の連結データに対応する第1及び第2の有効性情報を操作し、前記第1の連結データのメモリアドレスを指定する命令が完了した後で、前記第2の連結データの内容が、前記第1の連結データに代えて前記第1のメモリシステムへ供給されるように構成されている制御部を更に備えてもよい。
(プロセッサ・レイアウト)
最初に、図1を参照すると、汎用プロセッサが、ブロック図で示されている。図1において、それぞれがアクセス命令フェッチキューA−Queue101〜104を備えるアクセスユニットが、4つ示されている。アクセス命令フェッチキューA−Queue101〜104はそれぞれ、アクセスレジスタファイルAR105〜108に接続され、アクセスレジスタファイルAR105〜108は、それぞれが2つのアクセス演算器A109〜116に接続されている。例示的な実施形態では、プロセッサのそれぞれのスレッドは、64個の汎用レジスタに似ていると言える(例:AR105〜108とER125〜128)。アクセスユニットは、同時に発生する4つの実行スレッドに対して、独立して動作する。それぞれのアクセスユニットは、算術命令及び分岐命令を実行することによってプログラム制御フローを処理し、ロード命令及びストア命令を実行することによってメモリにアクセスする。これらのアクセスユニットはまた、拡張(wide)オペランド命令に拡張オペランド指定子を提供する。これらの8つのアクセス演算器A109〜116は、アクセスレジスタファイルAR105〜108のための結果と、共有メモリシステム117〜120へのメモリアドレスを生成する。
1つの実施形態では、メモリ階層は、チップ上の命令メモリと、チップ上のデータメモリと、命令キャッシュと、データキャッシュと、仮想メモリ機構と、外部装置へのインタフェースとを備える。図1において、メモリシステムは、結合キャッシュ・ニッチメモリ117と、外部バスインタフェース118と、装置の外部に、2次記憶119と、入出力デバイスを有する主記憶装置120とを備える。メモリシステム117〜120からフェッチされた記憶内容は、アクセスユニットでは処理されない実行命令と結び付けられ、4つの実行命令キューE−Queue121〜124に入れられる。拡張命令のために、メモリシステム117〜120からフェッチされた記憶内容はまた、バス137によって、拡張オペランドマイクロキャッシュ132〜136に供給される。E−queue121〜124からの命令とメモリデータは、実行レジスタファイル125〜128に与えられ、実行レジスタファイル125〜128は、実行レジスタファイルソースオペランドをフェッチする。命令は、実行装置であるアービトレーション装置Arbitration131に連結されている。アービトレーション装置Arbitration131は、4つのスレッドからのどの命令を、利用可能な実行演算器であるE141,149、X142,148、G143〜144,146〜147、T145に転送すべきであるか選択をする。実行演算器E141,149と、実行演算器X142,148と、実行演算器T145はそれぞれ、拡張オペランドマイクロキャッシュ132〜136を備え、拡張オペランドマイクロキャッシュ132〜136はそれぞれ、バス137によってメモリシステム117に接続されている。
実行演算器G143〜144とG146〜147は、単純な算術命令及び論理命令並びにソースと結果のオペランドが特定のシンボルサイズの値のグループを表すグループ演算を実行するグループ算術論理演算器である。これらのオペランドは、分割され独立して演算が施され、結果が連結される。本発明では特定のデータパスのサイズに限定される意図はないのだが、現在のところ好ましい実施形態では、データパスは128ビットの幅である。
実行演算器X142,148は、クロスバースイッチ命令を実行するクロスバースイッチ装置である。クロスバースイッチ装置X142,148は、取り決め、入れ換え、シフト、拡張、圧縮、かき混ぜ、順序変更、リバースに加え、以下に論じられる拡張演算を含むデータ取り扱い演算を、データパスソースオペランドバス151〜158を経由して供給されるデータストリームに対して実行する。本発明の第1の局面の鍵となる要素において、少なくとも1つのそのような演算が、汎用レジスタとデータパスの幅よりも大きい幅に広げられる。
実行演算器E141,149は、データパスソースオペランドバス151〜158から分割され、整数、浮動小数点、多項式またはガロア体の値として扱われるオペランドのグループ又はベクトルの乗算及び行列乗算を含むアンサンブル命令を、大きなアレイを有する乗算器を使用して実行するアンサンブルユニットである。行列乗算命令と他の演算は、拡張オペランドマイクロキャッシュ132,136に読み込まれた拡張オペランドを利用する。
実行演算器T145は、レジスタオペランドから分割されたオペランドのグループ上で、テーブル探索の演算を実行し、結果を連結する変換器である。拡張変換命令は、拡張オペランドマイクロキャッシュ134に読み込まれる拡張オペランドを利用する。
実行演算器E141,149と、実行演算器X142,148と、実行演算器T145はそれぞれ、以下に論じられるように、拡張オペランドを含むソースオペランドを記憶できるように専用記憶部を備える。拡張マイクロキャッシュとして考えられる専用記憶部132〜136は、通常は、データパスソースオペランドバス151〜158に関連付けられるデータパスオペランドの幅の倍数である幅を有している。このように、もしデータパス151〜158の幅が128ビットならば、専用記憶部132〜136は、256ビット又は512ビット又は1024ビット又は2048ビットの幅を有していてもよい。拡張オペランドが専用記憶部の幅の全体を使用することは必ずしも必要ではないが、専用記憶部の幅全体を利用するオペランドをここでは拡張オペランドと称する。メモリシステム117〜120の出力のメモリデータパスと、実行演算器141〜149の入力の演算器データパスとの幅よりも大きい一部分を、拡張オペランドが使用すれば十分であり、これらの2つが結合されたものの幅よりも必ずしも大きい必要はない。専用記憶部132〜136の幅は、メモリオペランドバス137の幅よりも大きいので、拡張オペランドの一部分が、専用記憶部132〜136の中へ連続して読み込まれる。しかしながら、一度読み込まれると、拡張オペランドはその後、ほぼ同時に使用され得る。演算器141〜149と、対応する実行レジスタ125〜128とが、データ演算器を構成しているということができる。その要素は、厳密には実装によって異なっていてもよい。
実行レジスタファイルER125〜128のソースオペランドは、ソースオペランドバス151〜154を使用して実行ユニット141〜145に、ソースオペランドバス155〜158を使用して実行ユニット145〜149に接続されている。実行ユニット141〜145からの演算器結果オペランドは、結果バス161を使用して実行レジスタファイルER125〜128に接続され、実行ユニット145〜149からの演算器結果オペランドは、結果バス162を使用して実行レジスタファイルに接続されている。
(拡張行列乗算(Wide Multiply Matrix))
本発明の拡張オペランドは、図2に示されているWide Multiply Matrix命令のような複雑な命令を実行する能力を提供する。また図2は、図3と同様に、二者択一の形式で理解することができる。図2と図3から理解することができるように、拡張オペランドは、例えば、データパス幅より大きい様々な大きさと形態の行列の乗算を許可する。図2の例は、128ビットのレジスタrdの中へ入れられる結果を生成するために、128ビットの大きさであるレジスタrbに含まれるベクトルによって乗算される、128×64ビットの大きさ(この例では512ビット)の、レジスタrcによって指定される行列を必然的に含む。
図2と次の同様な図で使用される表記は、水平と垂直の次元に映し出された2つのオペランドの交点での陰付きの部分での乗算を例示する。合計する箇所が、合計された乗算の積の位置で黒く塗られた点を接続する線上の部分として描かれている。合計する箇所で減じられる積は、陰付きの部分での中でマイナスの符号で指し示される。
浮動小数点の値で命令が機能するとき、描かれた乗算と合計は、浮動小数点での乗算と合計である。例示的な実施形態では、中間の結果を丸めることなしに、あたかも無限の正確さで計算され、それから1回だけ丸められたかのように最終的な結果の計算をして、これらの演算が実行される。
乗算器の例示的な実施形態では、回路面積と遅延を最小化するために、桁上げ保存加算の形式における積を計算することができ、ブースエンコーディングを使用して乗数rbを符号化することができるということが、理解することができる。そのような合計する箇所の例示的な実施形態では、合計することによる遅延を最小化するために、例えば、2進化基数ツリー又は高度な基数ツリーにおける加算の実行などによる、計算による遅延を最小化するための個別の配慮とともに、任意の順序で乗数を合計することができ、加算を実行するための桁上げ保存加算器を使用することができるということが、理解することができる。また、例示的な実施形態では、中間の結果における定点又は浮動小数点での桁あふれが起こらないような、中間の十分な正確さを使用して合計することを実行するということも、理解することができる。
同じ演算がこれらの2つの図において描かれているように、図2で使用される表記と、図3でのより以前の図式化された表記との関係が明確なことが、図2と図3の比較により言える。
(拡張オペランド)
プロセッサのデータパス幅より大いに大きいオペランドは、メモリ指定子を指定するための汎用レジスタを使用することにより供給されるが、いくつかの実施形態では、2以上の数個のデータデータパス幅は、専用記憶部の中に読み込まれる。メモリ指定子は通常、演算が行われるデータの行列のサイズと形態とともに、メモリアドレスも一緒に含む。メモリ指定子又は拡張オペランド指定子は、図5からより良く理解することができる。図5の中で、指定子500はアドレスに見え、加えて、データのサイズ(size)/2を表現する領域と、さらに、データの幅(width)/2を表現する領域とがあり、サイズとは、データの深さ(depth)と幅の積である。アドレスは、例えば64バイトなど、指定されたサイズにアラインされ、よって、複数の下位のビット(例えば6ビット)はゼロである。指定子500はこのように、アドレス用の最初の領域505と、加えて、下位6ビット内でサイズと幅を表す2つの領域を含むことが分かる。
(指定子の復号化)
指定子500の復号化は、図6からより良く理解することができる。図6では、図に挙げられた指定子600は、複数の下位のビットを備えた領域610と一緒にアドレス領域605で作られている。ステップ615とステップ620に示されている一連の算術演算によると、幅/2を表現する領域610の一部が展開されている。625と630に示されている同様な一連のステップによると、tの値が復号化され、それらのステップでは、サイズとアドレスの両方を復号化し得る。アドレスがステップ645とステップ650において同様な方法で復号化される間に、サイズ/2を表現する領域610の一部は、ステップ635とステップ640で示されているように復号化される。
(拡張演算器)
拡張演算器は、図7からより良く理解することができる。図7では、レジスタ数700は、オペランドチェッカー705に供給される。拡張オペランド指定子710は、オペランドチェッカー705と通信を行い、また、定義されたメモリ幅を有するメモリ715をアドレス指定する。メモリアドレスは、複数のレジスタオペランド720Anを有し、レジスタオペランド720Anは、データ演算器725の専用記憶部714の一部分に蓄積される。図7に示される例示的な実施形態では、専用記憶部714は、8個の拡張オペランド部730A〜Hが拡張オペランドを形成するために専用記憶部の中に連続的に読み込まれるように、8個のデータパス幅に等しい幅を有することが分かる。図7には8個の拡張オペランド部が示されているが、本発明は、8又はデータパス幅の他の特定の倍数に限られるものではない。一旦、拡張オペランド部730A〜Hが連続的に読み込まれると、それらは、演算機構740によって、単一の拡張オペランド735として使用されてもよい。また、演算機構740としては、図1のどの要素を接続しても良い。その後、拡張オペランドの結果は、結果レジスタ745に供給される。本発明の好ましい実施形態においては、拡張オペランド745は、メモリ幅と同一の幅を有する。
一旦、拡張オペランドが専用記憶部714にうまく読み込まれると、本発明の第2の局面が評価され得る。この命令又は同じメモリアドレスを指定する他の似た命令の更なる実行によって、メモリオペランドが介在命令によって変更されているかどうかを確定する特定の状態のもとで、オペランド値を獲得するために専用記憶部を読むことができる。これらの状態に直面したと仮定すると、専用記憶部からのメモリオペランドフェッチは、演算器において、結果を生成しながら、1又はそれより多くのレジスタオペランドと結合する。結果のために必要な専用記憶部がないように、いくつかの実施形態においては、結果のサイズは汎用レジスタのサイズに限定される。しかしながら、いくつかの異なる実施形態においては、結果が拡張オペランドであって、さらに性能を増すものであってもよい。
拡張オペランド値が同じメモリアドレスを指定する次の命令によってアドレス指定されることを許可するために、様々な状態についてチェックし、考慮される必要がある。
それらの状態を以下に記す。
メモリストア命令はそれぞれ、専用記憶部のために記録されたメモリアドレスに対するメモリアドレスをチェックする。メモリストア命令が、専用記憶部714に記憶されたどのメモリアドレスに方向付けられてもデータが上書きされていることを示すことから、どの組み合わせであっても、記憶部は無効と印付けられる。
記憶部をアドレス指定するために使用されるレジスタ数が、記録される。もし、レジスタに書き込まれていない介在命令がない、又は、同じレジスタが次の命令で使用される場合は、記憶部は有効である。(ルール#1によって無効と印付けられた場合を除く)
もし、レジスタが変更されている、又は異なったレジスタ数が使用されている場合は、レジスタの値は、読み出され、専用記憶部のために記録されたアドレスに対して比較される。この場合は、レジスタの内容をフェッチすることが必要なことと、レジスタの幅がレジスタ数自身の幅よりも大きいため、#1よりも多くのリソースを使用する。もしアドレスが一致すると、記憶部は有効である。新しいレジスタ数は、専用記憶部のために記録される。
もし、状態#2又は#3に直面したと仮定すると、レジスタの内容は、汎用プロセッサのメモリをアドレス指定することと、専用記憶部を読み込むことに使用される。もし、専用記憶部が既に完全に読み込まれている場合は、専用記憶部の一部は、新しい値向けに場所を空けるために、必ず放棄される(犠牲にされる)。その後、新たに更新された専用記憶部を使用して、命令が実行される。アドレスとレジスタ数は、専用記憶部のために記録される。
上記のコンディションをチェックすることにより、専用記憶部のセーブとリストアの必要性がなくなる。加えて、もしプロセッサの状態が変化して、新しい状態では同じ専用記憶部を参照する拡張命令が使用できない場合は、元々の状態がリストアされると、ルール#3を使用して、専用記憶部の内容は、メモリからの値を更新せずに使用されることが許可される。拡張命令を実行することにより、専用記憶部の中の値は、メモリから読まれ、直接には修正されないので、値は、結果を汎用メモリに記憶することをしなくても、いつでも廃棄されることができる。この特性は、上記ルール#4の遂行を平易にする。
本発明の代替となる実施形態は、以下のルールに伴い、上記ルール#1に取って代わる。
1a.それぞれのメモリストア命令は、専用記憶部のために記録されたメモリアドレスに対するメモリアドレスをチェックする。汎用メモリと同様に、どの組み合わせであっても、専用記憶部は更新される。
上記ルール1a.の使用により、メモリストア命令は、変更されている専用記憶部のまさに一部だけを更新して、変更されていない残りの部分はそのままにして、専用記憶部を修正することができる。汎用メモリの更新を続けることにより、結果を汎用メモリの中に記憶しなくても、専用メモリの内容がいつでも放棄され得ることは、今なお正しい。このように、この選択により、ルール#4がより複雑化されることはない。この代替となる実施形態の利点は、メモリストア命令によって、専用記憶部が廃棄される(無効にされる)必要はないことである。
(拡張マイクロキャッシュデータ構造)
次に図9を参照すると、拡張マイクロキャッシュ又は専用記憶部114のデータ構造の例示的な配置が評価され得る。拡張マイクロキャッシュの内容wmc.cは、例示されたものでは数が8個だが、複数のデータパス幅900a〜nを形成することが分かる。内容のサイズwmc.sizeは、例示的な実施形態では10ビットとして示されている領域にも提供される。1ビットの「正しい内容」を示すフラグwmc.cvも、直近に使用されたスレッド、wmc.thのための2ビットの領域とともに、データ構造の中に含まれている。加えて、直近に使用されたレジスタ、wmc.regのための6ビットの領域が、例示的な実施形態の中で提供されている。さらに、正しいレジスタとスレッド、wmc.rtvのための1ビットの領域が提供されてもよい。
(ソフトウェアにおける拡張マイクロキャッシュ制御)
マイクロキャッシュが拡張オペランドで最初に書き込まれ、その後、高速な次の演算にとって正しいことが確認されるプロセスが、図8から評価され得る。プロセスは、800で始まり、レジスタの内容のチェックが記憶値wmc.rcに対して行われるステップ805に進む。真なら、ステップ810で、スレッドを確認するためのチェックが行われる。真なら、プロセスはそれから、レジスタとスレッドが正しいかどうかを確認するステップ815に進む。ステップ815で真と報告されたら、内容が正しいかどうかを確認するために、ステップ820でチェックが行われる。ステップ805から820までの全てが真を返したら、ステップ825で示されているように、次の命令は、現在の拡張オペランドを利用することができる。ステップ825の後、プロセスは終了する。しかしながら、ステップ805から820までのいずれかが偽を返すと、プロセスはステップ830に分岐する。プロセス830では、内容と物理アドレスとサイズがセットされる。ステップ805から820までの全てがステップ825又は830のいずれかに導くため、ステップ805から820までは、プロセスを変えなければどんな順序でも、又は同時にでも、実行されてもよい。プロセスはそれから、サイズがチェックされるステップ835に進む。物理アドレスが直接、仮想アドレスの使用と置き換えることができるように、このチェックは基本的に、変換器のサイズが拡張オペランドのサイズより大きいか等しいことを保証する。懸案事項は、いくつかの実施形態においては、拡張命令が、仮想メモリシステムがマッピングできる、最小限の領域より大きくてもよいことである。結果として、単一の隣接する仮想アドレスレンジが、物理アドレスと比較するタスクを複雑にしながら、多様なばらばらの物理アドレスレンジにマッピングされることが起こり得るであろう。拡張オペランドのサイズを決定することと、参照される領域をマッピングする仮想アドレスのサイズに対してサイズを比較することにより、拡張オペランドがマッピング領域より大きい場合に、例外の通知の割り込みで命令が中止される。このことは、プロセッサの安全な演算を保証する。ソフトウェアはその後、望ましい場合は実行を続けるために、より大きなサイズのマップを使用して、領域を再度マッピングすることができる。このように、サイズが受け入れられないとステップ835で報告された場合は、ステップ840で例外の通知の割り込みが生成される。サイズが受け入れられると、プロセスは、物理アドレスがチェックされるステップ845に進む。チェックが合うと報告されると、プロセスはステップ850に進み、ステップ850では、正しい内容とのフラグのチェックが行われる。ステップ845又は850でのいずれかのチェックが偽と報告した場合は、プロセスは分岐して、新しい内容が、それに応じてセットされるフィールドとともに、専用記憶部114の中に書き込まれる。ステップ850でのチェックで真と報告された否かにかかわらず、もしくは、新しい内容がステップ855で書き込まれたか否かにかかわらず、プロセスはステップ860に進む。ステップ860では、データの正当性を示すために適したデータがセットされ、ステップ860の後は、要求された機能がステップ825で実行されることができる。その後、プロセスは終了する。
(ハードウェアにおける拡張マイクロキャッシュ制御)
次に、ハードウェアの観点からのマイクロキャッシュ・コントローラーの演算を示している、図10と11を参照すると、マイクロキャッシュ・コントローラーの演算が、より理解されるかもしれない。ハードウェアの実装において、上記図8と9における連続的なステップに示される状態が、そのような拡張オペランドのチェックによる遅延を減らしながら、並行して実行されることができるのは明らかである。さらに、示されたハードウェアのコピーが、それぞれの拡張マイクロキャッシュに含まれていてもよい。またそれによって、命令によって代わりに参照されてもよいような全てのマイクロキャッシュは、並行して検査されることができる。上記図8と9の広範な考察を考慮すると、図10と11の更なる考察がもはや必要でないことがいえる。
前述の手法に対する多様な代替案は、拡張オペランドの使用のために確かに存在し、単一の命令が2つの拡張オペランドを受け取ることができる実装を含んで、オペランドを符号化分割し、対応する符号をともに乗算し、場合によっては合計の一部分を抽出した後に、単一のスカラ値又はレジスタファイルの幅の区分化された値のベクトルを生成するために、積を加算する。そのような命令は、動作の検出又はビデオ圧縮における動作の評価にとって、価値あるものとなり得る。そのような命令の更なる強化により、1つの拡張オペランドのアドレスが、専用記憶部において以前に指定された拡張オペランドの範囲内の場合、その範囲内では一部分さえ読み込まずに、必要に応じて範囲内の一部をシフトすることによって、専用記憶部は漸増的に更新され得る。そのような強化は、演算が、可能な値のスライディングウィンドウで実行されることを可能にする。そのような命令においては、漸増的に更新される第2の拡張オペランドがアラインされていない間に、1つの拡張オペランドは、アラインされ、サイズと形態の情報を提供する。
以下に記述されるWide Convolve Extract命令とWide Convolve Floating-point命令は、2つの拡張オペランドを受け取る命令の、1つの別の実施形態である。
本発明の他の別の実施形態は、オペランド結果が拡張オペランドである追加の命令を定義することができる。そのような強化によって、汎用レジスタのサイズよりも大きい結果があり得ないという制限がなくなり、さらに性能が強化される。このような拡張結果は、それらを作り出す演算器へ、局所的にキャッシュされることができるが、記憶部が再度利用される前に、かつ、仮想メモリシステムが拡張結果のアドレスのマッピングを変更する前に、汎用メモリシステムへコピーされる必要がある。読み込みの演算と他の拡張命令がこれらの拡張結果を読めるように、演算器の出力から入力へ戻すような拡張結果の転送が比較的容易になるように、データパスは追加される必要がある。しかし、拡張結果を拡張オペランドとして他の演算器に戻すように転送することが望まれる場合は、追加のデータパスを導入する必要があるかもしれない。
前述の通り、メモリオペランドのサイズと形態の指定は、アドレスの下位ビットを含む。現在の好ましい実装においては、そのようなメモリオペランドは、典型的には、サイズにおいて2のべき乗になり、そのサイズにアラインされる。一般的には、合計サイズの2分の1がメモリアドレスに加えられ(包括的に又は含められた又は排他的に又は排除された)、データ幅の2分の1がメモリアドレスに加えられる(包括的に又は含められた又は排他的に又は排除された)。これらのビットは、コントローラーが全ての必要なアドレスに進むことができるように、復号化され、メモリアドレスからはぎ取られることができるようになっている。このことにより、これらの命令に必要な明確なオペランド数は、メモリオペランドのサイズと形態とアドレスが単一のレジスタオペランド値に結合できるように、減少される。
以下のWide Switch命令と他の命令について後述される、別の例示的な実施形態においては、拡張オペランド指定子は、任意のサイズと形態の指定子として述べられる。そのようなものとして、指定子の値の省略によって、特定の命令の属性から定義される既定のサイズ又は形態が得られる。
以下のWide Convolve Extract命令について後述される、別の例示的な実施形態においては、拡張オペランド指定子は、強制的なサイズと形態の指定子を含む。指定子の値の省略によって、命令を中止する例外の通知がもたらされる。特に、実装よりも大きいサイズ又は形態の指定は、拡張オペランドメモリの限られたサイズに、サイズと形態の記述子が、正しい指定子値が位置するかもしれない限られたビットの範囲内のみで検索されるような、同様の例外において生じてもいいように、限られたリソースによって許可する。このことは、例外の通知が検出された状態において、実装よりも大きい指定子値を必要とするソフトウェアが結果を供給できることを保証するために、使用されることができる。例えばそれは、複数のプロセッサの同じ命令の組み合わせの実装が、能力において異なる場合である。またこのことにより、より大きい値に対する拡張オペランドのサイズと形態の上向きの互換性がある拡張が、同じ命令の組み合わせの拡張された実装において、認められる。
別の例示的な実施形態においては、拡張オペランド指定子は、サイズと形態のパラメータの値に直線的に結び付けられる以外の別の表示において、サイズと形態の指定子を含む。例えば、指定子の下位ビットは、00なら128の値、01なら256の値、10なら512の値、11なら1024の値を伝送する2ビットの領域のような、対数的にその値に関係付けられる固定サイズのバイナリ値を含んでもよい。固定サイズ領域の使用は、例えば、より最新の上向きの互換性のあるプロセッサの実装において指定され得る最大値を、制限する。
以下のテーブルは、以下に参照される図中の擬似コードで使用される、算術的で記述的な注釈を描いている。
Figure 2007531072
(拡張演算)
本発明で定義される拡張命令の個々の例は、大きいレベルのスイッチングを実行するWide Switch命令を含む。Wide Switch命令としては、バイト(又は大きい)テーブル探索を実行するWide Translate命令、Wide Multiply Matrix、Wide Multiply Matrix ExtractとWide Multiply Matrix Extract Immediateと(前述の)、Wide Multiply Matrix Floating-pointとWide Multiply Matrix Galois(同様に前述の)が挙げられる。以下で、典型的な命令にとっての個々のサイズに焦点を当てて論じながら、本発明が個々の幅に制限されないことが評価されるであろう。
(拡張スイッチ)
Wide Switch命令の例示的な実施形態は、図12A〜12Dに示されている。例示的な実施形態において、Wide Switchは、完全な幅(128ビット)のレジスタ結果を生成しながら、ビットレベルで2個までのレジスタ(256ビット)の内容を、再配置する。再配置を制御するために、ビット位置当たり8ビットから成る、単一のレジスタに指定された拡張オペランドが使用される。それぞれの結果のビット位置のために、それぞれのビット位置のための8個の拡張オペランドのビットは、結果の中に入れることができる256個のソースレジスタのビットのいずれかを選択する。128バイトより小さい拡張オペランドのサイズが指定された場合、メモリオペランドが、それぞれの符号で同じ演算を実行しながら、オペランドサイズの符号の中でビット選択を指定するために、メモリオペランドの上位ビットは、結果のビット位置に対応する値に置き換えられる。
例示的な実施形態において、メモリからの大きいオペランドと汎用レジスタからの第2のオペランドをフェッチし、オペランドの中のビットのパーティション上の演算のグループを実行し、汎用レジスタに結果を入れながら結果を一緒に連結するために、これらの命令は、汎用レジスタからのアドレスを取得する。Wide Switch命令のフォーマット1210の例示的な実施形態は、図12Aに示されている。
Wide Switch命令のスキーマ1230の例示的な実施形態は、図12Bに示されている。例示的な実施形態において、レジスタrcの内容は、仮想アドレスapdと、任意でオペランドサイズを指定し、指定されたサイズの値は、メモリから読み込まれる。第2の値は、レジスタrdとrbの内容と結合される。それぞれの擬似コードのビット位置のために、メモリの値からの8個の擬似コードのビットは、第2の値からの単一の結果ビットを選択するために使用される。結果のグループは、結合され、レジスタraの中に置かれる。
例示的な実施形態において、仮想アドレスは、128バイトにアラインされるか、又は、アラインされたアドレスの合計になり、バイトにおいてメモリオペランドの2分の1のサイズになる必要がある。アラインされたアドレスは、バイトで表現された正確な倍数になる必要がある。メモリオペランドのサイズは、8又は16又は32又は64又は128バイトでなければならない。もしアドレスが正確でないなら、「仮想アドレスに許可されていないアクセス」という例外の通知が発生する。128ビットより小さいサイズが指定された場合は、同じメモリオペランドがオペランドサイズの符号の中でのビット選択を指定し、同じ演算がそれぞれの符号において実行されるように、メモリオペランドの上位ビットが、ビット位置に対応した値に取って代わられる。
Wide Switch命令の擬似コード1250の例示的な実施形態は、図12Cに示されている。Wide Switch命令の例外の通知1280の例示的な実施形態は、図12Dに示されている。
(拡張変換)
Wide Translate命令の例示的な実施形態は、図13A〜13Dに示されている。例示的な実施形態において、Wide Translate命令は、256エントリーまでの深さのテーブルと、128ビットまでの幅とを指定するために、拡張オペランドを使用する。レジスタの内容は、1又は2又は4又は8バイトのオペランドに分割され、パーティションは、並行してテーブルから値を選択するために使用される。テーブルの深さと幅は、上記の通り、拡張オペランドのサイズと形態を指定することにより、選択される。
例示的な実施形態において、これらの命令は、汎用レジスタに結果を入れながら、メモリからの大きなオペランドと汎用レジスタからの第2のオペランドをフェッチし、オペランドの中のビットのパーティション上の演算のグループを実行し、結果を一緒に連結するために、汎用レジスタからアドレスを取得する。Wide Translate命令のフォーマット1310の例示的な実施形態は、図13Aに示されている。
Wide Translate命令のスキーマ1330の例示的な実施形態は、図13Bに示されている。例示的な実施形態において、レジスタrcの内容は、仮想アドレスとして使用され、指定されたサイズの値は、メモリから読み込まれる。第2の値は、レジスタrbの内容である。値は、指定されたサイズのオペランドのグループに分割される。値の第2のグループの下位バイトは、値のグループを生成しながら、1以上の項目又は第1の値より構成されたより多くのテーブルを選択するためのアドレスとして使用される。結果のグループは、連結され、レジスタrdの中に入れられる。
例示的な実施形態において、既定では、テーブルの全体幅は128ビットである。グループサイズよりも小さいが、128又は64又は32又は16又は8ビットのテーブルの全体幅は、バイトでの望ましいテーブルの全体幅を、16又は8又は4又は2又は1の指定されたアドレスへ加えることによって指定されてもよい。128ビットより少ない値が指定された場合は、テーブルは128ビット幅を満たすまで繰り返す。
例示的な実施形態において、それぞれのテーブルの既定の深さは、256項目、又はバイトでは、ビットのグループのサイズの32倍である。演算は、アドレスにメモリオペランドサイズの2分の1を加えることにより、4又は8又は16又は32又は64又は128又は256項目のテーブルを指定してもよい。テーブルのインデックス値は、テーブルの指定された一部分のみ使用されることを保証するために、マスクされる。ちょうど2項目のテーブルは、指定されることはできない。もし2項目のテーブルが望ましいならば、項目をレジスタに読み込み、テーブルの項目を選択するためにG.MUXを使用することが推奨される。
例示的な実施形態において、小さい深さのテーブルでの命令が、大きい深さのテーブルでの命令によって既に初期化されたテーブル項目にアクセスできるように、テーブル全体の初期化に失敗することは、潜在的なセキュリティホールを招く。このセキュリティホールは、テーブル全体を初期化すること、又は、余計なサイクルが必要であっても、テーブルの初期化された部分のみが使用されるようにインデックスビットをマスクすること、これらのうち、いずれかによってクローズされてもよい。例示的な実施形態は、即座に128のテーブル項目と同じだけ書き込むことにより、サイクルの中で不利益なしに、テーブル全体を初期化してもよい。一度に1項目のみへの書き込みでのテーブル全体の初期化では、テーブルがより小さくても、256サイクルの書き込みを必要とする。インデックスビットをマスクする方法が好ましい解決法である。例示的な実施形態において、256項目以上に大きいテーブルに対してのこの命令が、プロセッサが128ビットを満たすのに十分に独立した読み込み命令を実行するような、汎用メモリ変換機能に拡張されてもよいことを、インデックスビットのマスクは示唆する。このように、この機能の16ビット版と32ビット版と64ビット版は、8,4,2の取り消し命令と、8又は4又は2のインデックス読み込み命令と、7又は3又は1のグループ抽出命令と同等の内容を実行する。言い換えると、この命令は、既存の命令23又は11又は5と同じように強力である。8ビット版は、既存の命令47に取って代わる単一サイクルの演算である。よって、これらの拡張は、さほど強力でなく、それにもかかわらず、このことは、読み込みタイミング当たり1サイクルであっても、2命令同時発行可能なプロセッサにおいて少なくとも50%の改良になる。このことを可能にするために、既定のテーブルサイズは、この命令の16ビット版と32ビット版と64ビット版向けに、65536と2の32乗と2の64乗となる。
例示的な実施形態において、この命令のビッグ・エンディアン版のために、以下の定義において、レジスタrbの内容が補完される。このことは、インデックスがゼロの場合に、最も低く位置付けられたテーブル項目が選択されるように、テーブルを編成することが望ましいことを示している。ロジックの遂行において、ビッグ・エンディアン版やリトル・エンディアン版とは異なるようにテーブルメモリを読み込むことによって、具体的には、インデックスが命令のビッグ・エンディアン版にとってのゼロである場合に、最も高く位置付けられたテーブル項目が選択されるように、テーブルをメモリの中に読み込むことによって、インデックスの補完は避けられ得る。ロジックの遂行の例示的な実施形態において、ビッグ・エンディアン版とリトル・エンディアン版とは異なるようにテーブルメモリを読み込むことによって、インデックスの補完は避けられ得る。インデックスの補完を避けるために、テーブル項目が命令のビッグ・エンディアン版でテーブルに書き込まれているアドレスを補完することによって、テーブルメモリは、命令のビッグ・エンディアン版とは異なるように読み込まれる。
例示的な実施形態において、仮想アドレスは、4096バイトにアラインされるか、もしくは、アラインされたアドレスとバイトでのメモリオペランドの2分の1のサイズと(又は)バイトでの望ましいテーブルの全体幅の合計のうち、いずれかにされなければならない。アラインされたアドレスは、バイトで表されたサイズの正確な倍数にされなければならない。メモリオペランドのサイズは、4から4096バイトまでの2のべき乗にならなければならないが、少なくともグループサイズの4倍で、かつ全体のテーブル幅の4倍でなければならない。アドレスが正しくない場合は、「仮想アドレスによる許可されていないアクセス」という例外の通知が発生する。
例示的な実施形態において、拡張変換(W. TRANSLATE. 8. L or W. TRANSLATE. 8. B)命令は、深さにおいては16項目(vsize=16)で、1バイト(gsize=8 bits)のグループサイズで、8バイト(wsize=64 bits)の幅である変換テーブルを指定する。アドレスは、テーブル(64)のバイトでの2分の1のサイズを加えることと、アドレス仕様におけるテーブルアドレスにテーブル幅(8)のバイトにおけるサイズを加えることにより、全体のテーブルサイズ(msize=1024 bits=vsize*wsize)とテーブル幅(wsize=64 bits)を指定する。オペランドの128ビットが128ビットの結果を生成しながら即座に実行されるように、命令は、データパスの上位と下位64ビットの中で、このテーブルの複製を作り出すことになる。
Wide Translate命令の擬似コード1350の例示的な実施形態は、図13Cに示されている。Wide Translate命令の例外の通知1380の例示的な実施形態は、図13Dに示されている。
(拡張行列乗算(Wide Multiply Matrix))
Wide Multiply Matrix命令の例示的な実施形態は、図14A〜14Eに示されている。例示的な実施形態において、Wide Multiply Matrix命令は、64ビットまでの(レジスタファイルとデータパス幅の2分の1)幅と符号のサイズ当たり128ビットまでの深さとの値の行列を指定するために、拡張オペランドを使用する。汎用レジスタ(128ビット)の内容は、ソースオペランド符号のサイズの2倍の符号の128ビットまでの幅のベクトルを生成しながら、ソースオペランドとして使用され、符号のベクトルの中へ分割され、行列と乗算される。行列の幅と深さは、上述の通り、拡張オペランドのサイズと形態を指定しながら、選択される。命令の範囲内での制御は、符号を付けられ又は混合符号を付けられ又は符号を付けられないで又は複素の又は多項式のオペランドの指定を、許可する。
例示的な実施形態において、これらの命令は、汎用レジスタに結果を入れながら、メモリからの大きなオペランドと汎用レジスタからの第2のオペランドをフェッチし、オペランドの中のビットのパーティション上の演算のグループを実行し、結果を一緒に連結するために、汎用レジスタからアドレスを取得する。Wide Multiply Matrix命令のフォーマット1410の例示的な実施形態は、図14Aに示されている。
Wide Multiply Matrix命令のスキーマ1430と1460の例示的な実施形態は、図14Bと14Cに示されている。例示的な実施形態において、レジスタrcの内容は、仮想アドレスとして使用され、指定されたサイズの値は、メモリから読み込まれる。第2の値は、レジスタrbの内容である。値は、指定されたサイズのオペランドのグループの中へ分割される。第2の値は、結果の値のグループを生成しながら、第1の値と乗算され、それから合計される。結果の値のグループは、連結され、レジスタrdの中に入れられる。
例示的な実施形態において、メモリ乗算命令(W.MUL.MAT, W.MUL.MAT.C, W.MUL.MAT.M, W.MUL.MAT.P, W.MUL.MAT.U)は、64×128ビットである8192ビットまでの区分乗算アレイを実行する。アレイの幅は、64ビット又は32ビット又は16ビットに制限され得るが、仮想アドレスオペランドである4又は2又は1に、バイトにおける望ましいサイズの2分の1を加えることにより、グループサイズの2倍より小さくはならない。
例示的な実施形態において、仮想アドレスは、1024/gsize bytes(or 512/gsize for W.MUL.MAT.C)(with gsize measured in bits)にアラインされるか、又は、アラインされたアドレスとメモリオペランドのバイトにおけるサイズの2分の1と(又は)バイトにおける結果のサイズの4分の1との合計にならなければならない。アラインされたアドレスは、バイトで表されたサイズの正確な倍数にならなければならない。もしアドレスが正しくない場合は、「仮想アドレスによって許可されていないアクセス」という例外の通知が発生する。
例示的な実施形態において、ensemble-multiply-sum-octlets命令(E. MUL. SUM. type. 64)が、メモリからよりもむしろ128ビットレジスタから乗数が供給される点を除いて同じ演算を実行するように、wide multiply octlets命令(W.MUL.MAT.type.64, type=NONE M U P)は、遂行されず、予約命令例外を発生させる。同様に、wide-multiply-complex-quadlets命令(W.MUL.MAT.C.32)の代わりに、ensemble-multiply-complex-quadlets命令(E. MUL. SUM. C. 32)を使用すべきである。
図14Bに示されるように、wide-multiply-doublets(W.MUL.MAT, W.MUL.MAT.M, W.MUL.MAT.P, W.MUL.MAT.U)の例示的な実施形態は、積(hm31+gm27+... +bm7+am3... hm28+gm24+... +bm4+amO)を生成しながら、メモリ(m31 m30... ml mO)をベクトル(h g f e d c b a)と乗算する。
図14Cに示されるように、wide-multiply-matrix- complex-doublets命令(W.MUL.MAT.C)の例示的な実施形態は、積(hml4+gml5+... +bm2+am3... hml2+gml3+...+bmO+aml hml3+gml2+...bml+amO)を生成しながら、メモリ(ml5 ml4... ml mO)をベクトル(h g f e d c b a)と乗算する。
Wide Multiply Matrix命令の擬似コード1480の例示的な実施形態は、図14Dに示されている。Wide Multiply Matrix命令の例外の通知1490の例示的な実施形態は、図14Eに示されている。
(拡張抽出行列乗算(Wide Multiply Matrix Extract))
Wide Multiply Matrix Extract命令の例示的な実施形態は、図15A〜15Fに示されている。例示的な実施形態において、Wide Multiply Matrix Extract命令は、128ビット(レジスタファイルとデータパスの全体幅)までの幅の値の行列と、符号サイズ当たり128ビットまでの深さとを指定するために、拡張オペランドを使用する。汎用レジスタ(128ビット)の内容は、ソースオペランド符号に桁あふれなしで積の合計を表すための追加ビットを加えて、その2倍のサイズの符号の256ビットまでの幅のベクトルを生成しながら、ソースオペランドとして使用され、符号のベクトルの中へ分割され、行列と乗算される。結果はそれから、命令により指定された汎用レジスタの内容によって制御されるように、以下に述べられた方法(Enhanced Multiply Bandwidth by Result Extraction)で抽出される。汎用レジスタはまた、符号を付けられ、かつ混合符号を付けられ、かつ符号を付けられないで、かつ、バイト(8ビット)又はダブレット(16ビット)又はクワドレット(32ビット)又はヘックスレット(64ビット)のオペランドのサイズと同様に複素の、オペランドのフォーマットを指定する。
例示的な実施形態において、これらの命令は、汎用レジスタに結果を入れながら、メモリからの大きなオペランドと汎用レジスタからの第2のオペランドをフェッチし、オペランドの中のビットのパーティション上の演算のグループを実行し、結果を一緒に連結するために、汎用レジスタからアドレスを取得する。Wide Multiply Matrix Extract命令のフォーマット1510の例示的な実施形態は、図15Aに示されている。
Wide Multiply Matrix Extract命令のスキーマ1530と1560の例示的な実施形態は、図15Cと14Dに示されている。例示的な実施形態において、レジスタrcの内容は、仮想アドレスとして使用され、指定されたサイズの値がメモリから読み込まれる。第2の値は、レジスタrdの内容である。グループサイズと他のパラメータは、レジスタrbの内容から指定される。値は、値のグループを生成しながら、指定されたサイズのオペランドのグループに分割され、乗算され、合計される。値のグループは、サイズが指定である結果のグループを生成しながら、丸められ、指定された通りに制限される。結果のグループは、連結され、レジスタraのの中に入れられる。
例示的な実施形態において、演算のサイズは、レジスタrbの内容から決定される。乗算器の使用は絶え間ないが、メモリオペランドサイズは、逆に、グループサイズに関係付けられる。おそらく、このことにより、キャッシュの正当性がチェックされ得る。
例示的な実施形態において、reの下位ビットは、グループサイズと一致しなければならないサイズを示すために使用される。メモリオペランドはキャッシュされるので、このように、サイズを複合化するのに必要な時間を削りながら、rbからかrcからかにかかわらず、サイズもまたキャッシュされることができる。
例示的な実施形態において、Wide Multiply Matrix Extract命令(W.MUL.MAT.X.B, W.MUL.MAT.X.L)は、128×128ビットである16384ビットまでの区分化乗算器アレイを実行する。アレイの幅は、128又は64又は32又は16ビットに制限され得るが、バイトにおいて望ましいサイズの2分の1を仮想アドレスオペランド8又は4又は2又は1に加えることにより、グループサイズの2倍より小さくはならない。アレイは、128又は64又は32又は16ビットに垂直に制限され得るが、メモリオペランドのバイトにおいて望ましいサイズの2分の1を仮想アドレスオペランドに加えることにより、グループサイズの2倍より小さくはならない。図15Bに示されている通り、例示的な実施形態において、レジスタrbの内容のビット31〜0は、データが抽出される方法を制御するいくつかのパラメータを指定する。制御領域の位置と既定値は、ソース位置が動的計算用の固定制御値に加えられることを許可し、制御領域の下位16ビットが、単一のGCOPYI命令により、簡素化された抽出の格(cases)のいくつかにセットされることを許可する。
例示的な実施形態において、以下のテーブルは、それぞれのラベルの意味を表現する。
Figure 2007531072
例示的な実施形態において、9ビットのgssp領域は、数式「gssp= 512 4*gsize+spos」によって、グループサイズgsizeとソース位置sposとの両方を符号化する。グループサイズgsizeは、範囲1〜128の範囲内の2のべき乗である。ソース位置sposは、0〜(2*gsize)1の範囲内である。
例示的な実施形態において、s,n,m,tでの値とrnd領域は、以下の意味を持つ。
Figure 2007531072
例示的な実施形態において、仮想アドレスは、アラインされなければならない。すなわち、仮想アドレスは、バイトで表されたオペランドサイズの正確な倍数にならなければならない。アドレスがアラインされない場合、「仮想アドレスにより許可されていないアクセス」という例外の通知が発生する。
例示的な実施形態において、切り捨て(Z (zero) rounding)は、符号なしの抽出演算に対しては定義されておらず、もし試みられた場合、予約命令(ReservedInstruction)の例外の通知が、発生させられる。下向きの丸め(F (floor) rounding)は、符号なしの結果を適切に下方へ丸めるだろう。
図15Cに示されている通り、wide-multiply-matrix- extract-doublets命令(W.MUL.MAT.X.B or W.MUL.MAT.X.L)の例示的な実施形態は、丸められて指定された通りに制限された積[am7+bm15+cm23+dm31 +em39+fin47+gm55+hm63...am2+bm10+cm18+dm26+em34+fm42+gm50+hm58 am1+bm9+cm17+dm25+em33+6n41+gm49+hm57 am0+bm8+cm16+dm24+em32+fm40+gm48+hm56]を生成しながら、メモリ[m63 m62 m61... m2 m1 mO]をベクトル[h g f e d c b a]と乗算する。
図15Dに示されている通り、wide-multiply-matrix- extract-doublets命令(W.MUL.MAT.X with n set in rb)の例示的な実施形態は、丸められて指定された通りに制限されて積[am7+bm6+cm15+dm14+em23+fm22+gm31+hm30... am2-bm3+cm10-dm11+em18- fm19+gm26-hm27 am1+bm0+cm9+dm8+em17+fm16+gm25+hm24 amO-brn1+cmS-dm9+em16-f17+gm24 hm25]を生成しながら、メモリ[m31 m30 m29... m2 m1mO]をベクトル[h g f e d c b a]と乗算する。
Wide Multiply Matrix Extract命令の擬似コード1580の例示的な実施形態は、図15Eに示されている。Wide Multiply Matrix Extract命令の例外の通知1590の例示的な実施形態は、図15Fに示されている。
(行列拡張乗算即値抽出命令(Wide Multiply Matrix Extract Immediate))
Wide Multiply Matrix Extract Immediate命令の一実施形態を図16Aから図16Eに示す。一実施形態においては、Wide Multiply Matrix Extract Immediate命令は、抽出及びオペランドフォーマット、オペランドサイズがその命令のフィールドによって制御される以外は、上記と同様の演算を行う。この形式は、上記の命令の一般的な形式を符号化し、所要の制御情報でレジスタを初期化する必要はない。この命令内での制御により、符号付オペランド、混合符号付きオペランド、符号なしオペランド及び複素数オペランドの仕様が可能となる。
一実施形態において、これらの命令は、汎用レジスタからアドレスを取得し、メモリから大きいオペランドを、汎用レジスタから第2のオペランドをフェッチし、それらのオペランド内のビットのパーティションに対して一群の演算を行い、結果を連結させ、その結果を汎用レジスタに入れる命令である。図16Aは、Wide Multiply Matrix Extract Immediate命令のフォーマット1610の一実施形態を示す。
Wide Multiply Matrix Extract Immediate命令の概略図1630及び1660の一実施形態を図16Bと図16Cに示す。一実施形態において、レジスタrcの内容を仮想アドレスとして使用し、指定サイズの値をメモリから読み込む。第2の値は、レジスタrbの内容である。それらの値を、サイズが指定されたオペランドのグループに区分し、コラム内で乗算した後加算し、和のグループを生成する。この和のグループを丸めた後、制限し、指定された通りに抽出する。これにより、指定サイズごとに結果のグループを生成する。そして、この結果のグループを結合し、レジスタrdに入れる。すべての結果には、符号が付され、N(最も近い)丸めが使われる。また、すべての結果が、表現可能な最大の符号付の値に制限される。
一実施形態においては、wide-multiply-extract-immediate-matrix命令(W.MUL.MAT.X.I, W.MUL.MAT.X.I.C)は、16384ビット、つまり、128×128ビットまでの区分アレイ乗算を行う。アレイの幅は、バイトで示した所望のサイズの半分を仮想アドレスオペランド8、4、2又は1へ加えることによって、128ビット、64ビット、32ビット、又は16ビットに制限できるが、グループサイズの2倍よりも小さくは制限できない。アレイは、バイトで示した所望のメモリオペランドサイズの半分を仮想アドレスオペランドに加えることによって、縦方向には128バイト、64バイト、32バイト、又は16バイトに制限することができるが、グループサイズの2倍より小さくは制限できない。
一実施形態において、仮想アドレスは、2048/gsize(又は、W.MUL.MAT.X.I.Cについては、1024/gsize)バイトにアラインされているか、又は、アラインされたアドレスとバイト単位のメモリオペランドサイズの半分及び/又はバイト単位の結果のサイズの半分との和でなければならない。アラインされたアドレスはバイトで示したサイズの正確な倍数でなければならない。アドレスが有効でない場合、“仮想アドレスによるアクセス不許可”の例外が生じる。
図16Bに示すように、wide-multiply-extract-immediate-matrix-doublets命令(W.MUL.MAT.X.I.16)の一実施形態は、メモリ[m63 m62 m61 …m2 m1 m0]をベクトル[h g f e d c b a]で乗算する命令であり、指定どおりに丸められ、制限させた積[am7+bm15+cm23+dm31+em39+fm47+gm55+hm63…am2+bm10+cm18+dm26+em34+fm42+gm50+hm58 am1+bm9+cm17+dm25+em33+fm41+gm49+hm57 am0+bm8+cm16+dm24+em32+fm40+gm48+hm56]を得る。
図16Cに示すように、wide-multiply-matrix-extract-immediate-complex-doublets命令(W.MUL.MAT.X.I.C.16)の一実施形態は、メモリ[m31 m30 m29 …m2 m1 m0]をベクトル[h g f e d c b a]で乗算し、指定どおりに丸められ、制限された積[am7+bm6+cm15+dm14+em23+fm22+gm31+hm30…am2-bm3+cm10-dm11+em18-fm19+gm26-hm27 am1+bm0+cm9+dm8+em17+fm16+gm25+hm24 am0-bm1+cm8-dm9+em16-f17+gm24-hm25]を得る。
Wide Multiply Matrix Extract Immediate命令の疑似コード1680の一実施形態を図16Dに示す。Wide Multiply Matrix Extract Immediate命令の例外1590の一実施形態を図16Eに示す。
(行列浮動小数点拡張乗算(Wide Multiply Matrix Floating-point))
Wide Multiply Matrix Floating-point命令の一実施形態を図17A〜図17Eに示す。一実施形態において、Wide Multiply Matrix Floating-point命令は、乗算及び加算を浮動小数点演算で実行する以外は、上記と同様の形式で行列乗算を行う。サイズとしては、命令内で、ハーフ(16ビット)、シングル(32ビット)、ダブル(64ビット)、及び、ハーフ、シングル、ダブルの複素数サイズを指定することができる。
一実施形態においては、これらの命令は、汎用レジスタからアドレスを取得し、メモリから大きなオペランドを、汎用レジスタから第2のオペランドをフェッチし、それらのオペランド内で、ビットのパーティションに演算群を実行し、結果を連結させ、その結果を汎用レジスタに入れる命令である。図17Aは、Wide Multiply Matrix Floating point命令のフォーマット1710の一実施形態を示す。
Wide Multiply Matrix Floating-point命令の概略図1730及び1760の一実施形態を図17Bと図17Cに示す。一実施形態においては、レジスタrcの内容を仮想アドレスとして使用し、指定サイズの値はメモリから読み込む。第2の値は、レジスタrbの内容である。それらの値を、サイズが指定されたオペランドのグループに区分する。第2の値を第1の値で乗算した後加算し、結果値のグループを生成する。これらの結果値のブループを結合し、レジスタrdに入れる。
一実施形態において、wide-multiply-matrix-floating-point命令(W.MUL.MAT.F, W.MUL.MAT.C.F)は、16384ビット、つまり、128×128ビットまでの区画アレイ乗算を行う。アレイの幅は、バイトで示した所望のサイズの半分を仮想アドレスオペランド8、4、又は2へ加えることによって、128ビット、64ビット、32ビットに制限できるが、グループサイズの2倍よりも小さくは制限できない。アレイは、バイトで示した所望のメモリオペランドサイズの半分を仮想アドレスオペランドに加えることによって、縦方向には128バイト、64バイト、32バイト、又は16バイトに制限することができるが、グループサイズの2倍より小さくは制限できない。
一実施形態において、仮想アドレスは、2048/gsize(又は、W.MUL.MAT.C.Fについては、1024/gsize)バイトにアラインされているか、又は、アラインされたアドレスとバイトで表すメモリオペランドサイズの半分及び/又はバイト単位の結果のサイズの半分との和でなければならない。アラインされたアドレスはバイトで示したサイズの正確な倍数でなければならない。アドレスが有効でない場合、“仮想アドレスによるアクセス不許可”の例外が生じる。
図17Bに示すように、wide-multiply-matrix-floating-point-half命令(W.MUL.MAT.F)の一実施形態は、メモリ[m31 m30 …m1 m0]をベクトル[h g f e d c b a]で乗算する命令であり、積[hm31+gm27+…+bm7+am3…hm28+gm24+…+bm4+am0]を得る。
図17Cに示すように、wide-multiply-matrix-complex-floating-point-half命令(W.MUL.MAT.F)の一実施形態は、メモリ[m15 m14 …m1 m0]をベクトル[h g f e d c b a]で乗算する命令であり、積[hm14+gm15+…+bm2+am3…hm12+gm13+…+bm0+am1-hm13+gm12+…-bm1+am0]を得る。
Wide Multiply Matrix Floating-point命令の疑似コード1780の一実施形態を図17Dに示す。図FL0AT−1は、前記及び他の浮動小数点命令によって使用される追加の疑似コード演算を示す。Wide Multiply Matrix Floating-point命令の例外1790の一実施形態を図17Eに示す。
(行列拡張ガロア乗算(Wide Multiply Matrix Galois))
Multiply Matrix Galois命令の一実施形態を図18Aから図18Dに示す。一実施形態において、Wide Multiply Matrix Galois命令は、乗算と加算がガロア体算術で実行される以外は、上記と同様の形式で行列乗算を行う。8ビットのサイズを命令内に指定することができる。汎用レジスタの内容は、ガロア体剰余演算の実行に用いる多項式を指定する。この行列乗算の本質は新しいものである。これを以下詳細に説明する。
一実施形態において、これらの命令は、汎用レジスタからアドレスを取得し、メモリから大きいオペランドを、汎用レジスタから第2及び第3のオペランドをフェッチし、それらのオペランド内のビットパーティションに対して演算群を実行し、結果を連結させ、その結果を汎用レジスタに入れる。図18Aは、Wide Multiply Matrix Galois命令のフォーマット1810の一実施形態を示す。
Wide Multiply Matrix Galois命令の概略図1830の一実施形態を図18Bに示す。一実施形態において、レジスタreの内容を仮想アドレスとして使用し、指定サイズの値をメモリから読み込む。第2の値及び第3の値は、レジスタrdとレジスタrbの内容である。それらの値を、サイズが指定されたオペランドのグループに区分する。第2の値は、第1の値で多項式として乗算し、第3の値によって指定されたガロア体に縮小された(reduced)結果を得るとともに、結果のグループを得る。この結果の値のグループを結合し、レジスタraに入れる。
一実施形態においては、wide-multiply-matrix-Galois-bytes命令(W.MUL.MAT.G.8)は、16384ビット、つまり、128×128ビットまでの区分アレイ乗算を行う。アレイの幅は、バイトで示した所望のサイズの半分を仮想アドレスオペランド8、4、2又は1へ加えることによって、128ビット、64ビット、32ビット、又は16ビットに制限できるが、グループサイズである8ビットの2倍よりも小さくは制限できない。アレイは、バイトで示した所望のメモリオペランドサイズの半分を仮想アドレスオペランドに加えることによって、縦方向には128バイト、64バイト、32バイト、又は16バイトに制限することができるが、グループサイズである8ビットの2倍より小さくは制限できない。
一実施形態において、仮想アドレスは、256バイトにアラインされているか、又は、アラインされたアドレスとバイト単位のメモリオペランドサイズの半分及び/又はバイトで示した結果のサイズの半分との和でなければならない。アラインされたアドレスはバイトで示したサイズの正確な倍数でなければならない。アドレスが有効でない場合、“仮想アドレスによるアクセス不許可”の例外が生じる。
図18Bに示すように、wide-multiply-matrix-Galois-byte命令(W.MUL.MAT.G.8)は、メモリ[m255 m254 …m1 m0]をベクトル[p o n m l k j i h g f e d c b a]で乗算し、多項式[q]を法とする結果に縮小し(reducing)、積[(pm255+om247+…+bm31+am15 mod q)(pm254+om246+…+bm30+am14 mod q)… (pm248+om240+…+bm16+am0 mod q)]を得る。
Wide Multiply Matrix Galois命令の疑似コード1860の一実施形態を図18Cに示す。Wide Multiply Matrix Galois命令の例外1890の一実施形態を図18Dに示す。
(通常のリトルエンディアン又はビッグエンディアンバイト順序のメモリオペランド)
本発明の他の側面において、通常のリトルエンディアン又はビッグエンディアンバイト順序のいずれのメモリオペランドも容易に実行される。その結果、全ての拡張オペランド命令は二つの形式に分けられる。一つはリトルエンディアン順序、もう一つはビッグエンディアン順序であり、これらは命令の一部によって指定される。バイト順序は、データパス幅(128ビット)のユニット内でバイトを配信する順序をメモリシステムに指定するとともに、さらに大きな拡張オペランド内に複数のメモリワード(128ビット)を配置する順序を指定する。
(乗数積(multiplier product)または積の和の上位の部分の抽出)
本発明の別の局面は、大きなマルチプライヤアレイを効率的に利用する方法として、乗数積または積の和の上位の部分の抽出を取り扱う。関連の米国特許第5,742,840号および第5,953,241号は、特定のクラスの命令を汎用プロセッサに追加することによりマルチプライヤアレイの利用を向上させるシステムおよび方法を記載している。これは、高精度の算術演算のためにフルに使用される大きなマルチプライヤアレイを最大限利用するという課題に取り組むものである。例えば、64×64ビットのマルチプライヤは64ビット×64ビットの乗算によってフルに使用されるが、(マルチプライヤデータ幅およびレジスタと比較して)低精度の演算である32ビット×32ビットの乗算には、1/4のみが使用される。特に、種々の方法で互いに結合(加算)された大量の低精度乗算を実行する演算が規定されている。1組の演算の選択において他に優先して考慮されることの1つは、結果オペランドのサイズを制限することである。例示的な実施形態において、例えば、このサイズは、128ビットのオーダーまたは単一のレジスタに制限されるが、特定のサイズの制限は必要ない。
乗算結果(積)のサイズは、通常、オペランド、つまり被乗数および乗数のサイズの合計である。結果、乗算命令は、結果のサイズが同一サイズの入力オペランドのサイズの2倍である演算を規定する。本発明者らの従来の設計では、例えば、乗算命令は、64ビットのレジスタソースを受け取り、64ビットのシンボルに対して64×64マルチプライヤアレイ全体を用いて、32ビットのシンボルの対に対して該マルチプライヤアレイの半分を用いて、または、16ビットのシンボルの四分の一のもの(quads)に対して該マルチプライヤアレイの1/4を用いて、単一の128ビットのレジスタ−ペアの結果を生成する。これらの場合の全てにおいて、64ビットの2つのレジスタソースが組み合わされ、128ビットの結果が得られることに留意されたい。
複素乗算(complex multiplies)、畳込み、および行列乗算を含む演算のいくつかにおいて、低精度の乗数積が合算される。合算は、要求される精度をさらに高くする。2個の積の合計は、1ビット分の精度上昇を要求する。したがって、4個の積の合算は2ビット分の精度上昇を要求し、8個の積の合算は3ビット分の精度上昇を要求し、16個の積の合算は4ビット分の精度上昇を要求する。いくつかの従来の設計においては、この精度の一部が失われ、オーバーフローを防止するためにマルチプライヤオペランドのスケーリングが必要となり、さらに結果の精度を低下させる。
レジスタペアの使用により、レジスタペアおよび個々のレジスタ値の両方を後続の命令へとバイパスする必要があるといった望ましくない複雑性が生じる。その結果、従来の技術では、ソースオペランドの128ビットレジスタ値の半分のみが、単一レジスタの128ビットの結果の生成のために使用され得る。
本発明において、乗数積または積の和の上位部分が抽出され、一般レジスタからの動的シフト量または命令の一部として指定された調節量で調節され、レジスタからの制御値または命令部分によって、最近点への丸め(round-to-nearest/even)、切り捨て(toward zero)、下向きの丸め(floor)、または上向きの丸め(ceiling)といった丸め処理が行われる。オーバーフローは、出力結果中に正確に表現され得る最大値および最小値に結果を制限することにより処理される。
(レジスタによる抽出の制御)
本発明において、抽出がレジスタによって制御される場合、結果のサイズが指定され得、それにより、丸め処理および結果に適合し得るよりも少ない数のビットへの制限が可能になる。これにより、結果は、オーバーフローまたは丸め処理を考慮せずに後続の演算において使用されるようにサイズが変更され、パフォーマンスが向上する。
また、本発明において、抽出がレジスタによって制御される場合、単一のレジスタ値が、オペランドのサイズ、シフト量、および結果のサイズ、ならびに丸め制御を規定する。この制御情報を全て単一のレジスタに配置することにより、配置しなかった場合に命令が必要とするビットの数に対して命令のサイズが低減され、それにより、パフォーマンスが向上し且つプロセッサの自由度が向上する。
本発明の本局面に含まれる具体的な命令は、Ensemble Convolve Extract、Ensemble Multiply Extract、Ensemble Multiply Add ExtractおよびEnsemble Scale Add Extractである。
(アンサンブル所定位置抽出(Ensemble Extract Inplace))
Ensemble Extract Inplace命令の例示的な実施形態を図19A〜図19Gに示す。例示的な実施形態において、これら命令のうちのいくつか(Ensemble Convolve Extract, Ensemble Multiply Add Extract)は、通常、抽出が命令の一部として指定される形態においてのみ利用可能である。別の実施形態では、オペランドのサイズ、シフト量、丸め処理が汎用レジスタの内容(Ensemble Multiply Extract命令に含まれる)により制御され得る演算の形態を含み得る。Ensemble Convolve ExtractおよびEnsemble Multiply Add Extractに対するこの種の命令の定義は4個のソースレジスタを要求し、このことで、さらなる汎用レジスタ読み出しポートの追加により複雑さが増す。
例示的な実施形態において、これらの演算は、4つのレジスタからオペランドを取得し、オペランド内のビットのパーティションに対して演算を実行し、連結された結果を4つのレジスタ内に配置する。Ensemble Extract Inplace命令のフォーマットおよびオペレーションコード1910の例示的な実施形態を図19Aに示す。
Ensemble Extract Inplace命令の図1930、1945、1960および1975の例示的な実施形態を図19C、図19D、図19Eおよび図19Fに示す。例示的な実施形態において、レジスタrd、rc、rbおよびraの内容がフェッチされる。これらのオペランドに対して指定された演算が実行される。結果はレジスタrdに配置される。
例示的な実施形態において、E.CON.X命令について、レジスタrdおよびrcの内容がc‖dのように連結され、第1の値として使用される。第2の値は、レジスタrbの内容である。これらの値は、指定されたサイズのオペランドの複数の群へと分割され、畳み込まれて、1群の値を生成する。該1群の値は、指定された通りに丸められ且つ制限され、抽出されて、指定されたサイズである1群の結果が得られる。該1群の結果は、連結され、レジスタrdに配置される。
例示的な実施形態において、E.MUL.ADD.X命令について、レジスタrcおよびrbの内容は、指定されたサイズのオペランドの複数のグループに分割され、乗算されて、レジスタrdの分割され拡大された内容が加算された1群の値が得られる。該1群の値は、指定された通りに丸められ且つ制限され、抽出されて、指定されたサイズである1群の結果が得られる。該1群の結果は、連結され、レジスタrdに配置される。
図19Bに示すように、例示的な実施形態において、レジスタraの内容のビット31..0が、データを抽出する様態及び所定の演算については演算を実行する様態を制御する複数のパラメータを指定する。制御フィールドの位置は、動的な計算のための固定制御値にソースポジションを加えることを可能にし、且つ、制御フィールドの下位16ビットが、単一のGCOPYI.128命令によってより単純な抽出のケースのいくつかに対して設定されることを可能にする。制御フィールドは、さらに下位8ビットがノンゼロである(ゼロでない)場合にのみ、切り捨て(truncation)を伴うが丸め処理は伴わない128ビットの抽出を実行するように構成されている。
例示的な実施形態において、下に示すテーブルは各ラベルの意味を説明する。
Figure 2007531072
例示的な実施形態において、9ビットのgsspフィールドは、式gssp = 512-4*gsize+sposにしたがって、群サイズgsizeおよびソースポジションsposの両方をエンコードする。群サイズgsizeは、範囲1..128に含まれる2のベキであり、ソースポジションsposは、範囲0..(2*gsize)−1に含まれる。
例示的な実施形態において、xフィールド、sフィールド、nフィールド、mフィールド、lフィールドおよびrndフィールドの値は下記の意味を有する。
Figure 2007531072
(アンサンブル抽出乗加算(Ensemble Multiply Add Extract))
図19Cに示すように、アンサンブルダブレット抽出乗加算命令(E.MULADDX)の例示的な実施形態は、ベクトルrc[h g f e d c b a]をベクトルrb[p o n m l k j i]で乗算し、ベクトルrd[x w v u t s r q]を加算し、それにより結果ベクトルrd[hp+x go+w fn+v em+u dl+t ck+s bj+r ai+q]を得て、ra31..0によって指定された通りに丸められ且つ制限される。
図19Dに示すように、アンサンブルダブレット抽出複素乗加算命令(nがセットされたE.MUL.X)の例示的な実施形態は、オペランドベクトルrc[h g f e d c b a]をオペランドベクトルrb[p o n m l k j i]で乗算し、結果ベクトルrd[gp+ho go−hp en+fm em−fn cl+dk ck−dl aj+bi ai−bj]を得て、ra31..0によって指定された通りに丸められ且つ制限される。この命令には、実部が虚部の右側(低精度)に配置された複素数からなる構成が好ましい。
(アンサンブル抽出畳込み(Ensemble Convolve Extract))
図19Eに示すように、アンサンブルダブレット抽出畳込み命令(n=0のECON.X)の例示的な実施形態は、ベクトルrc||rd[x w v u t s r q p o n m l k j i]をベクトルrb[h g f e d c b a]で畳込み、以下の積ベクトルrd
[ax+bw+cv+du+et+fs+gr+hq...as+br+cq+dp+eo+fn+gm+hl
ar+bq+cp+do+en+fm+gl+hk aq+bp+co+dn+em+fl+gk+hj]
を得て、ra31..0によって指定された通りに丸められ且つ制限される。
図19Fに示すように、アンサンブルダブレット複素抽出畳込み命令(n=lのECON. X)の例示的な実施形態は、ベクトルrd‖rc[x w v u t s r q p o n m l k j i]をベクトルrb[h g f e d c b a]で畳込み、以下の積ベクトルrd
[ax+bw+cv+du+et+fs+gr+hq...as−bt+cq−dr+eo−fp+gm−hn
ar+bq+cp+do+en+fm+gl+hk aq−br+co−dp+em−fn+gk+hl]
を得て、ra31..0によって指定された通りに丸められ且つ制限される。
Ensemble Extract Inplace命令の疑似コード1990の例示的な実施形態を図19Gに示す。例示的な実施形態において、例示的な実施の形態においては、Ensemble Extract Inplace命令についての例外はない。
(アンサンブル抽出(Ensemble Extract))
Ensemble Extract命令の例示的な実施形態を図20A〜図20Jに示す。例示的な実施形態において、これらの演算は、3つのレジスタからオペランドを取得し、オペランド内のビットのパーティションに対して演算を実行し、連結された結果を第4のレジスタに配置する。Ensemble Extract命令のフォーマットおよびオペレーションコード2010の例示的な実施形態を図20Aに示す。
Ensemble Extract Inplace命令の図2020、2030、2040、2050、2060、2070および2080を図20C、図20D、図20E、図20F、図20G、図20Hおよび図20I、に示す。例示的な実施形態において、レジスタrd、rcおよびrbの内容がフェッチされる。これらのオペランドに対して指定された演算が実行される。結果はレジスタraに配置される。
図20Bに示すように、例示的な実施形態において、レジスタrbの内容のビット31..0が、データを抽出する様態ならびに所定の演算については演算を実行する様態を制御する複数のパラメータを指定する。制御フィールドの位置は、動的な計算のための固定制御値にソースポジションを加えることを可能にし、且つ、制御フィールドの下位16ビットが、単一のGCOPYI.128命令によってより単純な抽出のケースのいくつかに対して設定されることを可能にする。制御フィールドは、さらに下位8ビットがノンゼロである(ゼロでない)場合にのみ、切り捨て(truncation)を伴うが丸め処理は伴わない128ビットの抽出を実行するように構成されている。
例示的な実施形態において、下に示すテーブルは各ラベルの意味を説明する。
Figure 2007531072
例示的な実施形態において、9ビットのgsspフィールドは、式gssp= 512 4*gsize+sposにしたがって、群サイズgsizeおよびソースポジションsposの両方をエンコードする。群サイズgsizeは、範囲1..128に含まれる2のベキであり、ソースポジションsposは、範囲0..(2*gsize)−1に含まれる。
例示的な実施形態において、xフィールド、sフィールド、nフィールド、mフィールド、lフィールド、rndフィールドの値は下記の意味を有する。
Figure 2007531072
例示的な実施形態において、E.SCAL.ADD.X命令について、レジスタrbの内容のビット127..64は、レジスタrdおよびrcの被乗数に対する乗数を指定する。具体的には、bits64+2*gsize-1.. 64+gsizeは、レジスタrdの内容に対する乗数であり、bits64+gsize-1.. 64は、レジスタrcの内容に対する乗数である。
(アンサンブル抽出乗算(Ensemble Multiply Extract))
図20Cに示すように、アンサンブルダブレット抽出乗算命令(E.MULX)の例示的な実施形態は、ベクトルrd[h g f e d c b a]をベクトルrc[p o n m l k j i]で乗算し、結果ベクトルra[hp go fn em dl ck bj ai]を得て、rb31..0によって指定された通りに丸められ且つ制限される。
図20Dに示すように、アンサンブルダブレット抽出複素乗算命令(nがセットされたE.MUL.X)の例示的な実施形態は、ベクトルrd[h g f e d c b a]をベクトルrc[p o n m l k j i]で乗算し、結果ベクトルra[gp+ho go−hp en+fm em−fn cl+dk ck−dl aj+bi ai−bj]を得て、rb31..0によって指定された通りに丸められ且つ制限される。この命令には、実部が虚部の右側(低精度)に配置された複素数からなる構成が好ましい。
(アンサンブル抽出スケーリング加算(Ensemble Scale Add Extract))
本発明の一局面は、Ensemble Scale Add Extract命令を規定する。Ensemble Scale Add Extract命令は、レジスタ内の抽出制御情報を、スカラ乗数として用いられる2つの値と共に、2つのベクトル被乗数の内容に組み合わせる。
この組み合わせにより、組み合わせを行わなかった場合に要求されるレジスタの数もしくは組み合わせを行わなかった場合に命令が要求するビット数が減少され、性能が向上する。本発明の別の利点は、組み合わされた演算が、中間的な丸め処理もオーバーフローも発生しない合算ノード(summation node)上に十分な内部精度(internal precision)を与えた例示的な実施形態によって実行され得ることであり、これにより、この計算を実行するために2つ以上の命令が要求される従来技術の演算と比べて精度が向上する。
図20Eに示すように、アンサンブルダブレット抽出スケール加算命令(E.SCAL.ADD.X)の例示的な実施形態は、ベクトルrd[h g f e d c b a]をrb95..80[r]で乗算し、その積を、ベクトルrc[p o n m l k j i]をrb79..64[q]で乗算した積に加算し、結果[hr+pq gr+oq fr+nq er+mq dr+lq cr+kq br+jq ar+iq]を得て、rb31..0によって指定された通りに丸められ且つ制限される。
図20Fに示すように、アンサンブルダブレット抽出スケール複素加算命令(nがセットされたE. SCLADD. X)の例示的な実施形態は、ベクトルrd[h g f e d c b a]をrb127..96[t s]で乗算し、その積を、ベクトルrc[p o n m l k j i]をrb95..64[r q]で乗算した積に加算し、結果[hs+gt+pq+or gs−ht+oq−pr fs+et+nq+mr es−ft+mq−nr ds+ct+lq+kr cs−dt+kq−lr bs+at+jq+ir as−bt+iq−jr]を得て、rb31..0によって指定された通りに丸められ且つ制限される。
(アンサンブル抽出(Ensemble Extract))
図20Gに示すように、例示的な実施形態において、E.EXTRACT命令について、m=0且つx=0の場合、レジスタrbの内容によって指定されるパラメータが解釈されて、レジスタrdおよびrcの連結された内容のダブルサイズシンボルからフィールドが選択され、それにより連結され且つレジスタraに配置された値が抽出される。
図20Hに示すように、例示的な実施形態において、アンサンブル抽出マージ(an ensemble-merge- extract)(m=1の場合のE.EXTRACT)について、レジスタrbの内容によって指定されるパラメータが解釈されて、レジスタrdの内容のシンボルからのフィールドがレジスタrcの内容と併合される。その結果は、連結され且つレジスタraに配置される。m=1の場合、xフィールドは機能しない。
図20Iに示すように、例示的な実施形態において、アンサンブル抽出拡張(an ensemble-expand- extract)(m=0且つx=1の場合のE. EXTRACT)について、レジスタrbの内容で指定されたパラメータが解釈されて、レジスタrdの内容のシンボルからフィールドが抽出される。その結果は、連結され且つレジスタraに配置される。rcの値は使用されない。
Ensemble Extract命令の疑似コード2090の例示的な実施形態を図20Jに示す。例示的な実施形態において、Ensemble Extract命令についての例外はない。
(レジスタ読み出しポートの減少)
別の実施形態は、オペランドのサイズ、シフトおよび丸め処理がレジスタによって制御される命令の実行に必要なレジスタ読み出しポートの数を減らすことが出来る。抽出制御レジスタの値は、初期実行の際に追加のサイクルを用いてフェッチされ、後続の実行のための演算器の内部または近傍に保持され得る。このことにより、追加の性能ペナルティ(performance penalty)が小さい場合の実行に必要なハードウェアの量が低減される。レジスタを修正する命令によって、保持された値は無効であるとマークされ得、それにより抽出制御レジスタの再フェッチが行われるか、あるいは、保持された値がそのような演算によって更新され得る。抽出制御レジスタの再フェッチは、後続の実行において異なるレジスタ数が指定される場合にも要求され得る。上記2つの異なる実施形態の特徴を組み合わせ得ることは明らかである。
(ガロア体算術)
本発明の別の局面はガロア体算術を含む。ガロア体算術では、乗算が、初期2進多項式乗算(桁上げ(carries)を抑制した符号なし2進乗算)によって実行され、その後、多項モジュロ/剰余演算(桁上げを抑制した符号なし2進除算)が行われる。剰余演算は面積および遅延について比較的コストが高い。ガロア体算術において、加算は、桁上げを抑制した2進加算、またはこれと均等な、ビット単位の排他的論理和演算によって実行される。本発明のこの局面において、行列乗算はガロア体算術を用いて実行される。この演算において、乗算および加算はガロア体乗算およびガロア体加算である。
従来技術の方法を用いる場合、16×16バイトの行列による16バイトのベクトルの乗算は、256回の8ビットガロア体乗算および16*15(=240)回の8ビットガロア体加算として実行され得る。256回のガロア体乗算は、256回の多項式乗算および256回の多項式剰余演算を含む。
本発明を用いると、256回の多項式乗算、240回の16ビット多項式加算および16回の多項式剰余演算を実行することによって、総計算量が大幅に減少する。ここでは8ビット演算ではなく16ビット演算を行うので、多項式加算のコストはガロア体加算の二倍であるが、多項式剰余関数のコストは1/16倍に減少されることに留意されたい。これは、全体として、加算のコストが剰余のコストよりもかなり低いので、好ましいトレードオフであるといえる。
(実行パイプラインからのデカップルドアクセスおよび同時マルチスレッディング(Decoupled Access from Execution Pipelines and Simultaneous Multithreading))
本発明のさらに別の局面(図4に最もよく示す)において、本発明は、実行パイプラインからのデカップルドアクセスおよび同時マルチスレッド処理の両方を一意的な方法で用いる。従来技術では同時マルチスレッド処理されたパイプラインを用いて、複数ある実行スレッドのうちの一つから各演算器へ命令を発行させることによりデータパスユニットの利用を増大させる(例えば、Dean M. Tullsen、Susan J. EggersおよびHenry M. Levyの"Simultaneous Multithreading: Maximizing On Chip Parallelism," Proceedings of the 22nd Annual International Symposium on Computer Architecture, Santa Margherita Ligure, Italy, June, 1995)。
従来技術において、実行パイプラインからのデカップルドアクセスを用いて、アクセスユニットからの結果をバッファすることにより実行データパスユニットの利用を増大させる。なお、アクセスユニットはメモリユニットへのアドレスを計算し、メモリユニットは要求されたアイテムをメモリからフェッチし、その後それらを実行ユニットに対して提供する。(例えば、J. E. Smith,"Decoupled Access/Execute Computer Architectures", Proceedings of the Ninth Annual International Symposium on Computer Architecture, Austin, Texas (April 26 29,1982), pp. 112-119)。
従来のパイプラインと比較して、Eggersの従来技術は、命令が演算器に対して発行される前に追加のパイプラインサイクルを用いる。この追加のパイプラインサイクルは、いずれのスレッドに命令の発行を許可すべきかということを判定する必要がある。その結果、従来のパイプラインに対して、従来技術の設計には、依存分岐遅延(dependent branch delay)を含む遅延が追加されている。
本発明は、各実行スレッドについて、関連するレジスタファイルを有する個別のアクセスデータパスユニットを含む。これらのアクセスユニットはアドレスを生成する。生成されたアドレスは、共通のメモリユニットに集められる。該メモリユニットは、全てのアドレスをフェッチして、メモリ内容を1個以上のバッファに配置する。実行ユニットについての命令(スレッド間において異なる程度で共用される)もまた、後の実行のためにバッファされる。その後、実行ユニットは、共用される関数データパスユニット(functional data path units)を用いて全てのアクティブスレッドからのオペレーションを実行する。
実行ユニットによって実行される命令の場合、従来技術の同時マルチスレッディング設計に必要な延長サイクルは、実行サイクルからの従来技術のデカップルドアクセスからのメモリデータアクセス時間と重複するので、リソースをスケジューリングする実行演算ユニットによる追加の遅延は生じない。アクセスユニットによって実行される命令の場合、各スレッドに対して別個のアクセスユニットを用いることにより、共用されたリソースをスケジューリングするための追加サイクルが削除される。
これは好ましいトレードオフといえる。なぜなら、スレッドはアクセス演算器を共用しないが、これらのユニットは、スレッドによって共用される実行演算ユニットと比べて比較的小さいからである。
実行ユニットの共用に関して、本発明は、コスト、利用および性能が異なる複数の異なるクラスの演算器を実行ユニットに対して用いる。特に、単純な加算およびビット単位のオペレーションを実行するGユニットは、他のユニットと比べて(面積および電力に関して)比較的安価であり、その利用率は比較的高い。その結果、この設計はそのようなユニットを4つ使用する。各ユニットは2つのスレッド間で共用され得る。ブロードクラスのデータスイッチング関数を実行するXユニットは、比較的高価で且つ利用率が比較的低いため、2つのユニットが設けられ、各々のユニットは2つのスレッド間で共用される。Wide Translate命令を実行するTユニットは、高価で且つ利用率が低いため、1つのユニットが4つ全てのスレッド間で共用される。Ensemble命令のクラスを実行するEユニットは、他の演算器と比べて、面積および電力について非常にコストが高いが利用率は比較的高く、そのため本発明者らは、そのようなユニットを2つ設け、各々のユニットが2つのスレッドによって共用される構成とした。
図4にアクセスユニットの4つのコピーを示す。各アクセスユニットは、アクセス命令フェッチキューA-Queue401〜404を有し、アクセスレジスタファイルAR405〜408に接続されている。アクセスレジスタファイルAR405〜408の各々は、2つのアクセス演算器A409〜416に接続されている。該アクセスユニットは、実行の4つの同時スレッドについて、独立して機能する。これら8つのアクセス演算器A409〜416は、アクセスレジスタファイルAR405〜408についての結果および共用メモリシステム417へのアドレスを生成する。メモリシステム417からフェッチされたメモリ内容は、アクセスユニットによって実行されてない実行命令と組み合わされ、4つの実行命令キューE-Queue421〜424に入力される。実行命令キューE-Queue421〜424からの命令およびメモリデータは、実行レジスタファイル425〜428に提供される。実行レジスタファイル425〜428は、実行レジスタファイルソースオペランドをフェッチする。命令は、実行ユニット・アービトレーション装置Arbitration431に結合される。アービトレーション装置Arbitration431は、4つのスレッドからの命令のいずれを利用可能な実行ユニットE441および449、X442および448、G443〜444および446〜447、ならびにT445にルートすべきかを選択する。実行レジスタファイルソースオペランドER425〜428は、ソースオペランドバス451〜454を用いて実行ユニット441〜445に結合され、且つ、ソースオペランドバス455〜458を用いて実行ユニット445〜449に結合される。実行ユニット441〜445からの演算器結果オペランドは、結果バス461を用いて実行レジスタファイルに結合され、実行ユニット445〜449からの演算器結果オペランドは、結果バス462を用いて実行レジスタファイルに結合される。
(相互特権ゲートウェイの改良)
本発明のさらに別の局面において、並列性が高まりかつ性能が向上する相互特権ゲートウェイの改良について記載する。関連米国特許出願第08/541,416号には、制御された状態で低い特権レベルから高い特権レベルへ制御の受け渡し(分岐)ができる命令を実行するシステム及び方法が記載されている。本発明は、同じ目的を達成しかつ特有の利点をもつ変形された命令のための改良システム及び方法である。
仮想メモリシステム自体の制御、入出力演算及びシステム制御機能のようなプロセッサリソースには、これらを保護特権領域内に包囲することにより偶発的な誤用又は不正使用から保護されているものが多い。これらの保護領域の保全を維持するために、ゲートウェイと呼ばれる特定のエントリポイントを経由しなければこの領域にエントリしてはいけない。
この演算の従来のバージョンでは一般に、有効なゲートウェイエントリポイントを含むデータ領域に対して設定されるにすぎない保護された仮想メモリ属性を用いてメモリの領域からアドレスをロードした後、メモリの内容に含まれたアドレスに分岐する。基本的に、3つのステップ、すなわちロード、分岐及びチェックが含まれている。この演算は、レジスタ対レジスタ計算命令、メモリロード及びストア並びにレジスタに基づく分岐のような他の命令と比較してかなり長い演算であり、そのため、パイプライン実装が遅延するとともに複雑化することになる。
本発明では、ブランチゲートウェイ(Branch Gateway)命令は、1)レジスタ0の内容に分岐する演算と、2)レジスタ1の内容を用いて、指定されたバイト順(リトルエンディアン)及び指定されたサイズ(64ビット)でロードが実行される演算とを並行して実行する。メモリからロードされた値がレジスタ0の内容と等しくしない場合には、前記命令は例外のため中途終了される。さらに、3)命令が中途終了されない場合には戻りアドレス (前記ブランチゲートウェイ命令に続く次のシーケンス命令のアドレス)がレジスタ0に書き込まれる。基本的に、このアプローチには、ユーザーコードで特権コードにアクセスできるための必要なアクセス許可を行うために第1の命令が使用されており、第1の命令についてアクセス許可が出されているため、第2の命令は特権コードに直接分岐できる。
本発明では、新特権レベルもレジスタ0に含まれており、新特権レベルが旧特権レベルより大きくない場合には第2の並列演算を実行する必要はない。この第2の並列演算が実行されない場合、命令の残りの部分は、特権引き上げを必要としないプロシージャの呼び出しに用いられるブランチリンク(branch link)命令と同一の関数を実行する。この特徴によりもたらされる利点は、特権引き上げを必要としたり必要としなかったりするプロシージャを呼び出すためにブランチゲートウェイ命令を使用できることにある。
メモリロード演算によって、ロードされる領域が有効なゲートウェイデータを含むものとしてタグ付けされたことが仮想メモリシステムで確認される。本発明の別の利点は、前述の呼び出されたプロシージャが、レジスタ1にゲートウェイデータをロードしたアドレスが含まれていることに依拠してもよく、該プロシージャの必要な更なるデータ又はアドレスを位置決めするのにレジスタ1の内容を使用できることにある。この命令の従来のバージョンでは、更なるアドレスを保護された状態で初期化するためにメモリのゲートウェイ領域からそのアドレスをロードする必要があったが、本発明では、特別な保護を必要としない“通常の”ロード演算でアドレス自体をロードすることができる。
また、本発明では、ブランチゲートウェイ命令を出す前に“通常の”ロード演算でレジスタ0の内容をロードすることができる。本発明はブランチゲートウェイ命令で実行される特別な“ゲートウェイ”ロード演算だけでなく通常のロード演算にも領域を使用できる仮想メモリシステムを備えているので、値はブランチゲートウェイ命令によってロードされる同一メモリアドレスからロードできる。
(相互特権ゲートウェイの改良−システム及び特権ライブラリ呼び出し)
システム及び特権ライブラリ呼び出しの実施形態の例を図21Aおよび図21Bに示している。システム及び特権ライブラリ呼び出しの略図2110の実施形態の例を図21Aに示している。実施形態の例において、上記の通常のプロシージャとできる限り同様にシステム機能及び特権ライブラリを呼び出すことを目的とする。例外としてシステムの呼び出しを実行することにより待ち時間がかなり長くなり且つ複雑になってしまわないように、プロセス特権レベルを必要なレベルまで穏やかに上昇させるプロシージャの呼び出しの変形が用いられる。この機構を安全に提供するために、仮想メモリシステムとの対話が必要とされる。
実施形態の例では、そのようなプロシージャには、セキュリティチェックが行われた後又は無効なレジスタ内容でプロシージャにエントリするのを阻止するために、正当なエントリポイント以外のいずれの場所からもエントリしてはいけない。そうしないと、高い特権レベルへアクセスすることでセキュリティ侵害になり得る。加えて、プロシージャは一般に、メモリデータに対してアクセスできなければならない。そのため特権コードによってアドレスを生成しなければならない。これらのアドレスを容易に生成するためには、ブランチゲートウェイ命令によって、特権コードのプロシージャが、単一レジスタに有効メモリ領域に対するポインタが含まれていることが確認されていることに依拠できるようにする。
実施形態の例では、ブランチゲートウェイ命令によって、確実に、プロシージャが適切なエントリポイントで呼び出されるとともに、データポインタ及びスタックポインタのような他のレジスタが適切に設定できることになる。このことを確実にするためには、ブランチゲートウェイ命令では、保護仮想メモリスペースから直接“ゲートウェイ”が検索される。ゲートウェイには目的の特権レベル及びプロシージャのエントリポイントの仮想アドレスが含まれている。ゲートウェイは、これらを含むようにした仮想アドレススペースの領域に存在できるにすぎず、ゲートウェイが確実に偽造できないようにメモリ領域を書き換えることが可能な特権レベル又はそれ以下の特権レベルにアクセスするために用いることができるにすぎない。
実施形態の例では、レジスタ0(lp)の内容をメモリから検索したゲートウェイと比較するとともにそれらが整合しない場合に例外トラップを発生させることにより、ブランチゲートウェイ命令は、レジスタ1(dp)に、この目的のコードアドレスのゲートウェイに対する有効ポインタが必ず含まれるようにできる。レジスタ1がゲートウェイを確実に示せば、データポインタ及びスタックポインタのような補助情報は、レジスタ1の内容によって位置決めされた値をロードすることよって設定できる。例えば、ゲートウェイに続く8バイトはプロシージャのためのデータ領域に対するポインタとして用いてもよい。
実施形態の例では、ブランチゲートウェイ命令を実行する前に、レジスタ1はゲートウェイを示すように設定されなければならず、またレジスタ0は目的のコードアドレスおよび所望の特権レベルに設定されなければならない。“L.I.64.L.A r0=r1,0”命令は、レジスタ1が既に設定されている場合にレジスタ0を設定する一つの方法であるが、レジスタ0に正しい値を入れる他の手段も許容できる。
実施形態の例では、同様に、システム又は特権ルーチンから戻ると特権が低下する。このことはアーキテクチャ機能によって注意深く制御される必要がなく、従って、プロシージャは特権の低下したコードアドレスに自由に分岐してもよい。通常、このようなプロシージャではスタックフレームを復元し、戻りに対してブランチダウン(branch-down)命令を使用する。
一般的なダイナミックリンク・インターゲートウエイの呼び出し列2130の実施形態の例を図21Bに示す。実施形態の例では、前記呼び出し列は、B.LINK命令の代わりにB.GATE命令を使用する点を除いて、上記で示したインターモジュール呼び出し列の場合と同一である。実際に、lpレジスタの特権レベルが現行の特権レベルより高くない時にB.GATE命令が用いられる場合に、B.GATE命令はB.LINKと同一の関数を実行する。
実施形態の例では、局所変数割り当てにスタックを使用する場合、呼ばれる側は、それを通過したspの値を必ずしも信用できない。なぜなら、この値は偽造され得るからである。同様に、呼ばれる側が提供するいかなるポインタも、呼ばれる側がアドレス指定できるべき領域を示していることが確認されない限り直接使用すべきでない。これは、全ての値がレジスタを通りレジスタに戻されるアプリケーションプログラミングインターフェース(API)を定義したりパラメータを通しかつ戻すように信頼できる中間特権ラッパ(wrapper)ルーチンを用いたりすることによって避けることができる。また以下に記載する方法も使用できる。
実施形態の例では、特権の高いコードに特権の低下したルーチンを呼び出させるのが有効である。例えば、ユーザは、特権ルーチンにおけるエラーがユーザ供給エラーログルーチンを呼び出すことにより報告されるよう要求してもよい。プロシージャを呼び出すために、ブランチダウン命令を介して特権を下げることができる。プロシージャからの戻りには実際には、注意深く制御されなければならない特権の引き上げが必要である。これは、特権の低いプロシージャラッパ内にプロシージャの呼び出しを置くことにより対応され、安全なリエントリポイントを介しての呼び出しの後高い特権の領域に戻すのにブランチゲートウェイ命令が使用される。全てのレジスタを保存すること及び特権の低下したルーチンによって操作される新しいスタックフレームをセットアップすること(又は元の特権の低いスタックを復元すること)のようなスタック又は保存レジスタの破損によって特権の低下したルーチンが確実に無許可アクセスできないように特別の注意が払われなければならない。さらに、このような技法は、直接リエントリポイントを用いようとする特権なしのルーチンに対して脆弱であり、そのため、リエントリポイントに入るための許可を制御する特権状態変数を保持することが適切である。
(相互特権ゲートウェイの改良−ブランチゲートウェイ)
ブランチゲートウェイ命令の実施形態の例を図21Cないし図21Fに示す。実施形態の例では、この演算により、より高い特権レベルにおけるものを含むプロシージャを呼び出すためのセキュリティ保護された手段が得られる。ブランチゲートウェイ命令のフォーマット及び演算コード2160の実施形態の例を図21Cに示す。
ブランチゲートウェイ命令の略図2170の実施形態の例を図21Dに示す。実施形態の例では、レジスタrbの内容としては、上位62ビットに分岐アドレス、下位2ビットに新しい特権レベルがある。前記分岐アドレスに分岐及びリンクし、特権レベルは新しい特権レベルに引き上げられる。現行のプログラムカウンタに対する後続要素の上位62ビットは2ビットの現行実行特権と連結され、レジスタ0に置かれる。
実施形態の例では、新しい特権レベルが現行特権レベルより大きい場合には、8バイト分のメモリデータが、リトルエンディアンバイトオーダー及びゲートウェイアクセス型を用いてレジスタ1で特定されたアドレスからフェッチされる。レジスタ0の元の内容が前記メモリデータと等しくない場合には、Gateway Disallowed例外が生じる。
実施形態の例では、新しい特権レベルが現行特権レベルと同じである場合には、レジスタ1のチェックは実行されない。
実施形態の例では、新特権レベルがメモリデータを書き込むのに必要な特権レベルより大きい場合、又は旧特権レベルがゲートウェイとしてメモリデータにアクセスするのに必要な特権より低い場合、又はアクセスが8バイト境界にアラインされない場合に、Access Disallowed例外が生じる。
実施形態の例では、rcフィールドが1ではない場合又はrdフィールドが0でない場合に、Reserved Instruction例外が生じる。
実施形態の例では、図21Dの例において、レベル0からレベル2へのゲートウェイが例示されている。レジスタrcの内容(1)で位置決めされたゲートウエイポインタはメモリからフェッチされるとともに、レジスタrbの内容(0)と比較される。命令は、これらの値が等しい場合に完了できるにすぎない。同時に、レジスタrbの内容(0)はプログラムカウンタ及び特権レベルに置かれ、次のシーケンスアドレス及び特権レベルのアドレス(0)はレジスタrd内に置かれる。ゲートウェイの目的のコードはデータポインタをゲートウェイポインタ(レジスタ1)からオフセットするよう位置決めするとともに、それをレジスタ1にフェッチし、データ領域を利用できるようにする。スタックポインタは保存され、データ領域、データ領域から位置決めした別の領域、又は元のゲートウエイポインタからオフセットするよう位置決めしたデータ領域を用いてフェッチされる。
実施形態の例では、この命令によって、目的のプロシージャにおいて、必ず、レジスタ0が有効戻りアドレス及び特権レベルを含み、レジスタ1がゲートウェイロケーションを示すとともにゲートウェイロケーションが8バイトごとにアラインされる。従って、レジスタ1はメモリの値にセキュリティ上安全に到達するのに用いられてもよい。リテラルプールの共用が望ましくない場合には、レジスタ1は直接リテラルプールポインタとして用いられてもよい。リテラルプールの共用が望ましい場合には、レジスタ1は、新しいリテラルプールポインタをロードするのに適当なオフセット量をもって、例えばレジスタ1からオフセットした一つのキャッシュラインで用いられてもよい。ここでは、仮想メモリシステムがキャッシュラインの粒度(granularity)に応じて動作するので、幾つかのゲートウェイロケーションが同時に生成されなければならない。
実施形態の例では、ソフトウェアによって、仮想メモリで指定した領域内の任意の8バイトをゲートウェイとして適切に用いることができるか又は正当な例外が発生するかのいずれかに必ずなるようにしなければならない。例えば、隣接した8バイト同士がリテラルプールロケーションに対するポインタを含んでいる場合、ソフトウェアによって、必ず、これらリテラルプールが実行できないか又はアドレスのアラインによって実行特権レベルを引き上げできないかのいずれかにされるべきである。レジスタ1が直接リテラルプールロケーションとして用いられる場合、ソフトウェアによって、必ず、ゲートウェイとしてアクセスできるこれらのリテラルプールロケーションのためにセキュリティ侵害にならないようにしなければならない。
実施形態の例では、レジスタ0は有効戻りアドレス及び特権レベルを含み、この値はゲートウェイの呼ばれる側に戻すためにブランチダウン(B.DOWN)命令において直接使用するのに適している。
ブランチゲートウェイ命令の疑似コード2190の実施形態の例を図21Eに示す。ブランチゲートウェイ命令の例外2199の実施形態の例を図21Fに示す。
(グループ加算(Group Add))
本発明の一実施形態によれば、プロセッサは、多様な固定小数点または整数のグループ演算を処理する。例えば、図26Aには、バイト(8ビット)、ダブレット(16ビット)、クワドレット(32ビット)、オクトレット(64ビット)、へクスレット(128ビット)のような様々なオペランドサイズに対応するGroupAdd命令の様々な例を示している。図26Bおよび図26Cには、図26Aに示す様々なGroupAdd命令を実行するのに使用できるフォーマットおよび演算コードの実施形態の例を示している。図26Bおよび図26Cに示すように、この実施形態の例では、レジスタrcおよびrbの内容は、サイズが特定されたオペランドのグループに区分されるとともに加算され、それらの内容が指定されたり、オーバーフローがないかチェックされたり、制限されたりした場合、サイズが指定された結果のグループが得られる。該結果のグループは連結されるとともにレジスタrdに配置される。2つのオペランドレジスタと別の結果レジスタを使用していることがこのセクションや本明細書中の別の箇所に記載されているが、即値を使用するというような別の方法を行ってもよい。
本実施形態では、例えば、指定されたオペランドサイズがバイト(8ビット)であるとともに各レジスタが128ビット幅である場合、各レジスタの内容は、それぞれ16のオペランドに区分され、一つのGroup Add命令の結果として16の異なる加算演算が行われてもよい。オペランドのグループに関わる他の命令によって、同様にグループ演算が行われてもよい。
(グループセット及びグループ減算(Group Set and Group Subtract))
同様に、図27Aには、様々なオペランドサイズに対応するGroup Set命令およびGroup Subtract命令の様々な例を示している。図27Bおよび図27Cには、前記の様々なGroup Set命令およびGroup Subtract命令を実行するのに使用できるフォーマットおよび演算コードの実施形態の例を示している。図27Bおよび図27Cに示すように、この実施形態の例では、レジスタrcおよびrbの内容は、サイズが特定されたオペランドのグループに区分されて、Group Set命令の場合、指定された演算条件について比較され、Group Subtract命令の場合、減算される。これらの内容が指定されたり、オーバーフローがないかチェックされたり、制限されたりした場合、サイズが特定された結果のグループが得られる。該結果のグループは連結されるとともにレジスタrdに配置される。
(アンサンブル畳込み、除算、乗算、乗加算(Ensemble Convolve, Divide, Multiply, Multiply Sum))
本実施形態では、その他の固定小数点グループ演算を利用することもできる。図28Aに各種オペランドサイズに対応するEnsemble Convolve命令、Ensemble Divide命令、Ensemble Multiply命令およびEnsemble Multiply Sum命令の種々の例を示す。図28Bおよび図28Cにフォーマットおよび種々のEnsemble Convolve命令、Ensemble Divide命令、Ensemble Multiply命令およびEnsemble Multiply Sum命令を実行するために使用できる演算コードの一実施形態を示す。図28Bおよび図28Cに示すように、本実施形態において、レジスタrcおよびrbの内容は指定されたサイズのオペランド群に区分され、畳込み、除算または乗算を経て結果群を生じるか、あるいは乗算および加算されて単一の結果を生じる。結果群は連結されてレジスタrdに入れられ、単一結果はそのままレジスタrdに入れられる。
(アンサンブル浮動小数点加算、除算、乗算および減算(Ensemble Floating-Point Add, Divide, Multiply and Subtract))
本発明の一実施形態によれば、プロセッサは各種オペランドサイズに対応する多様な浮動小数点グループ演算を取り扱う。ここで、各種オペランドサイズとは、例えば半精度(16ビット)、単精度(32ビット)、倍精度(64ビット)および4倍精度(128ビット)等の様々な精度の浮動小数点オペランドを意味する。図29にその他のセクションおよび図面における詳細な命令の定義に用いるために定義された関数の例を示す。図29に示す関数では、内部フォーマットが、(1)s(サインビット):0が正、1が負、(2)t(タイプ):NORM、ZERO、SNAN、QNAN、INFINITY、(3)e(指数部)および(4)f:(小数部)で構成される四要素構造としての無限精度浮動小数点値を表す。通常値の数学的解釈では分数の単位に2進小数点を配置し、指数:(−1)^s*(2^e)*fによって調整される。関数FはパックドIEEE浮動小数点値を内部フォーマットに変換する。関数PackFは、丸めおよび例外制御を用いて内部フォーマットをIEEE浮動小数点値に再変換する。
図30Aおよび図31Aに、Ensemble Floating Point Add命令、Ensemble Divide命令、Ensemble Multiply命令、Ensemble Subtract命令の種々の例を示す。図30B−Cおよび図31B−Cにフォーマットおよび種々のEnsemble Floating Point Add命令、Ensemble Divide命令、Ensemble Multiply命令およびEnsemble Subtract命令を実行するために使用できる演算コードの一実施形態を示す。これらの実施例のうち、Ensemble Floating Point Add命令、Ensemble Divide命令およびEnsemble Multiply命令のラベルは“EnsembleFloatingPoint”となる。また、Ensemble Floating-Point Subtract命令のラベルは“EnsembleReversedFloatingPoint”となる。図30B−Cおよび図31B−Cに示すように、本実施形態においては、レジスタrcおよびrbの内容が指定されたサイズのオペランド群に区分され、指定されたグループ演算が実行されることにより、結果群が生じる。結果群は連結されてレジスタrdに入れられる。
本実施形態において、演算は、指定された丸めオプションを用いて、または特に記載されない場合には四捨五入を用いて丸められる。丸めオプションが指定された状態で浮動小数点無効演算、ゼロ除算、オーバーフローまたはアンダーフローが生じた場合、あるいは指定された状態で結果が不正確である場合に、演算は浮動小数点例外を生成する。丸めオプションが指定されない場合には、浮動小数点例外は生成されず、IEEE754のデフォルトルールに従って処理される。
(アンサンブル浮動小数点スケーリング加算(Ensemble Scale-Add Floating-point))
新規の命令であるEnsemble-Scale-Addは、2組の並行乗算処理を行い、その積を対で合計することにより、プロセッサの性能を向上させる。これにより、2つのベクトルを2つの独立した値によってスケーリングし、次いで合計する必要のある演算に対するパフォーマンスが向上し、直近の従来技術によるfused-multiply-add演算と比較して2つの利点が得られる。この演算を従来技術による命令を用いて実行するためには、第1のベクトルおよび第1のスケーリング値に対するensemble-multiplyおよび第2のベクトルおよび第2のスケーリング値に対するensemble-multiply-addの2つの命令が要求される。これらの演算は明らかに従属的である。これに対し、本発明では、ベクトルの各対応要素に対する2つの乗算と加算が、単一演算として融合されている。ここで得られる第1の利点としては、性能の向上があげられる。すなわち、一実施形態において、組み合わされた演算によって多数の乗算が1回の演算で行われ、組込み乗算器の利用率が向上する。第2の利点は精度の向上である。すなわち、一実施形態において、融合された演算が十分な中間精度で計算されるため、積を中間で丸める必要がなくなる。
Ensemble Scale-Add Floating-point命令の一実施形態を図22A−図22Bに示す。一実施形態において、これらの演算はレジスタから3つの値を取り、オペランドのビットのパーティションについて浮動小数点算術演算群を実行し、レジスタに連結結果を入れる。Ensemble Scale-Add Floating-point命令のフォーマット2210の一実施形態を図22Aに示す。
一実施形態において、浮動小数点オペランド群を表すためにレジスタrdおよびrcの内容を取る。レジスタrdからのオペランドは、レジスタrdの内容の最下位ビットから取られた浮動小数点オペランドと乗算され、次いでレジスタrbの内容の次の最下位ビットから取られた浮動小数点オペランドと乗算されたレジスタrcからのオペランドに加算される。この結果は単一浮動小数点演算において、表示可能な(representable)最近の浮動小数点値に丸められる。浮動小数点例外は生じず、IEEE754のデフォルトルールに従って処理される。その結果は連結されてレジスタraに入れられる。
Ensemble Scale-Add Floating-point命令の擬似コード2230の一実施形態を図22Bに示す。一実施形態において、Ensemble Scale-Add Floating-point命令に対する例外は存在しない。
(単一命令における3入力ビット単位ブール演算の実行(Group Boolean))
本発明のさらに別の観点において、単一命令で3入力ビット単位ブール演算を実行するためのシステムおよび方法が提供される。新規の方法はこのような演算の8つの可能な出力状態を7ビットにエンコードし、この7ビットを再び8つの状態にデコードするのに使用される。
Group Boolean命令の一実施形態を図23A−図23Cに示す。一実施形態において、これらの演算は3つのレジスタからオペランドを取り、オペランドの対応ビットについてブール演算を実行し、その連結結果を第3のレジスタに入れる。図23AにGroup Boolean命令のフォーマット2310の一実施形態を示す。
図23BにGroup Boolean命令のプロシージャ2320の一実施形態を示す。一実施形態において、3つの値がレジスタrd、rcおよびrbの内容から取られる。ihフィールドおよびilフィールドは3ビットの関数を指定し、単一ビット結果を生成する。指定された関数の値が各ビット位置で求められ、その結果は連結されてレジスタrdに入れられる。一実施形態において、レジスタrdはこの命令のソースでありデスティネーションである。
一実施形態において、関数は8ビットで指定される。これにより、各ビット位置における3つのソースビットの想定しうる値に対する結果が与えられる。
Figure 2007531072
一実施形態において、関数は即値のビットを再配列することによって変更することができる。下表に即値fの再配列によって同じ関数に対するオペランドd、c、bをどのように再順序付けすることができるかを示す。
Figure 2007531072
一実施形態において、このような再配列を利用することにより、形式:b=f(d、c、b)の演算を正規の形式:b=f(b、d、c)に再コード化することができる。例えば、関数:b=f(d、c、b)=d?c:bはコードできないが、等価の関数:d=c?b:dは、f(d、c、b)⇒f(c、b、d)のルールに従い、11001010であるd=f(d、c、b)=d?c:bのコードを11011000に再配列することにより求められる。
(エンコーディング)
一実施形態において、この再配列の格別の特徴は、8つの関数指定ビットをこの命令において7つの即値ビットに圧縮する方法の基本原理である。上記の表に見られるように、一般的な場合、f(d、c、b)からf(d、b、c)へのオペランド再配列(rcおよびrbの交換)には、値fおよびfの交換ならびに値fおよびfの交換が要求される。
一実施形態において、この命令が実行し得る256の関数のうち1/4(64の関数)はこの再配列によって変化しない。これらの関数はf=fかつf=fという性質を有している。rcおよびrbの値(rcおよびrbはレジスタ修飾子であってレジスタの内容ではない)は自由に交換可能であり、値fを示すために昇順または降順でソートされる(rc=rbのときは特別なケースとして、rcおよびrbのソートによって情報搬送が行われない。しかしながら、値f、f、fおよびfだけはこの場合でも生じうるので、値f、f、fおよびfはこの場合コード化する必要がなく、特定の処理は要求されない)。これらの関数は即値フィールドで値f、f、f、fおよびfによって、さらにrc>rbかどうかに応じて値fによってエンコードされる。したがって、64の関数に対して32の即値が用いられる。
一実施形態において、さらに別の1/4の関数は、f=1かつf=0である。これらの関数は、rcおよびrb、fおよびfならびにfおよびfの交換によって再コード化される。これらはf=0かつf=1である1/4の関数と同じエンコーディングを共有し、即値フィールドの値f、f、f、f、fおよびfによりエンコードされる。このように128の関数に対して64の即値が用いられる。
一実施形態において、残りの1/4の関数はf=fかつf≠fである。このうちの半分がf=1かつf=0であり、rcおよびrb、fおよびfならびにfおよびfの交換によって再コード化される。これらはf=0かつf=1である関数の8番目と同じエンコーディングを共有し、即値フィールドの値f、f、f、fおよびfによりエンコードされる。このように64の関数に対して32の即値が用いられる。
一実施形態において、関数のエンコーディングを表にまとめる。
Figure 2007531072
一実施形態において、関数のデコーディングを表にまとめる。
Figure 2007531072
上記の説明から分かるように、エンコードされた命令を生成するコンパイラまたはアセンブラの一実施形態は、命令をエンコードする上記のステップを実行し、即値フィールドの値fおよびf、値fおよびfを比較して即値フィールドをエンコードするためのいくつかの手段のうちどれが使用されるかを決定する。また、エンコードされた命令へのtrbおよびrtcレジスタ修飾子の配置は値f(またはf)および値f(またはf)に依存している。
図23CにGroup Boolean命令の擬似コード2330の一実施形態を示す。このコードから分かるように、この命令をデコードする回路の一実施形態は、即値ビットihおよびil5がゼロの時にレジスタ修飾子rcおよびrbを演算比較することにより値fおよびfを生成し、rc>rbの時にfおよびfに対して1つ(1)の値を生成する。一実施形態において、Group Boolean命令に対する例外は存在しない。
(コードの単純反復ループ分岐予測の改良)
本発明のさらに別の観点では、コードの単純反復ループ分岐予測を改良するシステムおよび方法が記載される。このような単純ループにおいては、ループの終端はループの始端への後方向の条件付き分岐で示される。このようなループの条件付き分岐は、それが設けられないときには最終繰り返しを除くループの各繰り返しに対して設けられる。従来技術による分岐予測システムは、このような条件付き分岐の大部分を適切に予測するために有限状態機械演算を使用しているが、ループの繰り返し回数についての特定の情報がない場合には、ループ終端時に予想誤差が生じる。
本発明のシステムおよび方法は、分岐が不成立になる前に分岐が何回成立することになるかを指示するカウントフィールドを設けることを含み、コンパイラがループの繰り返し回数を指定できる時に単純ループの最初と最後の分岐の両方を適切に予測する能力を高める。これにより、従来技術の分岐予測ハードウェアにおいて生じるように、ループが終端して命令の実行がループを超えて継続される時に、ループの終端における分岐の予測ミスを回避することによって性能が向上する。
(分岐ヒント(Branch Hint))
Branch Hint命令の一実施形態を図24A−図24Cに示す。一実施形態において、この演算はレジスタで指定される、先の分岐ロケーション(future branch location)を示す。
一実施形態において、この命令はプロセッサの命令フェッチ部に対し、レジスタrdの内容によって指定されたアドレスに対する現行の後続命令に続くsimm命令で分岐がcount回生じる可能性があることを指示する。図24AにBranch Hint命令のフォーマット2410の一実施形態を示す。
一実施形態において、count回の分岐後、命令フェッチ部は、現行の後続命令に続くsimm命令での分岐は起こらないだろうと推定する。countがゼロの場合は、このヒントは分岐が63回より多く生じる可能性があることを命令フェッチ部に指示する。
一実施形態において、レジスタrdの内容がクワドレットバウンダリー(quadlet boundary)に配列されない時にアクセス不許可例外が生じる。
図24BにBranch Hint命令の擬似コード2430の一実施形態を示す。図24CにBranch Hint命令の例外2460の一実施形態を示す。
(プロセッサ命令への浮動小数点情報の取り込み)
本発明のさらに別の観点において、プロセッサ命令に浮動小数点情報を組み込む技術が提供される。関連する米国特許第5812439号には、浮動小数点命令の丸めおよび例外の制御を命令そのものに組み込むシステムおよび方法が記載されている。本発明は上記発明の延長であり、浮動小数点命令の特定のクラスについて、丸めが指定されただけでなく、例外のデフォルト処理も指定された別個の命令を含むものである。
(アンサンブル浮動小数点シンク(Ensemble Sink Floating-point))
例示的な実施形態において、Ensemble Sink Floating-point命令(浮動小数点の値を整数値に変換する命令)は、3つの新たな組み合わせ(Z.D…ゼロ方向への丸め処理(round toward zero)とデフォルト例外処理(default exception handling),F.D…切り下げ丸め処理(floor rounding)とデフォルト例外処理,C.D…切り上げ丸め処理(celing rounding)とデフォルト例外処理)と同様に、あらかじめ指定された組み合わせのすべて(default…近似丸め処理(near rounding)とデフォルト例外(default exception),Z…ゼロ方向への丸め処理と例外の捕獲(trap on exceptions),N…最近接値への丸め処理(round to nearest)と例外の捕獲,F…切り下げ丸め処理(マイナス無限大へ向かう丸め)と例外の捕獲,C…切り上げ丸め処理(プラス無限大へ向かう丸め)と例外の捕獲,X…不正確(inexact)やその他の例外(other exceptions)の捕獲)を含む命令における制御で利用可能である。(その他の組み合わせ:N.Dはデフォルトと同等である。X.D…不正確の捕獲であるが、特に有用ではないがその他の例外に対するデフォルト処理が可能である。)
図25A〜図25Cは、Ensemble Sink Floating-point命令の例示的な実施形態を示す。例示的な実施形態において、これらの演算は、レジスタから1つの数値データ(value)を取得し、オペランドにおけるパーティション(partitions)に整数値への浮動小数点算術変換の集合を実行し、連結結果をレジスタに入れる。図25Aは、Ensemble Sink Floating-point命令の演算コード,選択(selection)およびフォーマット2510の例示的な実施形態を示す。
例示的な実施形態において、レジスタrcのコンテンツ(contents)は、指定された精度を有する浮動小数点のオペランドに分割され、整数値に変換される。結果は、連結されて、レジスタrdにセットされる。
例示的な実施形態において、演算は、指定された丸めオプション(specified round option)を使用して、または、指定されていない場合には最近接値への丸め処理(round to nearest)を使用して、丸められる。丸めオプションが指定されている場合には、デフォルト例外処理(default exception handling)が指定されていなければ、浮動小数点無効演算(floating point invalid operation),ゼロによる除算(divide by zero),オーバーフロー(overflow),またはアンダーフロー(underflow)が生じるときに、または、規定されていれば結果が不正確であるときに、演算は浮動小数点例外(floartiing point exception)を発生する(raise)。丸めオプションが指定されていない場合、または、デフォルト例外処理が指定されている場合には、浮動小数点例外は発生せず、IEEE 754のデフォルトルール(default rule)に従って処理される。
図25Bは、Ensemble Sink Floating-point命令の擬似コード2530の例示的な実施形態を示す。図25Cは、Ensemble Sink Floating-point命令の例外2560の例示的な実施形態を示す。
図25Dは、Ensemble Sink Floating-point命令の擬似コード2570の例示的な実施形態を示す。
(クロスバーの圧縮,拡張,回転,シフト(Crossbar Compress,Expand,Rotate,and Shift))
本発明の1つの実施形態において、クロスバースイッチユニット(例えば、ユニット142や148)は、前述のように、データ処理演算(data handling operations)を実行する。図32Aに示されたように、そのようなデータ処理演算は、Crossbar Compress演算,Crossbar Expand演算,Crossbar Rotate演算,およびCrossbar Shift演算についての様々な例を含むことも可能である。図32Bおよび図32Cは、様々なCrosbar Compress命令,Crossbar Rotate命令,Crossbar Expand命令,Crossbar Shift命令を実行するために使用可能であるフォーマットおよび演算コードの例示的な実施形態を示す。図32Bおよび図32Cに示されたように、この例示的な実施形態において、レジスタrcのコンテンツは、指定されたサイズを有するオペランドの集合に分割され、レジスタrbのコンテンツの一部によって指定された量(amount)に基づいて圧縮され,拡張され,回転され,または,シフトされて、結果の集合を生成(yielding)する。結果の集合は、連結されて、レジスタrdにセットされる。
様々なGroup Compress演算は、オペランドの集合を低精度のデータから高精度のデータに変換することも可能である。各々のビットフィールド(bit field)についての任意の半分のサイズのサブフィールドは、選択されて、結果の中に現れることが可能である。例えば、図32Dは、X.COMPRESS rd=rc,16,4演算を示す。X.COMPRESS rd=rc,16,4演算は、16バイトデータ(hexlet)における4バイトデータ(quadlet)の各々のビット19..4を選択する。様々なGroup Shift演算は、指定された方向(例えば、右へのシフトや、左へのシフト)において、指定されたビット数に基づいてオペランドの集合をシフトさせることが可能である。図32Cを見ても分かるように、特定のGroup Shift Left命令は、各々のオペランドに対して、シフトに関連する中身のない(empty)下位のビットを除去すること(ゼロにすること)を引き起こす(involve)ことも可能である。特定のGroup Shift Right命令は、各々のオペランドに対して、シフトに関連する中身のないの上位ビットを除去すること(ゼロにすること)を引き起こすことも可能である。さらに、特定のGroup Shift Right命令は、各々のオペランドに対して、符号ビットのコピーを伴うシフトに関連する中身のない上位ビットを埋める(filling)こと引き起こすことも可能である。
(抽出)
本発明の1つの実施形態において、データ処理演算(data handling operations)は、Crossbar Extract命令を含むことも可能である。図33Aおよび図33Bは、Crossbar Extract命令を実行するために使用可能であるフォーマットおよび演算コードの例示的な実施形態を示す。図33Aおよび図33Bに示されたように、この例示的な実施形態において、レジスタrd,rc,およびrbのコンテンツは、取り出される(fetched)。指定された演算は、これらのオペランドで実行される。結果は、レジスタraにセットされる。
Crossbar Extract命令は、様々な方法で異なるオペランドからビットを抽出することを可能にする。特に、レジスタrbのコンテンツのビット31..0は、データを抽出する方法と特定の演算に対してその演算を実行する方法とを制御するいくつかのパラメータを指定する。制御フィールドのポジションは、ソース位置(source position)に対して、動的な演算処理(dynamic computation)のための固定制御値(fixed control value)を追加することを可能にし、制御フィールドの下位の16ビットに対して、単一のGCOPYI.128命令(付録を参照)によってより簡潔な抽出ケース(the simpler extract cases)のいくつかについてセットすることを可能にする。制御フィールドは、さらに、下位の8ビットがゼロでない場合に丸め処理ではなく切り捨て処理(truncation)で128ビット抽出が実行されるように、配列される。
Figure 2007531072
以下のテーブルには、各ラベルについての意味が記述されている。
Figure 2007531072
9ビットgsspフィールドは、数式 gssp=512-4*gsize+spos に従って、集合サイズgsizeおよびソース位置sposの両方を符号化する。集合サイズgsizeは、値域1..128における2のべき(累乗)である。ソース位置sposは、値域0..(2*gsize)-1の中に存在する。
s,n,m,l,およびrndのフィールドにおける数値は、以下の意味を有する。
Figure 2007531072
図33Cに示されたように、X.EXTRACT命令について、m=0のとき、パラメータが解釈されてレジスタrdおよびrcの連結コンテンツからフィールドが選択され、連結され且つレジスタraにセットされた数値が抽出される。図33Dに示されたように、クロスバーの結合抽出(crossbar merge extract)(X.EXTRACT m=1のとき)について、パラメータが解釈されてレジスタrcのコンテンツとともにレジスタrdのコンテンツからのフィールドが結合される。結果は、連結されて、レジスタraにセットされる。
(シャッフル)
図34Aに示されたように、本発明の1つの実施形態によれば、データ処理演算は、様々なShuffle命令を含むことも可能である。Shuffle命令は、レジスタのコンテンツをオペランドの集合に分割して種々の方法で交互配置(interleaved)することを可能にする。図34Bおよび図34Cは、様々なShuffle命令を実行するために使用可能であるフォーマットおよび演算コードの例示的な実施形態を示す。図34Bおよび図34Cに示されたように、この例示的な実施形態において、rcおよびrbのフィールドが同等であるか否かに依存して、2つの演算のうち1つが実行される。図34Bと以下の記述は、rd,rc,rb,op,v,w,h,およびsizeのフィールドのフォーマットとrd,rc,rb,op,v,w,h,およびsizeのフィールドの関係とについて説明している。
この実施形態において、rcおよびrbのフィールドが同等である場合、128ビットオペランドが、レジスタrcのコンテンツから取得される。サイズvのアイテムは、wパイルに分割されて、sizeビットの集合内において、opの値に応じて一緒にシャッフルされる。結果は、レジスタrdにセットされる。
さらに、rcおよびrbのフィールドが同等ではない場合、レジスタrcおよびrbのコンテンツが、256ビットのオペランドの中に連結される。サイズvのアイテムは、wパイルに分割されて、opの値に従って一緒にシャッフルされる。hの値,opのサブフィールドに依存して、256ビットのシャッフルされたコンテンツのうち下位の128ビット(h=0)または上位の128ビット(h=1)が、結果として選択される。結果はレジスタrdにセットされる。
図34Dに示されたように、16バイトデータ命令(hexlet instruction)(X.SHUFFLE.128 rd=rcb.8.4)内におけるクロスバー4分割シャッフル(crossbar 4-way shuffle)の一例は、128ビットのオペランドを16バイトに分割して、バイトを4つに分割することも可能である(分割方法は、以下のダイアグラムにおいて形態を変化することによって示される)。4つのパーティションは、完全にシャッフルされて、128ビットの結果を生成する。図33Eに示されたように、triclet命令(X.SHUFFLE.256 rd=rc,rb,8,4,0)内におけるバイトのクロスバー4分割シャッフルの一例は、rcとrbのコンテンツを連結して、その後、256ビットのコンテンツを32バイトに分割して、バイトを4つに分割することも可能である(分割方法は、以下のダイアグラムにおいて形態を変化することによって示される)。4つのパーティションのうち下位の半分は、完全にシャッフルされて、128ビットの結果を生成する。
最新の即値hを1(X.SHUFFLE.256 rd=rc,rb,8,4,1)に変化させることにより、4つのパーティションの上位半分で同じ機能を実行する演算を修正してもよい。rcとrbが等しい場合は、以下のテーブルは、opフィールドの値と、sizeとvとwに関連した値とを示す。
Figure 2007531072
rcとrbが等しくない場合は、以下のテーブルは、op4..0フィールドの値と、sizeとvとwに関連した値とを示す。Op5はhの値であり、hは、それぞれのパーティションの上位又は下位の、どちらの半分が結果の中へシャッフルされるかを制御する。
Figure 2007531072
(拡張ガロア解法(Wide Solve Galois ))
Wide Solve Galois命令 の例示的な実施形態が、図35A〜35Bに示される。図35Aは、方程式を反復して解くための方法と装置をあげて本発明を説明する。説明される特定の動作は、S,L,およびWが次数がそれぞれ2T,T+1,およびTのGF(256)等のガロア体の多項式である場合の、ガロア多項式一致方程式L*S=W(mod z**2T)の種類向きの拡張ソルバーである。この問題の解決が、デジタル通信や記憶媒体をより信頼性のあるものにするために符号ブロックにおいて最大T個までのエラーを最適に訂正する、リード・ソロモン符号等のある種のエラー訂正コードにおける最も重要な計算ステップである。この実施を支持する数学的処理のさらに進んだ詳細は(Sarwate, Dilip V. and Shanbhag, Naresh R. "High-Speed Architectures for Reed-Solomon Decoders", 2000年6月7日改訂, IEEE Trans.VLSI Systems に提出。, http://icims.csl.uiuc.edu/-shanbhag/vips/publications/bma.pdf からアクセス可能であり、それらの全体を参照としてここに援用する。)から得られる。
図35Aの装置は、本発明で参照された例示的な実施形態にすでに含まれるメモリ片(strip)、ガロア乗算器、ガロア加算器、マルチプレクサ、および制御回路を含む。Wide Matrix Multiply Galois命令の説明から理解できるように、従来よりガロア乗算と関連づけられる多項式剰余ステップは、剰余を求めその後加算するステップを、多項式加算を行いその後剰余を求めるステップに交換することによって、ガロア加算の後に移動させることができる。
この装置は、左の反復制御ブロックによる指定に従って、多数の連続反復ステップのために組み込まれたメモリ片に対して読み出しと書き込みの両方を行う。それぞれのメモリ片には、最初に多項式Sがロードされ、2Tの反復が完了した時(示される例では、T=4)、上のメモリ片は、所望の解多項式であるLとWとを収容している。図35Bのコードブロックは、図35Aの装置の動作の詳細をC言語表記を用いて説明する。
類似したコードと装置が、様々な大きさの整数および浮動小数点数等、他の数学分野でのスカラー量の乗算加算反復方程式ソルバー用、および正定値行列やサイメトリックス(symetrix)行列、または上三角行列もしくは下三角行列等の特定の特性の行列オペランド用に開発され得る。
(拡張変換スライス(Wide Transform Slice))
Wide Transform Slice命令の例示的な実施形態が、図36A〜図36Bに示される。図36Aは、周波数領域での通信や画像解析等に必要とされるフーリエ変換等の変換における非常に速い計算のための方法と装置を説明する。この装置には、16の複素乗算器の4×4の配置が示され、それぞれ第1の拡張オペランドキャッシュに隣接している。第2の拡張オペランドキャッシュ、または組み込まれた係数メモリアレイが、拡張組み込みキャッシュによるデータアクセスで乗算器によって乗算されたオペランドを供給する。結果として生じる積は、不可分変換の片に供給される。片は、この好まれる実施形態において、基数4または基数2のバタフライユニットである。これらのユニットは、乗算器の列または行から積を受け取り、結果を、指定されたペース(stride)で桁反転させて第1の拡張オペランドキャッシュに再び置く。
汎用レジスタraは、サイズや構造の指定子のみならず、第1の拡張オペランドのアドレスをも収容し、第2の汎用レジスタrbは、サイズや構造の指定子のみならず、第2の拡張オペランドのアドレスをも収容する。
更なる汎用レジスタrcは、精度等のパラメータ、すなわち結果抽出パラメータを指定する(本発明について説明されるさまざまな抽出(Extract)命令のように)。
別の実施形態では、第1と第2のいずれのメモリオペランドでもアドレス指定によって獲得できる特有のメモリを用いることによって、拡張されたメモリに第2のメモリオペランドが第1のメモリオペランドと一緒に置かれてもよい。
別の実施形態では、結果が第3の拡張オペランドキャッシュメモリに置かれる。この第3のメモリオペランドは、再度別のメモリアドレス指定を用いることによって、第1のメモリオペランドと組み合わされてもよい。拡張オペランドキャッシュタグを再びつけることによって、第3のメモリが第1のメモリと交代で記憶場所となってもよい。このようにして、Wide Transform Slice命令の完了時には、第1のメモリオペランド用に指定された位置に結果が現れるように、拡張オペランドキャッシュタグが再びつけられる。この交代は、ふさわしい場所でない場所を指定する変換ステップを可能にし、中止されて実行フローの中断の結果として要求される場合には、再スタートが続いて行われる動作を可能にする。
図36Bのコードブロックは、図36Aの装置の動作の詳細をC言語表記を用いて説明する。類似したコードと装置が、他の変換および、多項式、ガロア体、および様々な大きさの整数と浮動小数点の実数や複素数等の他の数学分野のために開発され得る。
例示的な実施形態において、Wide Transform Slice命令はまた、命令のスカラー量の結果として値を汎用レジスタrcに配置されるように戻し、すべての結果要素の最上位ビットの位置を計算する。これは、抽出制御、および他の情報が配置されるのと同じオペランドであるが、代わりの実施形態では、別個のレジスタであってもよい。特に、例示的な実施形態において、最上位ビットのこの位置は、ベクトル量のブール(Boolean)演算結果を生じる、結果成分のうち並列なサブセットについての一連のブール演算を用い、演算の終わりにおいて、ブール演算結果のベクトル量がスカラー量のブール値に換算し、スカラー量のブール値の最上位ビットを決定することによって計算されてもよい。
抽出制御や他の情報を表す値を最上位ビットのこの位置に加えることによって、Wide Transform Slice命令の次の段階で用いられる適切な拡大縮小パラメータが得られる。最上位ビットの情報を蓄積することによって、変換全体の包括的な拡大縮小値を得ることができ、変換された結果は、先行技術の固定拡大縮小方式を超える精度を維持する。
(拡張畳み込み抽出(Wide Convolve Extract))
Wide Convolve Extract命令の例示的な実施形態が、図37A〜図37Kに示される。同様の方法と装置が、1次元(1-D)または2次元(2-D)の畳み込み(convolution)の方法によるディジタルフィルタリングと1次元または2次元の相関(correlation)の方法による動き評価とのいずれにも応用されうる。相関は1次元または2次元のパターンの順序を逆にして畳み込みを行うことによって計算され得るので、同じ操作が相関に用いられてもよい。したがって、ここで説明される畳み込み命令は、相関に用いられてもよいし、または、係数オペランドブロックの順が1次元または2次元で逆にされることを除いては、ここで説明される畳み込み命令に類似するWide Convolve Extract命令が組み立てられてもよい。
ディジタルフィルタ係数、または評価テンプレートブロックは、一つの拡張オペランドメモリに記憶され、映像データは2番目の拡張オペランドメモリに記憶される。映像データの単独の行または列は、映像データの配置とテンプレートブロックおよび乗算器との関係の対応する変更を伴って、映像アレイに移される。2番目の組み込みメモリのデータを部分的に新しくして移動させるこの方法により、映像に対するテンプレートの相関が、乗算器アレイにとって大幅に強調される効果的な帯域幅と共に計算されうる。なお、本実施形態においては、アレイの移動よりもむしろ循環アドレス指定が採用されており、移動量やスタート位置は、命令のパラメータと同様に指定される。
図37Aと37Bは、Wide Convolve Extract命令を実行するために用いられうるフォーマットとオペレーションコードの例示的な実施形態を示す。図37Aと37Bに示されるように、この例示的な実施形態において、汎用レジスタrcとrdの内容は、拡張オペランド指定子として用いられる。これらの指定子は、拡張オペランド用の仮想のアドレス、拡張オペランドのサイズ、および構造を決定する。仮想のアドレスとオペランドサイズが用いられ、指定されたサイズの第1および第2の値がメモリからロードされる。集合のサイズと他のパラメータが汎用レジスタrbの内容から指定される。値は、指定されたサイズと構造のオペランドの集合に分割され、畳み込まれ、値の集合を生み出す。値の集合は、指定された通りに、端数を丸められ、制限されており、指定されたサイズの結果の集合をもたらす。結果の集合は連結リストに配列され、汎用レジスタraに配置される。
拡張畳み込み抽出(wide-convolve-extract)命令(W. CONVOLVE. X. B, W. CONVOLVE. X. L)は、データパスのサイズではなく、メモリオペランドの範囲のみによって制限される最大のサイズの分割アレイの乗算を実行する。メモリオペランドの範囲、サイズおよび構造のパラメータは、常に2のべき乗として指定される。他のパラメータがさらに、有効なオペランドの範囲を2のべき乗の範囲に制限してもよい。
図37Cに示されるように、例示的な実施形態において、拡張オペランド指定子のそれぞれは、所望のメモリオペランドのバイト範囲の2分の1を指定子に加えることによって、メモリオペランドの範囲を指定する。拡張オペランド指定子のそれぞれは、所望のバイト幅の4分の1を指定子に加えることによって、メモリオペランドの構造を指定する。各メモリオペランドの縦幅はオペランドの範囲をオペランドの横幅で割ることによって推測されうる。1次元ベクトルは、1の高さ、および範囲と等しい幅を持つ行列として表される。代わりの実施形態では、ここでの仕様の一部が命令の一部として含まれるものであってもよい。
例示的な実施形態において、Wide Convolve Extract命令は、様々な方法で計算された値の集合からビットが抽出されるのを許容する。例えば、汎用レジスタrbの内容のビット31..0は、データが抽出される方法を制御する様々なパラメータを指定する。制御領域の位置およびデフォルト値は、ソース位置が動的な計算用の固定された制御値に加算されることを見越しており、制御領域の下位16ビットが、単一のGCOPYI命令によって、より単純なケースのいくつかに設定されることを見越している。代わりの実施形態では、ここでの明細の一部が命令の一部として含まれるものであってもよい。
Figure 2007531072
下の表は、各ラベルの意味を説明する。
Figure 2007531072
9ビットのgssp領域は、集合のサイズ(group size)であるgsizeとソース位置(source position)であるsposとの両方を、公式gssp =512-4*gsize + sposに従ってエンコードする。集合のサイズであるgsizeは、1..128の範囲の2のべき乗である。ソース位置であるsposは、0..(2*gsize)-1の範囲にある。
x,s,n,m,1の値、およびrnd領域は次の意味を有する。
Figure 2007531072
汎用レジスタrbの中身の95..32ビットは、メモリオペランドの部分の選択を制御する様々なパラメータを指定する。制御領域の位置やデフォルト値は、乗数の0の長さのフィールドがデフォルトで0になり、被乗数の始点位置領域計算が32ビット計算を用いることによって他の領域へのオーバーフローを起こさせることなくラップすることを可能にする。
Figure 2007531072
下の表は、各ラベルの意味を説明する。
Figure 2007531072
32ビットのmpos領域は、被乗数の始点(origin)の水平位置および垂直位置をエンコードし、その位置は、乗数の0番目の要素が結果の0番目の要素を生じるように組み合わせる被乗数要素の位置である。この領域で変化する値は、様々な結果が、2つの拡張オペランドを変化させることなく計算されることを可能にする。mpos領域は被乗数オペランドの開始からの1バイトのオフセットである。
32ビットのmzero領域は、0の値を有する乗数オペランドの部分をエンコードし、それはかけ算や加算から省略されてもよい。実施では、命令を実行するための時間および/または電力を減らすために、この領域に0でない値を用いてもよいし、あるいは、この領域の内容を無視してもよい。実施では、dmsize-..dmsize-(mzero*8)のビットの乗数オペランドを0の値と考えて、このビット範囲から得られる任意の乗数の乗算を省いてもよい。mzero領域は、乗数オペランドの最後から1バイトのオフセットである。
拡張オペランドの仮想アドレスはアラインされていなければならず、すなわち、バイトアドレスは、バイトで表されるオペランド範囲の正確な倍数でなければならない。もしアドレスがアラインされていなければ、仮想アドレスは妥当な指定子にエンコードされ得ない。妥当でない指定子には、「オペランド境界」例外("Operand Boundary" exception)の原因となるものもある。
Z(ゼロ)に端数を丸めることは、符号なしの抽出演算のためには定義されておらず、F(フロア)丸めが代用される。F丸めにより、符号なしの結果が下方に適切に丸められる。
オペランドメモリやキャッシュ、または正確に合計される値の数の制限によってオペランドの範囲が制限されてもよい。それにより、予約命令(Reserved Instruction)例外が引き起こされる。
図37Dと37Eに示されるように、固有のレジスタ値の例として、拡張畳み込み抽出ダブレット(wide-convolve-extract-doublets)命令(W.CONVOLVE.X.B or W.CONVOLVE.X.L)は、rb=24で開始し、メモリベクトルrc[c31 c30.. c1 c0]をメモリベクトルrd[d15 d14... d1 d0]で畳み込み、汎用レジスタrbの内容によって指定される通りに丸められて制限された積[c16d15+c17d14+...+c30d1+c31d0 c15d15+c16d14+...+c29d1+c30d0 ... c10d15+c11d14+...+c24d1+c25d0 c9d15+c10d14+...+c23d1+c24d0]を生じる。値c8...c0は、計算で用いられず、どんな値でもよい。
固有のレジスタ値の例として、図37Fと37Gに示されるように、rb=8のmposとrb=48のmzero(それで、長さ=(512-mzero)*dmsize/512=13)における拡張畳み込み抽出ダブレット(wide-convolve-extract-doublets)命令(W.CONVOLVE.X.L)は、メモリベクトルrc[c31 c30.. c1 c0]をメモリベクトルrd[d15 d14... d1 d0]で畳み込み、指定される通りに丸められて制限された積[c3d12+c4d11+...+c14d1+c15d0 c2d12+c3d11+...+c13d1+c14d0 ... c29d12+c30d11+...+c8d1+c9d0 c28d12+c29d11+...+c7d1+c8d0]を生じる。この場合、値の有効な範囲がc0からc31...28にラップするようにスタート位置が配置される。値c27...c16は、計算で用いられず、どんな値でもよい。長さのパラメータは13に設定されるので、d15...d13の値は0でなければならない。
固有のレジスタ値の例として、図37Hと37Iに示されるように、rb=24のmposとrc=rd=4のvsizeにおける拡張畳み込み抽出ダブレット2次元(wide-convolve-extract-doublets-two-dimensional)命令(W.CONVOLVE.X.B or W.CONVOLVE.X.L)は、メモリベクトルrc[c127 c126 ... c31 c30 ...c1 c0]をメモリベクトルrd[d63 d62 ... d15 d14 ... d1 d0]で畳み込み、汎用レジスタrbの内容によって指定される通りに丸められて制限された積[c113d63+c112d62+...+c16d15+c17d14+...+c30d1+c31d0 c112d63+c111d62+...+c15d15+c16d14+...+c29d1+c30d0 ... c107d63+c106d62+...+c10d15+c11d14+...+c24d1+c25d0 c106d63+c105d62+...+c9d15+c10d14+...+c23d1+c24d0]を生じる。
固有レジスタ値の例として、図37Jと37Kに示されるように、rb=12のmposにおける拡張畳み込み抽出複素ダブレット(wide-convolve-extract-complex-doublets)命令(rbで設定されたnと共にW.CONVOLVE.X.B or W.CONVOLVE.X.L)は、メモリベクトルrc[c15 c14.. c1 c0]をメモリベクトルrd[d7 d6 ... d1 d0]で畳み込み、汎用レジスタrbの内容によって指定される通りに丸められて制限された積[c8d7+c9d6+...+c16d1+c15d0 c7d7+c8d6+...+c13d1+c14d0 c6d7+c7d6+...+c12d1+c13d0 c5d7+c6d6+...+c11d1+c12d0]を生じる。
(拡張畳み込み浮動小数点(Wide Convolve Floating-point))
Wide Convolve Floating-point命令は、オペランドの乗算と加算とが浮動小数点演算を用いて進むことを除いては、上で説明したWide Convolve Extract命令と同様に演算する。実質的に制約されない精度での丸め処理なしに、最終結果に対して結果オペランドの精度にするための1回の丸めを行い、例示的な実施形態の乗算積と中間和との表現がなされる。代わりの実施形態において、積と和は、拡大されているが制約された精度で計算される。別の代わりの実施形態において、積と和は、オペランドのサイズに制限された精度で計算される。
例示的な実施形態のWide Convolve Floating-point命令は、浮動小数点演算に適用されないs領域を除いては、汎用レジスタrb領域にWide Convolve Extract命令と同じフォーマットを用いてもよい。例えば、fsize,dpos,s,mおよびl領域とgssp領域のsposパラメータは、この命令においては無視されてもよい。代わりの実施形態において、残りの情報のいくつかは、例えば、gsizeパラメータまたはnパラメータのように、命令の中で指定されてもよいし、例えば、端数を丸めるパラメータが最も近い値への丸め(round-to-nearest)に固定されてもよいように、指定された値に固定されてもよい。代わりの実施形態において、残りの領域は再配列し直されてもよい。例えば、mpos領域を除くすべてが命令に含まれるか、あるいは無視された場合、mpos領域は単独で、汎用レジスタrbの内容の最下位部分に含まれ得る。
(拡張デコード(Wide Decode))
強化された拡張演算は、ビタビ(Viterbi)復号やターボ復号によるエラー訂正にも有用である。この場合、組み込みメモリ片は、状態メトリクスやプレトレースバック決定数字を収容するのに用いられる。Add-Compare-Swapまたは、log-MAPユニットは、例えば私たちの好ましい実施形態における外部レジスタからの128ビットといった、少数の分岐メトリクスを受け取る。アレイは、多くの実質的なコードにとって非常に大きい状態メトリックメモリのエントリを読み、再計算し、更新する。複数の決定数字は、典型的にはそれぞれ16を基数とするプレトレースバック方法の4ビットであり、2番目のトレースバックメモリに蓄積される。アレイ計算と状態メトリックの更新は、指定された数のサイクル繰り返し実行される。次に第2の繰り返し操作は、状態トレリスを通る最も見込みのあるパスを分析するために、トレースバックメモリをトラバースする。
(拡張ブール演算(Wide Boolean))
強化された拡張演算は、近傍のマルチプレクサとラッチに相互に接続され、典型的には入力アドレスの3または4ビットでそれぞれ指定される8または16エントリを伴う小さいルックアップテーブル(LUTs)のアレイを要するWide Boolean演算でもある。LUTエントリ、マルチプレクサ選択、およびラッチクロックイネーブルの制御は、組み込み拡張メモリによって規定される。この構造は、一般的な用途のマイクロプロセッサのレジスタから供給されるオペランドに対する繰り返し演算を実行できるフィールドプログラマブルゲートアレイの片を供給する方法を提供する。これらの演算は、内部ラッチとメモリ片自体の両方を更新する任意に規定できる論理演算を実行しながら、多数サイクル繰り返し得る。
(拡張オペランドメモリ間の転送(Transfers Between Wide Operand Memories))
ここで説明する方法と装置は、特定用途向けIC(ASICs: application-specific integrated circuits)で実現されるものを見積もるマイクロプロセッサの演算器の実効的な帯域幅を増大させる問題に広く適用できる。拡張オペランドを処理することが可能な機能ユニットが同時に2つ以上存在する時、データを発生する一つの機能ユニットから組み込みメモリへデータを移し、さらにメモリシステムを介して、または迂回させて、拡張オペランドメモリにデータをロードした後に、データを消費する必要がある拡張オペランドを処理することが同様に可能な第2の機能ユニットにデータを転送する問題が起きる。データをあるメモリ位置から他にあからさまにコピーすることは、このような転送を達成するが、それに伴うオーバーヘッドがプロセッサ全体の効率を減らす。
図38は、オーバーヘッドを減少させた2つ以上のユニット間の転送についてのかかる問題を解決するための方法と装置を説明する。組み込みメモリアレイは、単一のグローバルメモリ空間に概念上存在するデータのローカルコピーを保持するキャッシュとして機能する。キャッシュ整合性制御部(cache coherency controller)は、キャッシュ動作のアドレスストリームを監視し、指定された基準に達する整合性を維持するためにMOESIやMESI等の整合性プロトコルの一つを採用する。キャッシュ整合性制御部の適切な初期化によって、一般的な用途のマイクロプロセッサで動作するソフトウェアが、拡張ユニットでの計算とオーバーラップして拡張ユニット間でのデータ転送をバックグラウンドで行うことを可能にし、あからさまな読み込みと格納のオーバーヘッドを減らす。
(結論)
本発明の好ましい実施形態と他の選択可能な方法を十分に説明したが、当業者は、ここでの教示を与えられると、本発明から離れない多数の選択可能な方法、および同等のものが存在することを認識するだろう。したがって、本発明は上記説明によって制限されず、請求項だけによって制限されることが意図されている。
図1は、本発明の例示的な実施形態に従って、システムの機能ブロックを示すシステムレベルの図である。 図2は、本発明の例示的な実施形態に従った拡張行列乗算(wide matrix multiply)のマトリックス表現である。 図3は、本発明の例示的な実施形態に従った拡張行列乗算(wide matrix multiply)の更なる表現である。 図4は、本発明の例示的な実施形態に従って、実行パイプラインからのデカップルドアクセスおよび同時マルチスレッド処理(Simultaneous Multi Threading and Decoupled Access from Execution)複合プロセッサを組み込んだシステムの機能ブロックを示すシステムレベルの図である。 図5は、本発明の例示的な実施形態に従って、拡張オペランドを説明している。 図6は、本発明の例示的な実施形態に従って、復号化する指定子の扱い方を説明している。 図7は、本発明の例示的な実施形態に従って、操作上のブロック形態で拡張演算器を説明している。 図8は、本発明の例示的な実施形態に従って、拡張マイクロキャッシュ制御機能をフロー図の形式で説明している。 図9は、本発明の例示的な実施形態に従って、拡張マイクロキャッシュのデータ構造を説明している。 図10は、本発明の例示的な実施形態に従って、拡張マイクロキャッシュ制御を説明している。 図11は、本発明の例示的な実施形態に従って、拡張マイクロキャッシュ制御を説明している。 図12A〜12Dは、本発明の例示的な実施形態に従って、Wide Switch命令を説明している。 図13A〜13Dは、本発明の例示的な実施形態に従って、Wide Translate命令を説明している。 図14A〜14Eは、本発明の例示的な実施形態に従って、Wide Multiply Matrix命令を説明している。 図15A〜15Fは、本発明の例示的な実施形態に従って、Wide Multiply Matrix Extract命令を説明している。 図16A〜16Eは、本発明の例示的な実施形態に従って、Wide Multiply Matrix Extract Immediate命令を説明している。 図17A〜17Eは、本発明の例示的な実施形態に従って、Wide Multiply Matrix Floating point命令を説明している。 図18A〜18Dは、本発明の例示的な実施形態に従って、Wide Multiply Matrix Galois命令を説明している。 図19A〜19Gは、本発明の例示的な実施形態に従って、Ensemble Extract Inplace命令を説明している。 図20A〜20Jは、本発明の例示的な実施形態に従って、Ensemble Extract命令を説明している。 図21A〜21Bは、本発明の例示的な実施形態に従って、System and Privileged Library Callsを説明している。 図22A〜22Bは、本発明の例示的な実施形態に従って、Ensemble Scale-Add Floating-point命令を説明している。 図23A〜23Cは、本発明の例示的な実施形態に従って、Group Boolean命令を説明している。 図24A〜24Cは、本発明の例示的な実施形態に従って、Branch Hint命令を説明している。 図25A〜25Cは、本発明の例示的な実施形態に従って、Ensemble Sink Floating-point命令を説明している。 図26A〜26Cは、本発明の例示的な実施形態に従って、Group Add命令を説明している。 図27A〜27Cは、本発明の例示的な実施形態に従って、Group Set命令とGroup Subtract命令とをを説明している。 図28A〜28Cは、本発明の例示的な実施形態に従って、Ensemble Convolve命令とEnsemble Divide命令とEnsemble Multiply命令とEnsemble Multiply Sum命令とを説明している。 図29は、他の部分での詳細な命令定義の範囲内での使用が定義された典型的な機能を説明している。 図30A〜30Cは、本発明の例示的な実施形態に従って、Ensemble Floating-Point Add命令とEnsemble Floating- Point Divide命令とEnsemble Floating-Point Multiply命令とを説明している。 図31A〜31Cは、本発明の例示的な実施形態に従って、Ensemble Floating-Point Subtract命令を説明している。 図32A〜32Cは、本発明の例示的な実施形態に従って、Crossbar Compress命令とExpand命令とRotate命令とShift命令とを説明している。 図33A〜33Dは、本発明の例示的な実施形態に従って、Extract命令を説明している。 図34A〜34Eは、本発明の例示的な実施形態に従って、Shuffle命令を説明している。 図35A〜35Bは、本発明の例示的な実施形態に従って、Wide Solve Galois命令を説明している。 図36A〜36Bは、本発明の例示的な実施形態に従って、Wide Transform Slice命令を説明している。 図37A〜37Kは、本発明の例示的な実施形態に従って、Wide Convolve Extract命令を説明している。 図38は、本発明の例示的な実施形態に従って、拡張オペランドメモリ間の転送(Transfers Between Wide Operand Memories)を説明している。

Claims (30)

  1. 第1のデータパス幅を有する第1のメモリシステムと、それぞれが前記第1のデータパス幅より大きなデータパス幅を有する第2及び第3のメモリシステムとを備えるプログラム可能なプロセッサにおいて計算を実行する方法であって、
    前記第1のデータパス幅を有する第1のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするステップと、
    前記第1のデータパス幅を有し、前記第2のメモリシステムにおいて前記第1のメモリオペランド部と連結されて第1の連結データを生成する第2のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするステップと、
    前記第1のデータパス幅を有する第3のメモリオペランド部を、前記第1のメモリシステムから前記第3のメモリシステムへコピーするステップと、
    前記第1のデータパス幅を有し、前記第3のメモリシステムにおいて前記第3のメモリオペランド部と連結されて第2の連結データを生成する第4のメモリオペランド部を、前記第1のメモリシステムから前記第3のメモリシステムへコピーするステップと、
    前記第1及び第2の連結データを使用して、単一命令の計算を実行するステップとを備える
    計算実行方法。
  2. 請求項1に記載の方法において、
    前記計算を実行するステップは、
    それぞれ幅が前記第1のデータパス幅より大きい前記第1の連結データの一部と前記第2の連結データの一部とを読み出し、前記第1の連結データの一部と前記第2の連結データの一部とを用いて計算を実行するステップを更に備えるものである
    計算実行方法。
  3. 請求項2に記載の方法において、
    前記第1のメモリシステム内の前記第1及び第2の連結データのそれぞれのメモリアドレスを指定するステップを更に備える
    計算実行方法。
  4. 請求項3に記載の方法において、
    前記第1及び第2の連結データのそれぞれのメモリオペランドサイズとメモリオペランド形態を指定するステップを更に備える
    計算実行方法。
  5. 請求項2に記載の方法において、
    前記第2のメモリシステム内の前記第1の連結データと前記第3のメモリシステム内の前記第2の連結データとのそれぞれの有効性をチェックし、有効性が確認されれば、その次の命令に、前記第1及び第2の連結データを前記第1のメモリシステムからコピーすることなく使用することを許可するステップを更に備える
    計算実行方法。
  6. 請求項2に記載の方法において、
    前記計算を実行するステップは、
    前記第1の連結データに含まれる区分要素と前記第2の連結データに含まれる区分要素との間の畳込みを実行して、畳込みデータを生成し、前記畳込みデータの指定された部分フィールドを抽出し、抽出データを連結して前記演算器のデータパス幅と同じサイズの連結結果を生成するステップを更に備えるものである
    計算実行方法。
  7. 請求項2に記載の方法において、
    前記計算を実行するステップは、
    前記第2の連結データに含まれる係数を用いて前記第1の連結データに含まれる区分要素の変換を実行して変換データを生成し、前記変換データの指定された部分フィールドを抽出して抽出データを生成し、前記抽出データを連結するステップを更に備えるものである
    計算実行方法。
  8. 第1のデータパス幅を有する第1のメモリシステムと、前記第1のデータパス幅よりも大きなデータパス幅を有する第2及び第3のメモリシステムとを備えるプログラム可能なプロセッサにおいて計算を実行する方法であって、
    前記第1のデータパス幅を有する第1のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするステップと、
    前記第1のデータパス幅を有し、前記第2のメモリシステムにおいて前記第1のメモリオペランド部と連結されて第1の連結データを生成する第2のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするステップと、
    前記第1の連結データを使用して単一命令の計算を実行し、第2の連結データを生成するステップと、
    前記第1のデータパス幅を有し、前記第2の連結データの一部を含む第3のメモリオペランド部を、前記第3のメモリシステムから前記第1のメモリシステムへコピーするステップと、
    前記第1のデータパス幅を有し、前記第2の連結データの一部を含み、前記第3のメモリシステムにおいて前記第3のメモリオペランド部と連結される第4のメモリオペランド部を、前記第3のメモリシステムから前記第1のメモリシステムへコピーするステップとを備える
    計算実行方法。
  9. 請求項8に記載の方法において、
    前記計算を実行するステップは、
    幅が前記第1のデータパス幅よりも大きい前記第1の連結データの一部を読み出し、前記第1の連結データの一部を用いて計算を実行するステップを更に備えるものである
    計算実行方法。
  10. 請求項9に記載の方法において、
    前記第1のメモリシステム内の前記第1及び第2の連結データのそれぞれのメモリアドレスを指定するステップを更に備える
    計算実行方法。
  11. 請求項10に記載の方法において、
    前記第1及び第2の連結データのそれぞれのメモリオペランドサイズとメモリオペランド形態を指定するステップを更に備える
    計算実行方法。
  12. 請求項9に記載の方法において、
    前記第2のメモリシステム内の前記第1の連結データの有効性をチェックし、有効性が確認されれば、その次の命令に、前記第1の連結データを前記第1のメモリシステムからコピーすることなく使用することを許可するステップを更に備える
    計算実行方法。
  13. 請求項8に記載の方法において、
    前記計算を実行するステップは、
    前記第1の連結データに含まれる区分要素の変換を実行して変換データを生成し、前記変換データの指定された部分フィールドを抽出して抽出データを生成し、前記抽出データを連結して前記第2の連結データを生成するステップを更に備えるものである
    計算実行方法。
  14. 請求項8に記載の方法において、
    前記計算を実行するステップは、
    ブール演算を用いて前記抽出データの一部を累積されたブールデータと結合し、ブール演算を用いて前記累積されたブールデータの区分要素を結合して、結合されたブールデータを生成し、前記結合されたブールデータから抽出されたデータの最上位ビットを確定して、前記最上位ビットの位置を含む結果をレジスタに返すステップを更に備えるものである
    計算実行方法。
  15. 請求項8に記載の方法において、
    前記第1及び第2の連結データに対応する第1及び第2の有効性情報を操作し、前記第1の連結データのメモリアドレスを指定する命令が完了した後で、前記第2の連結データの内容が、前記第1の連結データに代えて前記第1のメモリシステムへ供給されるステップを更に備える
    計算実行方法。
  16. 第1のデータパス幅を有する第1のメモリシステムと、
    それぞれが前記第1のデータパス幅より大きなデータパス幅を有する第2及び第3のメモリシステムと、
    前記第1のデータパス幅を有する第1のメモリオペランド部を前記第1のメモリシステムから前記第2のメモリシステムへコピーするように、かつ、前記第1のデータパス幅を有し、前記第2のメモリシステムにおいて前記第1のメモリオペランド部と連結されて第1の連結データを生成する第2のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするように構成された第1のコピーモジュールと、
    前記第1のデータパス幅を有する第3のメモリオペランド部を前記第1のメモリシステムから前記第3のメモリシステムへコピーするように、かつ、前記第1のデータパス幅を有し、前記第3のメモリシステムにおいて前記第3のメモリオペランド部と連結されて第2の連結データを生成する第4のメモリオペランド部を、前記第1のメモリシステムから前記第3のメモリシステムへコピーするように構成された第2のコピーモジュールと、
    前記第1及び第2の連結データを用いて計算を実行するように構成された演算器とを備える
    プログラム可能なプロセッサ。
  17. 請求項16に記載のプログラム可能なプロセッサにおいて、
    前記演算器は、
    幅が前記第1のデータパス幅よりも大きい前記第1及び第2の連結データのそれぞれの一部を読み出し、前記第1及び第2の連結データのそれぞれの一部を用いて計算を実行するように構成されているものである
    プログラム可能なプロセッサ。
  18. 請求項17に記載のプログラム可能なプロセッサにおいて、
    前記演算器は、
    前記第1のメモリシステム内の前記第1及び第2の連結データのそれぞれのメモリアドレスを指定するように構成されているものである
    プログラム可能なプロセッサ。
  19. 請求項18に記載のプログラム可能なプロセッサにおいて、
    前記演算器は、
    前記第1及び第2の連結データのそれぞれのメモリオペランドサイズとメモリオペランド形態とを指定するように構成されているものである
    プログラム可能なプロセッサ。
  20. 請求項17に記載のプログラム可能なプロセッサにおいて、
    前記第2のメモリシステム内の前記第1の連結データと前記第3のメモリシステム内の前記第2の連結データとのそれぞれの有効性をチェックし、有効性が確認されれば、その次の命令に、前記第1及び第2の連結データのそれぞれを前記第1のメモリシステムからコピーすることなく使用することを許可する制御部を更に備える
    プログラム可能なプロセッサ。
  21. 請求項16に記載のプログラム可能なプロセッサにおいて、
    前記演算器は、
    前記第1の連結データに含まれる区分要素と前記第2の連結データに含まれる区分要素との間でを畳込みを行って、畳込みデータを生成し、前記畳込みデータの指定された部分フィールドを抽出し、抽出データを連結して前記演算器のデータパス幅と同じサイズの連結結果を生成するように構成されているものである
    プログラム可能なプロセッサ。
  22. 請求項16に記載のプログラム可能なプロセッサにおいて、
    前記演算器は、
    前記第2の連結データに含まれる係数を用いて前記第1の連結データに含まれる区分要素の変換を実行して変換データを生成し、前記変換データの指定された部分フィールドを抽出して抽出データを生成し、前記抽出データを連結するように構成されているものである
    プログラム可能なプロセッサ。
  23. 第1のデータパス幅を有する第1のメモリシステムと、
    それぞれが前記第1のデータパス幅より大きなデータパス幅を有する第2及び第3のメモリシステムと、
    前記第1のデータパス幅を有する第1のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするように、かつ、前記第1のデータパス幅を有し、前記第2のメモリシステムにおいて前記第1のメモリオペランド部と連結されて第1の連結データを生成する第2のメモリオペランド部を、前記第1のメモリシステムから前記第2のメモリシステムへコピーするように構成された第1のコピーモジュールと、
    前記第1のデータパス幅を有し第2の連結データの一部を含む第3のメモリオペランド部を、前記第3のメモリシステムから前記第1のメモリシステムへコピーするように、かつ、前記第1のデータパス幅を有し、第2の連結データの一部を含み、前記第3のメモリシステムにおいて前記第3のメモリオペランド部と連結される第4のメモリオペランド部を、前記第3のメモリシステムから前記第1のメモリシステムへコピーするように構成された第2のコピーモジュールと、
    前記第1及び第2の連結データを用いて計算を実行するように構成された演算器とを備える
    プログラム可能なプロセッサ。
  24. 請求項23に記載のプログラム可能なプロセッサにおいて、
    前記演算器は、
    幅が前記第1のデータパス幅よりも大きい前記第1の連結データの一部を読み出し、前記第1の連結データの一部を用いて計算を実行するように構成されているものである
    プログラム可能なプロセッサ。
  25. 請求項24に記載のプログラム可能なプロセッサにおいて、
    前記演算器は、
    前記第1のメモリシステム内の前記第1及び第2の連結データのそれぞれのメモリアドレスを指定するように構成されているものである
    プログラム可能なプロセッサ。
  26. 請求項25に記載のプログラム可能なプロセッサにおいて、
    前記演算器は、
    前記第1及び第2の連結データのそれぞれのメモリオペランドサイズとメモリオペランド形態とを指定するように構成されているものである
    プログラム可能なプロセッサ。
  27. 請求項24に記載のプログラム可能なプロセッサにおいて、
    前記第2のメモリシステム内の前記第1の連結データの有効性をチェックし、有効性が確認されれば、その次の命令に、前記第1の連結データを前記第1のメモリシステムからコピーすることなく使用することを許可する制御部を更に備える
    プログラム可能なプロセッサ。
  28. 請求項23に記載のプログラム可能なプロセッサにおいて、
    前記演算器は、
    前記第1の連結データに含まれる区分要素の変換を実行して変換データを生成し、前記変換データの指定された部分フィールドを抽出して抽出データを生成し、前記抽出データを連結して前記第2の連結データを生成するように構成されているものである
    プログラム可能なプロセッサ。
  29. 請求項23に記載のプログラム可能なプロセッサにおいて、
    前記演算器は、
    ブール演算を用いて前記抽出データの一部を累積されたブールデータと結合し、ブール演算を用いて前記累積されたブールデータの区分要素を結合して、結合されたブールデータを生成し、前記結合されたブールデータから抽出されたデータの最上位ビットを確定して、前記最上位ビットの位置を含む結果を供給するように構成されているものである
    プログラム可能なプロセッサ。
  30. 請求項23に記載のプログラム可能なプロセッサにおいて、
    前記第1及び第2の連結データに対応する第1及び第2の有効性情報を操作し、前記第1の連結データのメモリアドレスを指定する命令が完了した後で、前記第2の連結データの内容が、前記第1の連結データに代えて前記第1のメモリシステムへ供給されるように構成されている制御部を更に備える
    プログラム可能なプロセッサ。
JP2006518941A 2003-07-10 2004-07-12 ワイド・トランスフォーム・スライス・インストラクションを実行するプロセッサアーキテクチャ Expired - Fee Related JP5005342B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/616,303 2003-07-10
US10/616,303 US7301541B2 (en) 1995-08-16 2003-12-19 Programmable processor and method with wide operations
PCT/US2004/022126 WO2005008410A2 (en) 2003-07-10 2004-07-12 Programmable processor and method with wide operations

Publications (2)

Publication Number Publication Date
JP2007531072A true JP2007531072A (ja) 2007-11-01
JP5005342B2 JP5005342B2 (ja) 2012-08-22

Family

ID=34079658

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006518941A Expired - Fee Related JP5005342B2 (ja) 2003-07-10 2004-07-12 ワイド・トランスフォーム・スライス・インストラクションを実行するプロセッサアーキテクチャ

Country Status (6)

Country Link
US (10) US7301541B2 (ja)
EP (5) EP2226726A3 (ja)
JP (1) JP5005342B2 (ja)
CA (2) CA2573292C (ja)
ES (1) ES2527937T3 (ja)
WO (1) WO2005008410A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017520873A (ja) * 2014-06-30 2017-07-27 マイクロユニティ システムズ エンジニアリング インコーポレイテッド 拡張可能Wideオペランド命令のためのシステムおよび方法
JP2020521192A (ja) * 2017-05-17 2020-07-16 グーグル エルエルシー ハードウェアにおける行列乗算の実行

Families Citing this family (362)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
ATE557343T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur durchführung eines breitschaltungsbefehls mit breitem operand
US7242414B1 (en) * 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US7346643B1 (en) 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
US7500240B2 (en) * 2002-01-15 2009-03-03 Intel Corporation Apparatus and method for scheduling threads in multi-threading processors
US8094723B2 (en) * 2003-12-31 2012-01-10 Intel Corporation Motion estimation sum of all differences (SAD) array having reduced semiconductor die area consumption
US7373466B1 (en) * 2004-04-07 2008-05-13 Advanced Micro Devices, Inc. Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US8301788B2 (en) * 2004-09-10 2012-10-30 Cavium, Inc. Deterministic finite automata (DFA) instruction
US8560475B2 (en) 2004-09-10 2013-10-15 Cavium, Inc. Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process
US8392590B2 (en) * 2004-09-10 2013-03-05 Cavium, Inc. Deterministic finite automata (DFA) processing
US7606309B2 (en) * 2004-09-30 2009-10-20 Intel Corporation Motion estimation for video processing using 2-D (spatial) convolution
US8225104B1 (en) * 2005-10-06 2012-07-17 Symantec Corporation Data access security
US7958436B2 (en) 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US7872657B1 (en) * 2006-06-16 2011-01-18 Nvidia Corporation Memory addressing scheme using partition strides
EP1870829B1 (en) * 2006-06-23 2014-12-03 Microsoft Corporation Securing software by enforcing data flow integrity
US20100306209A1 (en) * 2006-07-22 2010-12-02 Tien-Fu Chen Pattern matcher and its matching method
US7779016B2 (en) * 2006-09-14 2010-08-17 International Business Machines Corporation Parallel execution of operations for a partitioned binary radix tree on a parallel computer
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US8656448B2 (en) * 2006-10-26 2014-02-18 International Business Machines Corporation Providing policy-based application services to an application running on a computing system
US8713582B2 (en) * 2006-10-26 2014-04-29 International Business Machines Corporation Providing policy-based operating system services in an operating system on a computing system
US8032899B2 (en) 2006-10-26 2011-10-04 International Business Machines Corporation Providing policy-based operating system services in a hypervisor on a computing system
US7721077B2 (en) * 2006-12-11 2010-05-18 Intel Corporation Performing endian conversion
US8078847B2 (en) * 2007-05-14 2011-12-13 Apple Inc. Detecting memory-hazard conflicts during vector processing
US8019977B2 (en) * 2007-05-14 2011-09-13 Apple Inc. Generating predicate values during vector processing
US8019976B2 (en) * 2007-05-14 2011-09-13 Apple, Inc. Memory-hazard detection and avoidance instructions for vector processing
US8060728B2 (en) * 2007-05-14 2011-11-15 Apple Inc. Generating stop indicators during vector processing
US8176355B2 (en) * 2007-06-07 2012-05-08 International Business Machines Corporation Recovery from hardware access errors
US7958274B2 (en) * 2007-06-18 2011-06-07 International Business Machines Corporation Heuristic status polling
US8296430B2 (en) 2007-06-18 2012-10-23 International Business Machines Corporation Administering an epoch initiated for remote memory access
US9065839B2 (en) 2007-10-02 2015-06-23 International Business Machines Corporation Minimally buffered data transfers between nodes in a data communications network
US8819217B2 (en) * 2007-11-01 2014-08-26 Cavium, Inc. Intelligent graph walking
US8180803B2 (en) * 2007-11-27 2012-05-15 Cavium, Inc. Deterministic finite automata (DFA) graph compression
US7949683B2 (en) * 2007-11-27 2011-05-24 Cavium Networks, Inc. Method and apparatus for traversing a compressed deterministic finite automata (DFA) graph
US7984450B2 (en) * 2007-11-28 2011-07-19 International Business Machines Corporation Dispatching packets on a global combining network of a parallel computer
US8515052B2 (en) * 2007-12-17 2013-08-20 Wai Wu Parallel signal processing system and method
US8146064B2 (en) * 2008-04-04 2012-03-27 International Business Machines Corporation Dynamically controlling a prefetching range of a software controlled cache
US8239841B2 (en) 2008-04-04 2012-08-07 International Business Machines Corporation Prefetching irregular data references for software controlled caches
US8285670B2 (en) * 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
US7895260B2 (en) * 2008-07-28 2011-02-22 International Business Machines Corporation Processing data access requests among a plurality of compute nodes
US8271832B2 (en) * 2008-08-15 2012-09-18 Apple Inc. Non-faulting and first-faulting instructions for processing vectors
US8464031B2 (en) 2008-08-15 2013-06-11 Apple Inc. Running unary operation instructions for processing vectors
US8447956B2 (en) 2008-08-15 2013-05-21 Apple Inc. Running subtract and running divide instructions for processing vectors
US20100325399A1 (en) * 2008-08-15 2010-12-23 Apple Inc. Vector test instruction for processing vectors
US8504806B2 (en) 2008-08-15 2013-08-06 Apple Inc. Instruction for comparing active vector elements to preceding active elements to determine value differences
US8862932B2 (en) 2008-08-15 2014-10-14 Apple Inc. Read XF instruction for processing vectors
US9110683B2 (en) 2008-08-15 2015-08-18 Apple Inc. Predicting branches for vector partitioning loops when processing vector instructions
US8938642B2 (en) 2008-08-15 2015-01-20 Apple Inc. Confirm instruction for processing vectors
US8484443B2 (en) 2008-08-15 2013-07-09 Apple Inc. Running multiply-accumulate instructions for processing vectors
US9009528B2 (en) 2008-08-15 2015-04-14 Apple Inc. Scalar readXF instruction for processing vectors
US8650383B2 (en) * 2008-08-15 2014-02-11 Apple Inc. Vector processing with predicate vector for setting element values based on key element position by executing remaining instruction
US9182959B2 (en) 2008-08-15 2015-11-10 Apple Inc. Predicate count and segment count instructions for processing vectors
US8959316B2 (en) * 2008-08-15 2015-02-17 Apple Inc. Actual instruction and actual-fault instructions for processing vectors
US8417921B2 (en) * 2008-08-15 2013-04-09 Apple Inc. Running-min and running-max instructions for processing vectors using a base value from a key element of an input vector
US8984262B2 (en) * 2008-08-15 2015-03-17 Apple Inc. Generate predicates instruction for processing vectors
US8209525B2 (en) * 2008-08-15 2012-06-26 Apple Inc. Method and apparatus for executing program code
US8793472B2 (en) 2008-08-15 2014-07-29 Apple Inc. Vector index instruction for generating a result vector with incremental values based on a start value and an increment value
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions in the macroscalar architecture
US9342304B2 (en) 2008-08-15 2016-05-17 Apple Inc. Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture
US9317283B2 (en) 2008-08-15 2016-04-19 Apple Inc. Running shift for divide instructions for processing vectors
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
US20110035568A1 (en) * 2008-08-15 2011-02-10 Apple Inc. Select first and select last instructions for processing vectors
US8745360B2 (en) * 2008-09-24 2014-06-03 Apple Inc. Generating predicate values based on conditional data dependency in vector processors
US8181001B2 (en) * 2008-09-24 2012-05-15 Apple Inc. Conditional data-dependency resolution in vector processors
US8176299B2 (en) * 2008-09-24 2012-05-08 Apple Inc. Generating stop indicators based on conditional data dependency in vector processors
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8473523B2 (en) 2008-10-31 2013-06-25 Cavium, Inc. Deterministic finite automata graph traversal with nodal bit mapping
US8161090B2 (en) * 2008-12-05 2012-04-17 Crossfield Technology LLC Floating-point fused add-subtract unit
US20100199067A1 (en) * 2009-02-02 2010-08-05 International Business Machines Corporation Split Vector Loads and Stores with Stride Separated Words
US20100250850A1 (en) * 2009-03-25 2010-09-30 Faraday Technology Corp. Processor and method for executing load operation and store operation thereof
US8156264B2 (en) * 2009-04-03 2012-04-10 Analog Devices, Inc. Digital output sensor FIFO buffer with single port memory
US8650240B2 (en) * 2009-08-17 2014-02-11 International Business Machines Corporation Complex matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US8577950B2 (en) * 2009-08-17 2013-11-05 International Business Machines Corporation Matrix multiplication operations with data pre-conditioning in a high performance computing architecture
US9003170B2 (en) * 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
US8856759B2 (en) * 2010-02-01 2014-10-07 Bull Hn Information Systems Inc. Method and apparatus providing COBOL decimal type arithmetic functions with improved performance
US8365186B2 (en) 2010-04-14 2013-01-29 International Business Machines Corporation Runtime optimization of an application executing on a parallel computer
US9600281B2 (en) 2010-07-12 2017-03-21 International Business Machines Corporation Matrix multiplication operations using pair-wise load and splat operations
US8504730B2 (en) 2010-07-30 2013-08-06 International Business Machines Corporation Administering connection identifiers for collective operations in a parallel computer
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8972821B2 (en) * 2010-12-23 2015-03-03 Texas Instruments Incorporated Encode and multiplex, register, and decode and error correction circuitry
US8565120B2 (en) 2011-01-05 2013-10-22 International Business Machines Corporation Locality mapping in a distributed processing system
US9317637B2 (en) 2011-01-14 2016-04-19 International Business Machines Corporation Distributed hardware device simulation
US8336017B2 (en) * 2011-01-19 2012-12-18 Algotochip Corporation Architecture optimizer
RU2458384C1 (ru) * 2011-02-17 2012-08-10 Федеральное государственное военное образовательное учреждение высшего профессионального образования "Военный авиационный инженерный университет" (г. Воронеж) Министерства обороны Российской Федерации Устройство для контроля эвм
US9037564B2 (en) 2011-04-29 2015-05-19 Stephen Lesavich Method and system for electronic content storage and retrieval with galois fields on cloud computing networks
US9361479B2 (en) 2011-04-29 2016-06-07 Stephen Lesavich Method and system for electronic content storage and retrieval using Galois fields and geometric shapes on cloud computing networks
US9569771B2 (en) 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
US9137250B2 (en) 2011-04-29 2015-09-15 Stephen Lesavich Method and system for electronic content storage and retrieval using galois fields and information entropy on cloud computing networks
US8689228B2 (en) 2011-07-19 2014-04-01 International Business Machines Corporation Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system
US20130027416A1 (en) * 2011-07-25 2013-01-31 Karthikeyan Vaithianathan Gather method and apparatus for media processing accelerators
US9250948B2 (en) 2011-09-13 2016-02-02 International Business Machines Corporation Establishing a group of endpoints in a parallel computer
US8966461B2 (en) * 2011-09-29 2015-02-24 Advanced Micro Devices, Inc. Vector width-aware synchronization-elision for vector processors
CN103959240B (zh) * 2011-12-15 2017-05-17 英特尔公司 使用混洗表和掩码存储表经由矢量指令优化程序循环的方法
WO2013095493A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Instructions to perform groestl hashing
CN103975302B (zh) * 2011-12-22 2017-10-27 英特尔公司 矩阵乘法累加指令
CN104081337B (zh) * 2011-12-23 2017-11-07 英特尔公司 用于响应于单个指令来执行横向部分求和的系统、装置和方法
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9348642B2 (en) 2012-06-15 2016-05-24 International Business Machines Corporation Transaction begin/end instructions
US9740549B2 (en) 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction
US9448796B2 (en) 2012-06-15 2016-09-20 International Business Machines Corporation Restricted instructions in transactional execution
US10437602B2 (en) * 2012-06-15 2019-10-08 International Business Machines Corporation Program interruption filtering in transactional execution
US9384004B2 (en) 2012-06-15 2016-07-05 International Business Machines Corporation Randomized testing within transactional execution
US9323532B2 (en) 2012-07-18 2016-04-26 International Business Machines Corporation Predicting register pairs
US9323529B2 (en) 2012-07-18 2016-04-26 International Business Machines Corporation Reducing register read ports for register pairs
US9298459B2 (en) * 2012-07-18 2016-03-29 International Business Machines Corporation Managing register pairing
JP6011194B2 (ja) * 2012-09-21 2016-10-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US20140101412A1 (en) * 2012-10-04 2014-04-10 Ricardo Ramirez Speculative privilege elevation
US9411558B2 (en) 2012-10-20 2016-08-09 Luke Hutchison Systems and methods for parallelization of program code, interactive data visualization, and graphically-augmented code editing
US9646105B2 (en) * 2012-11-08 2017-05-09 Texas Instruments Incorporated Reduced complexity hashing
US8880829B2 (en) * 2012-11-19 2014-11-04 Qualcomm Innovation Center, Inc. Method and apparatus for efficient, low-latency, streaming memory copies
US9760966B2 (en) * 2013-01-08 2017-09-12 Nvidia Corporation Parallel processor with integrated correlation and convolution engine
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9804840B2 (en) * 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9158667B2 (en) 2013-03-04 2015-10-13 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
JP2014215914A (ja) * 2013-04-26 2014-11-17 株式会社東芝 端末装置、情報処理方法及び情報処理プログラム
GB2514611A (en) * 2013-05-31 2014-12-03 Ibm Storage integrity validator
US8964496B2 (en) 2013-07-26 2015-02-24 Micron Technology, Inc. Apparatuses and methods for performing compare operations using sensing circuitry
US8971124B1 (en) 2013-08-08 2015-03-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9459869B2 (en) * 2013-08-20 2016-10-04 Apple Inc. Intelligent caching for an operand cache
US9652233B2 (en) * 2013-08-20 2017-05-16 Apple Inc. Hint values for use with an operand cache
US9153305B2 (en) 2013-08-30 2015-10-06 Micron Technology, Inc. Independently addressable memory array address spaces
JP2015049832A (ja) * 2013-09-04 2015-03-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 定数ロードのオーバーヘッドを削減する方法、装置及びプログラム
US9501796B2 (en) 2013-09-18 2016-11-22 Chicago Mercantile Exchange Inc. Dataset intersection determination
US9019785B2 (en) 2013-09-19 2015-04-28 Micron Technology, Inc. Data shifting via a number of isolation devices
US9449675B2 (en) 2013-10-31 2016-09-20 Micron Technology, Inc. Apparatuses and methods for identifying an extremum value stored in an array of memory cells
US9430191B2 (en) 2013-11-08 2016-08-30 Micron Technology, Inc. Division operations for memory
US9934856B2 (en) 2014-03-31 2018-04-03 Micron Technology, Inc. Apparatuses and methods for comparing data patterns in memory
WO2015183834A1 (en) 2014-05-27 2015-12-03 Rambus Inc. Memory module with reduced read/write turnaround overhead
US9449674B2 (en) 2014-06-05 2016-09-20 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9779019B2 (en) 2014-06-05 2017-10-03 Micron Technology, Inc. Data storage layout
US9704540B2 (en) 2014-06-05 2017-07-11 Micron Technology, Inc. Apparatuses and methods for parity determination using sensing circuitry
US9496023B2 (en) 2014-06-05 2016-11-15 Micron Technology, Inc. Comparison operations on logical representations of values in memory
US9711206B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9455020B2 (en) 2014-06-05 2016-09-27 Micron Technology, Inc. Apparatuses and methods for performing an exclusive or operation using sensing circuitry
US10074407B2 (en) 2014-06-05 2018-09-11 Micron Technology, Inc. Apparatuses and methods for performing invert operations using sensing circuitry
US9786335B2 (en) 2014-06-05 2017-10-10 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9711207B2 (en) 2014-06-05 2017-07-18 Micron Technology, Inc. Performing logical operations using sensing circuitry
US9910787B2 (en) 2014-06-05 2018-03-06 Micron Technology, Inc. Virtual address table
US9830999B2 (en) 2014-06-05 2017-11-28 Micron Technology, Inc. Comparison operations in memory
GB2522290B (en) * 2014-07-14 2015-12-09 Imagination Tech Ltd Running a 32-bit operating system on a 64-bit machine
US20160026484A1 (en) * 2014-07-25 2016-01-28 Soft Machines, Inc. System converter that executes a just in time optimizer for executing code from a guest image
US11281481B2 (en) 2014-07-25 2022-03-22 Intel Corporation Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture
US10353680B2 (en) 2014-07-25 2019-07-16 Intel Corporation System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence
EP3171277B1 (en) 2014-08-12 2021-03-03 Huawei Technologies Co. Ltd. Method for managing files, distributed storage system and management node
US9898252B2 (en) 2014-09-03 2018-02-20 Micron Technology, Inc. Multiplication operations in memory
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9747961B2 (en) 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9589602B2 (en) 2014-09-03 2017-03-07 Micron Technology, Inc. Comparison operations in memory
US9904515B2 (en) 2014-09-03 2018-02-27 Micron Technology, Inc. Multiplication operations in memory
US9847110B2 (en) 2014-09-03 2017-12-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in multiple columns of an array corresponding to digits of a vector
US9740607B2 (en) 2014-09-03 2017-08-22 Micron Technology, Inc. Swap operations in memory
US9715386B2 (en) 2014-09-29 2017-07-25 Apple Inc. Conditional stop instruction with accurate dependency detection
US9836218B2 (en) 2014-10-03 2017-12-05 Micron Technology, Inc. Computing reduction and prefix sum operations in memory
US9940026B2 (en) 2014-10-03 2018-04-10 Micron Technology, Inc. Multidimensional contiguous memory allocation
US10163467B2 (en) 2014-10-16 2018-12-25 Micron Technology, Inc. Multiple endianness compatibility
US10147480B2 (en) 2014-10-24 2018-12-04 Micron Technology, Inc. Sort operation in memory
US9779784B2 (en) 2014-10-29 2017-10-03 Micron Technology, Inc. Apparatuses and methods for performing logical operations using sensing circuitry
US9292639B1 (en) * 2014-10-30 2016-03-22 Cadence Design Systems Inc. Method and system for providing additional look-up tables
US9292640B1 (en) * 2014-10-30 2016-03-22 Cadence Design Systems Inc. Method and system for dynamic selection of a memory read port
US9612841B1 (en) * 2014-11-02 2017-04-04 Netronome Systems, Inc. Slice-based intelligent packet data register file
US9519484B1 (en) * 2014-11-02 2016-12-13 Netronome Systems, Inc. Picoengine instruction that controls an intelligent packet data register file prefetch function
US10073635B2 (en) 2014-12-01 2018-09-11 Micron Technology, Inc. Multiple endianness compatibility
US9747960B2 (en) 2014-12-01 2017-08-29 Micron Technology, Inc. Apparatuses and methods for converting a mask to an index
US9696992B2 (en) * 2014-12-23 2017-07-04 Intel Corporation Apparatus and method for performing a check to optimize instruction flow
US10061590B2 (en) 2015-01-07 2018-08-28 Micron Technology, Inc. Generating and executing a control flow
US10032493B2 (en) 2015-01-07 2018-07-24 Micron Technology, Inc. Longest element length determination in memory
US9583163B2 (en) 2015-02-03 2017-02-28 Micron Technology, Inc. Loop structure for operations in memory
CN107408404B (zh) 2015-02-06 2021-02-12 美光科技公司 用于存储器装置的设备及方法以作为程序指令的存储
CN107408405B (zh) 2015-02-06 2021-03-05 美光科技公司 用于并行写入到多个存储器装置位置的设备及方法
WO2016126472A1 (en) 2015-02-06 2016-08-11 Micron Technology, Inc. Apparatuses and methods for scatter and gather
US10522212B2 (en) 2015-03-10 2019-12-31 Micron Technology, Inc. Apparatuses and methods for shift decisions
US9741399B2 (en) 2015-03-11 2017-08-22 Micron Technology, Inc. Data shift by elements of a vector in memory
US9898253B2 (en) 2015-03-11 2018-02-20 Micron Technology, Inc. Division operations on variable length elements in memory
US10365851B2 (en) 2015-03-12 2019-07-30 Micron Technology, Inc. Apparatuses and methods for data movement
US10146537B2 (en) 2015-03-13 2018-12-04 Micron Technology, Inc. Vector population count determination in memory
US10049054B2 (en) 2015-04-01 2018-08-14 Micron Technology, Inc. Virtual register file
US10140104B2 (en) 2015-04-14 2018-11-27 Micron Technology, Inc. Target architecture determination
US9959923B2 (en) 2015-04-16 2018-05-01 Micron Technology, Inc. Apparatuses and methods to reverse data stored in memory
US10073786B2 (en) 2015-05-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for compute enabled cache
US9704541B2 (en) 2015-06-12 2017-07-11 Micron Technology, Inc. Simulating access lines
US9588952B2 (en) * 2015-06-22 2017-03-07 International Business Machines Corporation Collaboratively reconstituting tables
US9921777B2 (en) 2015-06-22 2018-03-20 Micron Technology, Inc. Apparatuses and methods for data transfer from sensing circuitry to a controller
US9710281B2 (en) * 2015-07-30 2017-07-18 International Business Machines Corporation Register comparison for operand store compare (OSC) prediction
US9996479B2 (en) 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
US9747189B2 (en) 2015-11-12 2017-08-29 International Business Machines Corporation Breakpoint for predicted tuple processing time in a streaming environment
US10936713B2 (en) * 2015-12-17 2021-03-02 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
US10235176B2 (en) 2015-12-17 2019-03-19 The Charles Stark Draper Laboratory, Inc. Techniques for metadata processing
FR3045892B1 (fr) * 2015-12-21 2018-06-22 Commissariat A L'energie Atomique Et Aux Energies Alternatives Circuit neuronal optimise, architecture et procede pour l'execution des reseaux de neurones.
US9905276B2 (en) 2015-12-21 2018-02-27 Micron Technology, Inc. Control of sensing components in association with performing operations
US9952925B2 (en) 2016-01-06 2018-04-24 Micron Technology, Inc. Error code calculation on sensing circuitry
US10048888B2 (en) 2016-02-10 2018-08-14 Micron Technology, Inc. Apparatuses and methods for partitioned parallel data movement
US10146652B2 (en) * 2016-02-11 2018-12-04 International Business Machines Corporation Resilient distributed storage system
US10372334B2 (en) 2016-02-11 2019-08-06 International Business Machines Corporation Reclaiming free space in a storage system
US9892767B2 (en) 2016-02-12 2018-02-13 Micron Technology, Inc. Data gathering in memory
US9971541B2 (en) 2016-02-17 2018-05-15 Micron Technology, Inc. Apparatuses and methods for data movement
US9899070B2 (en) 2016-02-19 2018-02-20 Micron Technology, Inc. Modified decode for corner turn
US10956439B2 (en) 2016-02-19 2021-03-23 Micron Technology, Inc. Data transfer with a bit vector operation device
US9697876B1 (en) 2016-03-01 2017-07-04 Micron Technology, Inc. Vertical bit vector shift in memory
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10262721B2 (en) 2016-03-10 2019-04-16 Micron Technology, Inc. Apparatuses and methods for cache invalidate
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US10379772B2 (en) 2016-03-16 2019-08-13 Micron Technology, Inc. Apparatuses and methods for operations using compressed and decompressed data
US9910637B2 (en) 2016-03-17 2018-03-06 Micron Technology, Inc. Signed division in memory
US10388393B2 (en) 2016-03-22 2019-08-20 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10120740B2 (en) 2016-03-22 2018-11-06 Micron Technology, Inc. Apparatus and methods for debugging on a memory device
US11074988B2 (en) 2016-03-22 2021-07-27 Micron Technology, Inc. Apparatus and methods for debugging on a host and memory device
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10977033B2 (en) 2016-03-25 2021-04-13 Micron Technology, Inc. Mask patterns generated in memory from seed vectors
US10474581B2 (en) 2016-03-25 2019-11-12 Micron Technology, Inc. Apparatuses and methods for cache operations
US10074416B2 (en) 2016-03-28 2018-09-11 Micron Technology, Inc. Apparatuses and methods for data movement
US10430244B2 (en) 2016-03-28 2019-10-01 Micron Technology, Inc. Apparatuses and methods to determine timing of operations
US10453502B2 (en) 2016-04-04 2019-10-22 Micron Technology, Inc. Memory bank power coordination including concurrently performing a memory operation in a selected number of memory regions
US10607665B2 (en) 2016-04-07 2020-03-31 Micron Technology, Inc. Span mask generation
US10331601B2 (en) * 2016-04-15 2019-06-25 Infinera Corporation Systems, apparatus, and methods for efficient space to time conversion of OTU multiplexed signal
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US9818459B2 (en) 2016-04-19 2017-11-14 Micron Technology, Inc. Invert operations using sensing circuitry
US9659605B1 (en) 2016-04-20 2017-05-23 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10153008B2 (en) 2016-04-20 2018-12-11 Micron Technology, Inc. Apparatuses and methods for performing corner turn operations using sensing circuitry
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US10042608B2 (en) 2016-05-11 2018-08-07 Micron Technology, Inc. Signed division in memory
US9659610B1 (en) 2016-05-18 2017-05-23 Micron Technology, Inc. Apparatuses and methods for shifting data
US10049707B2 (en) 2016-06-03 2018-08-14 Micron Technology, Inc. Shifting data
US9934033B2 (en) * 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10387046B2 (en) 2016-06-22 2019-08-20 Micron Technology, Inc. Bank to bank data transfer
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10275243B2 (en) 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
US10037785B2 (en) 2016-07-08 2018-07-31 Micron Technology, Inc. Scan chain operation in sensing circuitry
US10388360B2 (en) 2016-07-19 2019-08-20 Micron Technology, Inc. Utilization of data stored in an edge section of an array
US10387299B2 (en) 2016-07-20 2019-08-20 Micron Technology, Inc. Apparatuses and methods for transferring data
US10733089B2 (en) 2016-07-20 2020-08-04 Micron Technology, Inc. Apparatuses and methods for write address tracking
US9972367B2 (en) 2016-07-21 2018-05-15 Micron Technology, Inc. Shifting data in sensing circuitry
US9767864B1 (en) 2016-07-21 2017-09-19 Micron Technology, Inc. Apparatuses and methods for storing a data value in a sensing circuitry element
US10303632B2 (en) 2016-07-26 2019-05-28 Micron Technology, Inc. Accessing status information
US10468087B2 (en) 2016-07-28 2019-11-05 Micron Technology, Inc. Apparatuses and methods for operations in a self-refresh state
US9990181B2 (en) 2016-08-03 2018-06-05 Micron Technology, Inc. Apparatuses and methods for random number generation
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US20190303743A1 (en) * 2016-08-13 2019-10-03 Intel Corporation Apparatuses, methods, and systems for neural networks
US11029951B2 (en) 2016-08-15 2021-06-08 Micron Technology, Inc. Smallest or largest value element determination
US10606587B2 (en) 2016-08-24 2020-03-31 Micron Technology, Inc. Apparatus and methods related to microcode instructions indicating instruction types
US10466928B2 (en) 2016-09-15 2019-11-05 Micron Technology, Inc. Updating a register in memory
US10387058B2 (en) 2016-09-29 2019-08-20 Micron Technology, Inc. Apparatuses and methods to change data category values
US10014034B2 (en) 2016-10-06 2018-07-03 Micron Technology, Inc. Shifting data in sensing circuitry
US10529409B2 (en) 2016-10-13 2020-01-07 Micron Technology, Inc. Apparatuses and methods to perform logical operations using sensing circuitry
US9805772B1 (en) 2016-10-20 2017-10-31 Micron Technology, Inc. Apparatuses and methods to selectively perform logical operations
US10373666B2 (en) 2016-11-08 2019-08-06 Micron Technology, Inc. Apparatuses and methods for compute components formed over an array of memory cells
US10423353B2 (en) 2016-11-11 2019-09-24 Micron Technology, Inc. Apparatuses and methods for memory alignment
US9761300B1 (en) 2016-11-22 2017-09-12 Micron Technology, Inc. Data shift apparatuses and methods
US10303612B2 (en) * 2016-12-30 2019-05-28 Intel Corporation Power and performance-efficient cache design for a memory encryption engine
US10275391B2 (en) 2017-01-23 2019-04-30 International Business Machines Corporation Combining of several execution units to compute a single wide scalar result
US10402340B2 (en) 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10403352B2 (en) 2017-02-22 2019-09-03 Micron Technology, Inc. Apparatuses and methods for compute in data path
US10268389B2 (en) 2017-02-22 2019-04-23 Micron Technology, Inc. Apparatuses and methods for in-memory operations
TWI731044B (zh) * 2017-03-10 2021-06-21 張錦本 應用256位元之雙碼錯誤檢測裝置及方法
WO2018174931A1 (en) 2017-03-20 2018-09-27 Intel Corporation Systems, methods, and appartus for tile configuration
US10838899B2 (en) 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US10185674B2 (en) 2017-03-22 2019-01-22 Micron Technology, Inc. Apparatus and methods for in data path compute operations
US11222260B2 (en) 2017-03-22 2022-01-11 Micron Technology, Inc. Apparatuses and methods for operating neural networks
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
US10043570B1 (en) 2017-04-17 2018-08-07 Micron Technology, Inc. Signed element compare in memory
US10147467B2 (en) 2017-04-17 2018-12-04 Micron Technology, Inc. Element value comparison in memory
US9997212B1 (en) 2017-04-24 2018-06-12 Micron Technology, Inc. Accessing data in memory
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
US10236038B2 (en) 2017-05-15 2019-03-19 Micron Technology, Inc. Bank to bank data transfer
US10068664B1 (en) 2017-05-19 2018-09-04 Micron Technology, Inc. Column repair in memory
US10013197B1 (en) 2017-06-01 2018-07-03 Micron Technology, Inc. Shift skip
US10262701B2 (en) 2017-06-07 2019-04-16 Micron Technology, Inc. Data transfer between subarrays in memory
US10152271B1 (en) 2017-06-07 2018-12-11 Micron Technology, Inc. Data replication
US10318168B2 (en) 2017-06-19 2019-06-11 Micron Technology, Inc. Apparatuses and methods for simultaneous in data path compute operations
EP3418829B1 (en) * 2017-06-21 2022-08-24 Tetra Laval Holdings & Finance S.A. Method of logging process data in a plc controlled equipment
WO2019009870A1 (en) 2017-07-01 2019-01-10 Intel Corporation SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE
GB2564853B (en) * 2017-07-20 2021-09-08 Advanced Risc Mach Ltd Vector interleaving in a data processing apparatus
US10162005B1 (en) 2017-08-09 2018-12-25 Micron Technology, Inc. Scan chain operations
US10534553B2 (en) 2017-08-30 2020-01-14 Micron Technology, Inc. Memory array accessibility
US10741239B2 (en) 2017-08-31 2020-08-11 Micron Technology, Inc. Processing in memory device including a row address strobe manager
US10416927B2 (en) 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
US10346092B2 (en) 2017-08-31 2019-07-09 Micron Technology, Inc. Apparatuses and methods for in-memory operations using timing circuitry
CN111052742A (zh) * 2017-09-30 2020-04-21 深圳市大疆创新科技有限公司 图像处理
US10409739B2 (en) 2017-10-24 2019-09-10 Micron Technology, Inc. Command selection policy
US10522210B2 (en) 2017-12-14 2019-12-31 Micron Technology, Inc. Apparatuses and methods for subarray addressing
US10332586B1 (en) 2017-12-19 2019-06-25 Micron Technology, Inc. Apparatuses and methods for subrow addressing
US10346133B1 (en) 2017-12-21 2019-07-09 Qualcomm Incorporated System and method of floating point multiply operation processing
US11809869B2 (en) 2017-12-29 2023-11-07 Intel Corporation Systems and methods to store a tile register pair to memory
US11023235B2 (en) 2017-12-29 2021-06-01 Intel Corporation Systems and methods to zero a tile register pair
US11669326B2 (en) 2017-12-29 2023-06-06 Intel Corporation Systems, methods, and apparatuses for dot product operations
US11093247B2 (en) 2017-12-29 2021-08-17 Intel Corporation Systems and methods to load a tile register pair
US11816483B2 (en) * 2017-12-29 2023-11-14 Intel Corporation Systems, methods, and apparatuses for matrix operations
US11789729B2 (en) 2017-12-29 2023-10-17 Intel Corporation Systems and methods for computing dot products of nibbles in two tile operands
US10614875B2 (en) 2018-01-30 2020-04-07 Micron Technology, Inc. Logical operations using memory cells
US10437557B2 (en) 2018-01-31 2019-10-08 Micron Technology, Inc. Determination of a match between data values stored by several arrays
US11194477B2 (en) 2018-01-31 2021-12-07 Micron Technology, Inc. Determination of a match between data values stored by three or more arrays
EP3746925B1 (en) 2018-02-02 2024-09-11 The Charles Stark Draper Laboratory Inc. Systems and methods for policy execution processing
WO2019152792A1 (en) 2018-02-02 2019-08-08 Dover Microsystems, Inc. Systems and methods for policy linking and/or loading for secure initialization
US10713021B2 (en) * 2018-03-05 2020-07-14 Apple Inc. Geometric 64-bit capability pointer
US10664287B2 (en) 2018-03-30 2020-05-26 Intel Corporation Systems and methods for implementing chained tile operations
US10725696B2 (en) 2018-04-12 2020-07-28 Micron Technology, Inc. Command selection policy with read priority
WO2019213061A1 (en) 2018-04-30 2019-11-07 Dover Microsystems, Inc. Systems and methods for checking safety properties
US10440341B1 (en) 2018-06-07 2019-10-08 Micron Technology, Inc. Image processor formed in an array of memory cells
US11171983B2 (en) * 2018-06-29 2021-11-09 Intel Corporation Techniques to provide function-level isolation with capability-based security
US10942768B2 (en) * 2018-08-29 2021-03-09 Red Hat, Inc. Computing task scheduling in a computer system utilizing efficient attributed priority queues
CN108809294B (zh) * 2018-08-30 2023-11-14 北京神经元网络技术有限公司 一种动态单元匹配电路
US11093579B2 (en) 2018-09-05 2021-08-17 Intel Corporation FP16-S7E8 mixed precision for deep learning and other algorithms
US10970076B2 (en) 2018-09-14 2021-04-06 Intel Corporation Systems and methods for performing instructions specifying ternary tile logic operations
US11579883B2 (en) 2018-09-14 2023-02-14 Intel Corporation Systems and methods for performing horizontal tile operations
US10866786B2 (en) 2018-09-27 2020-12-15 Intel Corporation Systems and methods for performing instructions to transpose rectangular tiles
US10990396B2 (en) 2018-09-27 2021-04-27 Intel Corporation Systems for performing instructions to quickly convert and use tiles as 1D vectors
US10719323B2 (en) 2018-09-27 2020-07-21 Intel Corporation Systems and methods for performing matrix compress and decompress instructions
US10963256B2 (en) 2018-09-28 2021-03-30 Intel Corporation Systems and methods for performing instructions to transform matrices into row-interleaved format
US10929143B2 (en) 2018-09-28 2021-02-23 Intel Corporation Method and apparatus for efficient matrix alignment in a systolic array
US10896043B2 (en) 2018-09-28 2021-01-19 Intel Corporation Systems for performing instructions for fast element unpacking into 2-dimensional registers
US10769071B2 (en) 2018-10-10 2020-09-08 Micron Technology, Inc. Coherent memory access
US11175915B2 (en) 2018-10-10 2021-11-16 Micron Technology, Inc. Vector registers implemented in memory
US10483978B1 (en) 2018-10-16 2019-11-19 Micron Technology, Inc. Memory device processing
TW202022679A (zh) 2018-11-06 2020-06-16 美商多佛微系統公司 用於停滯主處理器的系統和方法
US10963246B2 (en) 2018-11-09 2021-03-30 Intel Corporation Systems and methods for performing 16-bit floating-point matrix dot product instructions
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
US10761822B1 (en) * 2018-12-12 2020-09-01 Amazon Technologies, Inc. Synchronization of computation engines with non-blocking instructions
US11841956B2 (en) 2018-12-18 2023-12-12 Dover Microsystems, Inc. Systems and methods for data lifecycle protection
US10877864B2 (en) 2018-12-20 2020-12-29 International Business Machines Corporation Controlling segment layout in a stress test for a processor memory with a link stack
US10929503B2 (en) 2018-12-21 2021-02-23 Intel Corporation Apparatus and method for a masked multiply instruction to support neural network pruning operations
US11886875B2 (en) 2018-12-26 2024-01-30 Intel Corporation Systems and methods for performing nibble-sized operations on matrix elements
US11294671B2 (en) 2018-12-26 2022-04-05 Intel Corporation Systems and methods for performing duplicate detection instructions on 2D data
US20200210517A1 (en) 2018-12-27 2020-07-02 Intel Corporation Systems and methods to accelerate multiplication of sparse matrices
US10942985B2 (en) 2018-12-29 2021-03-09 Intel Corporation Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions
US10922077B2 (en) 2018-12-29 2021-02-16 Intel Corporation Apparatuses, methods, and systems for stencil configuration and computation instructions
US11036545B2 (en) * 2019-03-15 2021-06-15 Intel Corporation Graphics systems and methods for accelerating synchronization using fine grain dependency check and scheduling optimizations based on available shared memory space
US11016731B2 (en) 2019-03-29 2021-05-25 Intel Corporation Using Fuzzy-Jbit location of floating-point multiply-accumulate results
US11269630B2 (en) 2019-03-29 2022-03-08 Intel Corporation Interleaved pipeline of floating-point adders
US10990397B2 (en) 2019-03-30 2021-04-27 Intel Corporation Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator
US11175891B2 (en) 2019-03-30 2021-11-16 Intel Corporation Systems and methods to perform floating-point addition with selected rounding
US12118056B2 (en) 2019-05-03 2024-10-15 Micron Technology, Inc. Methods and apparatus for performing matrix transformations within a memory array
US11403097B2 (en) 2019-06-26 2022-08-02 Intel Corporation Systems and methods to skip inconsequential matrix operations
US11334647B2 (en) 2019-06-29 2022-05-17 Intel Corporation Apparatuses, methods, and systems for enhanced matrix multiplier architecture
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
CN110365767B (zh) * 2019-07-12 2021-08-20 成都安恒信息技术有限公司 一种运维审计系统的单次运维多tcp连接聚合方法
US11360768B2 (en) 2019-08-14 2022-06-14 Micron Technolgy, Inc. Bit string operations in memory
US11693657B2 (en) * 2019-09-05 2023-07-04 Micron Technology, Inc. Methods for performing fused-multiply-add operations on serially allocated data within a processing-in-memory capable memory device, and related memory devices and systems
US11829729B2 (en) 2019-09-05 2023-11-28 Micron Technology, Inc. Spatiotemporal fused-multiply-add, and related systems, methods and devices
US11934824B2 (en) 2019-09-05 2024-03-19 Micron Technology, Inc. Methods for performing processing-in-memory operations, and related memory devices and systems
CN112559397A (zh) 2019-09-26 2021-03-26 阿里巴巴集团控股有限公司 一种装置和方法
US12079197B2 (en) 2019-10-18 2024-09-03 Dover Microsystems, Inc. Systems and methods for updating metadata
US11194581B2 (en) * 2019-10-21 2021-12-07 Arm Limited Controlling the operation of a decoupled access-execute processor
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
US11714875B2 (en) 2019-12-28 2023-08-01 Intel Corporation Apparatuses, methods, and systems for instructions of a matrix operations accelerator
US11182159B2 (en) * 2020-02-26 2021-11-23 Google Llc Vector reductions using shared scratchpad memory
US11537861B2 (en) 2020-06-23 2022-12-27 Micron Technology, Inc. Methods of performing processing-in-memory operations, and related devices and systems
US11972230B2 (en) 2020-06-27 2024-04-30 Intel Corporation Matrix transpose and multiply
US12112167B2 (en) 2020-06-27 2024-10-08 Intel Corporation Matrix data scatter and gather between rows and irregularly spaced memory locations
US11069422B1 (en) 2020-07-07 2021-07-20 International Business Machines Corporation Testing multi-port array in integrated circuits
US11227641B1 (en) 2020-07-21 2022-01-18 Micron Technology, Inc. Arithmetic operations in memory
US11941395B2 (en) 2020-09-26 2024-03-26 Intel Corporation Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions
KR20220046308A (ko) * 2020-10-07 2022-04-14 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US12001385B2 (en) 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for loading a tile of a matrix operations accelerator
US12001887B2 (en) 2020-12-24 2024-06-04 Intel Corporation Apparatuses, methods, and systems for instructions for aligning tiles of a matrix operations accelerator
US12105589B2 (en) * 2022-02-23 2024-10-01 Micron Technology, Inc. Parity-based error management for a processing system
CN116319203B (zh) * 2023-03-21 2023-11-28 哈尔滨工业大学 用于区分用户的有限域资源构建方法、多址接入系统

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0417707A2 (en) * 1989-09-11 1991-03-20 Hitachi, Ltd. Microcomputer with address registers for dynamic bus control
JPH04352518A (ja) * 1991-05-30 1992-12-07 Matsushita Electric Ind Co Ltd 演算装置
EP0597441A1 (en) * 1992-11-09 1994-05-18 Kabushiki Kaisha Toshiba Microprocessor having a bus-width change function
JPH06292178A (ja) * 1993-03-31 1994-10-18 Sony Corp 適応形ビデオ信号演算処理装置
JPH07114469A (ja) * 1993-10-18 1995-05-02 Mitsubishi Electric Corp データ処理装置
JPH0830577A (ja) * 1994-07-15 1996-02-02 Mitsubishi Electric Corp Simdプロセッサ
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
JPH10285052A (ja) * 1997-04-02 1998-10-23 Matsushita Electric Ind Co Ltd ユークリッド復号法およびユークリッド復号回路
JP2001084229A (ja) * 1999-09-10 2001-03-30 Ricoh Co Ltd Simd型プロセッサ
JP2001184338A (ja) * 1999-12-22 2001-07-06 Hitachi Ltd Imdctの実行方法、圧縮信号の伸長方法、音声信号伸長装置、及び、imdct変換を実行する計算装置
JP2002528786A (ja) * 1998-08-24 2002-09-03 マイクロユニティ システムズ エンジニアリング インコーポレイテッド ワイド・オペランド・アーキテクチャを含むシステムおよび方法
JP2003122736A (ja) * 2001-10-11 2003-04-25 Matsushita Electric Ind Co Ltd 行列演算装置

Family Cites Families (223)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US533280A (en) * 1895-01-29 doug-las
US641194A (en) * 1899-03-28 1900-01-09 William F Cooper Acetylene-generator.
US3581279A (en) 1969-06-09 1971-05-25 Computer Modem Corp Signal transmission method and system
US3833889A (en) * 1973-03-08 1974-09-03 Control Data Corp Multi-mode data processing system
US4025772A (en) 1974-03-13 1977-05-24 James Nickolas Constant Digital convolver matched filter and correlator
US4251875A (en) * 1979-02-12 1981-02-17 Sperry Corporation Sequential Galois multiplication in GF(2n) with GF(2m) Galois multiplication gates
US4353119A (en) * 1980-06-13 1982-10-05 Motorola Inc. Adaptive antenna array including batch covariance relaxation apparatus and method
JPS5717049A (en) 1980-07-04 1982-01-28 Hitachi Ltd Direct memory access controlling circuit and data processing system
US4393468A (en) 1981-03-26 1983-07-12 Advanced Micro Devices, Inc. Bit slice microprogrammable processor for signal processing applications
US4489393A (en) 1981-12-02 1984-12-18 Trw Inc. Monolithic discrete-time digital convolution circuit
US4509119A (en) 1982-06-24 1985-04-02 International Business Machines Corporation Method for managing a buffer pool referenced by batch and interactive processes
FI72025C (fi) * 1982-11-04 1987-04-13 Valmet Oy Regleringssystem foer en traktor.
JPS5987243A (ja) * 1982-11-10 1984-05-19 Fuji Heavy Ind Ltd 内燃機関の空燃比制御装置
DE3485491D1 (de) 1983-11-26 1992-03-12 Toshiba Kawasaki Kk Arithmetischer konvolutionskreis.
US4727505A (en) 1984-03-29 1988-02-23 Kabushiki Kaisha Toshiba Convolution arithmetic circuit for digital signal processing
JPS60217435A (ja) 1984-04-12 1985-10-31 Toshiba Corp 多重精度浮動小数点加算回路
US4823259A (en) 1984-06-29 1989-04-18 International Business Machines Corporation High speed buffer store arrangement for quick wide transfer of data
US4785393A (en) 1984-07-09 1988-11-15 Advanced Micro Devices, Inc. 32-Bit extended function arithmetic-logic unit on a single chip
US4875161A (en) 1985-07-31 1989-10-17 Unisys Corporation Scientific processor vector file organization
US4748579A (en) * 1985-08-14 1988-05-31 Gte Laboratories Incorporated Method and circuit for performing discrete transforms
US4953073A (en) 1986-02-06 1990-08-28 Mips Computer Systems, Inc. Cup chip having tag comparator and address translation unit on chip and connected to off-chip cache and main memories
DE3687124T2 (de) 1986-02-06 1993-03-18 Mips Computer Systems Inc Funktionseinheit fuer rechner.
FR2605769B1 (fr) 1986-10-22 1988-12-09 Thomson Csf Operateur polynomial dans les corps de galois et processeur de traitement de signal numerique comportant un tel operateur
US4814976C1 (en) 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
US4876660A (en) 1987-03-20 1989-10-24 Bipolar Integrated Technology, Inc. Fixed-point multiplier-accumulator architecture
US5132898A (en) 1987-09-30 1992-07-21 Mitsubishi Denki Kabushiki Kaisha System for processing data having different formats
FR2622713A1 (fr) 1987-10-30 1989-05-05 Thomson Csf Circuit de calcul utilisant une arithmetique residuelle
US5032865A (en) 1987-12-14 1991-07-16 General Dynamics Corporation Air Defense Systems Div. Calculating the dot product of large dimensional vectors in two's complement representation
US4930106A (en) 1988-08-29 1990-05-29 Unisys Corporation Dual cache RAM for rapid invalidation
US4943919A (en) 1988-10-17 1990-07-24 The Boeing Company Central maintenance computer system and fault data handling method
US4893267A (en) 1988-11-01 1990-01-09 Motorola, Inc. Method and apparatus for a data processor to support multi-mode, multi-precision integer arithmetic
US5179651A (en) 1988-11-08 1993-01-12 Massachusetts General Hospital Apparatus for retrieval and processing of selected archived images for display at workstation terminals
CA1311063C (en) 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
US4969118A (en) 1989-01-13 1990-11-06 International Business Machines Corporation Floating point unit for calculating A=XY+Z having simultaneous multiply and add
US5253342A (en) 1989-01-18 1993-10-12 International Business Machines Corporation Intermachine communication services
US5155816A (en) 1989-02-10 1992-10-13 Intel Corporation Pipelined apparatus and method for controlled loading of floating point data in a microprocessor
US5157388A (en) 1989-02-14 1992-10-20 Intel Corporation Method and apparatus for graphics data interpolation
US5081698A (en) 1989-02-14 1992-01-14 Intel Corporation Method and apparatus for graphics display data manipulation
US4975868A (en) 1989-04-17 1990-12-04 International Business Machines Corporation Floating-point processor having pre-adjusted exponent bias for multiplication and division
CA1323451C (en) 1989-04-21 1993-10-19 Victor Jacques Menasce Cache-memory architecture
US5031135A (en) 1989-05-19 1991-07-09 Hitachi Micro Systems, Inc. Device for multi-precision and block arithmetic support in digital processors
US5287484A (en) * 1989-06-21 1994-02-15 Hitachi, Ltd. Multi-processor system for invalidating hierarchical cache
US5233690A (en) 1989-07-28 1993-08-03 Texas Instruments Incorporated Video graphics display memory swizzle logic and expansion circuit and method
US5283886A (en) 1989-08-11 1994-02-01 Hitachi, Ltd. Multiprocessor cache system having three states for generating invalidating signals upon write accesses
US5170399A (en) * 1989-08-30 1992-12-08 Idaho Research Foundation, Inc. Reed-Solomon Euclid algorithm decoder having a process configurable Euclid stack
US4956801A (en) 1989-09-15 1990-09-11 Sun Microsystems, Inc. Matrix arithmetic circuit for processing matrix transformation operations
DE68928980T2 (de) 1989-11-17 1999-08-19 Texas Instruments Inc. Multiprozessor mit Koordinatenschalter zwischen Prozessoren und Speichern
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5208914A (en) 1989-12-29 1993-05-04 Superconductor Systems Limited Partnership Method and apparatus for non-sequential resource access
US5241636A (en) 1990-02-14 1993-08-31 Intel Corporation Method for parallel instruction execution in a computer
KR930008050B1 (ko) 1990-02-16 1993-08-25 가부시끼가이샤 히다찌세이사꾸쇼 원칩 마이크로프로세서 및 그 버스시스템
JPH04219859A (ja) 1990-03-12 1992-08-10 Hewlett Packard Co <Hp> 並列プロセッサに直列命令ストリームデータを分散するハードウェアディストリビュータ
US5590365A (en) 1990-03-30 1996-12-31 Kabushiki Kaisha Toshiba Pipeline information processing circuit for floating point operations
US5333280A (en) * 1990-04-06 1994-07-26 Nec Corporation Parallel pipelined instruction processing system for very long instruction word
US5201056A (en) 1990-05-02 1993-04-06 Motorola, Inc. RISC microprocessor architecture with multi-bit tag extended instructions for selectively attaching tag from either instruction or input data to arithmetic operation output
CA2045705A1 (en) 1990-06-29 1991-12-30 Richard Lee Sites In-register data manipulation in reduced instruction set processor
JP2651267B2 (ja) 1990-07-26 1997-09-10 富士通株式会社 演算処理装置及び演算処理方法
JPH0484253A (ja) 1990-07-26 1992-03-17 Mitsubishi Electric Corp バス幅制御回路
US5249132A (en) 1990-10-31 1993-09-28 Tektronix, Inc. Digital pulse generator
JP3144794B2 (ja) * 1990-11-09 2001-03-12 株式会社日立製作所 マルチプロセッサシステム
US5809292A (en) 1990-11-13 1998-09-15 International Business Machines Corporation Floating point for simid array machine
US5588152A (en) 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
JP3100622B2 (ja) 1990-11-20 2000-10-16 沖電気工業株式会社 同期型ダイナミックram
US5268995A (en) 1990-11-21 1993-12-07 Motorola, Inc. Method for executing graphics Z-compare and pixel merge instructions in a data processor
JP2678527B2 (ja) * 1991-01-08 1997-11-17 三菱電機株式会社 キャッシュメモリ装置
DE69233510T2 (de) 1991-03-01 2006-02-02 Advanced Micro Devices, Inc., Sunnyvale Ausgangspuffer für Mikroprozessor
US5408581A (en) 1991-03-14 1995-04-18 Technology Research Association Of Medical And Welfare Apparatus Apparatus and method for speech signal processing
JP2816624B2 (ja) 1991-04-01 1998-10-27 モトローラ・インコーポレイテッド 2乗演算を実行する速度改良型データ処理システム及びその方法
FR2676845B1 (fr) 1991-05-23 1993-09-24 Sextant Avionique Dispositif pour la gestion de plusieurs files d'attente independantes dans un espace memoire commun et banalise.
FR2677200B1 (fr) 1991-05-30 1993-09-17 Besnard Christian Dispositif de securisation de donnees numeriques.
US5636363A (en) * 1991-06-14 1997-06-03 Integrated Device Technology, Inc. Hardware control structure and method for off-chip monitoring entries of an on-chip cache
US5325495A (en) 1991-06-28 1994-06-28 Digital Equipment Corporation Reducing stall delay in pipelined computer system using queue between pipeline stages
US5327570A (en) 1991-07-22 1994-07-05 International Business Machines Corporation Multiprocessor system having local write cache within each data processor node
US5185861A (en) * 1991-08-19 1993-02-09 Sequent Computer Systems, Inc. Cache affinity scheduler
WO1993011500A1 (en) 1991-11-27 1993-06-10 Seiko Epson Corporation Pixel modification unit
US5530960A (en) 1991-12-17 1996-06-25 Dell Usa, L.P. Disk drive controller accepting first commands for accessing composite drives and second commands for individual diagnostic drive control wherein commands are transparent to each other
US5231646A (en) 1992-03-16 1993-07-27 Kyros Corporation Communications system
US5669010A (en) 1992-05-18 1997-09-16 Silicon Engines Cascaded two-stage computational SIMD engine having multi-port memory and multiple arithmetic units
US5640543A (en) 1992-06-19 1997-06-17 Intel Corporation Scalable multimedia platform architecture
US5471628A (en) 1992-06-30 1995-11-28 International Business Machines Corporation Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode
US5282598A (en) * 1992-07-21 1994-02-01 Greene Barry N Container holder
JP3268024B2 (ja) 1992-08-25 2002-03-25 日本化学産業株式会社 天井の換気構造
US5268855A (en) 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
US5256994A (en) 1992-09-21 1993-10-26 Intel Corporation Programmable secondary clock generator
US5423051A (en) 1992-09-24 1995-06-06 International Business Machines Corporation Execution unit with an integrated vector operation capability
IE922813A1 (en) 1992-11-12 1994-05-18 Digital Equipment Internat Ltd Digital data storage system
JP3069455B2 (ja) * 1992-12-22 2000-07-24 富士写真フイルム株式会社 画像データ圧縮伸張装置における量子化・逆量子化回路
US5519842A (en) * 1993-02-26 1996-05-21 Intel Corporation Method and apparatus for performing unaligned little endian and big endian data accesses in a processing system
US5327369A (en) 1993-03-31 1994-07-05 Intel Corporation Digital adder and method for adding 64-bit, 16-bit and 8-bit words
US5671170A (en) * 1993-05-05 1997-09-23 Hewlett-Packard Company Method and apparatus for correctly rounding results of division and square root computations
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
JP3203401B2 (ja) * 1993-05-21 2001-08-27 三菱電機株式会社 データ処理装置
US5522054A (en) 1993-09-13 1996-05-28 Compaq Computer Corporation Dynamic control of outstanding hard disk read requests for sequential and random operations
US5395240A (en) * 1993-09-14 1995-03-07 Dentsply Research & Development Corp. Sterilizable dental medical handpiece containing electric coil
US5371772A (en) 1993-09-14 1994-12-06 Intel Corporation Programmable divider exhibiting a 50/50 duty cycle
US5426600A (en) 1993-09-27 1995-06-20 Hitachi America, Ltd. Double precision division circuit and method for digital signal processor
US5557724A (en) 1993-10-12 1996-09-17 Intel Corporation User interface, method, and apparatus selecting and playing channels having video, audio, and/or text streams
US5535225A (en) * 1993-10-12 1996-07-09 Hughes Aircraft Company Time domain algebraic encoder/decoder
EP0649085B1 (en) 1993-10-18 1998-03-04 Cyrix Corporation Microprocessor pipe control and register translation
JPH07114496A (ja) 1993-10-20 1995-05-02 Toshiba Corp 共有メモリ制御回路
US5448185A (en) * 1993-10-27 1995-09-05 Actel Corporation Programmable dedicated FPGA functional blocks for multiple wide-input functions
DE69429061T2 (de) 1993-10-29 2002-07-18 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
JP3487903B2 (ja) 1993-11-12 2004-01-19 松下電器産業株式会社 演算装置及び演算方法
US6128721A (en) 1993-11-17 2000-10-03 Sun Microsystems, Inc. Temporary pipeline register file for a superpipelined superscalar processor
EP0654733B1 (en) 1993-11-23 2000-05-24 Hewlett-Packard Company Parallel data processing in a single processor
US5390135A (en) 1993-11-29 1995-02-14 Hewlett-Packard Parallel shift and add circuit and method
US5883824A (en) 1993-11-29 1999-03-16 Hewlett-Packard Company Parallel adding and averaging circuit and method
US5590350A (en) 1993-11-30 1996-12-31 Texas Instruments Incorporated Three input arithmetic logic unit with mask generator
US6016538A (en) 1993-11-30 2000-01-18 Texas Instruments Incorporated Method, apparatus and system forming the sum of data in plural equal sections of a single data word
US5448509A (en) 1993-12-08 1995-09-05 Hewlett-Packard Company Efficient hardware handling of positive and negative overflow resulting from arithmetic operations
US5467131A (en) 1993-12-30 1995-11-14 Hewlett-Packard Company Method and apparatus for fast digital signal decoding
US5541865A (en) 1993-12-30 1996-07-30 Intel Corporation Method and apparatus for performing a population count operation
JP2932963B2 (ja) 1994-01-21 1999-08-09 モトローラ・インコーポレイテッド 効率的なビット移動能力を有するデータ・プロセッサとその方法
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US5551005A (en) 1994-02-25 1996-08-27 Intel Corporation Apparatus and method of handling race conditions in mesi-based multiprocessor system with private caches
US5550988A (en) 1994-03-01 1996-08-27 Intel Corporation Apparatus and method for performing error correction in a multi-processor system
US6006299A (en) 1994-03-01 1999-12-21 Intel Corporation Apparatus and method for caching lock conditions in a multi-processor system
US5673407A (en) 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
JPH07271764A (ja) 1994-03-24 1995-10-20 Internatl Business Mach Corp <Ibm> 計算機プロセッサ及びシステム
US5734874A (en) 1994-04-29 1998-03-31 Sun Microsystems, Inc. Central processing unit with integrated graphics functions
WO1995031767A1 (en) 1994-05-11 1995-11-23 Vlsi Technology, Inc. Floating-point processor with apparent-precision based selection of execution-precision
JP2757777B2 (ja) 1994-05-26 1998-05-25 住友金属工業株式会社 メモリの不正アクセス検出方法及びシステム
US5559975A (en) 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5642306A (en) 1994-07-27 1997-06-24 Intel Corporation Method and apparatus for a single instruction multiple data early-out zero-skip multiplier
US5426379A (en) 1994-07-29 1995-06-20 Xilinx, Inc. Field programmable gate array with built-in bitstream data expansion
US5579253A (en) * 1994-09-02 1996-11-26 Lee; Ruby B. Computer multiply instruction with a subresult selection option
US5758176A (en) 1994-09-28 1998-05-26 International Business Machines Corporation Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
US5477181A (en) 1994-10-13 1995-12-19 National Semiconductor Corporation Programmable multiphase clock divider
US6275834B1 (en) 1994-12-01 2001-08-14 Intel Corporation Apparatus for performing packed shift operations
EP0795155B1 (en) 1994-12-01 2003-03-19 Intel Corporation A microprocessor having a multiply operation
ZA9510127B (en) 1994-12-01 1996-06-06 Intel Corp Novel processor having shift operations
US5819101A (en) 1994-12-02 1998-10-06 Intel Corporation Method for packing a plurality of packed data elements in response to a pack instruction
CN101211255B (zh) 1994-12-02 2012-07-04 英特尔公司 对复合操作数进行压缩操作的处理器、设备和计算系统
US5598362A (en) * 1994-12-22 1997-01-28 Motorola Inc. Apparatus and method for performing both 24 bit and 16 bit arithmetic
US5887183A (en) 1995-01-04 1999-03-23 International Business Machines Corporation Method and system in a data processing system for loading and storing vectors in a plurality of modes
US5680338A (en) 1995-01-04 1997-10-21 International Business Machines Corporation Method and system for vector processing utilizing selected vector elements
US5500811A (en) 1995-01-23 1996-03-19 Microunity Systems Engineering, Inc. Finite impulse response filter
US5687350A (en) * 1995-02-10 1997-11-11 International Business Machines Corporation Protocol and system for performing line-fill address during copy-back operation
US5566329A (en) * 1995-02-10 1996-10-15 International Business Machines Corporation System and method for mutation of selected assignment operations on large data objects
US5745729A (en) 1995-02-16 1998-04-28 Sun Microsystems, Inc. Methods and apparatuses for servicing load instructions
US5752264A (en) * 1995-03-31 1998-05-12 International Business Machines Corporation Computer architecture incorporating processor clusters and hierarchical cache memories
US5826106A (en) 1995-05-26 1998-10-20 National Semiconductor Corporation High performance multifunction direct memory access (DMA) controller
US5752001A (en) * 1995-06-01 1998-05-12 Intel Corporation Method and apparatus employing Viterbi scoring using SIMD instructions for data recognition
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US6633897B1 (en) * 1995-06-30 2003-10-14 International Business Machines Corporation Method and system for scheduling threads within a multiprocessor data processing system using an affinity scheduler
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5953241A (en) 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6295599B1 (en) 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US6006318A (en) 1995-08-16 1999-12-21 Microunity Systems Engineering, Inc. General purpose, dynamic partitioning, programmable media processor
US5721892A (en) 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
US6385634B1 (en) 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
AU6905496A (en) 1995-09-01 1997-03-27 Philips Electronics North America Corporation Method and apparatus for custom operations of a processor
US6470370B2 (en) 1995-09-05 2002-10-22 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US6058408A (en) 1995-09-05 2000-05-02 Intel Corporation Method and apparatus for multiplying and accumulating complex numbers in a digital filter
US6237016B1 (en) 1995-09-05 2001-05-22 Intel Corporation Method and apparatus for multiplying and accumulating data samples and complex coefficients
JPH0997178A (ja) 1995-09-29 1997-04-08 Matsushita Electric Ind Co Ltd 飽和演算処理装置および方法
US5778412A (en) * 1995-09-29 1998-07-07 Intel Corporation Method and apparatus for interfacing a data bus to a plurality of memory devices
US5799165A (en) * 1996-01-26 1998-08-25 Advanced Micro Devices, Inc. Out-of-order processing that removes an issued operation from an execution pipeline upon determining that the operation would cause a lengthy pipeline delay
US5812439A (en) 1995-10-10 1998-09-22 Microunity Systems Engineering, Inc. Technique of incorporating floating point information into processor instructions
JP3717212B2 (ja) 1995-10-27 2005-11-16 株式会社日立製作所 情報処理装置及び情報処理ユニット
US5835744A (en) * 1995-11-20 1998-11-10 Advanced Micro Devices, Inc. Microprocessor configured to swap operands in order to minimize dependency checking logic
US5886732A (en) 1995-11-22 1999-03-23 Samsung Information Systems America Set-top electronics and network interface unit arrangement
US5935240A (en) * 1995-12-15 1999-08-10 Intel Corporation Computer implemented method for transferring packed data between register files and memory
US5757432A (en) 1995-12-18 1998-05-26 Intel Corporation Manipulating video and audio signals using a processor which supports SIMD instructions
US5940859A (en) * 1995-12-19 1999-08-17 Intel Corporation Emptying packed data state during execution of packed data instructions
US5740093A (en) 1995-12-20 1998-04-14 Intel Corporation 128-bit register file and 128-bit floating point load and store for quadruple precision compatibility
KR0157924B1 (ko) 1995-12-23 1998-12-15 문정환 데이타 전송 시스템 및 그 방법
US5983257A (en) 1995-12-26 1999-11-09 Intel Corporation System for signal processing using multiply-add operations
US5646626A (en) 1996-01-30 1997-07-08 Motorola, Inc. Method and apparatus for digital correlation in pseudorandom noise coded systems
US5835782A (en) 1996-03-04 1998-11-10 Intel Corporation Packed/add and packed subtract operations
US5802116A (en) * 1996-04-04 1998-09-01 Lucent Technologies Inc. Soft decision Viterbi decoding with large constraint lengths
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
US6092094A (en) 1996-04-17 2000-07-18 Advanced Micro Devices, Inc. Execute unit configured to selectably interpret an operand as multiple operands or as a single operand
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5872972A (en) * 1996-07-05 1999-02-16 Ncr Corporation Method for load balancing a per processor affinity scheduler wherein processes are strictly affinitized to processors and the migration of a process from an affinitized processor to another available processor is limited
US5826079A (en) * 1996-07-05 1998-10-20 Ncr Corporation Method for improving the execution efficiency of frequently communicating processes utilizing affinity process scheduling by identifying and assigning the frequently communicating processes to the same processor
US6058465A (en) 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
JPH10143365A (ja) * 1996-11-15 1998-05-29 Toshiba Corp 並列処理装置及びその命令発行方式
US6269390B1 (en) * 1996-12-17 2001-07-31 Ncr Corporation Affinity scheduling of data within multi-processor computer systems
US5889983A (en) 1997-01-21 1999-03-30 Intel Corporation Compare and exchange operation in a processing system
US6061780A (en) 1997-01-24 2000-05-09 Texas Instruments Incorporated Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units
US6401194B1 (en) 1997-01-28 2002-06-04 Samsung Electronics Co., Ltd. Execution unit for processing a data stream independently and in parallel
US6141384A (en) 1997-02-14 2000-10-31 Philips Electronics North America Corporation Decoder for trellis encoded interleaved data stream and HDTV receiver including such a decoder
US6766515B1 (en) * 1997-02-18 2004-07-20 Silicon Graphics, Inc. Distributed scheduling of parallel jobs with no kernel-to-kernel communication
US5991531A (en) 1997-02-24 1999-11-23 Samsung Electronics Co., Ltd. Scalable width vector processor architecture for efficient emulation
US5922066A (en) 1997-02-24 1999-07-13 Samsung Electronics Co., Ltd. Multifunction data aligner in wide data width processor
GB2323187B (en) 1997-03-14 2001-09-19 Nokia Mobile Phones Ltd Data processing circuit using both edges of a clock signal
US6014684A (en) 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
US5898849A (en) 1997-04-04 1999-04-27 Advanced Micro Devices, Inc. Microprocessor employing local caches for functional units to store memory operands used by the functional units
JP3602293B2 (ja) * 1997-04-22 2004-12-15 株式会社ソニー・コンピュータエンタテインメント データ転送方法及び装置
JP3570855B2 (ja) 1997-05-29 2004-09-29 株式会社日立製作所 分岐予測装置
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US5933650A (en) 1997-10-09 1999-08-03 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
US6804766B1 (en) 1997-11-12 2004-10-12 Hewlett-Packard Development Company, L.P. Method for managing pages of a designated memory object according to selected memory management policies
US6438660B1 (en) 1997-12-09 2002-08-20 Intel Corporation Method and apparatus for collapsing writebacks to a memory for resource efficiency
US6134635A (en) 1997-12-09 2000-10-17 Intel Corporation Method and apparatus of resolving a deadlock by collapsing writebacks to a memory
US5999959A (en) 1998-02-18 1999-12-07 Quantum Corporation Galois field multiplier
US20010049780A1 (en) 1998-03-27 2001-12-06 Shreekant Thakkar Method and apparatus for performing integer operations in response to a result of a floating point operation
US6211892B1 (en) 1998-03-31 2001-04-03 Intel Corporation System and method for performing an intra-add operation
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6426746B2 (en) 1998-03-31 2002-07-30 Intel Corporation Optimization for 3-D graphic transformation using SIMD computations
US6243803B1 (en) 1998-03-31 2001-06-05 Intel Corporation Method and apparatus for computing a packed absolute differences with plurality of sign bits using SIMD add circuitry
US6418529B1 (en) 1998-03-31 2002-07-09 Intel Corporation Apparatus and method for performing intra-add operation
US6212618B1 (en) * 1998-03-31 2001-04-03 Intel Corporation Apparatus and method for performing multi-dimensional computations based on intra-add operation
US6230257B1 (en) 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US6052769A (en) 1998-03-31 2000-04-18 Intel Corporation Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction
US6173393B1 (en) 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
US6377970B1 (en) 1998-03-31 2002-04-23 Intel Corporation Method and apparatus for computing a sum of packed data elements using SIMD multiply circuitry
US5996057A (en) 1998-04-17 1999-11-30 Apple Data processing system and method of permutation with replication within a vector register file
US6292815B1 (en) 1998-04-30 2001-09-18 Intel Corporation Data conversion between floating point packed format and integer scalar format
US6408325B1 (en) 1998-05-06 2002-06-18 Sun Microsystems, Inc. Context switching technique for processors with large register files
JP3803196B2 (ja) * 1998-07-03 2006-08-02 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法および記録媒体
US6378060B1 (en) * 1998-08-24 2002-04-23 Microunity Systems Engineering, Inc. System to implement a cross-bar switch of a broadband processor
JP2000224054A (ja) * 1999-01-27 2000-08-11 Texas Instr Inc <Ti> ビタビデコ―ディングの速度を増大させる方法と装置
US6463525B1 (en) * 1999-08-16 2002-10-08 Sun Microsystems, Inc. Merging single precision floating point operands
EP1102161A2 (en) * 1999-11-15 2001-05-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US6539467B1 (en) 1999-11-15 2003-03-25 Texas Instruments Incorporated Microprocessor with non-aligned memory access
FR2804366B1 (fr) * 2000-01-28 2002-04-26 Joseph Sauron Materiel Ind Dispositif d'electro-soudage a signal de sortie regule
US6574724B1 (en) 2000-02-18 2003-06-03 Texas Instruments Incorporated Microprocessor with non-aligned scaled and unscaled addressing
US6566758B1 (en) * 2001-11-27 2003-05-20 Sun Microsystems, Inc. Current crowding reduction technique for flip chip package technology
US10866807B2 (en) * 2011-12-22 2020-12-15 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0417707A2 (en) * 1989-09-11 1991-03-20 Hitachi, Ltd. Microcomputer with address registers for dynamic bus control
JPH0398145A (ja) * 1989-09-11 1991-04-23 Hitachi Ltd マイクロプロセッサ
JPH04352518A (ja) * 1991-05-30 1992-12-07 Matsushita Electric Ind Co Ltd 演算装置
EP0597441A1 (en) * 1992-11-09 1994-05-18 Kabushiki Kaisha Toshiba Microprocessor having a bus-width change function
JPH06149723A (ja) * 1992-11-09 1994-05-31 Toshiba Corp プロセッサ
JPH06292178A (ja) * 1993-03-31 1994-10-18 Sony Corp 適応形ビデオ信号演算処理装置
JPH07114469A (ja) * 1993-10-18 1995-05-02 Mitsubishi Electric Corp データ処理装置
US5717946A (en) * 1993-10-18 1998-02-10 Mitsubishi Denki Kabushiki Kaisha Data processor
JPH0830577A (ja) * 1994-07-15 1996-02-02 Mitsubishi Electric Corp Simdプロセッサ
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
JPH10285052A (ja) * 1997-04-02 1998-10-23 Matsushita Electric Ind Co Ltd ユークリッド復号法およびユークリッド復号回路
JP2002528786A (ja) * 1998-08-24 2002-09-03 マイクロユニティ システムズ エンジニアリング インコーポレイテッド ワイド・オペランド・アーキテクチャを含むシステムおよび方法
JP2001084229A (ja) * 1999-09-10 2001-03-30 Ricoh Co Ltd Simd型プロセッサ
JP2001184338A (ja) * 1999-12-22 2001-07-06 Hitachi Ltd Imdctの実行方法、圧縮信号の伸長方法、音声信号伸長装置、及び、imdct変換を実行する計算装置
JP2003122736A (ja) * 2001-10-11 2003-04-25 Matsushita Electric Ind Co Ltd 行列演算装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CRAIG HANSEN: "" Architecture of a Broadband Mediaprocessor "", COMPCON '96. 'TECHNOLOGIES FOR THE INFORMATION SUPERHIGHWAY' DIGEST OF PAPERS, JPN7009000732, 28 February 1996 (1996-02-28), US, pages 334 - 340, ISSN: 0002215652 *
CRAIG HANSEN: ""MicroUnity's Media Processor Architecture"", MICRO,IEEE, JPN7010001326, August 1996 (1996-08-01), US, pages 34 - 41, XP000596511, ISSN: 0002215653, DOI: 10.1109/40.526923 *
ミラー マイケル・J: "パーソナル・コンピュータ 広がるIBMパーソナル・コンピュータ互換機", 日経コンピュータ 第70号 NIKKEI COMPUTER, JPN6010023613, JP, ISSN: 0002215654 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017520873A (ja) * 2014-06-30 2017-07-27 マイクロユニティ システムズ エンジニアリング インコーポレイテッド 拡張可能Wideオペランド命令のためのシステムおよび方法
JP2020521192A (ja) * 2017-05-17 2020-07-16 グーグル エルエルシー ハードウェアにおける行列乗算の実行
JP2022106737A (ja) * 2017-05-17 2022-07-20 グーグル エルエルシー ハードウェアにおける行列乗算の実行
JP7114622B2 (ja) 2017-05-17 2022-08-08 グーグル エルエルシー ハードウェアにおける行列乗算の実行
JP7312879B2 (ja) 2017-05-17 2023-07-21 グーグル エルエルシー ハードウェアにおける行列乗算の実行
US11989258B2 (en) 2017-05-17 2024-05-21 Google Llc Performing matrix multiplication in hardware

Also Published As

Publication number Publication date
US8289335B2 (en) 2012-10-16
EP2226726A2 (en) 2010-09-08
US20040098548A1 (en) 2004-05-20
EP2226726A3 (en) 2010-10-20
EP1652090A2 (en) 2006-05-03
US7301541B2 (en) 2007-11-27
EP1652090A4 (en) 2008-04-09
CA2735354C (en) 2018-09-25
US7948496B2 (en) 2011-05-24
EP2228727A3 (en) 2010-10-20
ES2527937T3 (es) 2015-02-02
CA2573292A1 (en) 2005-01-27
US20160321071A1 (en) 2016-11-03
US7952587B2 (en) 2011-05-31
US20090100227A1 (en) 2009-04-16
US20160048393A1 (en) 2016-02-18
CA2573292C (en) 2012-01-17
EP2284709B1 (en) 2014-11-26
US9378018B2 (en) 2016-06-28
US20090083498A1 (en) 2009-03-26
US7932910B2 (en) 2011-04-26
US20090113185A1 (en) 2009-04-30
US9229713B2 (en) 2016-01-05
WO2005008410A3 (en) 2005-05-19
US10365926B2 (en) 2019-07-30
WO2005008410A2 (en) 2005-01-27
EP2284709A1 (en) 2011-02-16
US8018464B2 (en) 2011-09-13
US7843459B2 (en) 2010-11-30
EP2228727A2 (en) 2010-09-15
JP5005342B2 (ja) 2012-08-22
US20080104375A1 (en) 2008-05-01
EP2226725A3 (en) 2010-11-03
US20090031105A1 (en) 2009-01-29
US20130173888A1 (en) 2013-07-04
EP2226725A2 (en) 2010-09-08
CA2735354A1 (en) 2005-01-27
US20090113176A1 (en) 2009-04-30

Similar Documents

Publication Publication Date Title
JP5005342B2 (ja) ワイド・トランスフォーム・スライス・インストラクションを実行するプロセッサアーキテクチャ
US6643765B1 (en) Programmable processor with group floating point operations
US7216217B2 (en) Programmable processor with group floating-point operations
EP2241968B1 (en) System with wide operand architecture, and method
TWI608410B (zh) 標準格式中間結果
KR100267100B1 (ko) 스케일러블 폭의 벡터 프로세서 아키텍쳐
JP4933693B2 (ja) ワイド・オペランド・アーキテクチャを含むシステムおよび方法
US9015452B2 (en) Vector math instruction execution by DSP processor approximating division and complex number magnitude
JPH11154114A (ja) 複数データ・フェッチのアーキテクチャを使ってテーブル・ルックアップを実行するためのシステムおよび方法
CN117112028A (zh) 编码和解码可变长度指令
US20080046682A1 (en) Data processing unit and method for parallel vector data processing
US10846056B2 (en) Configurable SIMD multiplication circuit
Slingerland et al. Multimedia instruction sets for general purpose microprocessors: a survey
JP2001501001A (ja) データ処理システムにおける入力オペランド制御
US8938485B1 (en) Integer division using floating-point reciprocal
JP2001504956A (ja) データ処理システム・レジスタ制御
US20240202160A1 (en) Processor, computer-readable recording medium storing instruction execution program, and information processing device

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100427

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100716

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110531

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110810

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110817

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110930

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120523

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150601

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees