ES2527937T3 - Procesador programable y método con operaciones amplias - Google Patents
Procesador programable y método con operaciones amplias Download PDFInfo
- Publication number
- ES2527937T3 ES2527937T3 ES10191073.5T ES10191073T ES2527937T3 ES 2527937 T3 ES2527937 T3 ES 2527937T3 ES 10191073 T ES10191073 T ES 10191073T ES 2527937 T3 ES2527937 T3 ES 2527937T3
- Authority
- ES
- Spain
- Prior art keywords
- operand
- broad
- storage
- instruction
- results
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 43
- 238000003860 storage Methods 0.000 claims abstract description 99
- 238000000605 extraction Methods 0.000 claims abstract description 75
- 239000013598 vector Substances 0.000 claims abstract description 46
- 238000011084 recovery Methods 0.000 claims abstract description 10
- 230000015654 memory Effects 0.000 claims description 119
- 239000011159 matrix material Substances 0.000 claims description 48
- 238000007667 floating Methods 0.000 claims description 30
- 238000012937 correction Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 3
- 238000011017 operating method Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 42
- 230000008569 process Effects 0.000 description 15
- 238000007792 addition Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 12
- 230000011218 segmentation Effects 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 238000006073 displacement reaction Methods 0.000 description 10
- 230000006872 improvement Effects 0.000 description 9
- 230000006835 compression Effects 0.000 description 7
- 238000007906 compression Methods 0.000 description 7
- 238000011065 in-situ storage Methods 0.000 description 7
- 230000005055 memory storage Effects 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 239000004121 copper complexes of chlorophylls and chlorophyllins Substances 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 238000011068 loading method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000008707 rearrangement Effects 0.000 description 3
- ZAKOWWREFLAJOT-CEFNRUSXSA-N D-alpha-tocopherylacetate Chemical compound CC(=O)OC1=C(C)C(C)=C2O[C@@](CCC[C@H](C)CCC[C@H](C)CCCC(C)C)(C)CCC2=C1C ZAKOWWREFLAJOT-CEFNRUSXSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000001679 citrus red 2 Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- RZVAJINKPMORJF-UHFFFAOYSA-N Acetaminophen Chemical compound CC(=O)NC1=CC=C(O)C=C1 RZVAJINKPMORJF-UHFFFAOYSA-N 0.000 description 1
- 239000001828 Gelatine Substances 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000001994 activation Methods 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/398—Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30018—Bit or string instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/158—Finite field arithmetic processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
- H03M13/4161—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
- H03M13/4169—Sequence 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
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03F—PHOTOMECHANICAL PRODUCTION OF TEXTURED OR PATTERNED SURFACES, e.g. FOR PRINTING, FOR PROCESSING OF SEMICONDUCTOR DEVICES; MATERIALS THEREFOR; ORIGINALS THEREFOR; APPARATUS SPECIALLY ADAPTED THEREFOR
- G03F1/00—Originals 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/36—Masks having proximity correction features; Preparation thereof, e.g. optical proximity correction [OPC] design processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/18—Manufacturability analysis or optimisation for manufacturability
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total 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)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Multimedia (AREA)
- Architecture (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
Un procesador, que comprende: un primer camino de datos (137, 714 y 715) que tiene una primera anchura de bits; un segundo camino de datos (entre 136 y 149; 714 y 720n) que tiene una segunda anchura de bits mayor que la primera anchura de bits; una serie de terceros caminos de datos (155 a 158; 720A y 740) que tienen una anchura de bits combinada menor que la segunda anchura de bits; un primer almacenamiento de operando amplio (136, 714) acoplado al primer camino de datos y al segundo camino de datos para almacenar un primer operando amplio recibido sobre el primer camino de datos, teniendo el primer operando amplio un tamaño con un número de bits mayor que la primera anchura de bits; un segundo almacenamiento de operando amplio (134, 714) acoplado al primer camino de datos y al segundo camino de datos para almacenar un segundo operando amplio recibido sobre el primer camino de datos, teniendo el segundo operando amplio un tamaño con un número de bits mayor que la primera anchura de bits; un archivo de registros (720A a 720n) que incluye registros que tienen la primera anchura de bits, estando conectado el archivo de registros al primer camino de datos y a los terceros caminos de datos, e incluyendo almacenamiento (710) para un primer especificador de operando amplio que especifica una dirección de primer operando amplio y un segundo especificador de operando amplio que especifica una dirección del segundo operando amplio; una unidad funcional (149, 740) que puede iniciar instrucciones, la unidad funcional estando acoplada mediante el segundo camino de datos al primer almacenamiento de operando amplio y estando acoplada mediante los terceros caminos de datos al archivo de registros; y en el que la unidad funcional está dispuesta para ejecutar una instrucción de rebanada de transformada de Fourier amplia que contiene campos de instrucción que especifican (i) un primer registro de operando amplio (710) para provocar la recuperación del primer operando amplio para su almacenamiento en el primer almacenamiento de operando amplio, (ii) un segundo registro de operando amplio (710) para provocar la recuperación del segundo operando amplio para su almacenamiento en el segundo almacenamiento de operando amplio, (iii) por lo menos un registro de operando de control en forma de un registro general en el archivo de registros que almacena un operando de control y especifica parámetros de control de precisión y de extracción, y (iv) un registro de resultados (745) en el archivo de registros, y en el que la instrucción de rebanada de transformada de Fourier amplia está configurada para provocar que la unidad funcional (i) tome el primer operando amplio del primer almacenamiento de operando amplio, (ii) tome el segundo operando amplio del segundo almacenamiento de operando amplio, (iii) lleve a cabo multiplicaciones complejas paralelas de subconjuntos de elementos de datos del primer operando amplio, por subconjuntos de elementos de datos del segundo operando amplio para producir primeros resultados, (iv) lleve a cabo operaciones de mariposa paralelas y operaciones de extracción paralelas sobre subconjuntos de los primeros resultados para proporcionar de ese modo segundos resultados; en el que el resultado escalar de la instrucción de rebanada de transformada de Fourier amplia contiene información a partir de la cual se puede determinar la posición del bit más significativo de los segundos resultados; en el que la posición del bit más significativo del segundo resultado es: calculada mediante una serie de operaciones booleanas sobre subconjuntos paralelos de los segundos resultados, produciendo resultados booleanos vectoriales, y reduciendo además los resultados booleanos vectoriales a un valor booleano escalar, seguido por una determinación de la posición del bit más significativo del valor booleano escalar; y colocado en el registro general para proporcionar un parámetro de escala para su utilización en la fase subsiguiente de la instrucción de rebanada de transformada de Fourier amplia.
Description
DESCRIPCIÓN
Procesador programable y método con operaciones amplias
[0001] La presente invención se refiere a arquitecturas de procesador de propósito general, y en particular se refiere a arquitecturas de operandos amplios.
[0002] Los productos de comunicaciones requieren un mayor rendimiento computacional para procesar señales digitales en software en tiempo real. Los incrementos del rendimiento han pasado por mejoras en la tecnología de procesos y por mejoras en el diseño de los microprocesadores. Un mayor paralelismo, mayores frecuencias de reloj, mayores densidades, acoplados con herramientas de diseño mejoradas y compiladores los han hecho más 15 prácticos. Sin embargo, muchas de estas mejoras suponen una sobrecarga adicional en memoria y latencia, debido a la ausencia del ancho de banda necesario que está estrechamente acoplado con las unidades computacionales.
[0003] El nivel de rendimiento de un procesador, y en particular de un procesador de propósito general, se puede estimar a partir de varios de una serie de factores independientes: frecuencia de reloj, puertas por reloj, número de 20 operandos, anchura del camino de operandos y de datos, y división del camino de operandos y de datos. La frecuencia de reloj está influida en gran parte por la elección de la tecnología lógica y de circuitos, pero está influida asimismo por el número de puertas por reloj. Las puertas por reloj consisten en cuántas puertas en una segmentación pueden cambiar de estado en un solo ciclo de reloj. Esto se puede reducir al introducir cerrojos en el camino de datos: cuando se reduce el número de puertas entre cerrojos, es posible un reloj más rápido. Sin 25 embargo, los cerrojos adicionales producen una mayor longitud de segmentación, y por lo tanto tienen el coste de una mayor latencia de instrucciones. El número de operandos es sencillo; por ejemplo, sumando con técnicas de ahorro de acarreo, se pueden sumar juntos tres valores con poco más retardo del necesario para sumar dos valores. La anchura del camino de operandos y de datos define cuántos datos se pueden procesar a la vez; caminos de datos más amplios pueden realizar funciones más complejas, pero en general esto supone un mayor coste de 30 implementación. La división de los caminos de operandos y de datos se refiere a la utilización eficiente del camino de datos cuando se aumenta la anchura, con el objetivo de mantener sustancialmente el uso máximo.
[0004] La última división del camino de factores, operandos y datos se trata extensivamente en las patentes U.S.A. asignadas en común con la presente, de números 5 742 840, 5 794 060, 5 794 061, 5 809 321 y 5 822 603, que 35 describen sistemas y métodos para mejorar la utilización de un procesador de propósito general añadiendo clases de instrucciones. Estas clases de instrucciones utilizan los contenidos de registros de propósito general como fuentes de caminos de datos, dividen los operandos en símbolos de un tamaño especificado, realizan operaciones en paralelo, concatenan los resultados y colocan los resultados concatenados en un registro de propósito general. Éstas patentes, la totalidad de las cuales están asignadas al mismo cesionario de la presente invención, muestran 40 un microprocesador de propósito general que se ha optimizado para procesar y transmitir flujos de datos multimedia mediante un paralelismo significativo.
[0005] Si bien las patentes anteriores han ofrecido mejoras significativas en la utilización y el rendimiento de un microprocesador de propósito general, en particular para manejar comunicaciones de banda ancha tales como flujos 45 de datos multimedia, son posibles otras mejoras.
[0006] Muchos procesadores de propósito general tienen registros generales para almacenar operandos para instrucciones, haciéndose coincidir la anchura del registro con el tamaño del camino de datos. Los diseños de los procesadores limitan, en general, el número de registros accesibles por instrucción, debido a que el hardware para 50 acceder a estos registros es relativamente costoso en términos de energía y superficie. Mientras que el número de registros accesibles varía entre los diseños de procesadores, a menudo está limitado a dos, tres o cuatro registros por instrucción cuando dichas instrucciones están diseñadas para funcionar en un solo ciclo de reloj del procesador o en un solo flujo de segmentación. Algunos procesadores, tales como el Motorola 68000, tienen instrucciones para guardar y reestablecer un número ilimitado de registros, pero requieren múltiples ciclos para realizar dicha 55 instrucción.
[0007] El Motorola 68000 intenta asimismo superar un camino de datos estrecho combinado con un archivo de registros estrecho tomando múltiples ciclos o flujos de segmentación para realizar una instrucción, y emulando de ese modo un camino de datos más amplio. Sin embargo, dichas técnicas de precisión múltiple ofrecen solamente 60 una mejora marginal, en vista de los ciclos de reloj adicionales requeridos. Por lo tanto, la anchura y el número accesible de los registros de propósito general limita fundamentalmente la cantidad de procesamiento que puede ser realizado mediante una única instrucción en una máquina basada en registros.
[0008] Los procesadores existentes pueden proporcionar instrucciones que aceptan operandos, para las que se 65 leen uno o varios operandos desde un sistema de memoria de un procesador de propósito general. Sin embargo,
dado que estos operandos de memoria están especificados generalmente mediante operandos de registro, y el camino de datos del sistema de memoria no es más amplio que el camino de datos del procesador, no se mejora la anchura y el número accesible de operandos de propósito general por ciclo de instrucción o flujo de segmentación.
[0009] El número de operandos de registro de propósito general accesibles por instrucción está limitado 5 generalmente por la complejidad lógica y el tamaño de las instrucciones. Por ejemplo, se podrían implementar ciertas funciones deseables pero complejas, especificando un número mayor de registros de propósito general, pero habría que haber añadido una cantidad sustancial de lógica adicional a un diseño convencional, para permitir la lectura y omisión simultáneas de los valores de registro. Si bien en algunos diseños de la técnica anterior se han utilizado registros dedicados para aumentar el número o el tamaño de resultados u operandos fuente, instrucciones 10 explícitas cargan o almacenan valores en estos registros dedicados, y se requieren instrucciones adicionales para guardar y reestablecer estos registros tras un cambio de contexto del procesador.
[0010] El tamaño de un resultado de la unidad de ejecución puede estar limitado al de un registro general, de manera que no se requiere un almacenamiento dedicado u otro especial para el resultado. Especificar un gran 15 número de registros de propósito general como un resultado, requeriría análogamente añadir una cantidad sustancial de lógica adicional a un diseño convencional, para permitir la escritura y omisión simultáneas de los valores de registro.
[0011] Cuando el tamaño de un resultado de la unidad de ejecución está limitado, éste puede limitar la cantidad de 20 computación que puede ser gestionada razonablemente por una sola instrucción. Como consecuencia, es necesario implementar los algoritmos como una serie de etapas de una sola instrucción, en las que todos los resultados intermedios se pueden representar dentro de los límites. Eliminando este límite, se pueden desarrollar conjuntos de instrucciones en los que un componente mayor de un algoritmo se implementa como una sola instrucción, y la representación de los resultados intermedios deja de estar limitada en tamaño. Además, no es necesario que 25 algunos de estos resultados intermedios se retengan tras la finalización del componente mayor de un algoritmo, de manera que un procesador liberado de estas limitaciones puede mejorar el rendimiento y reducir la potencia de funcionamiento al no almacenar y recuperar estos resultados desde el archivo de registros generales. Cuando los resultados intermedios no se retienen en el archivo de registros generales, los conjuntos de instrucciones del procesador y los algoritmos implementados tampoco están limitados por el tamaño del archivo de registros 30 generales.
[0012] Por lo tanto, ha existido la necesidad de un sistema de procesador que pueda manejar eficientemente operandos y resultados de mayor anchura que el sistema de memoria o cualquier registro de propósito general accesible. Existe asimismo la necesidad de un sistema de procesador que pueda manejar eficientemente operandos 35 y resultados de mayor tamaño global que todo el archivo de registros generales.
[0013] El documento WO 00/23875 describe un procesador de propósito general que puede ejecutar una instrucción de matriz de multiplicación amplia que toma de un registro general una dirección para recuperar de la memoria un operando grande (amplio), recuperar de un registro general un segundo operando, realizar un grupo de 40 operaciones sobre bits divididos en los operandos, y concatenar juntos los resultados, colocando el resultado en un registro general.
[0014] Un documento de Pitsianis NP y otros, titulado "High-performance FFT implementation on the BOPS ManArray parallel DSP", publicado en los documentos de Advanced Signal Processing Algorithms, Architectures, 45 and Implementations 1X, 19 al 21 de julio de 1999, conferencia SPIE, volumen 3807, páginas 164 a 171, describe una implementación de alto rendimiento de un algoritmo de FFT que, para poner de manifiesto el paralelismo inherente a un algoritmo FFT, utiliza una factorización de la matriz DFT en productos de Kronecker, permutación y matrices diagonales.
50
[0015] La patente U.S.A. asignada en común y relacionada, número 6 295 599, describe en detalle un método y un sistema para mejorar el rendimiento de procesadores de propósito general expandiendo por lo menos un operando fuente de hasta una anchura mayor que cualquiera de la anchura del registro de propósito general o la anchura del camino de datos. Se pueden conseguir mejoras adicionales en el rendimiento mediante
55
[0016] Un aspecto de la invención da a conocer un procesador tal como el definido en la reivindicación 1. Un segundo aspecto de la invención da a conocer un método tal como el definido en la reivindicación 25. Las realizaciones de la invención se exponen en las reivindicaciones dependientes. 60
[0017]
65
La figura 1 es un diagrama a nivel de sistema que muestra los bloques funcionales de un procesador de propósito
general.
La figura 2 es una representación matricial de una multiplicación de matriz amplia.
La figura 3 es otra representación de una multiplicación de matriz amplia. 5
La figura 4 es un diagrama a nivel de sistema que muestra los bloques funcionales de un sistema que incorpora un procesador de multihilos simultáneos y acceso desacoplado de la ejecución.
La figura 5 muestra un operando amplio. 10
La figura 6 muestra un enfoque para la descodificación del especificador.
La figura 7 muestra un bloque operacional a partir de una unidad de función amplia.
15
La figura 8 muestra, en forma de diagrama de flujo, la función de control de microcaché amplia.
La figura 9 nuestra estructuras de datos de microcaché amplia.
Las figuras 10 y 11 muestran un control de microcaché amplia. 20
Las figuras 12A a 12D muestran una instrucción de Galois de matriz de multiplicación amplia.
Las figuras 13A a 13G muestran una instrucción de extracción de conjunto in situ.
25
Las figuras 14A a 14J muestran una instrucción de extracción de conjunto.
Las figuras 15A a 15C muestran una instrucción booleana de grupo.
Las figuras 16A a 16C muestran instrucciones de suma de grupo. 30
Las figuras 17A a 17C muestran instrucciones de establecimiento de grupo e instrucciones de resta del grupo.
Las figuras 18A a 18C muestran instrucciones de convolución de conjunto, división de conjunto, multiplicación de conjunto y suma de multiplicaciones de conjunto. 35
La figura 19 muestra funciones a modo de ejemplo que se definen para su utilización dentro de las definiciones detalladas de instrucciones, en otras secciones.
Las figuras 20A a 20C muestran instrucciones suma con coma flotante de conjunto, división con coma flotante de 40 conjunto y multiplicación con coma flotante de conjunto.
Las figuras 21A a 21C muestran instrucciones de resta con coma flotante de conjunto.
Las figuras 22A a 22D muestran instrucciones de compresión, expansión, rotación y desplazamiento de barras 45 cruzadas.
Las figuras 23A a 23D muestran instrucciones de extracción.
Las figuras 24A a 24B muestran instrucciones de Galois de solución amplia. 50
Las figuras 25A a 25B muestran instrucciones de rebanada de transformada amplia, de acuerdo con una realización a modo de ejemplo de la presente invención.
Las figuras 26A a 26K muestran instrucciones de extracción convolución amplia. 55
La figura 27 muestra transferencias entre memorias de operandos amplios.
[0018] Haciendo referencia en primer lugar a la figura 1, se muestra en la misma un procesador de propósito general en forma de diagrama de bloques. En la figura 1, se muestran cuatro copias de una unidad de acceso, cada una con una cola de recuperación de instrucciones de acceso cola-A 101 a 104. Cada cola de recuperación de 65 instrucciones de acceso, cola-A 101 a 104 está acoplada a un archivo de registros de acceso AR 105 a 108, estando
acoplados cada uno de estos a dos unidades funcionales de acceso A 109 a 116. En una realización habitual, cada hilo del procesador puede tener del orden de sesenta y cuatro registros de propósito general (por ejemplo, los AR 105 a 108 y ER 125 a 128). Las unidades de acceso funcionan independientemente para cuatro hilos simultáneos de ejecución, y cada una calcula el flujo de control del programa realizando instrucciones aritméticas y de ramificación, y accede a la memoria realizando instrucciones de carga y almacenamiento. Estas unidades de acceso 5 proporcionan asimismo especificadores de operandos amplios para instrucciones de operandos amplios. Estas ocho unidades funcionales de acceso A 109 a 116 producen resultados para archivos de registros de acceso AR 105 a 108, y direcciones de memoria para un sistema de memoria compartido 117 a 120.
[0019] En una realización, la jerarquía de memoria incluye memoria de datos e instrucciones en chip, cachés de 10 instrucciones y datos, una instalación de memoria virtual e interfaces a dispositivos externos. En la figura 1, el sistema de memoria se compone de una memoria combinada caché y de nicho 117, una interfaz de bus externo 118, y, externamente al dispositivo, una caché secundaria 119 y un sistema de memoria principal con dispositivos E/S 120. Los contenidos de memoria recuperados del sistema de memoria 117 a 120 se combinan con instrucciones de ejecución no realizadas por la unidad de acceso, y se introducen en las cuatro colas de instrucción de ejecución 15 colas-E 121 a 124. Para instrucciones amplias, los contenidos de memoria recuperados del sistema de memoria 117 a 120 se proporcionan asimismo a microcachés de operandos amplios 132 a 136 mediante el bus 137. Los datos de memoria e instrucciones de la cola-E 121 a 124 se presentan a archivos de registros de ejecución 125 a 128, que recuperan operandos fuente de archivo de registros de ejecución. Las instrucciones se acoplan a la unidad de arbitraje de las unidades de ejecución Arbitraje 131, que selecciona qué instrucciones de los cuatro hilos se tienen 20 que encaminar a las unidades funcionales de ejecución disponibles E 141 y 149, X 142 y 148, G 143 a 144 y 146 a 147 y T 145. Cada una de las unidades funcionales de ejecución E 141 y 149, las unidades funcionales de ejecución X 142 y 148 y la unidades funcionales de ejecución T 145 contiene una microcaché de operandos amplios 132 a 136, cada una de las cuales está acoplada al sistema de memoria 117 mediante el bus 137.
25
[0020] Las unidades funcionales de ejecución G 143 a 144 y 146 a 147 son unidades aritméticas y lógicas de grupos que realizan instrucciones aritméticas y lógicas simples, incluyendo operaciones de grupos en las que los operandos de fuentes y de resultado representan un grupo de valores de un tamaño de símbolo especificado, que se dividen y se manejan por separado, concatenándose juntos los resultados. En una realización preferida actualmente, el camino de datos tiene 128 bits de amplitud, aunque la presente invención no desea limitarse a ningún tamaño 30 específico del camino de datos.
[0021] Las unidades funcionales de ejecución X 142 y 148 son unidades de conmutador de barras cruzadas que realizan instrucciones de conmutación de barras cruzadas. Las unidades de conmutación de barras cruzadas 142 y 148 realizan operaciones de manipulación de datos en el flujo de datos proporcionado sobre los buses de operandos 35 fuente del camino de datos 151 a 158, incluyendo transacciones, aleatorizaciones, desplazamientos, expansiones, compresiones, mezclas, permutaciones e inversiones, más las operaciones amplias descritas en adelante. En un elemento clave de un primer aspecto de la invención, por lo menos una de dichas operaciones será expandida a una anchura mayor que la anchura del camino de registros generales y de datos.
40
[0022] Las unidades funcionales de ejecución E 141 y 149 son unidades de conjunto que realizan instrucciones de conjunto utilizando un multiplicador matricial grande, que incluye multiplicación de grupos o de vectores y multiplicación de matrices, de operandos divididos desde los buses 151 a 158 de operandos fuente del camino de datos, y tratados como valores enteros, de coma flotante, polinómicos o de campos de Galois. Las instrucciones de multiplicación de matrices y otras operaciones utilizan un operando amplio cargado en la microcaché de operandos 45 amplios 132 y 136.
[0023] La unidad funcional de ejecución T 145 es una unidad de traducción que realiza operaciones de búsqueda en tablas, sobre un grupo de operandos divididos desde un operando de registro, y concatena el resultado. La instrucción de traducción amplia utiliza un operando amplio cargado en la microcaché de operandos amplios 134. 50
[0024] Las unidades funcionales de ejecución E 141, 149, las unidades funcionales de ejecución X 142, 148 y la unidad funcional de ejecución T contienen, cada una, un almacenamiento dedicado para permitir el almacenamiento de operandos fuente que incluyen operandos amplios, tal como se describe más adelante. El almacenamiento dedicado 132 a 136, que se puede considerar como una microcaché amplia, tiene habitualmente una anchura que 55 es un múltiplo de la anchura de los operandos del camino de datos relacionados con los buses 151 a 158 de operandos fuente del camino de datos. De este modo, si la anchura del camino de datos 151 a 158 es de 128 bits, el almacenamiento dedicado 132 a 136 puede tener una anchura de 256, 512, 1024 ó 2048 bits. Los operandos que utilizan toda la anchura del almacenamiento dedicado se denominan en el presente documento operandos amplios, aunque no es necesario en todos los casos que un operando amplio utilice íntegramente la anchura del 60 almacenamiento dedicado; es suficiente que el operando amplio utilice una parte mayor que la anchura del camino de datos de memoria de la salida del sistema de memoria a 117 a 120 y del camino de datos de la unidad funcional de la entrada de las unidades funcionales de ejecución 141 a 149, aunque no necesariamente mayor que la anchura de los dos combinados. Debido a que la anchura del almacenamiento dedicado 132 a 136 es mayor que la anchura del bus 137 de operandos de memoria, se cargan secuencialmente partes de los operandos amplios en el 65 almacenamiento dedicado 132 a 136. Sin embargo, una vez cargados, a continuación los operandos amplios
pueden ser utilizados sustancialmente al mismo tiempo. Se puede observar que las unidades funcionales 141 a 149 y los registros de ejecución asociados 125 a 128 forman una unidad funcional de datos, cuyos elementos exactos pueden variar con la implementación.
[0025] Los operandos fuente del archivo de registros de ejecución 125 a 128 se acoplan a las unidades de 5 ejecución 141 a 145 utilizando buses 151 a 154 de operandos fuente, y a las unidades de ejecución 145 a 149 utilizando buses 155 a 158 de operandos fuente. Los operandos resultado de unidades de función, procedentes de las unidades de ejecución 141 a 145, se acoplan al archivo de registros de ejecución ER 125 a 128 utilizando el bus de resultados 161, y los operandos de resultado de unidades de función, procedentes de las unidades de ejecución 145 a 149, se acoplan al archivo de registros de ejecución utilizando el bus de resultados 162. 10
[0026] Los operandos amplios proporcionan la capacidad de ejecutar instrucciones complejas, tales como la instrucción de matriz de multiplicación amplia mostrada en la figura 2, que se puede apreciar asimismo en una forma 15 alternativa en la figura 3. Tal como se puede apreciar por las figuras 2 y 3, un operando amplio permite, por ejemplo, la multiplicación matricial de varias formas y tamaños que exceden la anchura del camino de datos. El ejemplo de la figura 2 involucra una matriz especificada por el registro rc que tiene 128*64/tamaño bits (512 bits en este ejemplo), multiplicada por un vector contenido en el registro rb que tiene 128 bits, para proporcionar un resultado, colocado en el registro rd, de 128 bits. 20
[0027] La notación utilizada en la figura 2 y siguientes figuras similares muestra una multiplicación como un área sombreada en la intersección de dos operandos proyectados en las dimensiones horizontal y vertical. Un nodo de sumación se muestra como un segmento de línea que conecta puntos en negrita en la posición de los productos de multiplicador que se suman. Los productos que se restan en el nodo de sumación se indican con un símbolo menos 25 en el interior del área sombreada.
[0028] Cuando la instrucción aplica a valores de coma flotante, las multiplicaciones y las sumaciones mostradas son multiplicaciones y sumaciones de coma flotante. Una realización a modo de ejemplo puede realizar estas operaciones sin redondear los resultados intermedios, calculando por lo tanto el resultado final como si se hubiera 30 calculado con precisión infinita, y redondeando a continuación solamente una vez.
[0029] Se puede apreciar que una realización a modo de ejemplo de los multiplicadores puede calcular el producto en modo de ahorro de acarreo, y puede codificar el multiplicador rb utilizando codificación de Booth para minimizar el área y el retardo del circuito. Se puede apreciar que una realización a modo de ejemplo de dichos nodos de 35 sumación puede llevar a cabo la sumación de los productos en cualquier orden, prestando especial atención a minimizar el retardo de computación, tal como realizando las sumas en un árbol binario o de una base mayor, y puede utilizar sumadores con ahorro de acarreo para realizar la suma a efectos de minimizar el retardo de la sumación. Se puede apreciar asimismo que una realización a modo de ejemplo puede llevar a cabo la sumación utilizando la precisión intermedia suficiente para que no se produzcan desbordamientos de punto fijo o de coma 40 flotante en los resultados intermedios.
[0030] Se puede utilizar una comparación de las figuras 2 y 3 para aclarar la relación entre la notación utilizada en la figura 2 y la notación esquemática más convencional de la figura 3, dado que se muestra la misma operación en estas dos figuras. 45
[0031] Los operandos que son sustancialmente mayores que la anchura del camino de datos del procesador se proporcionan utilizando el registro de propósito general para especificar un especificador de memoria desde el que 50 se puede leer, en el almacenamiento dedicado, datos de más de una, y en algunas realizaciones de varias, anchuras del camino de datos. El especificador de memoria incluye habitualmente la dirección de memoria junto con el tamaño y la forma de la matriz de datos sobre la que se está operando. El especificador de memoria o el especificador del operando amplio se pueden apreciar mejor en la figura 5, en la que se ve que un especificador 500 es una dirección, más un campo representativo del tamaño/2 y un campo adicional representativo de la anchura/2, 55 donde el tamaño es el producto de la profundidad por la anchura de los datos. La dirección está alineada a un tamaño específico, por ejemplo sesenta y cuatro octetos, de manera que una serie de los bits de orden bajo (por ejemplo, seis bits) son cero. De este modo, se puede ver que el especificador 500 comprende un primer campo 505 para la dirección, más dos índices de campo 510 dentro de los seis bits de orden bajo, para indicar tamaño y anchura. 60
[0032] La descodificación del especificador 500 se puede apreciar mejor en la figura 6, para un especificador dado 600 que se compone de un campo de dirección 605 junto con un campo 610 que comprende varios bits de orden 65 bajo. Mediante una serie de operaciones aritméticas mostradas en las etapas 615 y 620, se desarrolla la parte del
campo 610 representativa de anchura/2. En una serie similar de etapas mostrada en 625 y 630, se descodifica el valor de t, que se puede utilizar a continuación para descodificar tanto el tamaño como la dirección. La parte del campo 610 representativa de tamaño/2 se descodifica tal como se muestra en las etapas 635 y 640, mientras que la dirección se descodifica de manera similar a las etapas 645 y 650.
5
[0033] La unidad de función amplia se puede apreciar mejor en la figura 7, en la que se proporciona un número de registro 700 a un verificador de operandos 705. El especificador de operandos amplios 710 comunica con el verificador de operandos 705 y asimismo con la dirección de memoria 715 que tiene una anchura de memoria 10 definida. La dirección de memoria incluye una serie de n operandos de registro 720A, que se acumulan en una parte de almacenamiento dedicado 714 de una unidad funcional de datos 725. En la realización a modo de ejemplo mostrada en la figura 7, se puede ver que el almacenamiento dedicado 714 tiene una anchura igual a ocho anchuras del camino de datos, de tal modo que ocho porciones 730A-H del operando amplio se cargan secuencialmente en el almacenamiento dedicado para formar el operando amplio. Aunque en la figura 7 se muestran ocho porciones, la 15 presente invención no se limita a ocho ni a ningún otro múltiplo específico de anchuras del camino de datos. Una vez que las porciones 730A-H del operando amplio se cargan secuencialmente, pueden ser utilizadas como un único operando amplio 735 por el elemento funcional 740, que puede ser cualquier elemento o elementos de la figura 1 conectados al mismo. A continuación, el resultado del operando amplio se proporciona a un registro de resultados 745, que en una realización actualmente preferida tiene la misma anchura que la anchura de la memoria. 20
[0034] Una vez que el operando amplio se ha cargado satisfactoriamente en el almacenamiento dedicado 714, se puede apreciar un segundo aspecto de la presente invención. La ejecución posterior de esta instrucción o de otras instrucciones similares que especifican la misma dirección de memoria, puede leer el almacenamiento dedicado para obtener el valor del operando bajo condiciones específicas que determinan si el operando de memoria ha sido 25 modificado por instrucciones intermedias. Asumiendo que se satisfacen estas condiciones, el operando de memoria recuperado del almacenamiento dedicado se combina con uno o varios operandos de registro en la unidad funcional, produciendo un resultado. En algunas realizaciones, el tamaño del resultado está limitado al de un registro general, de manera que no se requiere un almacenamiento dedicado similar para el resultado. Sin embargo, en algunas realizaciones diferentes, el resultado puede ser un operando amplio, para mejorar adicionalmente el rendimiento. 30
[0035] Para permitir que el valor del operando amplio sea direccionado mediante instrucciones posteriores especificando la misma dirección de memoria, se tienen que comprobar y confirmar varias condiciones.
[0036] Estas condiciones incluyen: 35
Cada instrucción de almacenamiento de memoria comprueba la dirección de memoria frente a las direcciones de memoria registradas para el almacenamiento dedicado. Cualquier coincidencia provoca que el almacenamiento se marque como no valido, dado que una instrucción de almacenamiento de memoria dirigida a alguna dirección de memoria almacenada en el almacenamiento dedicado 714 significa que se han sobrescrito datos. 40
[0037] Se registra el número de registro utilizado para direccionar el almacenamiento. Si no se ha escrito ninguna instrucción intermedia en el registro, y se utiliza el mismo registro en la instrucción posterior, el almacenamiento es válido (salvo que se haya marcado como no valido mediante la regla #1).
45
[0038] Si el registro ha sido modificado o se utiliza un número de registro diferente, el valor del registro se lee y se compara con la dirección registrada para el almacenamiento dedicado. Esto utiliza más recursos que #1 debido a la necesidad de recuperar los contenidos del registro, y debido a que la anchura del registro es mayor que la del propio número del registro. Si la dirección coincide, el almacenamiento es válido. El nuevo número de registro se registra para el almacenamiento dedicado. 50
[0039] Si no se satisfacen las condiciones #2 ó #3, se utilizan los contenidos del registro para dirigirse a la memoria del procesador de propósito general y cargar el almacenamiento dedicado. Si el almacenamiento dedicado está ya totalmente cargado, es necesario descartar (sacrificar) una porción del almacenamiento dedicado para dejar espacio para el nuevo valor. A continuación se realiza la instrucción utilizando el almacenamiento dedicado recién 55 actualizado. La dirección y el número de registro se registra para el almacenamiento dedicado.
[0040] Al comprobar las condiciones anteriores, se elimina la necesidad de guardar y restablecer el almacenamiento dedicado. Además, si se varía el contexto del procesador y el nuevo contexto no utiliza instrucciones amplias que hacen referencia al mismo almacenamiento dedicado, cuando se restablece el contexto 60 original, se permite utilizar los contenidos del almacenamiento dedicado sin refrescar el valor desde la memoria, utilizando la regla de verificación #3. Debido a que los valores en el almacenamiento dedicado se leen desde la memoria y no se modifican directamente realizando operaciones amplias, los valores se pueden desechar en cualquier momento sin guardar los resultados en la memoria general. Esta propiedad simplifica la implementación de la regla #4 anterior. 65
[0041] Una realización alternativa de la presente invención puede sustituir la anterior regla #1 con la regla siguiente:
1a. Cada instrucción de almacenamiento de memoria comprueba la dirección de memoria frente a las direcciones de memoria registradas para el almacenamiento dedicado. Cualquier coincidencia provoca que se actualice el 5 almacenamiento dedicado, así como la memoria general.
[0042] Mediante la utilización de la anterior regla 1.a, las instrucciones de almacenamiento en memoria pueden modificar el almacenamiento dedicado, actualizando solamente la pieza del almacenamiento dedicado que ha cambiado, dejando intacto el resto. Continuando con la actualización de la memoria general, sigue siendo cierto que 10 los contenidos de la memoria dedicada se pueden desechar en cualquier momento sin guardar los resultados en la memoria general. Esta regla #4 no se complica mediante esta opción. La ventaja de esta realización alternativa es que no es necesario desechar (invalidar) el almacenamiento dedicado mediante operaciones de almacenamiento en memoria.
15
[0043] Haciendo referencia a continuación a la figura 9, se puede apreciar mejor una disposición a modo de ejemplo de las estructuras de datos de la microcaché amplia o almacenamiento dedicado 114. Se puede ver que los contenidos de la microcaché amplia, wmc.c, forman una serie de anchuras del camino de datos 900A-n, aunque en 20 el ejemplo mostrado el número es de ocho. La dirección física, wmc.pa, se muestra como 64 bits en el ejemplo mostrado, si bien la invención no se limita a una anchura específica. El tamaño de los contenidos, wmc.size, se proporciona asimismo en un campo que se muestra como de 10 bits en una realización a modo de ejemplo. Se incluye asimismo en la estructura de datos un indicador de "contenido válido", wmc.cv, de un bit, junto con un campo de dos bits para el último hilo utilizado, o wmc.th. Además, en una realización a modo de ejemplo se proporciona un 25 campo de seis bits para el último registro utilizado, wmc.reg. Adicionalmente, se puede disponer un indicador de un bit para registro e hilo válido, o wmc.rtv.
30
[0044] El proceso mediante el que la microcaché se escribe inicialmente con un operando amplio, y a continuación se verifica como válida para las operaciones posteriores, se puede apreciar mejor en la figura 8. El proceso comienza en 800, y avanza a la etapa 805 en la que se realiza una verificación de los contenidos del registro frente al valor almacenado wmc.rc. Si es correcta, se realiza una comprobación en la etapa 810 para verificar el hilo. Si es correcta, el proceso avanza a continuación a la etapa 815 para verificar si el registro y el hilo son válidos. Si la etapa 35 815 indica correcto, se realiza una comprobación en la etapa 820 para verificar si los contenidos son válidos. Si todas las etapas 805 a 820 indican correcto, la instrucción posterior puede utilizar el operando amplio existente tal como se muestra en la etapa 825, después de lo cual el proceso finaliza. Sin embargo, si alguna de las etapas 805 a 820 indica falso, el proceso se bifurca a la etapa 830, donde se establece el contenido, la dirección física y el tamaño. Dado que las etapas 805 a 820 conducen todas a alguna de las etapas 825 u 830, las etapas 805 a 820 se 40 pueden realizar en cualquier orden o simultáneamente, sin alterar el proceso. El proceso avanza a continuación a la etapa 835, donde se comprueba el tamaño. Esta comprobación asegura básicamente que el tamaño de la unidad de traducción es mayor o igual que el tamaño del operando amplio, de tal modo que una dirección física puede sustituir directamente la utilización de una dirección virtual. La cuestión es que, en algunas realizaciones, los operandos amplios pueden ser mayores que la zona mínima que es capaz de mapear el sistema de memoria virtual. Como 45 resultado, sería posible que un único rango de direcciones virtuales contiguas fuera mapeado a múltiples rangos de direcciones físicas disjuntas, complicando la tarea de comparar direcciones físicas. Determinando el tamaño del operando amplio y comparando este tamaño con el tamaño de la zona de mapeo de direcciones virtuales a la que se hace referencia, si el operando amplio es mayor que la zona de mapeo la instrucción se aborta con una interrupción de excepción. Esto garantiza el funcionamiento seguro del procesador. El software puede volver a mapear la zona 50 utilizando un mapa de mayor tamaño para continuar la ejecución, si se desea. Por lo tanto, si se notifica el tamaño como inaceptable en la etapa 835, se genera una excepción en la etapa 840. Si el tamaño es aceptable, el proceso avanza a la etapa 845, donde se comprueba la dirección física. Si la comprobación indica que es satisfactoria, el proceso avanza a la etapa 850, donde se realiza una comprobación del indicador de contenido válido. Si alguna comprobación en las etapas 845 ú 850 indica falso, el proceso se bifurca y se escribe contenido nuevo en el 55 almacenamiento dedicado 114, ajustándose en consecuencia los campos del mismo. Si la comprobación de la etapa 850 indica verdadero, o si se ha escrito contenido nuevo en la etapa 855, el proceso avanza a la etapa 860, en la que se configuran los campos adecuados para indicar la validez de los datos, después de lo cual se puede llevar a cabo la función solicitada, en la etapa 825. A continuación, el proceso finaliza.
60
[0045] Haciendo referencia a continuación a las figuras 10 y 11, que muestran juntas el funcionamiento del controlador de la microcaché desde el punto de vista del hardware, se puede comprender mejor el funcionamiento del controlador de la microcaché. En la implementación del hardware, resulta evidente que las condiciones que se 65 indican como etapas secuenciales en las anteriores figuras 8 y 9 se pueden llevar a cabo en paralelo, reduciendo el
retardo para dicha verificación de operando amplio. Además, se puede incluir una copia del hardware indicado para cada microcaché amplia, y de ese modo la totalidad de dichas microcachés, a las que se puede hacer referencia alternativamente mediante una instrucción, se pueden verificar en paralelo. Se considera que no es necesaria ninguna discusión adicional de las figuras 10 y 11 en vista de la discusión extensiva de las anteriores figuras 8 y 9.
5
[0046] Existen varias alternativas al enfoque anterior para la utilización de los operandos amplios, incluyendo una implementación en la que una única instrucción puede aceptar dos operandos amplios, la división de los operandos en símbolos, multiplicar juntos símbolos correspondientes, y sumar los productos para producir un único valor escalar o un vector de valores divididos de la anchura del archivo de registros, posiblemente después de la extracción de una parte de las sumas. Dicha instrucción puede ser valiosa para la detección de movimiento o la 10 estimación de movimiento en la compresión de video. Una mejora adicional de dicha instrucción puede actualizar incrementalmente el almacenamiento dedicado si la dirección de un operando amplio está dentro del intervalo de operandos amplios especificados anteriormente en el almacenamiento dedicado, mediante cargar solamente la parte que no está ya dentro del intervalo y desplazar según se requiera la parte comprendida en el intervalo. Dicha mejora permite que el funcionamiento se realice sobre una "ventana móvil" de posibles valores. En una instrucción 15 semejante, un operando amplio está alineado y suministra la información de tamaño y forma, mientras que el segundo operando amplio, actualizado incrementalmente, no está alineado.
[0047] La siguiente tabla muestra la notación aritmética y descriptiva utilizada en el pseudocódigo de las figuras a las que se hace referencia a continuación: 20
- x + y
- suma de dos complementos, de x e y. El resultado tiene el mismo tamaño que los operandos, y los operandos tienen que tener el mismo tamaño.
- x - y
- resta de dos complementos, de y respecto de x. El resultado tiene el mismo tamaño que los operandos, y los operandos tienen que tener el mismo tamaño.
- x * y
- multiplicación de dos complementos, de x e y. El resultado tiene el mismo tamaño que los operandos, y los operandos tienen que tener el mismo tamaño.
- x / y
- división de dos complementos, de x por y. El resultado tiene el mismo tamaño que los operandos, y los operandos tienen que tener el mismo tamaño.
- x & y
- operación bit a bit AND, de x e y. El resultado tiene el mismo tamaño que los operandos, y los operandos tienen que tener el mismo tamaño.
- x | y
- operación bit a bit OR, de x e y. El resultado tiene el mismo tamaño que los operandos, y los operandos tienen que tener el mismo tamaño.
- x ^ y
- operación bit a bit OR exclusiva, de x e y. El resultado tiene el mismo tamaño que los operandos, y los operandos tienen que tener el mismo tamaño.
- ~x
- inversión bit a bit de x. El resultado tiene mismo tamaño que el operando.
- x = y
- comparación de la igualdad de dos complementos, entre x e y. El resultado es un solo bit, y los operandos tienen que ser del mismo tamaño.
- x ≠ y
- comparación de la desigualdad de dos complementos, entre x e y. El resultado es un solo bit, y los operandos tienen que ser del mismo tamaño.
- x < y
- comparación de menor que, de dos complementos, entre x e y. El resultado es un solo bit, y los operandos tienen que ser del mismo tamaño.
- x ≥ y
- comparación de mayor o igual que, de dos complementos, entre x e y. El resultado es un solo bit, y los operandos tienen que ser del mismo tamaño.
- √x
- raíz cuadrada con coma flotante, de x.
- x || y
- concatenación del campo de bits x a la izquierda del campo de bits y.
- xy
- dígito binario x repetido, concatenado y veces. el tamaño del resultado es y.
- xy
- extracción del bit y (utilizando numeración de bits con comienzo por el extremo bajo) del valor x. El resultado es un solo bit.
- xy..z
- extracción del campo de bits formado por los bits y hasta z del valor x. El tamaño de los resultados es de - z+1; si z > y, el resultado es una cadena vacía.
- x?y:z
- valor de y, si x es cierto, de lo contrario valor de z. El valor de x es de un solo bit.
- x ← y
- asignación bit a bit, de x al valor de y.
- x.y
- campo secundario del campo de bits estructurado x.
- Sn
- formato de datos binarios de dos complementos, con signo, de n octetos.
- Un
- formato de datos binarios sin signo, de n octetos.
- Fn
- formato de datos con coma flotante, de n octetos.
[0048] Los ejemplos particulares de operaciones amplias incluyen Galois de matriz de multiplicación amplia. Si 25 bien la discusión siguiente se centra en tamaños particulares para las instrucciones a modo de ejemplo, se apreciará que la invención no se limita a una anchura particular.
[0049] En las figuras 12A a 12D se muestra una realización a modo de ejemplo de la instrucción de Galois de matriz de multiplicación amplia. En una realización a modo de ejemplo, la instrucción de Galois de matriz de multiplicación amplia realiza una multiplicación de matrices de la misma forma que anteriormente, excepto en que las multiplicaciones y sumas se realizan en aritmética de campos de Galois. Se puede especificar un tamaño de 8 bits 5 dentro de la instrucción. Los contenidos de un registro general especifican el polinomio con el que llevar a cabo la operación del resto en campos de Galois. La naturaleza de la multiplicación de matrices es nueva y se describe en detalle a continuación.
[0050] En una realización a modo de ejemplo, estas instrucciones toman una dirección desde un registro general 10 para recuperar de la memoria un operando grande, un segundo y tercer operandos desde los registros generales, realizan un grupo de operaciones en divisiones de bits en los operandos, y concatenan juntos los resultados, colocando el resultado en un registro general. En la figura 12A se muestra una realización a modo de ejemplo del formato 1810 de la instrucción de Galois de matriz de multiplicación amplia.
15
[0051] En la figura 12B se muestra una realización a modo de ejemplo del esquema 1830 de la instrucción de Galois de matriz de multiplicación amplia. En una realización a modo de ejemplo, los contenidos de un registro re se utilizan como dirección virtual, y se carga desde la memoria un valor de un tamaño específico. Un segundo y un tercer valores son los contenidos de los registros de rd y rb. Los valores se dividen en grupos de operandos del tamaño especificado. Los segundos valores se multiplican como polinomios por el primer valor, produciendo un 20 resultado que se reduce al campo de Galois especificado por el tercer valor, produciendo un grupo de valores de resultado. El grupo de valores de resultado se concatena y se coloca en el registro ra.
[0052] En una realización a modo de ejemplo, la instrucción de octetos de Galois de matriz de multiplicación amplia (W.MUL.MAT.G.8) realiza una multiplicación matricial dividida de hasta 16 384 bits, es decir 128 x 128 bits. 25 La anchura de la matriz se puede limitar a 128, 64, 32 ó 16 bits, pero sin ser menor que el doble del tamaño de grupo de 8 bits, añadiendo la mitad del tamaño deseado en octetos al operando de dirección virtual: 8, 4, 2 ó 1. La matriz se puede limitar verticalmente a 128, 64, 32 ó 16 bits, pero sin ser menor que el doble del tamaño del grupo de 8 bits, añadiendo la mitad del tamaño de operando de memoria deseado en octetos, al operando de dirección virtual. 30
[0053] En una realización a modo de ejemplo, la dirección virtual tiene que estar alineada a 256 octetos, o bien ser la suma de una dirección alineada y la mitad del tamaño del operando de memoria en octetos y/o la mitad del tamaño del resultado en octetos. Una dirección alineada tiene que ser un múltiplo exacto del tamaño expresado en octetos. Si la dirección no es válida se produce una excepción de "acceso denegado por dirección virtual". 35
[0054] Tal como se muestra en la figura 12B, una realización a modo de ejemplo de una instrucción de octetos de Galois de matriz de multiplicación amplia (W.MUL.MAT.G.8) multiplica la memoria [m255 m254 ... m1 m0] por el vector [ponmlkjihgfedcba], reduciendo el módulo polinómico [q] del resultado, proporcionando los productos [(pm255 + om247 + ... + bm31 + am15 mod q) (pm254 + om246 + ... + bm30 + am14 mod q) ... (pm248 + om240 + ... + bm16 40 + am0 mod q)].
[0055] En la figura 12C se muestra una realización a modo de ejemplo del pseudocódigo 1860 de la instrucción de Galois de matriz de multiplicación amplia. En la figura 12D se muestra una realización a modo de ejemplo de las excepciones 1890 de la instrucción de Galois de matriz de multiplicación amplia. 45
[0056] Se facilitan operandos de memoria de ordenaciones de octetos convencionales con comienzo por el 50 extremo bajo o bien con comienzo por el extremo alto. Por consiguiente, todas las instrucciones de operandos amplios se especifican en dos formas, una para ordenación de octetos con comienzo por el extremo bajo y una para ordenación de octetos con comienzo por el extremo alto, tal como se especifica mediante una parte de la instrucción. El orden de los octetos especifica al sistema de memoria el orden en el que entregar los octetos dentro de unidades de la anchura del camino de datos (128 bits), así como el orden para colocar múltiples palabras de memoria (128 55 bits) dentro de un operando amplio mayor.
[0057] La extracción de una parte de orden superior de un producto o suma de productos de multiplicador, es una 60 manera de utilizar eficientemente una matriz grande de multiplicadores. La patente U.S.A. 5 742 840 y la patente U.S.A. 5 953 241 relacionadas describen un sistema y un método para mejorar la utilización de una serie de multiplicadores, añadiendo clases específicas de instrucciones a un procesador de propósito general. Esto aborda el problema de realizar la máxima utilización de una matriz grande de multiplicadores que se utiliza totalmente para aritmética de gran precisión - por ejemplo un multiplicador de 64 x 64 bits se utiliza por completo mediante una 65 multiplicación de 64 bits por 64 bits, pero se utiliza solamente una cuarta parte para una multiplicación de 32 bits por
32 bits) para (en relación con la anchura de datos del multiplicador y los registros) operaciones aritméticas de baja precisión. En particular, se especifican operaciones que realizan multiplicaciones de precisión muy baja que se combinan (suman) juntas de varias maneras. Una de las consideraciones de anulación en la selección del conjunto de operaciones es una limitación del tamaño del operando de resultado. En una realización a modo de ejemplo, por ejemplo, ese tamaño se puede limitar al orden de 128 bits, o de un único registro, aunque no existe una necesidad 5 de limitación específica del tamaño.
[0058] El tamaño de un resultado de multiplicación, un producto, es generalmente la suma de los tamaños de los operandos, de los multiplicandos y del multiplicador. Por consiguiente, las instrucciones de multiplicación especifican operaciones en las que el tamaño del resultado es el doble del tamaño de operandos de entrada de idéntico tamaño. 10 Para nuestro diseño de la técnica anterior, por ejemplo, una instrucción de multiplicación acepta dos fuentes de registro de 64 bits y produce un único resultado de un par de registros de 128 bits, utilizando una matriz entera de 64 x 64 multiplicadores para símbolos de 64 bits, o la mitad de la matriz de multiplicadores para pares de símbolos de 32 bits, o una cuarta parte de la matriz multiplicadora para cuádruplas de símbolos de 16 bits. Para todos estos casos, se debe observar que se combinan dos fuentes de registro de 64 bits, produciendo un resultado de 128 bits. 15
[0059] En algunas de las operaciones, incluyendo multiplicaciones complejas, convolución, y multiplicación de matrices, se suman juntos productos de multiplicadores de baja precisión. Las sumas incrementan más la precisión requerida. La suma de dos productos requiere un bit adicional de precisión; sumar cuatro productos requiere dos, sumar ocho productos requiere tres, sumar dieciséis productos requiere cuatro. En algunos diseños anteriores, se 20 pierde parte de esta precisión, lo que requiere escalar los operandos multiplicadores para evitar desbordamiento, reduciendo adicionalmente la precisión del resultado.
[0060] La utilización de los pares de registros crea una complejidad no deseable, porque tanto el par de registros como los valores individuales de los registros tienen que ser omitidos en las instrucciones subsiguientes. Como 25 resultado, con las técnicas de la técnica anterior solamente la mitad de los valores del registro de 128 bits de operando fuente se podrían utilizar para producir un resultado de 128 bits de un solo registro.
[0061] Una parte de orden superior del producto o suma de productos de multiplicador es extraída, ajustada por una cantidad de desplazamiento dinámica procedente de un registro general o de un ajuste especificado como parte 30 de la instrucción, y redondeada mediante un valor de control a partir de un registro o parte de instrucción como redondeo al entero/par más cercano, hacia cero, techo o piso. Los desbordamientos se tratan limitando el resultado a los valores máximo y mínimo que se pueden representar con precisión en el resultado de salida.
[0062] Cuando la extracción está controlada por un registro, el tamaño del resultado se puede especificar, lo que permite el redondeo y la limitación a un número menor de bits que pueden caber en el resultado. Esto permite escalar el resultado para su utilización en operaciones posteriores sin preocuparse del desbordamiento o el redondeo, mejorando el rendimiento. 40
[0063] Cuando la extracción está controlada por un registro, un único valor de registro define el tamaño de los operandos, la cantidad de desplazamiento y el tamaño del resultado, y el control de redondeo. Colocando toda esta información de control en un único registro, se reduce el tamaño de la instrucción respecto del número de bits que dicha instrucción requeriría de otro modo, mejorando el rendimiento e incrementando la flexibilidad del procesador. 45
[0064] Las instrucciones particulares son extracción convolución de conjunto, extracción multiplicación de conjunto, extracción multiplicación suma de conjunto y extracción suma escalar de conjunto.
[0065] Las figuras 13A a 13G muestran una instrucción de extracción de conjunto in situ. En una realización a modo de ejemplo, varias de estas instrucciones (extracción convolución de conjunto, extracción multiplicación suma de conjunto) están disponibles habitualmente solamente en formas en las que la extracción se especifica como parte de la instrucción. Una alternativa puede incorporar formas de operaciones en las que el tamaño del operando, la 55 cantidad de desplazamiento y el redondeo pueden estar controlados por los contenidos de un registro general (tal como lo están en la instrucción de extracción multiplicación de conjunto). La definición de esa clase de instrucción para extracción convolución de conjunto, y extracción multiplicación suma de conjunto requeriría cuatro registros fuente, lo que incrementa la complejidad al requerir puertos adicionales de lectura de registros generales.
60
[0066] Estas operaciones toman operandos desde cuatro registros, realizan operaciones sobre divisiones de bits en los operandos, y colocan los resultados concatenados en un cuarto registro. En la figura 13A se muestra una realización a modo de ejemplo del formato y de los códigos de operación 1910 de la instrucción de extracción de conjunto in situ.
65
[0067] Los esquemas 1930, 1945, 1960 y 1975 de la instrucción de extracción de conjunto in situ se muestran en
las figuras 3C, 13D, 13E y 13F. En una realización a modo de ejemplo, se recuperan los contenidos de los registros rd, rc, rb y ra. La operación especificada se lleva a cabo sobre estos operandos. El resultado se coloca en el registro rd.
[0068] En una realización a modo de ejemplo, para la instrucción E.CON.X, se concatenan los contenidos de los 5 registros rd y rc, como c∥d, y se utilizan como un primer valor. Un segundo valor consisten los contenidos del registro rb. Los valores se dividen en grupos de operandos del tamaño especificado y se convolucionan, produciendo un grupo de valores. El grupo de valores es redondeado, limitado y extraído tal como se especifica, produciendo un grupo de resultados de tamaño especificado. El grupo de resultados es concatenado y colocado en el registro rd. 10
[0069] Para la instrucción E.MUL.ADD.X, los contenidos de los registros rc y rb se dividen en grupos de operandos del tamaño especificado y se multiplican, produciendo un grupo de valores a los que se suman los contenidos divididos extendidos del registro rd. El grupo de valores es redondeado, limitado y extraído tal como se especifica, proporcionando un grupo de resultados de tamaño especificado. El grupo de resultados es concatenado y colocado 15 en el registro rd.
[0070] Tal como se muestra en la figura 13B, los bits 31..0 de los contenidos del registro ra especifican varios parámetros que controlan la manera en que se extraen los datos y, para ciertas operaciones, la manera en que se lleva a cabo la operación. La posición de los campos de control permite que la posición de la fuente se sume a un 20 valor de control fijo para computación dinámica, y permite que los 16 bits inferiores del campo de control se configuren para alguno de los casos de extracción más simples, mediante una única instrucción GCOPYI.128. Los campos de control están dispuestos además de tal modo que es si solamente los 8 bits de orden bajo son distintos de cero, se realiza una extracción de 128 bits con truncado y sin redondeo.
25
[0071] La siguiente tabla describe el significado de cada etiqueta:
- etiqueta
- bits significado
- fsize
- 8 tamaño del campo
- dpos
- 8 posición de destino
- x
- 1 resultado extendido vs. tamaño de grupo
- s
- 1 con signo vs. sin signo
- n
- 1 multiplicación compleja vs. real
- m
- 1 multiplicación de signo mezclado vs. mismo signo
- l
- 1 límite: saturación vs. truncado
- rnd
- 2 redondeo
- gssp
- 9 tamaño del grupo y posición de la fuente
[0072] En una realización a modo de ejemplo, el campo gssp de 9 bits codifica tanto el tamaño del grupo, gsize, como la posición de la fuente, spos, de acuerdo con la fórmula gssp = 512 - 4*gsize + spos. El tamaño del grupo, 30 gsize, es una potencia de dos comprendida en el intervalo de 1..128. La posición de la fuente, spos, está comprendida en el intervalo de 0..(2*gsize) - 1.
[0073] En una realización a modo de ejemplo, los valores en los campos x, s, n, m, l y rnd tienen el siguiente significado: 35
- valores
- x s n m l rnd
- 0
- grupo sin signo real mismo signo truncado F
- 1
- extendido con signo complejo signo mezclado saturar Z
- 2
- N
- 3
- C
[0074] Tal como se muestra en la figura 13C una instrucción de extracción multiplicación suma de conjunto 40 dobletes (E.MULADDX) multiplica el vector rc [h g f e d c b a] por el vector rb [p o n m l k j i], y suma el vector rd [x w v u t s r q], proporcionando el vector resultado rd [hp+x go+w fn+v em+u dl+t ck+s bj+r ai+q], redondeado y limitado tal como se especifica mediante ra31..0.
[0075] Tal como se muestra en la figura 13D, una instrucción de extracción multiplicación suma de conjunto 45 dobletes complejos (E.MUL.X con n activado) multiplica el vector operando rc [h g f e d c b a] por el vector operando rb [p o n m l k j i], proporcionando el vector resultado rd [gp + ho go - hp en + fm em - fn cl + dk ck - dl aj + bi ai - bj], redondeado y limitado tal como se especifica mediante ra31..0. Se debe observar que esta instrucción prefiere una organización de números complejos en la que la parte real esté situada a la derecha (menor precisión) de la parte
imaginaria.
[0076] Tal como se muestra en la figura 13E, una instrucción de extracción convolución de conjunto dobletes 5 (ECON.X con n = 0) convoluciona el vector rc ∥ rd [x w v u t s r q p o n m l kj i] con el vector rb [h g f e d c b a], proporcionando el vector de productos 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], redondeado y limitado tal como se especifica por ra31..0. 10
[0077] Tal como se muestra en la figura 13F, una instrucción de extracción convolución de conjunto dobletes complejos (ECON.X con n=1) convoluciona el vector rd ∥ rc [x w v u t s r q p o n m l k j i] con el vector rb [h g f e d c b a], proporcionando el vector de productos rd
15
[0078] [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], redondeado y limitado tal como se especifica por ra31..0.
[0079] El pseudocódigo 1990 de la instrucción de extracción de conjunto in situ se muestra en la figura 13G. Puede no haber excepciones para la instrucción de extracción de conjunto in situ. 20
[0080] En las figuras 14A a 14J se muestra una instrucción de extracción de conjunto. Estas operaciones toman operandos de tres registros, realizan las operaciones sobre divisiones de bits en los operandos, y colocan los 25 resultados concatenados en un cuarto registro. El formato y los códigos de operación 2010 de la instrucción de extracción conjunto se muestran en la figura 14A.
[0081] En las figuras 14C, 14D, 14E, 20F, 20G, 20H y 20I se muestra a un esquema 2020, 2030, 2040, 2050, 2060, 2070 y 2080 de la instrucción de extracción de conjunto in situ. Los contenidos de los registros rd, rc y rb son 30 recuperados. La operación especificada se lleva a cabo sobre estos operandos. El resultado se coloca en el registro ra.
[0082] Tal como se muestra en la figura 14B, los bits 31..0 de los contenidos del registro rb especifican varios parámetros que controlan la manera en que se extraen los datos y, para ciertas operaciones, la manera en que se 35 lleva a cabo la operación. La posición de los campos de control permite que la posición de la fuente se sume a un valor de control fijo para computación dinámica, y permite que los 16 bits inferiores del campo de control se configuren para alguno de los casos de extracción más simples, mediante una única instrucción GCOPYI.128. Los campos de control están dispuestos además de tal modo que es si solamente los 8 bits de orden bajo son distintos de cero, se realiza una extracción de 128 bits con truncado y sin redondeo. 40
[0083] La siguiente tabla describe el significado de cada etiqueta:
- etiqueta
- bits significado
- fsize
- 8 tamaño del campo
- dpos
- 8 posición de destino
- x
- 1 resultado extendido vs. tamaño de grupo
- s
- 1 con signo vs. sin signo
- n
- 1 multiplicación compleja vs. real
- m
- 1 fusionar vs. extraer, o multiplicación de signo mezclado vs. mismo signo
- l
- 1 límite: saturación vs. truncado
- rnd
- 2 redondeo
- gssp
- 9 tamaño del grupo y posición de la fuente
[0084] El campo gssp de 9 bits codifica tanto el tamaño del grupo, gsize, como la posición de la fuente, spos, de 45 acuerdo con la fórmula gssp = 512 4*gsize + spos. El tamaño del grupo, gsize, es una potencia de dos comprendida en el intervalo de 1..128. La posición de la fuente, spos, está comprendida en el intervalo de 0..(2*gsize) - 1.
[0085] Los valores en los campos x, s, n, m, l y rnd tienen el significado siguiente:
50
- valores
- x s n m l rnd
- 0
- grupo sin signo real extraer/mismo signo truncado F
- 1
- extendido con signo complejo fusionar/signo mezclado saturar Z
- 2
- N
- 3
- C
[0086] Para la instrucción E.SCAL.ADD.X, los bits 127..64 de los contenidos del registro rb especifican los multiplicadores para los multiplicandos en los registros rd y rc. Específicamente, los bits 64 + 2*gsize-1 .. 64 + gsize consisten en el multiplicador para los contenidos del registro rd, y los bits 64 + gsize-1 .. 64 consisten en el multiplicador para los contenidos del registro rc. 5
[0087] Tal como se muestra en la figura 14C, una instrucción de extracción multiplicación de conjunto dobletes (E.MULX) multiplica el vector rd [h g f e d c b a] por el vector rc [p o n m l kj i], proporcionando el vector de resultado 10 ra [hp go fn em dl ck bj ai], redondeado y limitado tal como se especifica mediante rb31.. 0.
[0088] Tal como se muestra en la figura 14D, una instrucción de extracción multiplicación de conjunto dobletes complejos (E.MUL.X con n activado) multiplica el vector rd [h g f e d c b a] por el vector rc [p o n m l k j i], proporcionando el vector de resultado ra [gp + ho go - hp en + fm em - fn cl + dk ck - dl aj + bi ai - bj], redondeado y 15 limitado tal como se especifica mediante rb31..0. Se debe observar que esta instrucción prefiere una organización de números complejos en la que la parte real esté situada a la derecha (menor precisión) de la parte imaginaria.
20
[0089] La instrucción de extracción suma escalar de conjunto, combina la información de control de extracción en un registro, con dos valores que se utilizan como multiplicadores escalares para los contenidos de dos multiplicandos vectoriales.
[0090] Esta combinación reduce el número de registros que serían necesarios en otro caso, o el número de bits 25 que de lo contrario requeriría la instrucción, mejorando el rendimiento. Otra ventaja de la presente invención es que la operación combinada se puede llevar a cabo mediante una realización a modo de ejemplo con la suficiente precisión interna en el nodo de sumación como para que no se produzca redondeo o desbordamiento intermedio, mejorando la precisión sobre la operación de la técnica anterior, en la que era necesario llevar a cabo más de una instrucción para este cálculo. 30
[0091] Tal como se muestra en la figura 14E, una instrucción de extracción de suma escalar de conjunto dobletes (E.SCAL.ADD.X) multiplica el vector rd [h g f e d c b a] por rb95.80 [r] y suma el producto al producto del vector rc [p o n m l k j i] por rb79..64 [q], proporcionando el resultado [hr + pq gr + oq fr + nq er + mq dr + lq cr + kq br + jq ar + iq], redondeado y limitado tal como se especifica por rb31.. 0. 35
[0092] Tal como se muestra en la figura 14F, una instrucción de extracción suma escalar de conjunto dobletes complejos (E.SCLADD.X con n activado) multiplica el vector rd [h g fe d c b a] por rb127..96 [t s] y suma el producto, al producto del vector rc [p o n m l k j i] por rb95..64 [r q], proporcionando el resultado [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], redondeado y limitado 40 tal como se especifica mediante rb31.. 0.
[0093] Tal como se muestra en la figura 14G, para la instrucción E.EXTRACT, cuando m=0 y x=0, los parámetros 45 especificados por los contenidos del registro rb se interpretan para seleccionar campos de símbolos de doble tamaño de los contenidos concatenados de los registros rd y rc, extrayendo valores que son concatenados y colocados en el registro ra.
[0094] Tal como se muestra en la figura 14H, para una extracción fusión de conjunto (E.EXTRACT cuando m=1), 50 los parámetros especificados por los contenidos del registro rb se interpretan para fusionar campos a partir de símbolos de los contenidos del registro rd con los contenidos del registro rc. Los resultados son concatenados y colocados en el registro ra. El campo x no tiene ningún efecto cuando m=1.
[0095] Tal como se muestra en la figura 14I, para una extracción expansión de conjunto (E.EXTRACT cuando m=0 55 y x=1), los parámetros especificados por los contenidos del registro rb se interpretan para extraer campos de símbolos de los contenidos del registro rd. Los resultados son concatenados y colocados en el registro ra. Se debe observar que no se utiliza el valor de rc.
[0096] En la figura 14J se muestra el pseudocódigo 2090 de la instrucción de extracción de conjunto. No existen 60 excepciones para la instrucción de extracción de conjunto.
[0097] Es posible reducir el número de puntos de lectura de registro necesarios para la implementación de 65 instrucciones en las que el tamaño, el desplazamiento y el redondeo de los operandos están controlados por un
registro. El valor del registro de control de extracción puede ser recuperado utilizando un ciclo adicional de una ejecución inicial, y retenido dentro de la unidad funcional o cerca de la misma para ejecuciones subsiguientes, reduciendo de este modo la cantidad de hardware necesario para la implementación con una pequeña penalización adicional sobre el rendimiento. El valor retenido se marcaría como no válido, provocando una nueva recuperación del registro de control extraído, mediante instrucciones que modifican el registro o, alternativamente, el valor retenido 5 se puede actualizar mediante dicha operación. Una nueva recuperación del registro del control de la extracción sería necesaria asimismo si se especificara un número de registro diferente en una ejecución posterior. Debería resultar evidente que las propiedades de las anteriores dos realizaciones alternativas se pueden combinar.
[0098] En la aritmética de campos de Galois, las multiplicaciones se llevan a cabo mediante una multiplicación polinómica binaria inicial (multiplicaciones binarias sin signo con acarreos suprimidos), seguida por una operación de modulo polinómico/resto (división binaria sin signo con acarreos suprimidos). La operación de resto es relativamente costosa en superficie y retardo. En la aritmética de campos de Galois, la suma se lleva a cabo mediante la adición 15 binaria con acarreos suprimidos o, de manera equivalente, una operación OR exclusiva bit a bit. Se puede llevar a cabo una multiplicación de matrices utilizando aritmética de campos de Galois, donde las multiplicaciones y las sumas son multiplicaciones y sumas de campos de Galois.
[0099] Utilizando métodos de la técnica anterior, la multiplicación de un vector de 16 octetos por una matriz de 16 x 20 16 octetos se puede realizar como 256 multiplicaciones de campos de Galois de 8 bits y 16* 15=240 sumas de campos de Galois de 8 bits. En las 256 multiplicaciones de campos de Galois están incluidas 256 multiplicaciones polinómicas y 256 operaciones de resto polinómico.
[0100] El cálculo total se reduce significativamente llevando a cabo 256 multiplicaciones polinómicas, 240 sumas 25 polinómicas 16 bits y 16 operaciones de resto polinómico. Se debe observar que el coste de las sumas polinómicas se ha duplicado en comparación con las sumas de campos de Galois, dado que estas son ahora operaciones de 16 bits en lugar de operaciones de 8 bits, pero el coste de las funciones de resto polinómico se ha reducido en un factor de 16. En conjunto, esto constituye una solución favorable, dado que el coste de la suma es mucho menor que el coste del resto. 30
[0101] Tal como se muestra mejor en la figura 4, la presente invención utiliza un acceso desacoplado respecto de las segmentaciones de ejecución y multihilos simultáneos, de una manera única. Las segmentaciones multihilos 35 simultáneas se han utilizado en la técnica anterior para mejorar la utilización de las unidades de camino de datos permitiendo que se emitan instrucciones desde uno de varios hilos de ejecución a cada unidad funcional (por ejemplo Dean M. Tullsen, Susan J. Eggers, y Henry M. Levy, "Simultaneous Multithreading: Maximizing On Chip Parallelism," Proceedings of the 22nd Annual International Symposium on Computer Architecture, Santa Margherita Ligure, Italia, junio de 1995). 40
[0102] El acceso desacoplado respecto de las segmentaciones de ejecución se ha utilizado en la técnica anterior para mejorar la utilización de las unidades de camino de datos de ejecución, mediante almacenar en memoria tampón resultados procedentes de una unidad de acceso, que calcula direcciones para una unidad de memoria que, a su vez, recupera de la memoria los elementos solicitados, y presentarlos a continuación a una unidad de ejecución 45 (por ejemplo, J. E. Smith, "Decoupled Access/Execute Computer Architectures", Proceedings of the Ninth Annual International Symposium on Computer Architecture, Austin, Tejas (26 a 29 de abril de 1982), páginas 112 a 119).
[0103] En comparación con las segmentaciones convencionales, la técnica anterior de Eggers utilizada en el ciclo de segmentación adicional antes de las instrucciones podría ser emitida para unidades funcionales, el ciclo adicional 50 siendo necesario para determinar a qué hilos se debería permitir emitir instrucciones. Por consiguiente, en relación con las segmentaciones convencionales, el diseño de la técnica anterior tenía un retardo adicional, incluyendo un retardo dependiente de las ramificaciones.
[0104] En el presente documento se describen unidades de camino de datos de acceso, con archivos de registros 55 asociados, para cada hilo de ejecución. Estas unidades de acceso producen direcciones, que se agregan juntas a una unidad de memoria común, que recupera todas las direcciones y coloca los contenidos de la memoria en una o varias memorias tampón. Las instrucciones para las unidades de ejecución, que se comparten en grados variables entre los hilos, son asimismo almacenadas en memoria tampón para su ejecución posterior. Las unidades de ejecución llevan a cabo a continuación operaciones desde todos los hilos activos utilizando unidades de camino de 60 datos funcionales que son compartidas.
[0105] Para las instrucciones llevadas a cabo por las unidades de ejecución, el ciclo adicional requerido por los diseños multihilo simultáneos de la técnica anterior se solapa con el tiempo de acceso a los datos de memoria del acceso desacoplado de la técnica anterior, de los ciclos de ejecución, de tal modo que las unidades funcionales no 65 incurren en ningún retardo adicional para planificar recursos. Para las instrucciones llevadas a cabo por las unidades
de acceso, al utilizar unidades de acceso individuales para cada hilo se elimina asimismo el ciclo adicional para planificar recursos compartidos.
[0106] Ésta constituye una solución favorable debido a que, si bien los hilos no comparten las unidades funcionales de acceso, estas unidades son relativamente pequeñas en comparación con las unidades funcionales de 5 ejecución, que son compartidas por los hilos.
[0107] En relación con la compartición de unidades de ejecución, la presente invención utiliza varias clases diferentes de unidades funcionales para la unidad de ejecución, con coste, utilización y rendimiento variables. En particular, las unidades G, que llevan a cabo operaciones simples de suma y bit a bit, son relativamente costosas (en 10 superficie y potencia) en comparación con las otras unidades, y su utilización es relativamente alta. Por consiguiente, el diseño utiliza cuatro de dichas unidades, donde cada unidad puede estar compartida entre dos hilos. La unidad X, que lleva a cabo una clase extensa de funciones de conmutación de datos, es más costosa y menos utilizada, de manera que se disponen dos unidades que se comparten, cada una, entre dos hilos. La unidad T, que lleva a cabo la instrucción de traducción amplia, es costosa y de utilización reducida, de manera que la única unidad 15 se comparte entre la totalidad de los cuatro hilos. La unidad E, que lleva a cabo la clase de instrucciones de conjunto, es muy costosa en superficie y potencia en comparación con las otras unidades funcionales, pero su utilización es relativamente alta, de manera que se disponen dos de dichas unidades, estando cada unidad compartida por dos hilos.
20
[0108] En la figura 4, se muestran cuatro copias de una unidad de acceso, cada una con una cola de recuperación de instrucciones de acceso cola-A 401 a 404, acoplada a un archivo de registros de acceso AR 405 a 408, cada uno de los cuales está acoplado, a su vez, a dos unidades funcionales de acceso A 409 a 416. Las unidades de acceso funcionan independientemente para cuatro hilos simultáneos de ejecución. Estas ocho unidades funcionales de acceso A 409 a 416 producen resultados para archivos de registros de acceso AR 405 a 408, y direcciones para un 25 sistema de memoria compartido 417. Los contenidos de memoria recuperados del sistema de memoria 417 se combinan con instrucciones de ejecución no realizadas por la unidad de acceso, y se introducen en las cuatro colas de instrucción de ejecución E-colas 421 a 424. Los datos de memoria e instrucciones de la cola-E 421 a 424 se presentan a archivos de registros de ejecución 425 a 428, que recuperan operandos fuente de archivo de registros de ejecución. Las instrucciones se acoplan a la unidad de arbitraje de las unidades de ejecución Arbitraje 431, que 30 selecciona qué instrucciones de los cuatro hilos tienen que ser encaminadas a las unidades de ejecución disponibles E 441 y 449, X 442 y 448, G 443 a 444 y 446 a 447 y T 445. Los operandos fuente del archivo de registros de ejecución ER 425 a 428 se acoplan las unidades de ejecución 441 a 445 utilizando buses de operandos fuente 451 a 454, y a las unidades de ejecución 445 a 449 utilizando buses de operandos fuente 455 a 458. Los operandos de resultado de unidades de función, procedentes de las unidades de ejecución 441 a 445 se acoplan al archivo de 35 registros de ejecución utilizando el bus de resultados 461, y los operandos de resultado de unidades de función, procedentes de las unidades de ejecución 445 a 449 se acoplan al archivo de registros de ejecución utilizando el bus de resultados 462.
[0109] La figura 16A presenta varios ejemplos de instrucciones de suma de grupos que alojan los diferentes tamaños de operandos, tales como un octeto (8 bits), un doblete (16 bits), una cuádrupla (32 bits), una 8-tupla (64 bits) y una 16-tupla (128 bits). Las figuras 16B y 16C muestran una realización a modo de ejemplo de un formato y códigos de operación que pueden ser utilizados para llevar a cabo las diversas instrucciones de suma de grupos 45 mostradas en la figura 16A. Tal como se muestra en las figuras 16B y 16C en esta realización a modo de ejemplo, los contenidos de los registros rc y rb se dividen en grupos de operando del tamaño especificado y se suman y, si se especifica, se verifica su desbordamiento o se limitan, proporcionando un grupo de resultados, cada uno de los cuales tiene el tamaño especificado. El grupo de resultados es concatenado y colocado en el registro rd. Si bien en este caso y en otros de la presente descripción se describe la utilización de dos registros de operandos y un registro 50 de resultado diferente, pueden ser implementadas asimismo otras disposiciones, tal como la utilización de valores inmediatos.
[0110] Por ejemplo, si el tamaño de operando especificado es un octeto (8 bits), y cada registro tiene 128 bits de amplitud, entonces el contenido de cada registro se puede dividir en 16 operandos individuales, y pueden tener lugar 55 16 operaciones de suma individuales diferentes, como resultado de una única instrucción de suma de grupo. Otras instrucciones que involucran grupos de operandos pueden llevar a cabo operaciones de grupo de manera similar.
60
[0111] Análogamente, la figura 17A presenta varios ejemplos de instrucciones de establecimiento de grupo e instrucciones de resta de grupo que alojan diferentes tamaños de operando. Las figuras 17B y 17C muestran una realización a modo de ejemplo de un formato y códigos de operación que pueden ser utilizados para llevar a cabo diversas instrucciones de establecimiento de grupo e instrucciones de resta del grupo. Tal como se muestra en las figuras 17B y 17C, los contenidos de los registros rc y rb están divididos en grupos de operandos del tamaño 65 especificado, y para las instrucciones de establecimiento de grupo se comparan para una condición aritmética
especificada, o para instrucciones de resta de grupo se restan y, si se especifica, se verifica su desbordamiento o se limitan, proporcionando un grupo de resultados, cada uno de los cuales tiene el tamaño especificado. El grupo de resultados es concatenado y colocado en el registro rd.
[0112] Están disponibles asimismo otras operaciones de grupo de punto fijo. La figura 18A representa varios ejemplos de instrucciones de convolución de conjunto, división de conjunto, multiplicación de conjunto y suma de multiplicaciones de conjunto, que alojan diferentes tamaños de operandos. Las figuras 18B y 18C muestran una realización a modo de ejemplo de un formato y códigos de operación que pueden ser utilizados para llevar a cabo 10 las diversas instrucciones de convolución de conjunto, división de conjunto, multiplicación de conjunto y suma de multiplicaciones de conjunto. Tal como se muestra en la figura 18B y 18C, en esta realización a modo de ejemplo, los contenidos de los registros rc y rb son divididos en grupos de operandos del tamaño especificado y convolucionados o divididos o multiplicados, proporcionando un grupo de resultados, o multiplicados y sumados en un único resultado. El grupo de resultados es concatenado y colocado, o el resultado único es colocado, en el 15 registro rd.
[0113] De acuerdo con una realización de la invención, el procesador maneja asimismo diversas operaciones de 20 grupo con coma flotante que alojan diferentes tamaños de operandos. En este caso, los diferentes tamaños de operandos pueden representar operandos con coma flotante de precisiones diferentes, tal como precisión media (16 bits), precisión simple (32 bits), precisión doble (64 bits) y precisión cuádruple (128 bits). La figura 19 muestra funciones a modo de ejemplo están definidas para su utilización dentro de las definiciones de instrucción detalladas en otras secciones y figuras. En las funciones presentadas en la figura 19, un formato interno representa valores con 25 coma flotante con precisión infinita como una estructura de cuatro elementos que consiste en (1) s (bit de signo): 0 para positivo, 1 para negativo, (2) t (tipo): NORM, ZERO, SNAN, QNAN, INFINITY, (3) e (exponente) y (4) f: (fracción). La interpretación matemática de un valor normal coloca el punto binario en las unidades de la fracción, ajustado por el exponente: (-1)^s*(2^e)*f. La función F transforma un valor con coma flotante IEEE empaquetado al formato interno. La función PackF transforma un formato interno de nuevo al formato de coma flotante IEEE, con 30 control de redondeo y excepciones.
[0114] Las figuras 20A y 21A presentan varios ejemplos de instrucciones de suma, división, multiplicación y resta con coma flotante de conjunto. Las figuras 20B a C y 21B a C muestran una realización a modo de ejemplo de formatos y códigos de operación que pueden ser utilizados para llevar a cabo las diversas instrucciones de suma, 35 división, multiplicación y resta con coma flotante de conjunto. En estos ejemplos, las instrucciones de conjunto de suma, división y multiplicación con coma flotante se han identificado como "EnsembleFloatingPoint". Asimismo, las instrucciones de conjunto de resta con coma flotante se han identificado como "EnsembleReversedFloatingPoint". Tal como se muestra en las figuras 20B a C y 21B a C, en esta realización a modo de ejemplo, los contenidos de los registros rc y rb se dividen en grupos de operandos del tamaño especificado, y se lleva a cabo la operación de grupo 40 especificado, proporcionando un grupo de resultados. El grupo de resultados se concatena y se coloca en el registro rd.
[0115] En la presente realización, la operación se redondea utilizando la opción especificada de redondear, o utilizando redondear al más próximo, si no se especifica. Si se especifica una opción de redondeo, la operación 45 presenta una excepción de coma flotante si se produce una operación no válida de coma flotante, división por cero, desbordamiento o subdesbordamiento o, cuando se especifica, si el resultado es inexacto. Si no se especifica una opción de redondeo, no se presentan excepciones de coma flotante, y se manejan de acuerdo con las normas por defecto de IEEE 754.
50
[0116] Se da a conocer un sistema y un método para la realización de una operación Booleana bit a bit de tres entradas en una única instrucción. Se utiliza un método nuevo para codificar los ocho posibles estados de salida de 55 dicha operación en solamente siete bits, y se descodifican estos siete bits de nuevo en los ocho estados.
[0117] En las figuras 15A a 15C se muestra una instrucción Booleana de grupo. En una realización a modo de ejemplo, estas operaciones toman operandos de tres registros, realizan operaciones booleanas sobre bits correspondientes en los operandos, y colocan los resultados concatenados en el tercer registro. En la figura 15A se 60 muestra un formato 2310 de la instrucción booleana de grupo.
[0118] En la figura 15B se muestra un procedimiento 2320 de la instrucción booleana de grupo. Se toman tres valores de los contenidos de los registros rd, rc y rb. Los campos ih e il especifican una función de tres bits, que produce un resultado de un solo bit. La función especificada se evalúa para cada posición de bit, y los resultados se 65 concatenan y se colocan en el registro rd. El registro rd es tanto una fuente como un destino de esta instrucción.
[0119] La función se especifica mediante ocho bits, que proporcionan el resultado para cada posible valor de los tres bits fuente en cada posición de bit:
- d
- 1 1 1 1 0 0 0 0
- c
- 1 1 0 0 1 1 0 0
- b
- 1 0 1 0 1 0 1 0
- f(d,c,b)
- f7 f6 f5 f4 f3 f2 f1 f0
5
[0120] Una función se puede modificar reordenando los bits del valor inmediato. La tabla siguiente muestra cómo el reordenamiento del valor inmediato f7.0 puede reordenar los operandos d, c, b para la misma función.
- operación
- inmediato
- f(d,c,b)
- f7 f6 f5 f4 f3 f2 f1 f0
- f(c,d,b)
- f7 f6 f3 f2 f5 f4 f1 f0
- f(d,b,c)
- f7 f5 f6 f4 f3 f1 f2f0
- f(b,c,d)
- f7 f3f5 f1 f6f2f4f0
- f(c,b,d)
- f7 f5 f3 f1 f6 f4 f2f0
- f(b,d,c)
- f7 f3 f6 f2 f5 f1 f4 f0
[0121] Utilizando este reordenamiento, una operación de la forma: b = f(d, c, b) puede ser decodificada en la forma 10 lícita: b = f(b, d, c). Por ejemplo, la función de: b=f(d, c, b)=d?c:b no se puede codificar, pero la función equivalente: d=c?b:d se puede determinar reordenando el código para d=f(d, c, b)=d?c: b, que es 11001010, de acuerdo con la norma para f(d, c, b) => f(c, b, d), al código 11011000.
[0122] Algunas características especiales de este reordenamiento constituyen la base del modo en que ocho bits de especificación de la función se comprimen en siete bits inmediatos, en esta instrucción. Tal como se ve en la tabla anterior, en el caso general, un reordenamiento de operandos desde f(d,c,b) hasta f(d,b,c) (intercambiando rc y rb) requiere intercambiar los valores de f6 y f5 y los valores de f2 y f1. 20
[0123] Entre las 256 posibles funciones que puede llevar a cabo esta instrucción, una cuarta parte de las mismas (64 funciones) permanecen inalteradas mediante este reordenamiento. Estas funciones tienen la propiedad de que f6 = f5 y f2 = f1. Los valores de rc y rb (se debe observar que rc y rb son especificadores de registros, no los contenidos de los registros) se pueden intercambiar libremente, y por lo tanto están ordenados en orden ascendente o 25 descendente para indicar el valor de f2. (Se produce un caso especial cuando rc = rb, de manera que el ordenamiento de rc y rb no puede contener información. Sin embargo, dado que en este caso solamente pueden resultar los valores f7, f4, f3 y f0, no es necesario codificar f6, f5, f2 y f1 para este caso, de manera que no se requiere ningún tratamiento especial.) Estas funciones se codifican por los valores de f7, f6, f4, f3 y f0 en el campo intermedio y f2 en función de si rc > rb, utilizando por lo tanto 32 valores intermedios para 64 funciones. 30
[0124] Otra cuarta parte de las funciones tienen f6 = 1 y f5 = 0. Estas funciones se registran intercambiando rc y rb, f6 y f5, f2 y f1. Éstas comparten la misma codificación que la cuarta parte de las funciones en las que f6 = 0 y f5 = 1, y se codifican mediante los valores f7, f4, f3, f2, f1 y f0 en el campo intermedio inmediato, utilizando por lo tanto 64 valores intermedios para 128 funciones. 35
[0125] La cuarta parte restante de las funciones tienen f6 = f5 y f2 ≠ f1. La mitad de éstas, en las que f2 = 1 y f1 = 0, se registran intercambiando rc y rb, f6 y f5, f2 y f1. Éstas comparten entonces la misma codificación de las ocho de las funciones en las que f2 = 0 y f1 = 1, y se codifican mediante los valores f7, f6, f4, f3 y f0 en el campo inmediato, utilizando por lo tanto 32 valores inmediatos para 64 funciones. 40
[0126] La codificación de funciones se resume mediante la tabla siguiente:
- f7
- f6 f5 f4 f3 f2 f1 f0 trc>trb ih il5 il4 il3 il2 il1 il0 rc rb
- f6 f2 f2 0 0 f6 f7 f4 f3 f0 trc trb
- f6 f2 ~f2 0 0 f6 f7 f4 f3 f0 trb trc
- f6 0 1 0 1 f6 f7 f4 f3 f0 trc trb
- f6 1 0 0 1 f6 f7 f4 f3 f0 trb trc
- 0 1 1 f2 f1 f7 f4 f3 f0 trc trb
- 1 0 1 f1 f2 f7 f4 f3 f0 trb trc
[0127] La descodificación de funciones se resume en mediante la tabla siguiente: 45
- ih
- il5 il4 il3 il2 il1 il0 rc>rb f7 f6 f5 f4 f3 f2 f1 f0
- 0
- 0
- 0 il3 il4 il4 il2 il1 0 0 il0
- 0
- 0
- 1 il3 il4 il4 il2 il1 1 1 il0
- 0
- 1 il3 il4 il4 il2 il1 0 1 il0
- 1
- il3 0 1 il2 il1 il5 il4 il0
[0128] Por la discusión anterior, se puede apreciar que un compilador o ensamblador que produce la instrucción codificada lleva a cabo las etapas anteriores para codificar la instrucción, comparando los valores f6 y f5 y los valores f2 y fl del campo inmediato para determinar cuál de los diversos medios de codificación del campo inmediato debe ser utilizado, y que la colocación de los especificadores del registro trb y trc en la instrucción codificada 5 depende de los valores de f2 (o fl) y f6 (o f5).
[0129] El pseudocódigo 2330 de la instrucción booleana de grupo se muestra en la figura 15C. A partir del código se puede apreciar que una realización a modo de ejemplo de un circuito que descodifica esta instrucción produce los valores f2 y f1, cuando los bits inmediatos ih e il5 son cero, mediante la comparación aritmética de los 10 especificadores de registro rc y rb, produciendo un valor de uno (1) para f2 y f1 cuando rc > rb. No existen excepciones para la instrucción booleana de grupo.
15
[0130] Las unidades de conmutación de barras cruzadas, tales como las unidades 142 y 148 llevan a cabo operaciones de manipulación de datos, tal como se ha descrito anteriormente. Tal como se muestra en la figura 22A, dichas operaciones de manipulación de datos pueden incluir varios ejemplos de operaciones de compresión de barras cruzadas, expansión de barras cruzadas, rotación de barras cruzadas y desplazamiento de barras cruzadas. Las figuras 22B y 22C muestran una realización a modo de ejemplo de un formato y códigos de operación que 20 pueden ser utilizados para llevar a cabo las diversas instrucciones de compresión de barras cruzadas, rotación de barras cruzadas, expansión de barras cruzadas y desplazamiento de barras cruzadas. Tal como se muestra en las figuras 22B y 22C. Los contenidos del registro rc son divididos en grupos de operandos del tamaño especificado, y comprimidos, expandidos, rotados o desplazados en la cantidad especificada mediante una parte de los contenidos del registro rb, proporcionando un grupo de resultados. El grupo de resultados es concatenado y colocado en el 25 registro rd.
[0131] Varias operaciones de compresión de grupo puedan convertir grupos de operandos, desde datos de mayor precisión a datos de menor precisión. Se puede seleccionar un subcampo de cada campo de bits, de la mitad de tamaño, arbitrario, para que se muestre en el resultado. Por ejemplo, la figura 22D muestra una operación 30 X.COMPRESS rd = rc, 16, 4, que lleva a cabo una selección de bits 19..4 de cada cuádrupla en una 16-tupla. Varias operaciones de desplazamiento del grupo pueden permitir el desplazamiento de grupos de operandos en un número especificado de bits, en un sentido especificado, tal como desplazamiento a la derecha o desplazamiento a la izquierda. Tal como se puede ver en la figura 22C, cierto grupo de instrucciones de desplazamiento a la izquierda de grupo pueden involucrar asimismo borrar (poner a cero) los bits vacíos de orden bajo asociados con el 35 desplazamiento, para cada operando. Cierto grupo de instrucciones de desplazamiento a la derecha de grupo puede involucrar borrar (poner a cero) los bits vacíos de orden alto asociados con el desplazamiento, para cada operando. Además, ciertas instrucciones de desplazamiento a la derecha de grupo pueden involucrar rellenar bits vacíos de orden alto asociados con el desplazamiento, con copias del bit de signo, para cada operando.
40
[0132] Las operaciones de manipulación de datos pueden incluir asimismo una instrucción de extracción de barras cruzadas. Las figuras 23A y 23B muestran una realización a modo de ejemplo de un formato y códigos de operación que pueden ser utilizados para llevar a cabo la instrucción de extracción de barras cruzadas. Tal como se muestra 45 en las figuras 23A y 23B, se recuperan los contenidos de los registros rd, rc y rb. La operación especificada se lleva a cabo sobre estos operandos. El resultado se coloca en el registro ra.
[0133] La instrucción de extracción de barras cruzadas permite que se extraigan bits de operandos diferentes, de varias maneras. Específicamente, los bits 31..0 de los contenidos del registro rb especifican varios parámetros que 50 controlan la manera mediante la que se extraen datos, y para ciertas operaciones, la manera mediante la que se lleva a cabo la operación. La posición de los campos de control permite que la posición de la fuente se sume a un valor de control fijo para computación dinámica, y permite que los 16 bits inferiores del campo de control se configuren para alguno de los casos de extracción más simples, mediante una única instrucción GCOPYI.128 (ver el apéndice). Los campos de control están dispuestos además de tal modo que es si solamente los 8 bits de orden bajo 55 son distintos de cero, se realiza una extracción de 128 bits con truncado y sin redondeo.
[0134] La siguiente tabla describe el significado de cada etiqueta:
- etiqueta
- bits significado
- fsize
- 8 tamaño del campo
- dpos
- 8 posición de destino
- x
- 1 reservado
- s
- 1 con signo vs. sin signo
- n
- 1 reservado
- m
- 1 fusión vs. extracción
- l
- 1 reservado
- rnd
- 2 reservado
- gssp
- 9 tamaño del grupo y posición de la fuente
5
[0135] El campo gssp de 9 bits codifica tanto el tamaño del grupo, gsize, como la posición de la fuente, spos, de acuerdo con la fórmula gssp = 512 -4*gsize + spos. El tamaño del grupo, gsize, es una potencia de dos comprendida en el intervalo de 1..128. La posición de la fuente, spos, está comprendida en el intervalo de 0..(2*gsize) - 1.
10
[0136] Los valores en los campos s, n, m, I y rnd tienen el siguiente significado:
- valores
- s n m l rnd
- 0
- sin signo extracción
- 1
- con signo fusión
- 2
- 3
[0137] Tal como se muestra en la figura 23C para la instrucción X.EXTRACT, cuando, m = 0, se interpreta que los parámetros seleccionan campos de los contenidos concatenados de los registros rd y rc, extrayendo valores que 15 están concatenados y colocados en el registro ra. Tal como se muestra en la figura 23D, para una fusión extracción de barras cruzadas (X.EXTRACT cuando m=1), se interpreta que los parámetros fusionan campos de los contenidos del registro rd con los contenidos del registro rc. Los resultados se concatenan y se colocan en el registro ra.
[0138] En las figuras 24A a 24B se muestra una instrucción de Galois de resolución amplia. La figura 24A muestra un método y un aparato para resolver ecuaciones iterativamente. La operación particular descrita es un resolutor amplio para la clase de ecuaciones de congruencia polinómica de Galois L*S = W (mod z**2T), donde S, L y W son polinomios en un campo de Galois, tal como GF(256) de grado 2T, T + 1 y T respectivamente. La solución de este 25 problema es una etapa computacional central de ciertos códigos de corrección de errores, tales como códigos de Reed-Solomon, que corrigen óptimamente hasta T errores que en un bloque de símbolos a efectos debe proporcionar un medio de almacenamiento o de comunicación digital más fiable. Se pueden obtener detalles adicionales de las matemáticas que sustentan esta implementación en el documento de Sarwate, Dilip V. y Shanbhag, Naresh R., "High-Speed Architectures for Reed-Solomon Decoders", revisado el 7 de junio de 2000, 30 presentado a IEEE Trans VLSI Systems, accesible en
http://icims.csl.uiuc.edu/~shanbhag/vips/publications/bma.pdf
.
[0139] El aparato de la figura 24A contiene placas de memoria, multiplicadores de Galois, sumadores de Galois, multiplexores y circuitos de control que están ya contenidos en las realizaciones a modo de ejemplo a las que se hace referencia en la presente invención. Tal como se puede apreciar en la descripción de la instrucción de Galois 35 de multiplicación de matriz ampliada, la etapa del resto polinómico asociada habitualmente con la multiplicación de Galois se puede desplazar a continuación de la suma de Galois sustituyendo las etapas de resto y suma con una etapa de suma polinómica y resto.
[0140] Este aparato lee y escribe, en las placas de memoria incorporadas, múltiples etapas de iteraciones 40 sucesivas, tal como se especifica mediante el bloqueo de control de iteraciones dispuesto a la izquierda. Cada placa de memoria se carga inicialmente con el polinomio S, y cuando se han completado 2T iteraciones (en el ejemplo mostrado, T=4), la placa de memoria superior contiene los polinomios de solución deseados L y W. El bloque de código de la figura 24B describe detalles de la operación del aparato de la figura 24A, utilizando notación de lenguaje C. 45
[0141] Se pueden desarrollar códigos y aparatos similares para resolutores de ecuaciones iterativas de
multiplicación escalar-suma en otros dominios matemáticos, tales como enteros y números con coma flotante de varios tamaños, y para operandos matriciales de propiedades particulares, tales como matrices definidas positivas, o matrices simétricas, o matrices triangulares superiores o inferiores.
[0142] En las figuras 25A a 25B se muestra una realización a modo de ejemplo de la instrucción de rebanada de transformada amplia. La figura 25A muestra un método y un aparato para un cálculo extremadamente rápido de transformadas, tales como la transformada de Fourier, que se requiere para comunicaciones en el dominio de frecuencias, análisis de imágenes, etc. En este aparato, se muestra una matriz 4 x 4 de 16 multiplicadores 10 complejos, cada uno adyacente a una primera caché de operandos amplios. Una segunda caché de operando amplio o matriz de memorias de coeficientes incorporada suministra operandos que se multiplican por los multiplicadores con el acceso de datos de la caché incorporada amplia. Los productos resultantes se suministran a placas de transformadas atómicas - en esta realización preferida, unidades de mariposa de base-4 o base-2. Estas unidades reciben los productos desde una fila o columna de multiplicadores, y depositan resultados con un paso 15 especificado e inversión digital, de nuevo en la primera caché de operandos amplios.
[0143] Un registro general ra contiene tanto la dirección del primer operando amplio como especificadores de tamaño y forma, y un segundo registro general rb contiene tanto la dirección del segundo operando amplio como especificadores de tamaño y forma. 20
[0144] Un registro general adicional rc especifica parámetros adicionales, tales como parámetros de precisión, de extracción de resultados (tal como en las diversas instrucciones de extracción descritas en el presente documento).
[0145] En una realización alternativa, el segundo operando de memoria puede estar situado junto al primer 25 operando de memoria en una memoria ampliada, utilizando un direccionamiento de memoria distintivo para obtener cualquiera del primero o el segundo operandos de memoria.
[0146] En una realización alternativa, los resultados se depositan en una tercera memoria caché de operandos amplios. Este tercer operando de memoria se puede combinar con el primer operando de memoria, de nuevo 30 utilizando direccionamiento de memoria distintivo. Renombrando las etiquetas de caché de operandos amplios, la tercera memoria puede alternar posiciones de almacenamiento con la primera memoria. De este modo, tras la finalización de la instrucción de rebanada de transformada amplia, se renombran las etiquetas de caché de operandos amplios de manera que el resultado aparece en una posición especificada por el primer operando de memoria. Esta alternancia permite la especificación de etapas de transformada no in situ, y permite que la operación 35 se aborte y reinicie a continuación, si es necesario como resultado de la interrupción del flujo de ejecución.
[0147] El bloque de código de la figura 25B describe los detalles de la operación del aparato de la figura 25A, utilizando notación de lenguaje C. Se pueden desarrollar códigos y aparatos similares para otras transformadas y otros dominios matemáticos, tales como polinomios, campos de Galois, y números de varios tamaños enteros, y 40 reales y complejos con coma flotante,
[0148] La instrucción de rebanada de transformada amplia calcula asimismo la posición del bit más significativo de todos los elementos resultantes, devolviendo dicho valor como un resultado escalar de la instrucción a colocar en el registro general rc. Éste es el mismo operando en el que se coloca la información de control de extracción y otra. 45 Notablemente, está localización del bit más significativo se calcula mediante una serie de operaciones booleanas sobre subconjuntos paralelos de los elementos resultantes, que produce resultados booleanos vectoriales y, al término de la operación, mediante una reducción del vector de resultados booleanos a un valor booleano escalar, seguida por la determinación del bit más significativo del valor booleano escalar.
50
[0149] Añadiendo los valores que representan el control de extracción y otra información a esta posición del bit más significativo, se obtiene un parámetro de escala adecuado, para su utilización en la fase posterior de la instrucción de rebanada de transformada amplia. Acumulando la información del bit más significativo, se puede obtener un valor de escala global para toda la transformada, y los resultados de la transformada se mantienen con precisión adicional sobre el de los esquemas de escala fija de la técnica anterior. 55
[0150] Las figuras 26A a 26K muestran una instrucción de extracción convolución amplia. Un método y un aparato similares se pueden aplicar al filtrado digital mediante métodos de convolución de 1-D o 2-D, o a la estimación del 60 movimiento mediante el método de correlación 1-D o 2-D. La misma operación puede ser utilizada para correlación, dado que la correlación se puede calcular invirtiendo el orden del patrón 1-D o 2-D y realizando una convolución. Por lo tanto, la instrucción de convolución descrita en el presente documento puede ser utilizada para correlación, o se puede construir una instrucción de extracción correlación amplia que es similar a la instrucción de convolución descrita en el presente documento, excepto en que el orden del bloque de operandos de coeficientes se invierte en 65 1-D o 2-D.
[0151] Los coeficientes del filtro digital o un bloque de plantilla de estimación se almacenan en una memoria de operandos amplios, y los datos de imagen se almacenan en una segunda memoria de operandos amplios. Una sola fila o columna de datos de imagen puede ser desplazada en la matriz de la imagen, con un desplazamiento correspondiente, de la relación de las posiciones de los datos de la imagen con respecto al bloque de plantilla y los 5 multiplicadores. Mediante este método de actualizar parcialmente y desplazar los datos a la segunda memoria incorporada, la correlación de la plantilla frente a la imagen se puede calcular con un ancho de banda eficaz muy mejorado para la matriz multiplicadora. Se debe observar que en la presente realización, en lugar de desplazar la matriz, se utiliza direccionamiento circular, y se especifica una cantidad o posición inicial del desplazamiento, como parámetro de la instrucción. 10
[0152] Las figuras 26A y 26B muestran un formato y códigos de operación que pueden ser utilizados para realizar la instrucción de extracción convolución amplia. Tal como se muestra en las figuras 26A y 26B, en esta realización a modo de ejemplo, los contenidos de los registros generales rc y rd se utilizan como especificadores de operandos amplios. Estos especificadores determinan las direcciones virtuales, el tamaño de los operandos amplios y la forma 15 para los operandos amplios. Utilizando las direcciones virtuales y los tamaños de operandos, un primer y un segundo valores del tamaño especificado se cargan desde la memoria. El tamaño del grupo y otros parámetros se especifican a partir de los contenidos del registro general rb. Los valores se dividen en grupos de operandos del tamaño y de la forma especificados y se convolucionan, produciendo un grupo de valores. El grupo de valores se redondea, y se limita según se especifica, produciendo un grupo de resultados que tiene el tamaño especificado. El 20 grupo de resultados se concatena y se coloca en el registro general ra.
[0153] Las instrucciones de extracción convolución amplia (W.CONVOLVE.X.B, W.CONVOLVE.X.L) realizan una multiplicación matricial dividida de un tamaño máximo limitado solamente por la extensión de los operandos de memoria, no por el tamaño del camino de datos. La extensión, el tamaño y la forma de los parámetros de los 25 operandos de memoria se especifican siempre como potencias de dos; parámetros adicionales pueden limitar la extensión de los operandos válidos dentro de la zona de una potencia de dos.
[0154] Tal como se muestra en la figura 26C, cada uno de los especificadores de operandos amplios especifica una extensión de un operando de memoria sumando la mitad de la extensión deseada del operando de memoria, en 30 octetos, a los especificadores. Cada uno de los especificadores de operandos amplios especifica una forma de operando de memoria sumando un cuarto de la anchura deseada, en octetos, a los especificadores. Las alturas de cada uno de los operandos de memoria se pueden deducir dividiendo la extensión del operando por la anchura del operando. Los vectores unidimensionales se representan como matrices con una altura de uno y con anchura igual a la extensión. En una realización alternativa, algunas de las especificaciones del presente documento pueden estar 35 incluidas como parte de la instrucción.
[0155] La instrucción de extracción convolución amplia permite calcular de varias maneras los bits a extraer del grupo de valores. Por ejemplo, los bits 31..0 de los contenidos del registro general rb especifican varios parámetros que controlan la manera en que son extraídos los datos. La posición y los valores por defecto de los campos de 40 control permiten que la posición de la fuente se sume a un valor de control fijo para cálculo dinámico, y permiten que los 16 bits inferiores del campo de control se configuren para alguno de los casos más simples mediante una única instrucción GCOPYI, pudiendo estar incluidas algunas de las especificaciones del presente documento como parte de dicha instrucción.
45
[0156] La siguiente tabla describe el significado de cada etiqueta:
- etiqueta
- bits significado
- fsize
- 8 tamaño del campo
- dpos
- 8 posición de destino
- x
- 1 resultado extendido vs. tamaño de grupo
- s
- 1 con signo vs. sin signo
- n
- 1 multiplicación compleja vs. real
- m
- 1 multiplicación con signo mezclado vs. mismo signo
- l
- 1 saturación vs. truncado
- rnd
- 2 redondeo
- gssp
- 9 tamaño del grupo y posición de la fuente
50
[0157] El campo gssp de 9 bits codifica tanto el tamaño del grupo, gsize, como la posición de la fuente, spos, de acuerdo con la fórmula gssp = 512 -4*gsize + spos. El tamaño del grupo, gsize, es una potencia de dos comprendida
en el intervalo de 1..128. La posición de la fuente, spos, está comprendida en el intervalo de 0..(2*gsize) - 1.
[0158] Los valores en los campos x, s, n, m, l y rnd tienen el significado siguiente:
- valores
- x s n m l rnd
- 0
- grupo sin signo real mismo signo truncado F
- 1
- extendido con signo complejo signo mezclado saturar Z
- 2
- N
- 3
- C
5
[0159] Los bits 95..32 de los contenidos del registro general rb especifican varios parámetros que controlan la selección de divisiones de los operandos de memoria. La posición y los valores por defecto de los campos de control permiten que el campo de longitud de ceros del multiplicador valga cero por defecto, y que el cálculo del campo de posición del origen del multiplicando fluctúe sin desbordar ningún otro campo utilizando aritmética de 32 bits.
10
[0160] La siguiente tabla describe el significado de cada etiqueta:
- etiqueta
- bits significado
- mpos
- 32 posición de origen del multiplicando
- mzero
- 32 longitud de ceros del multiplicador
15
[0161] El campo mpos de 32 bits codifica la posición tanto horizontal como vertical del origen del multiplicando, que es la posición del elemento multiplicando en que el elemento cero-ésimo del multiplicador se combina para producir el elemento 0-ésimo del resultado. Valores variables en este campo permiten calcular diversos resultados sin cambios en los dos operandos amplios. El campo mpos está a un desplazamiento de un octeto desde el comienzo del operando del multiplicando. 20
[0162] El campo mzero de 32 bits codifica una parte del operando multiplicador que tiene valor cero, y que se puede omitir del cálculo de multiplicación y de suma. Las implementaciones pueden utilizar un valor distinto de cero en este campo, para reducir el tiempo y/o la potencia para la realización de la instrucción, o pueden ignorar el contenido de este campo. La implementación puede presumir un valor cero para el operando de multiplicador en los 25 bits dmsize-1..dmsize-(mzero*8), y saltarse la multiplicación de cualquier multiplicador obtenido en este intervalo de bits. El campo mzero está a un desplazamiento de un octeto desde el final del operando multiplicador.
[0163] Las direcciones virtuales de los operandos amplios tienen que estar alineadas, es decir, las direcciones de octeto tienen que ser un múltiplo exacto de la extensión del operando expresada en octetos. Si las direcciones no 30 están alineadas, las direcciones virtuales no se pueden codificar en un especificador válido. Algunos especificadores no válidos provocan una extensión de "límite de operando".
[0164] El redondeo Z (cero) no se define para operaciones de extracción sin signo, de manera que se sustituye por el redondeo F (piso), que redondeará adecuadamente hacia abajo los resultados sin signo. 35
[0165] Una implementación puede limitar la extensión de los operandos debido a límites en la memoria de operandos o en la caché, o debido al número de valores que se pueden sumar con precisión, y provocar de ese modo una excepción ReservedInstruction.
40
[0166] Tal como se muestra en las figuras 26D y 26E, como un ejemplo con valores de registro específicos, una instrucción de extracción convolución amplia dobletes (W.CONVOLVE.X.B o W.CONVOLVE.X.L), con inicio en rb = 24, convoluciona el vector de memoria rc [c31 c30.. c1 c0] con el vector de memoria rd [d15 d14 ... d1 d0], proporcionando los productos [c16d15 + c17d14 + ... + c30d1 + c31d0 cl5d15 + c16dl4 + ... + c29dl + c30d0 ... c10d15 + c11d14 + ... + c24d1 + c25d0 c9d15 + c10d14 + ... + c23d1 + c24d0], redondeados y limitados tal como se 45 especifica mediante los contenidos del registro general rb. Los valores c8...c0 no se utilizan en el cálculo y pueden ser cualquier valor.
[0167] Tal como se muestra en las figuras 26F y 26G, como un ejemplo con valores de registro específicos, una instrucción de extracción convolución amplia dobletes (W.CONVOLVE.X.L), con mpos en rb = 8 y mzero en rb = 48 50 (de manera que longitud = (512-mzero)*dmsize/512 = 13), convoluciona el vector de memoria rc [c31 c30.. c1 c0] con el vector de memoria rd [d15 d14 ... d1 d0], produciendo los productos [c3d12 + c4d11 + ... + c14d1 + c15d0 c2d12 + c3d11 + ... + c13d1 + c14d0 ... c29d12 + c30d11 + ... + c8d1 + c9d0 c28d12 + c29d11 + ... + c7d1 + c8d0], redondeados y limitados tal como se especifica. En este caso, la posición de inicio está situada de manera que el
rango útil de valores fluctúa por debajo de c0, hasta c31...28. Los valores c27...c16 no se utilizan en el cálculo y pueden ser cualquier valor. El parámetro de longitud está fijado en 13, de manera que los valores d15...d13 tienen que ser cero.
[0168] Tal como se muestra en las figuras 26H y 26I, como un ejemplo con valores de registro específicos, una 5 instrucción de extracción convolución amplia dobletes bidimensional (W.CONVOLVE.X.B ó W.CONVOLVE.X.L), con mpos en rb = 24 y vsize en rc y rd = 4, convoluciona el vector de memoria rc [c127 c126 ... c31 c30 ... c1 c0] con el vector de memoria rd [d63 d62 ... d15 d14 ... d1 d0], produciendo los productos [c113d63 + c112d62 + ... + c16d15 + c17d14 + ... + c30d1 + c31d0 c112d63 + c111d62 + ... + c15d15 + c16d14 + ... + c29d1 + c30d0 ... c107d63 + c106d62 + ... + c10d15 + c11d14 + ... + c24d1 + c25d0 c106d63 + c105d62 + ... + c9d15 + c10d14 + ... + c23d1 + 10 c24d0], redondeados y limitados tal como se especifica por los contenidos del registro general rb.
[0169] Tal como se muestra en las figuras 26J y 26K, con un ejemplo con valores de registro específicos, una instrucción de extracción convolución amplia dobletes complejos (W.CONVOLVE.X.B o W.CONVOLVE.X.L con n configurado en rb), con mpos en rb = 12, convoluciona el vector de memoria rc [c15 c14.. c1 c0] con el vector de 15 memoria rd [d7 d6 ... d1 d0], produciendo los productos [c8d7 + c9d6 + ... + c16d1 + c15d0 c7d7 + c8d6 + ... + c13d1 + c14d0 c6d7 + c7d6 + ... + c12d1 + c13d0 c5d7 + c6d6 + ... + c11d1 + c12d0], redondeados y limitados tal como se especifica mediante los contenidos del registro general rb.
[0170] Una inserción de coma flotante de convolución amplia funciona de manera similar a la instrucción de extracción convolución amplia descrita anteriormente, excepto en que las multiplicaciones y sumas de los operandos se llevan a cabo utilizando aritmética de coma flotante. La representación de los productos de multiplicación y de las sumas intermedias en una realización a modo de ejemplo se lleva a cabo sin redondeo con precisión esencialmente 25 no limitada, con los resultados finales sujetos a un redondeo simple a la precisión del operando de resultado. En una realización alternativa, los productos y las sumas se calculan con precisión extendida, pero limitada. En otra realización alternativa, los productos y las sumas se calculan con precisión limitada al tamaño de los operandos.
[0171] La instrucción de coma flotante de convolución amplia en una realización a modo de ejemplo puede utilizar 30 el mismo formato para los campos de registro general rb en la instrucción de extracción convolución amplia, excepto para campos que no son aplicables a la aritmética de coma flotante. Por ejemplo, los campos fsize, dpos, s, m y I, y el parámetro spos del campo gssp se pueden ignorar para esta instrucción. En una realización alternativa, parte de la información restante se puede especificar dentro de la instrucción, tal como el parámetro gsize o el parámetro n, o se pueden fijar los valores especificados, de manera que el parámetro de redondeo se puede fijar a redondeo al más 35 próximo. En una realización alternativa, los campos restantes se pueden reordenar, por ejemplo, si todos menos el campo mpos están contenidos dentro de la instrucción o se ignoran, el campo mpos solamente por estar contenido en la parte menos significativa de los contenidos del registro general rb.
[0172] Otra categoría de operaciones amplias mejoradas es útil para corrección de errores por medio de descodificación de Viterbi o turbo. En este caso, las placas de memoria incorporada se utilizan para contener métricas de estado y dígitos de decisión pre-rastreo. Una matriz de unidades de suma-comparación-intercambio o log-MAP reciben un pequeño número de métricas de ramificación, tal como 128 bits procedentes desde un registro 45 externo en la realización preferida por los inventores. A continuación esta matriz lee, recalcula y actualiza las entradas de memoria de métricas de estado que, para muchos códigos prácticos, son mucho mayores. Una serie de dígitos de decisión, habitualmente de 4 bits cada uno con un método de pre-rastreo en base 16, se acumulan en una segunda memoria de rastreo. Los cálculos de la matriz y las actualizaciones de la métrica de estado se llevan a cabo de manera interactiva durante una serie especificada de ciclos. A continuación, una segunda operación iterativa 50 recorre la memoria de rastreo para resolver el camino más probable a través de la malla de estados.
[0173] Otra categoría de operaciones amplias mejoradas son las operaciones booleanas amplias, que involucran 55 un conjunto de tablas de consulta pequeñas (LUTs, small look up tables), habitualmente con 8 ó 16 entradas, cada una especificada mediante 3 ó 4 bits de dirección de entrada, interconectadas con multiplexores y cerrojos próximos. El control de las entradas LUT, selecciones de multiplexores y activaciones de relojes de cerrojo está especificado mediante una memoria caché amplia incorporada. Esta estructura proporciona un medio para disponer una placa de matriz de puertas programable in situ, que realiza operaciones iterativas sobre operandos proporcionados por los 60 registros de un microprocesador de propósito general. Estas operaciones pueden iterar sobre múltiples ciclos, llevando a cabo operaciones lógicas especificables aleatoriamente que actualizan tanto los cerrojos internos como la propia placa de memoria.
[0174] El método y el aparato descritos en el presente documento son ampliamente aplicables al problema de aumentar el ancho de banda eficaz de unidades funcionales de microprocesador hasta aproximadamente lo que se alcanza en los circuitos integrados de aplicación específica (ASICs, application-specific integrated circuits). Cuando están presentes al mismo tiempo dos o más unidades funcionales que pueden manejar operandos amplios, se produce el problema de transferir datos desde una unidad funcional que los está produciendo en memoria 5 incorporada, y a través del sistema de memoria o en torno al mismo, hasta una segunda unidad funcional que puede asimismo manejar operandos amplios, que tiene que consumir dichos datos después de cargarlos en su memoria de operandos amplios. Copiar explícitamente los datos desde una localización de memoria a la otra conseguiría dicha transferencia, pero la sobrecarga involucrada reduciría la eficacia del procesador en general.
10
[0175] La figura 27 describe un método y un aparato para resolver este problema de transferencia entre dos o más unidades, con sobrecarga reducida. Las matrices de memoria incorporada funcionan como cachés que retienen copias locales de datos que están presentes conceptualmente en un único espacio global de memoria. Un controlador de coherencia de cachés monitoriza los flujos de direcciones de las actividades de las cachés, y utiliza uno de los protocolos de coherencia, tal como MOESI o MESI, para mantener la consistencia con un estándar 15 especificado. Mediante la iniciación adecuada del controlador de coherencia de cachés, un software que se ejecuta en el microprocesador de propósito general puede permitir que se produzca en segundo plano una transferencia de datos entre unidades amplias, solapada con el cálculo en las unidades amplias, reduciendo la sobrecarga de cargas explícitas y almacenamientos.
20
[0176] Los expertos en la materia reconocerán, dadas las explicaciones del presente documento, que existen numerosas alternativas que no se salen de la invención. Por lo tanto, se prevé que la invención no está limitada por la descripción anterior, sino solamente por las reivindicaciones adjuntas. 25
Claims (30)
- REIVINDICACIONES1. Un procesador, que comprende:un primer camino de datos (137, 714 y 715) que tiene una primera anchura de bits; 5un segundo camino de datos (entre 136 y 149; 714 y 720n) que tiene una segunda anchura de bits mayor que la primera anchura de bits;una serie de terceros caminos de datos (155 a 158; 720A y 740) que tienen una anchura de bits combinada menor 10 que la segunda anchura de bits;un primer almacenamiento de operando amplio (136, 714) acoplado al primer camino de datos y al segundo camino de datos para almacenar un primer operando amplio recibido sobre el primer camino de datos, teniendo el primer operando amplio un tamaño con un número de bits mayor que la primera anchura de bits; 15un segundo almacenamiento de operando amplio (134, 714) acoplado al primer camino de datos y al segundo camino de datos para almacenar un segundo operando amplio recibido sobre el primer camino de datos, teniendo el segundo operando amplio un tamaño con un número de bits mayor que la primera anchura de bits;20un archivo de registros (720A a 720n) que incluye registros que tienen la primera anchura de bits, estando conectado el archivo de registros al primer camino de datos y a los terceros caminos de datos, e incluyendo almacenamiento (710) para un primer especificador de operando amplio que especifica una dirección de primer operando amplio y un segundo especificador de operando amplio que especifica una dirección del segundo operando amplio; 25una unidad funcional (149, 740) que puede iniciar instrucciones, la unidad funcional estando acoplada mediante el segundo camino de datos al primer almacenamiento de operando amplio y estando acoplada mediante los terceros caminos de datos al archivo de registros; y30en el que la unidad funcional está dispuesta para ejecutar una instrucción de rebanada de transformada de Fourier amplia que contiene campos de instrucción que especifican (i) un primer registro de operando amplio (710) para provocar la recuperación del primer operando amplio para su almacenamiento en el primer almacenamiento de operando amplio, (ii) un segundo registro de operando amplio (710) para provocar la recuperación del segundo operando amplio para su almacenamiento en el segundo almacenamiento de operando amplio, (iii) por lo menos un 35 registro de operando de control en forma de un registro general en el archivo de registros que almacena un operando de control y especifica parámetros de control de precisión y de extracción, y (iv) un registro de resultados (745) en el archivo de registros, yen el que la instrucción de rebanada de transformada de Fourier amplia está configurada para provocar que la 40 unidad funcional (i) tome el primer operando amplio del primer almacenamiento de operando amplio, (ii) tome el segundo operando amplio del segundo almacenamiento de operando amplio, (iii) lleve a cabo multiplicaciones complejas paralelas de subconjuntos de elementos de datos del primer operando amplio, por subconjuntos de elementos de datos del segundo operando amplio para producir primeros resultados, (iv) lleve a cabo operaciones de mariposa paralelas y operaciones de extracción paralelas sobre subconjuntos de los primeros resultados para 45 proporcionar de ese modo segundos resultados;en el que el resultado escalar de la instrucción de rebanada de transformada de Fourier amplia contiene información a partir de la cual se puede determinar la posición del bit más significativo de los segundos resultados;50en el que la posición del bit más significativo del segundo resultado es:calculada mediante una serie de operaciones booleanas sobre subconjuntos paralelos de los segundos resultados, produciendo resultados booleanos vectoriales, y reduciendo además los resultados booleanos vectoriales a un valor booleano escalar, seguido por una determinación de la posición del bit más significativo del valor booleano escalar; y 55colocado en el registro general para proporcionar un parámetro de escala para su utilización en la fase subsiguiente de la instrucción de rebanada de transformada de Fourier amplia.
- 2. Un procesador acorde con la reivindicación 1, en el que cuando se lleva a cabo una operación 60 posterior de especificación de un operando amplio, el procesador determina si el operando amplio está ya almacenado en el almacenamiento de operando amplio y, en caso afirmativo, el procesador reutiliza el operando amplio de almacenamiento de operando amplio en la operación posterior.
- 3. Un procesador acorde con cualquiera de las reivindicaciones anteriores, en el que cuando se ejecuta 65 una única instrucción que contiene campos de instrucción que especifican un registro de operando amplio, elprocesador hace referencia a un único registro que especifica tanto la dirección como el tamaño del operando amplio.
- 4. Un procesador acorde con cualquiera de las reivindicaciones anteriores, en el que la unidad funcional es operativa asimismo para ejecutar una única instrucción booleana amplia que contiene campos de instrucción que 5 especifican (i) un registro de operando amplio (710) para provocar la recuperación del operando amplio para su almacenamiento en el almacenamiento de operando amplio, (ii) por lo menos un registro de operando fuente en el archivo de registros que almacena un operando fuente, y (iii) un registro de resultados (745) en el archivo de registros, provocando la única instrucción que la unidad funcional lleve a cabo operaciones que involucran un conjunto de tablas de consulta interconectadas con multiplexores y cerrojos, en el que los contenidos de las tablas 10 de consulta y el control de los multiplexores y de los cerrojos se especifican mediante información en el almacenamiento de operando amplio, provocando de ese modo que una placa de una matriz de puertas programables in situ realice operaciones sobre dicho por lo menos un operando fuente, produciendo resultados a colocar en el registro de resultados.15
- 5. Un procesador acorde con la reivindicación 4, en el que la unidad funcional lleva a cabo operaciones iterativas sobre múltiples ciclos que actualizan cerrojos internos representados por información en el almacenamiento de operando amplio.
- 6. Un procesador acorde con cualquiera de las reivindicaciones anteriores, en el que la unidad funcional 20 es operativa asimismo para ejecutar una única instrucción de Galois de resolución amplia que especifica un registro de operando amplio para provocar la recuperación del operando amplio para su almacenamiento en el almacenamiento de operando amplio, realizando la unidad funcional operaciones iterativas de multiplicación-suma sobre elementos concatenados del operando amplio contenido en el almacenamiento de operando amplio a efectos de resolver un sistema de ecuaciones, produciendo un resultado que tiene una anchura de bits mayor que la primera 25 anchura de bits, para su almacenamiento en el almacenamiento de operando amplio.
- 7. Un procesador acorde con la reivindicación 6, en el que los elementos concatenados comprenden valores de campos de Galois y las operaciones de multiplicación-suma son operaciones de multiplicación-suma de campos de Galois. 30
- 8. Un procesador acorde con la reivindicación 6 ó 7, en el que los elementos concatenados comprenden operandos enteros y las operaciones de multiplicación-suma son operaciones de multiplicación-suma de enteros.
- 9. Un procesador acorde con la reivindicación 6, 7 ó 8, en el que los elementos concatenados 35 comprenden valores con coma flotante y las operaciones de multiplicación-suma son operaciones de multiplicación-suma con coma flotante.
- 10. Un procesador acorde con cualquiera de las reivindicaciones 6 a 9, en el que los elementos concatenados comprenden una matriz definida positiva. 40
- 11. Un operador acorde con cualquiera de las reivindicaciones 6 a 10, en el que los elementos concatenados comprenden una matriz simétrica.
- 12. Un procesador acorde con cualquiera de las reivindicaciones 6 a 11, en el que los elementos 45 concatenados comprenden una matriz triangular superior o una matriz triangular inferior.
- 13. Un procesador acorde con cualquiera de las reivindicaciones 1 a 5, en el que la unidad funcional puede asimismo iniciar una instrucción de Galois de resolución amplia y en el que el operando amplio contiene métricas de estado de corrección de errores que se actualizan iterativamente y se recorren a continuación para resolver un 50 camino más probable, y el camino más probable es un resultado de la instrucción.
- 14. Un procesador acorde con la reivindicación 13, en el que el camino más probable es un resultado devuelto a un registro en el archivo de registros.55
- 15. Un procesador acorde con la reivindicación 13 ó 14, en el que la instrucción produce métricas de estado actualizadas.
- 16. Un procesador acorde con cualquiera de las reivindicaciones anteriores, en el que la unidad funcional puede asimismo ejecutar una instrucción de descodificación amplia para llevar a cabo corrección de errores por 60 medio de descodificación Viterbi o turbo especificando (i) un registro del archivo de registros que proporciona una serie de métricas de ramificación de corrección de errores; (ii) un registro que contiene un especificador de operando amplio que especifica un operando amplio que contiene métricas de estado de corrección de errores, en el que las métricas de estado se actualizan iterativamente utilizando la serie de métricas de ramificación, y las métricas de estado se recorren a continuación para resolver un camino más probable, como resultado de la instrucción. 65
- 17. Un procesador acorde con la reivindicación 16, en el que el camino más probable es un resultado devuelto a un registro en el archivo de registros.
- 18. Un procesador acorde con la reivindicación 16 ó 17, en el que la instrucción produce métricas de estado actualizadas del operando amplio para su almacenamiento en el almacenamiento de operando amplio. 5
- 19. Un procesador acorde con la reivindicación 1, en el que la parte extraída de los segundos resultados se coloca en el registro de resultados.
- 20. Un procesador acorde con la reivindicación 1, en el que la parte extraída de los segundos resultados 10 se coloca en un registro de operando amplio.
- 21. Un procesador acorde con la reivindicación 1, en el que los segundos resultados se almacenan en el primer almacenamiento de operando amplio o en un tercer almacenamiento de operando amplio.15
- 22. Un procesador acorde con la reivindicación 1, en el que el resultado escalar se coloca en un registro o en uno de dicho por lo menos un registro de operando de control en el archivo de registros.
- 23. Un sistema de procesamiento de datos que comprende:20un procesador acorde con cualquiera de las reivindicaciones anteriores, siendo el procesador un solo circuito integrado;la memoria principal (120) externa a dicho único circuito integrado; y25un bus acoplado a la memoria principal, incluyendo el procesador una interfaz de bus que acopla el procesador al bus.
- 24. Un método de funcionamiento de un aparato que incluye un primer camino de datos que tiene una primera anchura de bits, un segundo camino de datos que tiene una segunda anchura de bits mayor que la primera 30 anchura de bits, una serie de terceros caminos de datos que tienen una anchura de bits combinada menor que la segunda anchura de bits, un primer almacenamiento de operando amplio acoplado al primer camino de datos y al segundo camino de datos para almacenar un primer operando amplio recibido sobre el primer camino de datos, teniendo el primer operando amplio un tamaño con un número de bits mayor que la primera anchura de bits, un segundo almacenamiento de operando amplio acoplado al primer camino de datos y al segundo camino de datos 35 para almacenar un segundo operando amplio recibido sobre el primer camino de datos, teniendo el segundo operando amplio un tamaño con un número de bits mayor que la primera anchura de bits, un archivo de registros incluyendo registros que tienen la primera anchura de bits, estando conectado el archivo de registros al primer camino de datos y a los terceros caminos de datos, e incluyendo un primer almacenamiento para un primer especificador de operando amplio que especifica la dirección del primer operando amplio, e incluyendo un segundo 40 almacenamiento para un segundo especificador de operando amplio que especifica una dirección del segundo operando amplio, y una unidad funcional que puede iniciar instrucciones, estando la unidad funcional acoplada mediante el segundo camino de datos al primer almacenamiento de operando amplio y acoplada mediante los terceros caminos de datos al archivo de registros, comprendiendo el método:45ejecutar una sola instrucción de rebanada de transformada de Fourier amplia que contiene campos de instrucción que especifican (i) un primer registro de operando amplio (710) para provocar la recuperación del primer operando amplio para su almacenamiento en el primer almacenamiento de operando amplio, (ii) un segundo registro de operando amplio (710) para provocar la recuperación del segundo operando amplio para su almacenamiento en el segundo almacenamiento de operando amplio, (iii) por lo menos un registro de operando de control en la forma de 50 un registro general en el archivo de registros que almacena un operando de control y especifica parámetros de control de precisión y de extracción, y (iv) un registro de resultados (745) en el archivo de registros, yen el que la instrucción de rebanada de transformada de Fourier amplia provoca que la unidad funcional (i) tome el primer operando amplio del primer almacenamiento de operando amplio, (ii) tome el segundo operando amplio del 55 segundo almacenamiento de operando amplio, (iii) lleve a cabo multiplicaciones complejas paralelas de subconjuntos de elementos de datos del primer operando amplio por subconjuntos de elementos de datos del segundo operando amplio para producir primeros resultados, (iv) lleve a cabo operaciones de mariposa paralelas y operaciones de extracción paralelas sobre subconjuntos de los primeros resultados para proporcionar de ese modo segundos resultados; 60en el que el resultado escalar de la instrucción de rebanada de transformada de Fourier amplia contiene información a partir de la cual se puede determinar la posición del bit más significativo de los segundos resultados;en el que la posición del bit más significativo del segundo resultado es: 65calculada mediante una serie de operaciones booleanas sobre subconjuntos paralelos de los segundos resultados, produciendo resultados booleanos vectoriales, y reduciendo además los resultados booleanos vectoriales a un valor booleano escalar, seguido por una determinación de la posición del bit más significativo del valor booleano escalar; ycolocado en el registro general para proporcionar un parámetro de escala para su utilización en la subsiguiente 5 instrucción de rebanada de transformada de Fourier amplia.
- 25. Un método acorde con la reivindicación 24, en el que cuando se lleva a cabo una operación posterior de especificación de un operando amplio, el método comprende además:10determinar si el operando amplio está ya almacenado en el almacenamiento de operando amplio; ysi el operando amplio está ya almacenado dentro del almacenamiento de operando amplio, reutilizar entonces el operando amplio del almacenamiento de operando amplio en la operación posterior.15
- 26. Un método acorde con la reivindicación 24 ó 25, en el que la etapa de ejecutar una única instrucción que contiene campos de instrucción que especifican un registro de operando amplio comprende además hacer referencia a un único registro que especifica tanto la dirección como el tamaño del operando amplio.
- 27. Un método acorde con la reivindicación 24, que comprende además almacenar los segundos 20 resultados en el primer almacenamiento de operando amplio o en un tercer almacenamiento de operando amplio.
- 28. Un método acorde con la reivindicación 24, en el que se puede determinar el resultado escalar para la determinación del bit más significativo del mayor de los terceros resultados.25
- 29. Un procesador acorde con la reivindicación 24, en el que el resultado escalar se coloca en un registro o en uno de dicho por lo menos un registro de operando de control en el archivo de registros.
- 30. Un medio legible por ordenador que tiene código legible por ordenador en el mismo, para provocar que un procesador lleve a cabo el método acorde con cualquiera de las reivindicaciones 1 a 23. 30
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US616303 | 2003-07-10 | ||
US10/616,303 US7301541B2 (en) | 1995-08-16 | 2003-12-19 | Programmable processor and method with wide operations |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2527937T3 true ES2527937T3 (es) | 2015-02-02 |
Family
ID=34079658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES10191073.5T Expired - Lifetime ES2527937T3 (es) | 2003-07-10 | 2004-07-12 | Procesador programable y método con operaciones amplias |
Country Status (6)
Country | Link |
---|---|
US (10) | US7301541B2 (es) |
EP (5) | EP2226726A3 (es) |
JP (1) | JP5005342B2 (es) |
CA (2) | CA2573292C (es) |
ES (1) | ES2527937T3 (es) |
WO (1) | WO2005008410A2 (es) |
Families Citing this family (364)
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 |
US9785565B2 (en) * | 2014-06-30 | 2017-10-10 | Microunity Systems Engineering, Inc. | System and methods for expandably wide processor instructions |
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 |
JP7114622B2 (ja) | 2017-05-17 | 2022-08-08 | グーグル エルエルシー | ハードウェアにおける行列乗算の実行 |
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 | 哈尔滨工业大学 | 用于区分用户的有限域资源构建方法、多址接入系统 |
Family Cites Families (235)
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 |
JPH0398145A (ja) * | 1989-09-11 | 1991-04-23 | Hitachi Ltd | マイクロプロセッサ |
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. |
JP2917577B2 (ja) * | 1991-05-30 | 1999-07-12 | 松下電器産業株式会社 | 演算装置 |
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 |
JP3369227B2 (ja) * | 1992-11-09 | 2003-01-20 | 株式会社東芝 | プロセッサ |
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 |
JP3546437B2 (ja) * | 1993-03-31 | 2004-07-28 | ソニー株式会社 | 適応形ビデオ信号演算処理装置 |
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 |
JPH07114469A (ja) * | 1993-10-18 | 1995-05-02 | Mitsubishi Electric Corp | データ処理装置 |
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 |
JPH0830577A (ja) * | 1994-07-15 | 1996-02-02 | Mitsubishi Electric Corp | Simdプロセッサ |
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 |
US5742840A (en) | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
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 |
JPH10285052A (ja) * | 1997-04-02 | 1998-10-23 | Matsushita Electric Ind Co Ltd | ユークリッド復号法およびユークリッド復号回路 |
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 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、情報処理方法および記録媒体 |
EP2302510B1 (en) * | 1998-08-24 | 2012-05-09 | MicroUnity Systems Engineering, Inc. | A processor and method performed by a processor for executing a matrix multipy operation using a wide operand |
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 |
JP3971535B2 (ja) * | 1999-09-10 | 2007-09-05 | 株式会社リコー | Simd型プロセッサ |
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 |
US6721708B1 (en) * | 1999-12-22 | 2004-04-13 | Hitachi America, Ltd. | Power saving apparatus and method for AC-3 codec by reducing operations |
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 |
JP2003122736A (ja) * | 2001-10-11 | 2003-04-25 | Matsushita Electric Ind Co Ltd | 行列演算装置 |
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 |
-
2003
- 2003-12-19 US US10/616,303 patent/US7301541B2/en not_active Expired - Fee Related
-
2004
- 2004-07-12 JP JP2006518941A patent/JP5005342B2/ja not_active Expired - Fee Related
- 2004-07-12 CA CA2573292A patent/CA2573292C/en not_active Expired - Fee Related
- 2004-07-12 EP EP20100167237 patent/EP2226726A3/en not_active Withdrawn
- 2004-07-12 WO PCT/US2004/022126 patent/WO2005008410A2/en active Application Filing
- 2004-07-12 EP EP04756853A patent/EP1652090A4/en not_active Withdrawn
- 2004-07-12 ES ES10191073.5T patent/ES2527937T3/es not_active Expired - Lifetime
- 2004-07-12 EP EP20100167233 patent/EP2226725A3/en not_active Withdrawn
- 2004-07-12 CA CA2735354A patent/CA2735354C/en not_active Expired - Fee Related
- 2004-07-12 EP EP20100167240 patent/EP2228727A3/en not_active Withdrawn
- 2004-07-12 EP EP20100191073 patent/EP2284709B1/en not_active Expired - Lifetime
-
2006
- 2006-02-03 US US11/346,213 patent/US8289335B2/en not_active Expired - Fee Related
-
2007
- 2007-08-20 US US11/894,584 patent/US7932910B2/en not_active Expired - Fee Related
- 2007-10-31 US US11/982,051 patent/US7948496B2/en not_active Expired - Fee Related
- 2007-10-31 US US11/982,230 patent/US7952587B2/en not_active Expired - Fee Related
- 2007-10-31 US US11/982,142 patent/US7843459B2/en not_active Expired - Fee Related
- 2007-10-31 US US11/981,996 patent/US8018464B2/en not_active Expired - Fee Related
-
2012
- 2012-08-22 US US13/591,492 patent/US9229713B2/en not_active Expired - Fee Related
-
2015
- 2015-08-17 US US14/828,131 patent/US9378018B2/en not_active Expired - Fee Related
-
2016
- 2016-05-05 US US15/147,811 patent/US10365926B2/en not_active Expired - Fee Related
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2527937T3 (es) | Procesador programable y método con operaciones amplias | |
US11681529B2 (en) | Apparatuses, methods, and systems for access synchronization in a shared memory | |
US6643765B1 (en) | Programmable processor with group floating point operations | |
US6725356B2 (en) | System with wide operand architecture, and method | |
CN112099852B (zh) | 可变格式、可变稀疏矩阵乘法指令 | |
EP3629158B1 (en) | Systems and methods for performing instructions to transform matrices into row-interleaved format | |
US8984043B2 (en) | Multiplying and adding matrices | |
US20100106944A1 (en) | Data processing apparatus and method for performing rearrangement operations | |
EP1105792B1 (en) | System with wide operand architecture, and method | |
TWI603262B (zh) | 緊縮有限脈衝響應(fir)濾波器處理器,方法,系統及指令 | |
US20190042261A1 (en) | Systems and methods for performing horizontal tile operations | |
WO2018034767A1 (en) | Method and apparatus for compressing a data set using incremental deltas and a variable reference value | |
US10437562B2 (en) | Apparatus and method for processing sparse data | |
ES2971474T3 (es) | Método y aparato de aproximación utilizando polinomios | |
KR20150065152A (ko) | 스레드 오프셋 카운터 | |
EP3929732A1 (en) | Matrix data scatter and gather by row | |
KR20220129106A (ko) | 비트 스트링 축적 | |
Adomnicai | An update on Keccak performance on ARMv7-M | |
Pitkänen et al. | Parallel memory architecture for application-specific instruction-set processors | |
Tang et al. | Implementation of fast cosine transform on the Motorola DSP 96002 digital signal processor | |
Oruklu et al. | Reduced Logic and Low-Power FFT Architectures for Embedded Systems | |
Wijsho | Memory Hardware Support for Sparse Computations |