CN108027768A - 指令块地址寄存器 - Google Patents
指令块地址寄存器 Download PDFInfo
- Publication number
- CN108027768A CN108027768A CN201680054457.8A CN201680054457A CN108027768A CN 108027768 A CN108027768 A CN 108027768A CN 201680054457 A CN201680054457 A CN 201680054457A CN 108027768 A CN108027768 A CN 108027768A
- Authority
- CN
- China
- Prior art keywords
- instruction
- block
- address
- processor
- instruction block
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 claims abstract description 61
- 238000003860 storage Methods 0.000 claims description 91
- 230000008859 change Effects 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 19
- 238000005303 weighing Methods 0.000 claims 2
- 238000005516 engineering process Methods 0.000 abstract description 62
- 238000012545 processing Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 17
- 239000000872 buffer Substances 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 230000005055 memory storage Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000004087 circulation Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000002045 lasting effect Effects 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000001259 photo etching Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
- G06F9/268—Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
-
- 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/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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/30058—Conditional 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control 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
-
- 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/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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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
-
- 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
-
- 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/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- 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/3802—Instruction 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode 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/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
-
- 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/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/3842—Speculative instruction execution
-
- 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/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
-
- 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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
- G06F9/528—Mutual exclusion algorithms by using speculative mechanisms
-
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/602—Details relating to cache prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache 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/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address 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/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- 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/321—Program or instruction counter, e.g. incrementing
-
- 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/355—Indexed 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3557—Indexed addressing using program counter as base address
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Executing Machine-Instructions (AREA)
Abstract
公开了用于控制基于块的处理器架构中的指令流的装置和方法。在所公开的技术的一个示例中,指令块地址寄存器存储到存储器的索引地址,该存储器存储指令块的多个指令,当处理器处于一个或多个非特权操作模式时,被索引的地址不可访问,一个或多个执行单元被配置为执行指令块的指令;以及控制单元被配置为基于被索引的地址,从存储器中取回并且译码多个指令中的两个或更多个指令。
Description
背景技术
由于摩尔定律所预测的持续的晶体管扩展,微处理器已经从晶体管数的持续增加、集成电路成本、制造资本、时钟频率、以及能量效率中获益,而相关的处理器指令集架构(ISA)却很小变化。然而,从在过去40年里驱动半导体工业的光刻扩展实现的益处正在放缓或者甚至反转。精简指令集计算(RISC)架构已经成为处理器设计中的主导典范很多年。乱序超标量实现尚未在面积或性能方面展现出持续改进。因此,存在充分的机会对处理器ISA进行改进,以扩展性能改进。
发明内容
公开了用于配置、操作和编译包括显式数据图执行(EDGE)架构的基于块的处理器架构(BB-ISA)的代码的方法、装置和计算机可读存储设备。所描述的用于例如改进处理器性能和/或减少能量消耗的解决方案的技术和工具可以被单独实施,或者以彼此的各种组合实施。如下文将更充分地描述的,所描述的技术和工具可以被实现在以下各项中:数字信号处理器、微处理器、专用集成电路(ASIC)、软处理器(例如,使用可重新配置逻辑被实现在现场可编程门阵列(FPGA)中的微处理器核)、可编程逻辑、或者其他适合的逻辑电路。如对于本领域的普通技术人员而言将容易地明显的,所公开的技术可以被实现在各种计算平台中,包括但不限于服务器、大型机、手机、智能电话、PDA、手持式设备、手持式计算机、PDA、触摸屏平板设备、平板计算机、可穿戴计算机、以及膝上型计算机。
在所公开的技术的一些示例中,处理器核被配置为使用多个执行单元来取回并且执行指令块。处理器控制单元包括至少一个指令块地址寄存器(IBAR),至少一个指令块地址寄存器(IBAR)对用于取回可变大小的指令块的位置进行索引,指令块地址寄存器通过利用上述执行单元之一执行分支指令而被隐式写入。指令块地址寄存器从基于块的处理器的一个或多个操作模式不可见。
提供本发明内容以引入以简化形式在以下具体实施方式中被进一步描述的概念的选择。本发明内容无意标识要求保护的主题的关键特征或基本特征,也无意用于限制要求保护的主题的范围。所公开的主题的前述和其他目标、特征以及优点将从参考附图进行的以下具体实施方式变得更加明显。
附图说明
图1示出了可以在所公开的技术的一些示例中使用的基于块的处理器核。
图2图示了如可以在所公开的技术的一些示例中使用的基于块的处理器核。
图3图示了根据所公开的技术的某些示例的多个指令块。
图4示出了可以在所公开的技术的一些实例中使用的源代码和指令块的部分。
图5图示了如可以在所公开的技术的一些示例中使用的基于块的处理器头部和指令。
图6是示出当指令块被映射、执行和引退时被指派给指令块的多个状态的状态图。
图7示出了可以在所公开的技术的某些示例中使用的基于块的处理器配置。
图8示出了可以在所公开的技术的某些示例中使用的用于基于块的处理器的源代码和汇编代码。
图9是示出根据所公开的技术的某些示例的用于指令块地址寄存器的地址的计算的图。
图10是概述可以根据所公开的技术的某些示例来执行的使用指令块地址寄存器的示例方法的流程图。
图11是示出用于实现所公开的技术的一些示例的合适的计算环境的框图。
具体实施方式
I.总体考虑
在代表性实施例的上下文中阐述了本公开内容,这些代表性实施例无意以任何方式进行限制。
如在本申请中所使用的,除非上下文清楚地指明,否则单数形式“一”、“一种”和“该”包括复数形式。此外,术语“包括”意味着“包含”。而且,术语“耦合的”涵盖机械的、电的、磁性的、光学的以及将多个项耦合或链接在一起的其他实际方式,并且不排除耦合项之间的中间元件的存在。另外,如在此所使用的,术语“和/或”意味着短语中的任何一项或多项的组合。
在此所描述的系统、方法和装置不应当以任何方式被解释为限制性的。相反,本公开涉及彼此单独并且以各种组合和子组合的各种所公开的实施例的所有新颖和非显而易见的特征和方面。所公开的系统、方法和装置既不限于任何特定方面或者特征或者其组合,所公开的内容和方法也不要求任何一个或多个特定优点存在或者问题被解决。此外,所公开的实施例的任何特征或者方面可以彼此以各种组合和子组合被使用。
虽然为了方便呈现而以特定顺序的次序描述所公开的方法中的一些方法的操作,但是应当理解,除非以下阐述的特定语言要求了特定排序,否则这种方式的描述涵盖重新布置。例如,顺序地描述的操作可以在一些情况下被重新布置或者并行地执行。此外,为了简洁,附图可能未示出所公开的内容和方法可以结合其他内容和方法使用的各种方式。此外,说明书有时使用类似“产生”、“生成”、“显示”、“接收”、“发射”、“验证”、“执行”和“发起”的术语来描述所公开的方法。这些术语是所执行的实际操作的高层描述。对应于这些术语的实际操作将取决于特定实现而变化并且是由本领域的普通技术人员容易地可辨别的。
为了更好的理解,已经提供参考本公开的装置或者方法而在此所呈现的操作理论、科学原理或者其他理论描述,这无意对范围进行限制。所附的权利要求中的装置和方法不限于以由这样的操作理论所描述的方式实现的那些装置和方法。
所公开的方法中的任一方法可以被实现为被存储在一个或多个计算机可读介质(例如,计算机可读介质(诸如一个或多个光学介质光盘、易失性存储器部件(诸如DRAM或SRAM))或非易失性存储器部件(诸如硬盘驱动器))上并且被执行在计算机(例如,任何商业可获得的计算机,包括智能电话或者包括计算硬件的其他移动设备)上的计算机可执行指令。用于实现所公开的技术的计算机可执行指令中的任一指令以及在所公开的实施例的实现期间创建和使用的任何数据可以被存储在一个或多个计算机可读介质(例如,计算机可读存储介质)上。计算机可执行指令例如可以是专用软件应用或者经由网络浏览器或者其他软件应用(诸如远程计算应用)访问或者下载的软件应用的一部分。这样的软件可以例如在单个本地计算机(例如,具有在任何适合的商业可获得的计算机上执行的通用和/或基于块的处理器的计算机)上被执行,或者在使用一个或多个网络计算机的网络环境(例如,经由因特网、广域网、局域网、客户端服务器网络(诸如云计算网络)、或者其他这样的网络)中被执行。
为了清楚起见,仅描述了基于软件的实现的某些选定方面。在本领域中众所周知的其他细节被省略。例如,应当理解,所公开的技术不限于任何特定计算机语言或者程序。例如,所公开的技术可以通过以C、C++、JAVA或者任何其他适合的编程语言来实现。同样地,所公开的技术不限于任何特定计算机或者硬件类型。适合的计算机和硬件的某些细节是众所周知的并且无需在本公开中被详细阐述。
此外,基于软件的实施例(包括例如用于使得计算机执行所公开的方法中的任一方法的计算机可执行指令)中的任一实施例可以通过适合的通信手段被上载、被下载或者被远程访问。这样的适合的通信手段包括例如因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信、或者其他这样的通信手段。
II.对所公开的技术的介绍
超标量乱序微架构采用大量的电路资源来重命名寄存器,以数据流次序调度指令,在误推测之后清理,并且针对精确异常引退结果。这包括昂贵的电路,诸如深的许多端口的寄存器文件、用于数据流指令调度唤醒的许多端口的内容可访问存储器(CAM)、以及许多宽总线复用器和旁路网络,所有这些都是资源密集的。例如,多读取、多写入RAM的基于FPGA的实现通常要求复制、多循环操作、时钟加倍、组交错、实况值表和其他昂贵技术的混合。
所公开的技术可以通过应用包括高指令集并行性(ILP)、乱序(out-of-order,OoO)、超标量执行的技术来实现性能增强,同时避免处理器硬件和相关联的软件二者中的大量的复杂性和开销。在所公开的技术的一些示例中,基于块的处理器使用针对区域和能量有效的高ILP执行所设计的EDGE ISA。在一些示例中,EDGE架构和相关联的编译器的使用巧妙处理远离寄存器的重命名、CAM和复杂性。
在所公开的技术的某些示例中,EDGE ISA可以消除对于一个或多个复杂架构特征的需要,包括寄存器重命名、数据流分析、误推测恢复以及按序引退,同时支持主流编程语言(诸如C和C++)。在所公开的技术的某些示例中,基于块的处理器执行多个(两个或更多个)指令作为原子指令块。基于块的指令可以被用于以更显式的方式表达程序数据流和/或指令流的语义,这允许改进的编译器和处理器性能。在所公开的技术的某些示例中,显式数据图形执行指令集架构(EDGEISA)包括关于可以用于改进对不适当的控制流指令的检测的程序控制流的信息,从而增加性能、节省存储器资源和/或以及节省能量。
在所公开的技术的一些示例中,在指令块内组织的指令原子地被取指、被执行并且被提交。块内的指令以数据流次序被执行,其使用寄存器重命名减少或者消除并且提供功率有效的OoO执行。编译器可以被用于通过ISA显式地编码数据依存性,这减少了或者消除了处理器核控制逻辑在运行时重新发现依存性的负担。使用断言执行,块内分支可以被转换为数据流指令,并且除了存储器依存性之外的依存性可以限于直接数据依存性。所公开的目标形式编码技术允许块内的指令经由操作数缓冲器直接地传递其操作数,这减少了对高功耗的多端口物理寄存器文件的访问。
在指令块之间,指令可以使用存储器和寄存器来进行通信。因此,通过利用混合数据流执行模型,EDGE架构可以仍然支持命令式编程语言和顺序的存储器语义,但还期望能享有具有近按序功率效率和复杂性的乱序执行的益处。
如本领域的普通技术人员将容易地理解到,所公开的技术的实现的范围在各种区域和功率折中的情况下是可行的。
III.示例基于块的处理器
图1是在所公开的技术的一些示例中能够被实施的基于块的处理器100的块图10。处理器100被配置为根据指令集架构(ISA)来执行原子指令块,ISA描述了处理器操作的若干方面,包括寄存器模型、由基于块的指令执行的若干定义操作、存储器模型、中断以及其他架构特征。基于块的处理器包括多个处理器核110,包括处理器核111。
如在图1中所示,处理器核经由核互连120而彼此连接。核互连120携带数据并且控制核110中的个体核、存储器接口140以及输入/输出(I/O)接口145之间的信号。核互连120可以使用电的、光学的、磁性的或者其他适合的通信技术来发送和接收信号,并且可以取决于特定期望的配置而提供根据若干不同的拓扑布置的通信连接。例如,核互连120可以具有交叉开关、总线、点对点总线、或者其他适合的拓扑。在一些示例中,核110中的任一核可以被连接到其他核中的任一核,而在其他示例中,一些核仅被连接到其他核的子集。例如,每个核可以仅被连接到最近的4、8或20个邻近核。核互连120可以用于将输入/输出数据传送至核以及从核传送输入/输出数据,以及将控制信号和其他信息信号传送至核以及从核传送控制信号和其他信息信号。例如,核110中的每个核110可以接收并且传送指示当前正由相应核中的每个核执行的指令的执行状态的信号量。在一些示例中,核互连120被实现为将核110和存储器系统连接的接线,而在其他示例中,核互连可以包括用于多路复用(一条或多条)互连接线上的数据信号的电路、开关和/或路由部件,包括活跃的信号驱动器和中继器或者其他适合的电路。在所公开的技术的一些示例中,在处理器100内和/或至/来自处理器100的信号不限于全摆幅电数字信号,而是处理器可以被配置为包括差分信号、脉冲信号或者用于传送数据和控制信号的其他适合的信号。
在图1的示例中,处理器的存储器接口140包括被用于连接到附加存储器(例如,被定位在除了处理器100之外的另一集成电路上的存储器)的接口逻辑。如在图1中所示,外部存储器系统150包括L2高速缓存152和主存储器155。在一些示例中,L2高速缓存可以使用静态RAM(SRAM)被实现,并且主存储器155可以使用动态RAM(DRAM)被实现。在一些示例中,存储器系统150被包括在与处理器100的其他部件相同的集成电路上。在一些示例中,存储器接口140包括允许在不使用(一个或多个)寄存器文件和/或处理器100的情况下传送存储器中的数据块的直接存储器访问(DMA)控制器。在一些示例中,存储器接口140管理虚拟存储器的分配、对可用主存储器155的扩展。
I/O接口145包括用于将输入信号和输出信号接收并且发送到其他部件的电路,诸如硬件中断、系统控制信号、外围接口、协处理器控制和/或数据信号(例如,用于图形处理单元、浮点协处理器、物理处理单元、数字信号处理器或者其他协同处理部件的信号)、时钟信号、信号量或者其他适合的I/O信号。I/O信号可以是同步的或者异步的。在一些示例中,I/O接口的全部或部分结合存储器接口140使用存储器映射的I/O技术被实现。
基于块的处理器100还可以包括控制单元160。控制单元160监督处理器100的操作。可以由控制单元160执行的操作可以包括将核分配和解除分配以用于执行指令处理;对任何核、寄存器文件、存储器接口140和/或I/O接口145中之间的输入数据和输出数据的控制;对执行流的修改;以及验证控制流中的分支指令、指令头部和其他改变的(一个或多个)目标位置。控制单元160可以根据表示出口点的控制流和元数据信息以及用于指令块的控制流概率来生成和控制处理器。
控制单元160还可以处理硬件中断,并且控制特殊系统寄存器(例如,指令块地址寄存器)的读取和写入。在所公开的技术的一些示例中,控制单元160至少部分地使用处理器核110中的一个或多个核被实现,而在其他示例中,控制单元160使用非基于块的处理器核(例如,耦合到存储器的通用RISC处理核)被实现。在一些示例中,控制单元160至少部分地使用以下各项中的一项或多项被实现:硬连线有限状态机、可编程微代码、可编程门阵列或者其他适合的控制电路。在备选示例中,可以由核110中的一个或多个核来执行控制单元功能。
控制单元160包括用于将指令块分配到处理器核110的调度器161。如本文所使用的,调度器块分配指的是引导指令块的操作,包括发起指令块映射、取指、译码、执行、提交、中止、空闲以及刷新指令块。此外,指令调度指的是在指令块内调度指令的发出和执行。例如,基于指令依存性和指示存储器访问指令的相对顺序的数据,控制单元160可以确定指令块中的哪个(哪些)指令准备好发出并且发起指令的发出和执行。处理器核110在指令块映射期间被指派到指令块。所叙述的指令操作的阶段是出于说明性目的,并且在所公开的技术的一些示例中,某些操作可以被组合、被省略、被分离为多个操作,或者被添加附加操作。调度器161调度指令流动,包括用于执行指令处理的核的分配和解除分配,在任何核、寄存器文件、存储器接口140和/或I/O接口145之间的输入数据和输出数据的控制。
控制单元160包括标记为IBAR0至IBAR3的多个指令块地址寄存器165。每个指令块地址寄存器可以存储指示用于执行指令块的入口位置的存储器地址。在一些示例中,每个指令块地址寄存器保存当前正执行的进程或线程的存储器地址。在一些示例中,一个或多个指令块地址寄存器存储随后要被执行的另一指令块的地址。在一些示例中,一个或多个指令块地址寄存器存储推测性地要被执行的指令块的入口点地址。取决于基于块的处理器100的基于块的处理器核110所支持的进程和/或线程的数目以及可以同时推测性地被执行的指令块的数目,指令块地址寄存器的数目可以从0变到4、8或更多个寄存器。
在一些示例中,每个相应的多个指令块地址寄存器165对用于使用基于块的处理器同时执行相应指令块的入口位置进行索引。在一些示例中,每个相应的多个指令块地址寄存器165对用于使用基于块的处理器推测性地执行相应的指令块的入口位置进行索引。
基于块的处理器100还包括时钟发生器170,其将一个或多个时钟信号分布到处理器内的各种部件(例如,核110、互连120、存储器接口140和I/O接口145)。在所公开的技术的一些示例中,所有部件共享共同时钟,而在其他示例中,不同的部件使用不同的时钟(例如,具有不同的时钟频率的时钟信号)。在一些示例中,时钟的一部分被选通以在处理器部件中的一些部件未被使用时允许功率节省。在一些示例中,时钟信号使用锁相环(PLL)被生成以生成具有固定的恒定频率和占空比的信号。接收时钟信号的电路可以在单个边沿(例如,上升沿)上被触发,而在其他示例中,接收电路中的至少一些电路通过上升和下降时钟沿而被触发。在一些示例中,时钟信号可以被光学传输或无线传输。
IV.示例基于块的处理器核
图2是如可以在所公开的技术的某些示例中使用的进一步详述用于基于块的处理器100(并且特别地,基于块的处理器核之一的实例)的示例微架构的块图200。为了便于解释,示例性的基于块的处理器核被图示有五个阶段:指令取指(IF)、译码(DC)、操作数取回、执行(EX)以及存储器/数据访问(LS)。然而,本领域的普通技术人员将容易地理解到,对所图示的微架构的修改(诸如添加/移除阶段、添加/移除执行操作的单元、以及其他实现细节)可以被修改为适合用于基于块的处理器的特定应用。
如在图2中所示,处理器核111包括控制单元205,其生成控制信号来调节核操作并且使用指令调度器206来调度核内的指令流。可以由控制单元205和/或指令调度器206执行的操作可以包括:将核分配和解除分配以用于执行指令处理;对任何核、寄存器文件、存储器接口140和/或I/O接口145之间的输入数据和输出数据的控制。控制单元205还可以处理硬件中断,并且控制特殊系统寄存器(例如,指令块地址寄存器)的读取和写入。在所公开的技术的其他示例中,控制单元205和/或指令调度器206使用非基于块的处理器核(例如,耦合到存储器的通用RISC处理核)来实现。在一些示例中,控制单元205和/或指令调度器206至少部分地使用以下各项中的一项或多项来实现:硬连线有限状态机、可编程微代码、可编程门阵列、或者其他适合的控制电路。
如图2所示,控制单元205还包括多个一个或多个指令块地址寄存器208,其可以被访问以确定由基于块的处理器核111执行的指令块的出口点和入口点。所示出的多个指令块地址寄存器208的应用类似于上面关于控制单元160讨论的那些IBAR。每个相应的指令块地址寄存器可以存储到存储器的索引地址,该存储器存储指令块的多个指令,被索引的地址在处理器处于一个或多个非特权操作模式时不可访问。因此,每个指令块地址寄存器针对要由处理器推测性地取回、译码和/或执行的相应指令块,存储到存储器的索引地址。下文讨论的一个或多个执行单元被配置为执行指令块的指令,并且控制单元205被配置为基于被索引的地址,从存储器中取回并且译码多个指令中的两个或更多个指令,并且不改变被存储在指令块地址寄存器中的索引地址。编码多个指令的指令块可以具有可变长度。另外,控制单元205还用于通过将被存储在指令块地址寄存器中的索引地址改变为由分支指令生成的结果值,来执行被编码在指令块中的分支指令。
示例处理器核111包括两个指令窗口210和211,每个指令窗口可以被配置为执行指令块。在所公开的技术的一些示例中,指令块是基于块的处理器指令的原子集合,该集合包括指令块头部以及多个一个或多个指令。如下文将进一步讨论的,指令块头部包括可以被用于进一步定义指令块内的多个指令中的一个或多个指令的语义的信息。取决于所使用的特定ISA和处理器硬件,还可以在指令的执行期间使用指令块头部,并且通过例如允许对指令和/或数据的早期取回、改进的分支预测、推测性执行、改进的能量效率以及经改进的代码紧密性,来改进执行指令块的性能。在其他示例中,不同的数目的指令窗口是可能的,诸如一个、四个、八个或其他数目的指令窗口。
指令窗口210和211中的每个指令窗口可以从输入端口220、221和222(其连接到互连总线)中的一个或多个输入端口以及指令高速缓存227(其进而连接到指令译码器228和229)接收指令和数据。附加的控制信号还可以在附加的输入端口225上被接收。指令译码器228和229中的每个指令译码器对指令头部和/或用于指令块中的指令进行译码,并且将所译码的指令存储在被定位在每个相应的指令窗口210和211中的存储器存储库215和216内。
处理器核111还包括耦合到L1(第一级)高速缓存235的寄存器文件230。寄存器文件230存储用于在基于块的处理器架构中定义的寄存器的数据,并且可以具有一个或多个读端口和一个或多个写端口。例如,寄存器文件可以包括用于将数据存储在寄存器文件中的两个或更多个写端口,以及具有用于从寄存器文件内的个体寄存器读取数据的多个读端口。在一些示例中,单个指令窗口(例如,指令窗口210)可以一次访问寄存器文件的仅一个端口,而在其他示例中,指令窗口210可以访问一个读端口和一个写端口,或者可以同时访问两个或更多个读端口和/或写端口。在一些示例中,寄存器文件230可以包括64个寄存器,这些寄存器中的每一个保持32位的数据的字。(为便于解释,除非另有说明,否则本申请将把32位的数据称为字。根据本公开的技术的适当处理器可以利用8位字、16位字、64位字、128位字、256位字、以及另一数目的位的字进行操作)。在一些示例中,寄存器文件230内的寄存器中的一些寄存器可以被分配用于特殊目的。例如,寄存器中的一些寄存器可以被专用作系统寄存器示例,其包括存储常量值(例如,全零字)、物理核数目、逻辑核数目、核分配拓扑、核控制标志、执行标志、处理器拓扑或者其他适合的专用目的的寄存器。在一些示例中,系统寄存器的使用可以由操作系统或者其他监督式计算机指令进行限制。在一些示例中,寄存器文件230被实现为触发器阵列,而在其他示例中,寄存器文件可以使用锁存器、SRAM或者其他形式的存储器存储装置被实现。针对给定处理器(例如,处理器100)的ISA规格指定寄存器文件230内的寄存器如何被定义并且被使用。
在一些示例中,处理器100包括由多个处理器核共享的全局寄存器文件。在一些示例中,与处理器核相关联的个体寄存器文件可以被组合以静态地或者动态地形成较大的文件,这取决于处理器ISA和配置。
如在图2中所示,指令窗口210的存储器存储库215包括若干译码的指令241、左操作数(LOP)缓冲器242、右操作数(ROP)缓冲器243、断言(PRED)缓冲器以及指令记分板245。在所公开的技术的一些示例中,指令块中的每个指令被分解为一行经译码的指令、左操作数和右操作数以及记分板数据,如在图2中所示。经译码的指令241可以包括被存储为位级控制信号的部分译码或者完全译码版本的指令。操作数缓冲器242、243和244存储操作数(例如,从寄存器文件230接收到的寄存器值、从存储器接收到的数据、在指令内编码的中间操作数、由较早发出的指令计算的操作数、或者其他操作数值),直到其相应的经译码的指令准备好执行。指令操作数从操作数缓冲器242和243以及断言缓冲器244分别被读取,而不是从寄存器文件被读取。指令记分板245可以包括用于针对指令的断言的缓冲器,包括用于组合由多个指令发送到指令的断言的“线或”逻辑。
第二指令窗口211的存储器存储库216存储类似的指令信息(经译码的指令、操作数和记分板)作为存储器存储库215,但是出于简单的原因在图2中未被示出。指令块可以关于第一指令窗口由第二指令窗口211并发地或者顺序地执行,这受制于ISA约束并且如由控制单元205引导。
在所公开的技术的一些示例中,前端流水线阶段IF和DC可以从后端流水线阶段(IS、EX、LS)运行去耦合。控制单元可以每时钟周期将两个指令取指并且译码到指令窗口210和211中的每个指令窗口中。控制单元205使用记分板245来提供指令窗口数据流调度逻辑以监测每个经译码的指令的输入(例如,每个相应指令的(一个或多个)断言和(一个或多个)操作数)的就绪状态。控制单元205还监测指示存储器访问指令的相对顺序的数据(例如,使用由指令译码器示出的加载/存储标识符)和指示哪些指令已经执行的数据(例如,通过跟踪每个指令和/或保持已经发出的多个存储器存储指令的计数)。当针对特定译码指令的所有输入操作数和断言就绪并且任何先前排序的存储器访问指令(例如,先前排序的存储器存储指令)已经发出和/或被执行时,指令准备好发出。控制逻辑205然后每周期(发起)一个或多个下一指令(例如,最低编号的就绪指令)的执行,并且基于经译码的指令和指令的输入操作数的控制信号被发送到功能单元260中的一个或多个功能单元以用于执行。经译码的指令还可以对若干就绪事件进行编码。控制单元205中的调度器接受这些事件和/或来自其他源的事件,并且更新窗口中的其他指令的就绪状态。因此,从处理器核的111个就绪零输入指令开始,继续执行以零输入指令为目标的指令,等等。
译码指令241不需要以其被布置在指令窗口210的存储器存储库215内的相同次序被执行。相反,指令记分板245用于追踪译码的指令的依存性,并且当依存性已经被满足时,相关联的个体译码指令被调度用于执行。例如,当针对相应指令已经满足依存性时,对相应指令的参考可以被推送到就绪队列上,并且就绪指令可以从就绪队列中以先进先出(FIFO)次序被调度。对于与所生成的加载存储标识符(LSID)相关联的指令,执行顺序也将遵循在所生成的指令LSID中枚举的优先级,或者按照就像这些指令按指定顺序被执行一样的顺序来执行。
记分板245中存储的信息可以包括但不限于:相关联的指令的执行断言(诸如指令是否正在等待断言比特被计算,并且指令是在断言比特为真的情况下还是在断言比特为假的情况下执行)、操作数对指令的可用性、或者在发出和执行相关联的个体指令之前所需要的其他先决条件。被存储在每个指令窗口中的指令的数目通常对应于指令块内的指令的数目。在一些示例中,在一个或多个广播信道上接收操作数和/或断言,一个或多个广播信道允许将相同的操作数或断言发送到大量的指令。在一些示例中,指令块内的指令的数目可以是32、64、128、1024或者另一数目的指令。在所公开的技术的一些示例中,跨处理器核内的多个指令窗口分配指令块。无序操作和存储器访问可以根据指定一个或多个操作模式的数据来控制。
可以使用位于处理器核111内的控制单元205来分配和调度指令。控制单元205安排来自存储器的对指令的取指、对指令的译码、在指令已经被加载到相应的指令窗口时对指令的执行、进/出处理器核111的数据流、以及由处理器核输入和输出的控制信号。例如,控制单元205可以包括如上文所描述的就绪队列,以用于在调度指令时使用。可以原子地执行被存储在被定位在每个相应的指令窗口210和211中的存储器存储库215和216中的指令。因此,对由所执行的指令影响的可见架构状态(诸如寄存器文件230和存储器)的更新可以被本地缓存在核111内,直到指令被提交为止。控制单元205可以确定指令何时准备好被提交、对提交逻辑进行排序并且发出提交信号。例如,指令块的提交阶段可以在所有寄存器写入被缓冲、所有对存储器的写入被缓冲以及分支目标被计算时开始。指令块可以在完成对可见架构状态的更新时被提交。例如,当寄存器写入被写入到寄存器文件、存储被发送到加载/存储单元或者存储器控制器并且提交信号被生成时,指令块可以被提交。控制单元205还至少部分地控制将功能单元260分配到相应的指令窗口中的每个指令窗口。
因为指令块作为原子事务单元被提交(或中止),所以应当注意,某些操作的结果不可用于指令块内的指令。例如,寄存器写入和存储器存储操作在块提交期间被完成,并且因此可用于后续指令块,而不是用于当前指令块。
如在图2中所示,具有若干执行流水线寄存器255的第一路由器250用于将数据从指令窗口210和211中的任一指令窗口发送到功能单元260中的一个或多个功能单元,其可以包括但不限于整数ALU(算术逻辑单元)(例如,整数ALU 264和265)、浮点单元(例如,浮点ALU 267)、移位/旋转逻辑(例如,桶型移位器268)或者其他适当的执行单元,这样的单元可以包括图形功能、物理功能和其他数学运算。来自功能单元260的数据可以然后通过第二路由器270被路由到输出290、291和292,路由返回到操作数缓冲器(例如,LOP缓冲器242和/或ROP缓冲器243),或者被馈送回到另一功能单元,这取决于正被执行的特定指令的要求。第二路由器270包括:加载/存储队列275,其可以被用于发出存储器指令;数据高速缓存277,其存储从核正被输入或输出到存储器的数据;以及加载/存储流水线寄存器278。
核还包括控制输出295,其用于例如指示指令窗口210或者211中的一个或多个指令窗口的所有指令的执行何时已经完成。当指令块的执行完成时,指令块被指定为“已提交”并且来自控制输出295的信号进而可以由基于块的处理器100内的其他核和/或由控制单元160用于发起其他指令块的调度、取指和执行。第一路由器250和第二路由器270二者可以将数据发送回到指令(例如,作为用于指令块内的其他指令的操作数)。在一些示例中,指示相对顺序和执行状态的数据用来确定指令块是否可以被提交。
如本领域的普通技术人员将容易理解到,个体核内的部件不限于图2中所示的那些部件,而是可以根据特定应用的要求而变化。例如,一个核可以具有更少或更多的指令窗口,单个指令译码器可以由两个或更多个指令窗口共享,并且所使用的功能单元的数目和类型可以取决于用于基于块的处理器的特定目标应用而变化。在利用指令核选择并且分配资源时应用的其他考虑包括性能要求、能量使用要求、集成电路芯片、处理技术和/或成本。
对于本领域的普通技术人员而言将容易清楚的,可以通过处理器核110的指令窗口(例如,指令窗口210)和控制单元205内的资源的设计和分配来做出处理器性能的折中。面积、时钟周期、能力和限制实质上确定个体核110的实际性能和基于块的处理器100的吞吐量。
指令调度器206可以具有不同的功能。在某些较高的性能示例中,指令调度器是高并发的。例如,每个周期(一个或多个)译码器将指令的译码就绪状态和译码指令写入到一个或多个指令窗口中,选择要发出的下一个指令,并且作为响应后端发送第二就绪事件——以特定指令的输入槽(断言、左操作数、右操作数等)为目标的任一目标就绪事件或者以所有指令为目标的广播就绪事件。每指令就绪状态位连同译码就绪状态可以用于确定指令准备好发出。
在一些情况下,调度器206接受如下目标指令的事件,这些目标指令尚未被译码并且还必须禁止已发出的就绪指令的重新发出。在一些示例中,指令可以是非断言的、或者断言的(基于真或假条件)。断言指令直到由另一指令的断言结果作为目标时才变为就绪,并且该结果匹配断言条件。如果相邻的断言未匹配,则指令绝不发出。在一些示例中,断言指令可以推测地被发出并且被执行。在一些示例中,处理器可以随后检查推测地发出和执行的指令被正确地推测。在一些示例中,误推测的发出指令和消耗其输出的块中的指令的特定传递闭包可以被重新执行、或者被误推测取消的副作用。在一些示例中,对误推测的指令的发现导致整个指令块的完全回滚和重新执行。
在分支到新的指令块时,相应的指令窗口就绪状态被清除(块复位)。然而,当指令块分支回到它本身(块刷新)时,只有有效的就绪状态被清除。因此可以保留指令块的经译码的就绪状态,从而不需要重新取回和译码该块的指令。因此,可以使用块刷新来节省循环中的时间和能量。
V.示例指令块流
现在转到图3的示图300,图示了基于块的指令流的一部分310,包括若干可变长度指令块311-314。指令流可以用于实现用户应用、系统服务或者任何其他适合的用途。指令流可以被存储在存储器中,从存储器中的另一进程接收,通过网络连接接收,或以任何其他合适的方式存储或接收。在图3中所示的示例中,每个指令块从指令头部开始,其后跟随有不同的数目的指令。例如,指令块311包括头部320和二十条指令321。指令头部320的第一字的存储器地址用作用于取回指令块的入口位置。存储器地址可以被存储在指令块地址寄存器中,控制单元可以读取该指令块地址寄存器以确定在存储器中的何处读取指令块。因此,指令块地址寄存器不直接存储要由至少一个处理器核执行的任何指令(321)的地址。
所图示的特定指令头部320包括部分地控制指令块内的指令的执行的若干数据字段,并且还允许改进的性能增强技术,包括例如分支预测、推测执行、惰性评估和/或其他技术。指令头部320还包括指示头部是指令头部而非指令的ID位。在一些示例中,指令块可以具有可变大小,并且指令头部320包括指令块大小的指示。指令块大小可以处于比一更大的指令组块中,例如比被包含在指令块内的4指令组块的数目更大。换句话说,块的大小被移动4位以便压缩被分配到指定指令块大小的头部空间。因此,0的大小值指示最小大小的指令块,其是跟随有四条指令的块头部。在一些示例中,指令块大小被表达为字节数、字数、n字组块数、地址、地址偏移或者使用用于描述指令块的大小的其他适合的表达。在一些示例中,指令块大小由指令块头部和/或脚部中的终止位图来指示。控制指令块的取回和译码的控制单元可以使用大小字段来确定要为当前指令块读取多少指令。
指令块头部320还可以包括指示用于执行指令块的一个或多个操作模式的一个或多个执行标志。例如,操作模式可以包括核融合操作、向量模式操作、分支预测或存储器依存性预测、和/或有序或确定性指令执行。此外,执行标志可以包括禁止指令块的推测性执行的块同步标志。
在所公开的技术的一些示例中,指令头部320包括指示编码数据是指令头部的一个或多个标识位。例如,在一些基于块的处理器ISA,最低有效位空间中的单个ID位总是被设定为二进制值1,以指示有效指令块的开始。在其他示例中,不同的位编码可以用于(一个或多个)标识位。在一些示例中,指令头部320包括指示相关联的指令块被编码所针对的ISA的特定版本的信息。
指令块头部还可以包括用于在例如分支预测、控制流确定和/或分支处理中使用的若干块退出类型。退出类型可以指示分支指令的类型是什么,例如:顺序分支指令,其指向存储器中的下一相连的指令块;偏移指令,其是相对于偏移而计算的存储器地址处的另一指令块的分支;子例程调用、或者子例程返回。通过编码指令头部中的分支退出类型,分支预测器可以至少部分地在相同指令块内的分支指令已经被取指和/或被译码之前开始操作。分支预测、推测性执行、分支处理和其他操作可以使用一个或多个指令块地址寄存器来存储被取回和译码逻辑用来确定存储用于指令块的数据的多个存储器位置的指令块的所计算的入口位置。
所示出的指令块头部320还包括存储掩码,该存储掩码指示被编码在块指令中的加载存储队列标识符中的哪些标识符被指派用于存储操作。指令块头部还可以包括写入掩码,该写入掩码标识相关联的指令块将写入的(一个或多个)全局寄存器。相关联的寄存器文件必须在指令块可以完成之前接收对每个条目的写入。在一些示例中,基于块的处理器架构可以包括不仅标量指令,而且单指令多数据(SIMD)指令,这允许具有单个指令内的较大数目的数据操作数的操作。
可以用于指令321的合适的基于块的指令的示例可以包括用于执行整数和浮点算术运算、逻辑运算、类型转换、寄存器读取和写入、存储器加载和存储、执行和跳转的分支的指令、以及其他合适的处理器指令。
VI.示例块指令目标编码
图4是描绘C语言源代码的两个部分410和415及其相应的指令块420和425的示例的示图400,这图示了基于块的指令可以如何显式地编码其目标。在该示例中,前两个READ指令430和431相应地以ADD指令432的右(T[2R])和左(T[2L])操作数为目标。(2R指示以指令编号2的右操作数为目标;2L表示指令编号2的左操作数)。右操作数也可以被称为OP0并且左操作数也可以被称为OP1。此外,在所公开的技术的一些示例中,指令具有一个输入操作数或多于两个输入操作数。在所图示的ISA中,读指令是从全局寄存器文件读取的唯一指令;然而,任何指令可以以全局寄存器文件为目标。当ADD指令432接收到这两个寄存器读取的结果时,其将变为就绪并且执行。
当TLEI(测试小于等于立即(test-less-than-equal-immediate))指令433从ADD接收其单个输入操作数时,其将变为就绪并且执行。测试然后产生在信道一(B[1P])上广播到在广播信道上监听的所有指令的断言操作数,这些指令在该示例中是两个断言的分支指令(BRO_T 434和BRO_F 435)。接收匹配断言的分支指令将触发(执行),但是用互补断言编码的另一指令不会触发/执行。
指令块420的依存性图形440还被图示为指令节点阵列450及其对应的操作数目标455和456。这图示了指令块420、对应的指令窗口条目以及由这些指令所表示的底层数据流程图之间的对应性。此处,经译码的指令READ 430和READ 431准备好发出,因为其不具有输入依存性。当其发出并且执行时,从寄存器R0和R7读取的值被写入到ADD 432的右操作数缓冲器和左操作数缓冲器中,这使得ADD 432的左操作数和右操作数“就绪”。因此,ADD 432指令变为就绪、发出到ALU、执行,并且总和被写入到TLEI指令433的左操作数。
VII.示例基于块的指令格式
图5是示出指令头部510、通用指令520、分支指令530和存储器访问指令540(例如,存储器加载或存储指令)的指令格式的通用示例的图。指令格式可以用于根据在指定操作模式的指令头部中指定的很多执行标志执行的指令块。指令头部或者指令中的每一个根据位数而被标记。例如,指令头部510包括四个32位的字并且从其最低有效位(lsb)(位0)被标记直到其最高有效位(msb)(位127)。如所示出的,指令头部包括写入掩码字段、多个退出类型字段511、多个执行标志字段、指令块大小字段512和指令头部ID位(指令头部的最低有效位)。在一些示例中,指令头部510包括附加元数据515,附加元数据515可以用于控制指令块执行和性能的附加方面。
图5中所描绘的执行标志字段占据指令块头部510的位6至13并且指示用于执行指令块的一个或多个操作模式。例如,操作模式可以包括核融合操作、向量模式操作、分支预测器抑制、存储器依存性预测器禁止、块同步、块之后中断、块之前中断、块中断、和/或有序或确定性指令执行。块同步标志占据指令块的位9,并且当被设置为逻辑1时禁止指令块的推测性执行。
退出类型字段包括可以用于指示被编码在指令块内的控制流指令的类型的数据。例如,退出类型字段可以指示指令块包括以下各项中的一项或多项:顺序分支指令、偏移分支指令、间接分支指令、调用指令、和/或返回指令。在一些示例中,分支指令可以是用于在指令块之间传递控制流的任何控制流指令,包括相对地址和/或绝对地址,并且使用有条件的断言或者无条件的断言。除了确定隐式控制流指令之外,退出类型字段可以用于分支预测和推测执行。可以针对推测性要被执行的下一指令块计算地址并且将其存储在指令块地址寄存器中。在一些示例中,多达六种退出类型可以被编码在退出类型字段中,并且字段与对应的显式或者隐式控制流指令之间的对应性可以通过例如检查指令块中的控制流指令而被确定。
所图示的通用块指令520被存储为一个32位的字,并且包括操作码字段、断言字段、广播ID字段(BID)、第一目标字段(T1)、以及第二目标字段(T2)。对于具有比目标字段更多的消费者的指令而言,编译器可以使用移动指令来构建扇出树,或者其可以将高扇出指令指派到广播。广播支持通过轻量网络将操作数发送到核中的任何数目的消费者指令。
虽然由通用指令520概述的通用指令格式可以表示由基于块的处理器处理的一些或全部指令,但是本领域的技术人员将容易理解到,即使对于ISA的特定示例而言,指令字段中的一个或多个指令字段也可以偏离用于特定指令的通用格式。操作码字段指定由指令520执行的(一个或多个)操作,诸如存储器读取/写入、寄存器加载/存储、加法、减法、乘法、除法、移位、旋转、系统操作或者其他适合的指令。断言字段指定指令在其下将执行的条件。例如,断言字段可以指定值“真”,并且指令将仅在对应的条件标志匹配指定的断言值的情况下执行。在一些示例中,断言字段至少部分地指定哪一个被用于比较断言,而在其他示例中,执行在由先前指令(例如,指令块中的先前指令)设定的标志上被断定。在一些示例中,断言字段可以指定指令将总是或者绝不被执行。因此,断言字段的使用可以通过减少分支指令的数目来允许更密集的目标代码、改进的能量效率以及改进的处理器性能。
目标字段T1和T2指定基于块的指令的结果被发送到的指令。例如,在指令槽5处的ADD指令可以指定该指令的计算结果将被发送给槽3和10处的指令,包括对操作数槽的指定(例如,左操作数、右操作数或断言操作数)。取决于特定指令和ISA,所图示的目标字段之一或二者可以由其他信息替换,例如,第一目标字段T1可以由中间操作数、附加操作码、指定两个目标等来替换。
分支指令530包括操作码字段、断言字段、广播ID字段(BID)以及偏移字段。操作码和断言字段在如关于通用指令所描述的格式和功能方面是类似的。偏移可以以四个指令的组为单位被表达,因此扩展在其上可以执行分支的存储器地址范围。利用通用指令520和分支指令530示出的断言可以用于避免指令块内的附加分支。例如,特定指令的执行可以根据先前指令的结果(例如,两个操作数的比较)被断定。如果断言是假的,则指令将不提交由特定指令计算出的值。如果断言值未匹配所要求的断言,则指令不发出。例如,BRO_F(断言假)指令将发出其是否被发送假断言值。
应当容易理解到,如在此所使用的,术语“分支指令”不限于将程序执行改变到相对存储器位置,而且包括跳跃到绝对或者符号存储器位置、子例程调用和返回,以及可以修改执行流的其他指令。通过改变指令块地址寄存器的值(例如,使用分支指令来隐式改变值)来修改执行流,而在其他示例中,可以通过修改存储在虚拟存储器中的指定位置处的值(例如,通过被配置为检测对指定的存储器位置的读取和写入以及将值存储/加载到指令块地址寄存器的存储器控制器)来修改执行流。在一些示例中,跳跃寄存器分支指令用于跳跃到被存储在寄存器中的存储器位置。在一些示例中,分别使用跳跃和链接以及跳跃寄存器指令来实现子例程调用和返回。
存储器访问指令540格式包括操作码字段、断言字段、广播ID字段(BID)、直接字段(IMM)偏移字段和目标字段。操作码、广播、断言字段在格式和功能上与关于通用指令所描述的类似。例如,特定指令的执行可以基于先前指令的结果(例如,两个操作数的比较)。如果断言为假,则指令不会提交由特定指令计算的值。如果断言值与所需要的断言不匹配,则指令不会发出。直接字段(例如,和移位若干位)可以用作发送到加载或存储指令的操作数的偏移。操作数加(经移位的)立即数偏移被用作加载/存储指令的存储器地址(例如,从存储器读取数据或将数据存储到存储器的地址)。
VIII.示例处理器状态图
图6是示出当指令块被映射、执行和引退时指派给指令块的多个状态的状态图600。例如,根据一个或多个执行标志,在指令的执行期间可以分配一个或多个状态。应当容易理解,图6所示的状态是所公开的技术的一个示例,但是在其他示例中,指令块可以具有附加的或更少的状态,并且具有与状态图600中描绘的状态不同的状态。在状态605处,指示块未被映射。指令块可以驻留在耦合到基于块的处理器的存储器中,被存储在诸如硬盘驱动器或闪存驱动器等计算机可读存储设备上,并且可以位于处理器本地或者位于远程服务器处并且使用计算机网络可访问。未被映射的指令也可以至少部分驻留在耦合到基于块的处理器的高速缓存存储器中。
在指令块映射状态610处,用于基于块的处理器的控制逻辑(诸如指令调度器)可以用于监测基于块的处理器的处理核资源,并且将指令块映射到一个或多个处理核。
控制单元可以将一个或多个指令块映射到处理器核和/或特定处理器核的指令窗口。在一些示例中,控制单元监测先前已经执行特定指令块的处理器核,并且可以重新使用仍然驻留在“预热”处理器核上的指令块的经译码的指令。一旦一个或多个指令块已经被映射到处理器核,指令块就可以行进到取指状态620。
当指令块处于取指状态620(例如,指令取回)时,被映射的处理器核从基于块的处理器的存储器系统取回计算机可读块指令,并且将它们加载到与特定处理器核相关联的存储器中。用于取回指令的入口位置是从指令块地址寄存器读取的。增量偏移被添加到索引地址,以便为指令块的头部和指令的附加字生成地址。被编码在头部中的大小字段用于指示指令块的总大小。在一些示例中,使用其他技术、例如存储特定图以指示指令块的结束。可以取回指令块的取回的指令并且将其存储在处理器核的指令高速缓存中。可以使用核互连将指令传送到处理器核。一旦指令块的至少一个指令被取回,指令块就可以进入指令译码状态630。
在指令译码状态630期间,取回的指令的各个比特被译码成可以由处理器核用来控制特定指令的执行的信号,包括指示存储器访问指令的相对顺序的标识符的生成。例如,经译码的指令可以存储在上文在图2中示出的存储器存储215或216之一中。译码包括生成经译码的指令的依存性、经译码的指令的操作数信息和经译码的指令的目标。一旦指令块的至少一个指令被译码,指令块就可以进行到执行状态640。
在执行状态640期间,使用例如以上关于图2讨论的功能单元260来执行与指令相关联的操作。如上所述,所执行的功能可以包括算术功能、逻辑功能、分支指令、存储器操作和寄存器操作。这些功能还包括为下一指令块生成指令块地址。下一指令块地址可以存储在加载/存储队列中,用于写入指令块地址寄存器。与处理器核相关联的控制逻辑监测指令块的执行,并且一旦确定指令块可以被提交,或者指令块将被中止,则指令块状态被设置为提交/中止650。在一些示例中,控制逻辑针对指令块使用写入掩码和/或存储掩码以确定执行是否已经足够进行以提交指令块。
在提交/中止状态650处,处理器核控制单元确定由指令块执行的操作能够被完成。例如存储器加载存储操作、寄存器读/写、分支指令(包括到指令块地址寄存器的相关联的写入)以及其他指令将根据指令块的控制流而被肯定地执行。备选地,如果指令块将被中止,例如,因为指令的一个或多个依存性不被满足,或者指令基于在指令块的未被满足的断言上被推测性地执行,则指令块要被中止,使得这不会影响存储器或寄存器文件中的指令序列的状态。无论指令块已经提交还是中止,指令块进入状态660以确定是否应当刷新该指令块。如果指令块被刷新,则处理器核通常使用新的数据值、特别是由该块的刚提交的执行所更新的寄存器和存储器来重新执行指令块,并且直接进行到执行状态640。因此,可以避免在映射、读取和译码指令块方面花费的时间和精力。备选地,如果指令块不需要被刷新,则指令块进入空闲状态670。
在空闲状态670中,执行指令块的处理器核可以通过如下来变为空闲:例如对处理器核内的硬件进行断电、同时维持指令块的经译码的指令的至少一部分。在某个时刻,控制单元确定680处理器核上的空闲指令块是否要被刷新。如果空闲指令块要被刷新,则指令块可以在执行状态640处恢复执行。备选地,如果指令块不需要被刷新,则指令块不被映射并且处理器核可以被刷新并且随后指令块可以被映射到经刷新的处理器核。
尽管状态图600为了便于解释示出了在单个处理器核上执行的指令块的状态,但是相关领域的普通技术人员应当容易理解,在某些示例中,多个处理器核可以用于同时执行给定指令块的多个实例。
IX.示例基于块的处理器和存储器配置
图7是示出包括基于块的处理器710的装置的图700,该装置包括控制单元720,控制单元720被配置为执行指令块,指令块包括用于包括存储器同步和存储器锁定在内的存储器操作的指令。控制单元720包括核调度器,核调度器调度指令流,包括:用于将核的分配和解除分配以用于执行指令处理;对任何核、寄存器文件、存储器接口和/或I/O接口之间的输入数据和输出数据的控制。控制单元720还包括用于执行某些存储器操作的专用寄存器。
图7所示的控制单元720包括标记为IBAR0至IBAR3的多个一个或多个指令块地址寄存器725。多个指令块地址寄存器725中的每个可以存储可以在处理器核730至737中的任何处理器核上执行的指令块入口点位置的存储器地址。在一些示例中,一个或多个指令块地址寄存器725可以通过向多个指定的虚拟存储器地址位置760发送加载/存储存储器请求来被读取和/或写入。处理器存储器接口被配置为将加载和存储捕获到指定的虚拟存储器地址位置以便允许访问一个或多个指令块寄存器。在一些示例中,虚拟存储器地址位置760只能在处理器在监督或其他特许执行模式下执行代码时被访问,但是当处理器处于用户或其他非特权执行模式时,虚拟存储器地址位置不能被访问。在一些示例中,如所示出的,用于计算和改变存储在指令块地址寄存器中的地址值的目标地址可以被存储在指令块地址表755中,指令块地址表755被存储在存储器740中的、与指令块750-754不同的位置处。在这样的示例中,被配置为处于特许操作模式的任何处理器核可以将用于入口点的存储器地址存储到指令块地址表755中的虚拟存储器地址,使得存储在指令块地址寄存器中的存储器地址被更改为存储到虚拟存储器地址的存储器地址。类似地,任何特许操作模式核可以从虚拟存储器地址读取入口点的存储器地址,使得能够从虚拟存储器地址读取存储在指令块地址寄存器中的存储器地址。
基于块的处理器710还包括被配置为取回并且执行指令块的一个或多个处理器核740-747。每个核包括指令译码器,指令译码器对指令操作码、扩展操作码和其他字段进行译码以确定指令是否指定目标操作数的可变数目和/或类型。所示出的基于块的处理器710具有多达八个处理器核740-747,但是在其他示例中,可以具有64、512、1024或其他数目的基于块的处理器核。基于块的处理器710耦合到存储器740和计算机可读存储介质盘770,存储器740包括多个指令块、包括指令块750-754,计算机可读存储介质盘770存储指令775,包括用于执行所公开的分支操作的基于块的处理器指令。
X.与基于块的处理器一起使用的示例源代码和汇编代码
图8示出了可以由基于块的处理器编译和执行的多个指令块的程序码的示例。示出了C语言源代码810的一小部分。C代码810包括多个符号,包括a、z和jump_table、if/else语句、for循环以及通过跳转表进行的调用。C代码810可以由用于基于块的处理器的合适编译器编译,以产生所示出的汇编代码820。
所示出的汇编代码820的部分包括多个标签:L0、L1、L2和L3,每个标签对应于指令块的开始。每个指令块具有一个或多个相关联的出口点:块L0具有用于分支偏移(BRO)指令4和5的出口点,块L1具有BRO指令2,块L2具有BRO指令4,块L3具有CALL指令5和BRO指令7。在与出口点相关联的分支指令的推测性或非推测性执行时,计算存储器地址并且将其存储在指令块地址寄存器中。例如,对于分支偏移(BRO)指令,存储在指令块地址寄存器中的当前值被加到编码在指令中的偏移值,并且存储在指令块地址寄存器中。可以通过在分支指令中对负偏移进行编码来使用负偏移。
因此,汇编代码820处于被映射到用于基于块的处理器的机器代码指令的状态。
XI.使用指令块地址寄存器的入口位置的示例生成
图9是示出在执行从上文关于图8讨论的汇编代码820生成的指令块910-913期间确定和使用指令块地址寄存器的图900。如图所示,当前正执行的指令块910被标记为L0并且具有入口点存储器地址位置0xa00000000。指令块的这个入口点位置(在这个示例中是指令块头部的第一字的存储器地址)存储在指令块地址寄存器IBAR0 920之一中。指令块910具有两个出口点:在真条件上断言的分支偏移指令3以及在假条件上断言的分支偏移指令4。该条件是变量a与立即值97的比较。一旦条件被评估并且出口点被确定,则编码在相应的分支指令中的偏移值与指令块地址寄存器的当前值组合并且被添加以形成下一地址930用于执行。在支持推测性执行的基于块的处理器中,在某些情况下可以在评估条件之前确定地址。
作为执行分支指令的一部分,基于块的处理器的控制单元可以将计算出的下一地址值930存储到指令块地址寄存器(IBAR0)中。图9中进一步示出了两个附加的指令块地址寄存器IBAR1 921和IBAR2922。这些附加的指令块地址寄存器可以用于推测性地取回、译码和执行指令块L2 912和指令块L3 913的指令。例如,可以使用分支预测单元来确定指令块L0 910的条件可能评估为假,并且因此分支指令4最可能被执行。因此可以计算指令块L2的入口点并且将其存储在IBAR1 921中,以支持指令块的较早取回、译码和执行。因此,指令块地址寄存器不使用固定大小的增量或减量来计算下一指令地址。一旦指令块已经被取回并且被译码,指令块内的指令可以以任何顺序执行,并且因此控制单元不直接访问指令块地址寄存器以便确定要执行的指令块内的个体指令的位置。由于被存储在指令块地址寄存器中的存储器地址不会随着指令块的执行而改变,所以基于块的处理器可以执行由指令块寄存器索引的指令块中的第一指令并且执行由指令块寄存器索引的指令块中的不同的第二指令,无需改变入口位置以执行第一指令和第二指令。
XII.使用指令块地址寄存器操作基于块的处理器的示例方法
图10是概述可以在所公开的技术的某些示例中执行的使用指令块地址寄存器来取回和译码指令块的示例方法的流程图1000。例如,以上关于图1和图2讨论的基于块的处理器可以用于执行所描绘的方法,但是也可以使用其他合适的基于块的处理器来实现该方法。
在处理框1010处,确定指令块的出口点。可以使用隐式改变指令块地址寄存器的任何合适的指令,例如:具有偏移(BRO)的分支、分支到由目标操作数(BR)指定的位置的分支、子例程调用指令(CALL)、用于从在基于块的处理器上执行的操作系统请求特殊服务的系统调用指令(SCALL)、子例程返回指令(RET)、带偏移的调用(CALLO)、暂停指令(HALT)、或改变用于执行指令块的入口点的任何其他合适的分支或跳转指令。在一些示例中,可以隐式确定指令块的一个或多个出口点。例如,按照惯例,如果一个指令块的所有其他出口点都没有被采用,则执行流可以默认执行存储器中位于随后的下一指令,或者默认执行返回指令。
在处理框1020处,计算针对在处理框1010处确定的出口点而确定的存储器地址,并且更新指令块地址寄存器以存储所计算的存储器地址值。例如,对于BR指令,使用输入操作数(ROP)作为目标地址,而对于BRO指令,将被编码在指令中的偏移值添加到指令块地址寄存器中的当前值。
在处理框1030处,读取被存储在指令块地址寄存器中的存储器地址,该存储器地址指示指令块的入口点。存储器地址指示指令块的入口点。存储器地址和指令块地址寄存器对包括该指令块的当前正执行的进程或线程是不可访问的。换言之,当前正执行的进程或线程不能通过例如使用处理器指令来访问指令块地址寄存器,来确定该指令块的地址。这在很多情况下是可取的,以便从用户进程隐藏当前正执行的指令块的存储位置。通过隐藏存储器地址,通过使得更加难以确定当前定位的指令块的存储器地址,以防止对指令块的代码进行恶意更改,这增强了处理器的安全性。
在处理框1040处,取回并且译码被存储在处理框1030处的指令块地址寄存器中的新的存储器地址指示的指令块的至少一部分。在一些示例中,指令块具有可变长度。被存储在指令块地址寄存器中的存储器地址在执行编码在指令块中的指令时不需要改变。因此,如果指令块相对较大,则可以取回和译码大量的指令,而无需执行大量的改变,并且避免了在指令块的执行期间的这种改变的相关联的开销。因此,每个指令块都作为单个事务分组,并且避免了与不断增加(或减少)的程序计数器相关联的开销,这与传统的RISC或CISC处理器中一样。因此,控制单元使得处理器(或多处理器版本中的当前进程或线程)的执行切换到由出口点指示的指令块。因此,指令块地址寄存器被更新,并且指令块头部和指令可以基于所确定的出口点而被取回、译码和执行。可以通过以下方式来执行分支:通过将被存储在指令块地址寄存器中的索引地址改变为由分支指令生成的结果值来执行被编码在指令块中的分支指令。因此,基于确定和出口点,处理器更新存储在指令块寄存器中的存储器地址,并且使得当前正执行的进程或线程的执行切换到由所确定的出口点指示的指令块。
XIII.示例计算环境
图11示出了所描述的实施例、技术和工艺(包括配置基于块的处理器)能够在其中被实现的适当计算环境1100的概括示例。例如,计算环境1100可以实现用于配置处理器以使用指令块地址寄存器执行所公开的操作的所公开的技术。
计算环境1100无意提出关于技术的使用或者功能的范围的任何限制,因为技术可以被实现在不同的通用或者专用计算环境中。例如,所公开的技术可以利用其他计算机系统配置被实现,包括手持式设备、多处理器系统、可编程消费者电子产品、网络PC、微型计算机、大型计算机,等等。所公开的技术还可以被实践在分布式计算环境中,其中任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块(包括用于基于块的指令块的可执行指令)可以被定位在本地存储器存储设备和远程存储器存储设备二者中。
参考图11,计算环境1100包括至少一个基于块的处理单元1110和存储器1120。在图11中,这个最基本配置1130被包括在虚线内。基于块的处理单元1110执行计算机可执行指令并且可以是真实处理器或者虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指以增加处理能力,并且如此多个处理器可以同时运行。存储器1120可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪速存储器等)、或者两者的组合。存储器1120存储可以例如实现在此所描述的技术的软件1180、图像和视频。计算环境可以具有附加的特征。例如,计算环境1100包括存储装置1140、一个或多个输入设备1150、一个或多个输出设备1160以及一个或多个通信连接1170。互连机制(未示出)(诸如总线、控制器或者网络)将计算环境1100的部件相互连接。通常,操作系统软件(未示出)提供用于在计算环境1100中执行的其他软件的操作环境,并且协调计算环境1100的部件的活动。
存储装置1140可以是可移除或者不可移除的,并且包括磁盘、磁带或者磁带盒、CD-ROM、CD-RW、DVD或者可以用于存储信息并且可以在计算环境1100内访问的任何其他介质。存储装置1140存储用于软件1180的指令、插入数据和消息,其可以用于实现在此所描述的技术。
(一个或多个)输入设备1150可以是触摸输入设备,诸如键盘、小键盘、鼠标、触屏显示器、笔或轨迹球、语音输入设备、扫描设备或者向计算环境1100提供输入的另一设备。对于音频而言,(一个或多个)输入设备1150可以是以模拟或者数字形式接受音频输入的声卡或者类似设备,或者向计算环境1100提供音频样本的CD-ROM读取器。(一个或多个)输出设备1160可以是显示器、打印机、扬声器、刻录机或者提供来自计算环境1100的输出的另一设备。
(一个或多个)通信连接1170实现通过通信介质(例如,连接网络)与另一计算实体的通信。通信介质传达诸如计算机可执行指令、压缩图形信息、视频或者调制数据信号中的其他数据的信息。(一个或多个)通信连接1170不限于有线连接(例如,兆比特或吉比特以太网、无限带宽、电气或光纤连接上的光纤信道),而且包括无线技术(例如,经由蓝牙、WiFi(IEEE 802.11a/b/n)、WiMax、蜂窝、卫星、激光、红外的RF连接)以及用于为所公开的方法提供网络连接的其他适合的通信连接。在虚拟主机环境中,(一个或多个)通信连接可以是由虚拟主机所提供的虚拟化网络连接。
可以使用实现计算云1190中的所公开的技术的全部或部分的计算机可执行指令执行所公开的方法的一些实施例。例如,所公开的编译器和/或基于块的处理器的服务器被定位在计算环境中,或者所公开的编译器可以在被定位在计算云1190中的服务器上执行。在一些示例中,所公开的编译器在传统的中央处理单元(例如,RISC或者CISC处理器)上执行。
计算机可读介质是可以在计算环境1100内访问的任何可用介质。以示例而非限制的方式,利用计算环境1100,计算机可读介质包括存储器1120和/或存储装置1140。如应当容易理解的,术语计算机可读存储介质包括用于数据存储的介质(诸如存储器1120和存储装置1140)而非传输介质(诸如调制数据信号)。
XIV.所公开的技术的附加示例
根据上文所讨论的示例在此讨论了所公开的主题的附加示例。
在所公开的技术的一些示例中,一种基于块的处理器包括:至少一个处理器核,被配置为利用多个执行单元取回并且执行指令块;以及包括至少一个指令块地址寄存器的控制单元,指令块地址寄存器对用于取回指令块的入口位置进行索引,指令块地址寄存器通过利用执行单元之一执行分支指令而被隐式写入,指令块地址寄存器从基于块的处理器的一个或多个操作模式是不可见的。在一些示例中,指令块能够具有可变大小。在一些示例中,指令块地址寄存器不通过指令块内的非分支指令的执行而被递增或递减。在一些示例中,指令块地址寄存器不存储要由至少一个处理器核执行的指令块内的指令的地址。
在一些示例中,处理器核被配置为执行由指令块寄存器索引的指令块中的第一指令,并且执行由指令块寄存器索引的指令块中的不同的第二指令,其中入口位置不改变以执行第一指令和第二指令。因此,可以在不改变被存储在指令块寄存器中的索引值的情况下执行指令块中的所有指令。在一些示例中,控制单元包括两个或更多的多个指令块地址寄存器,每个相应的指令块寄存器对用于利用基于块的处理器同时执行相应指令块的入口位置进行索引。在一些示例中,可以使用多个指令块地址寄存器来执行多处理器、多线程和/或推测操作。在一些示例中,控制单元包括多个指令块地址寄存器,一个或多个相应的指令块地址寄存器中的每一个对用于利用基于块的处理器推测性地执行相应指令块的入口位置进行索引。在一些示例中,基于块的处理器使用现场可编程门阵列、专用集成电路和/或集成电路来实现。在一些示例中,基于块的处理器由另一类型的处理器来模拟。
在所公开的技术的一些示例中,一种装置包括耦合到基于块的处理器的存储器,并且还包括:指令块地址寄存器,指令块地址寄存器存储到存储器的索引地址,该存储器存储指令块的多个指令,当处理器处于一个或多个非特权操作模式(例如,用户模式而不是管理或监督处理器操作模式)时,被索引的地址不可访问;一个或多个执行单元,被配置为执行指令块的指令;以及控制单元,被配置为基于被索引的地址,从存储器中取回并且译码多个指令中的两个或更多个指令。在一些示例中,指令块具有可变长度。在一些示例中,执行多个指令中的每一个而不改变存储在指令块地址寄存器中的索引地址。在一些示例中,控制单元还被配置为通过以下来执行被编码在指令块中的分支指令:将存储在指令块地址寄存器中的索引地址改变为由分支指令生成的结果值。在一些示例中,该装置或处理器包括附加的一个或多个指令块地址寄存器,这些指令块地址寄存器中的每一个针对要由处理器推测性地取回、译码和/或执行的相应指令块,存储到存储器的索引地址。
在所公开的技术的一些示例中,一种操作基于块的处理器(例如,EDGE ISA处理器)的方法包括:读取存储在指令块地址寄存器中的存储器地址,存储器地址指示用于指令的入口点,存储器地址和指令块地址寄存器对于基于块的处理器的、包括指令块的当前正执行的进程或线程是不可访问的;以及取回并且译码由存储器地址指示的指令块的至少一部分。在一些示例中,该方法包括执行编码在指令块中的两个或更多个指令而不改变存储在指令块地址寄存器中的存储器地址。在一些示例中,该方法包括确定指令块的出口点,并且基于确定,更新存储在指令块寄存器中的存储器地址,并且使得当前正执行的进程或线程的执行切换到由所确定的出口点指示的指令块。在一些示例中,取回和译码部分基于为指令块编码的大小字段。在一些示例中,当处理器正在执行的进程或线程处于特权操作模式时,指令块地址寄存器可访问。在一些示例中,当处理器被配置为处于特权操作模式时,该方法还包括将针对入口点的存储器地址存储到虚拟存储器地址,该存储使得存储在指令块地址寄存器中的存储器地址改变为被存储到虚拟存储器地址的存储器地址。在一些示例中,当处理器被配置为处于特许操作模式时,该方法包括从虚拟存储器地址读取针对入口点的存储器地址,该读取使得存储在指令块地址寄存器中的存储器地址从虚拟存储器地址中被读取。
在一些示例中,该方法和处理器使用分支指令来改变存储在指令块地址寄存器中的值。在一些示例中,其他指令可以写入指令块地址寄存器。例如,当处理器处于特权(例如,管理或监督)模式时,正常的寄存器写入指令(例如,以寄存器为目标的添加、减去、移动或者其他指令)可以针对一个或多个指令块地址寄存器。在一些示例中,提供了用于读取或写入指令块地址寄存器的专用指令,这些专用指令可以以特权模式执行,但是以非特权(例如,用户)模式执行。
鉴于所公开的主题的原理可以应用的许多可能实施例,应当认识到所图示的实施例仅是优选的示例并且不应该当作将权利要求的范围限于那些优选的示例。相反,要求保护的主题的范围由所附的权利要求进行限定。我们因此根据我们的发明要求保护落在这些权利要求的范围内的全部内容。
Claims (15)
1.一种基于块的处理器,包括:
至少一个处理器核,被配置为利用多个执行单元取回并且执行指令块;以及
包括至少一个指令块地址寄存器的控制单元,所述指令块地址寄存器对用于取回指令块的入口位置进行索引,所述指令块地址寄存器通过利用所述执行单元之一执行分支指令而被隐式写入,所述指令块地址寄存器从所述基于块的处理器的一个或多个操作模式不可见。
2.根据权利要求1所述的处理器,其中所述指令块能够具有可变大小。
3.根据权利要求1或权利要求2所述的处理器,其中所述指令块地址寄存器不通过所述指令块内的非分支指令的执行而被递增或递减。
4.根据权利要求1至3中任一项所述的处理器,其中所述处理器核被配置为:
执行由所述指令块寄存器索引的所述指令块中的第一指令;以及执行由所述指令块寄存器索引的所述指令块中的不同的第二指令,其中所述入口位置不改变以执行所述第一指令和所述第二指令。
5.根据权利要求1至4中任一项所述的处理器,其中所述控制单元包括多个指令块地址寄存器,每个相应的指令块寄存器对用于利用所述基于块的处理器同时执行相应指令块的入口位置进行索引。
6.根据权利要求1至4中任一项所述的处理器,其中所述控制单元包括多个指令块地址寄存器,一个或多个相应的指令块地址寄存器中的每一个对用于利用所述基于块的处理器推测性地执行相应指令块的入口位置进行索引。
7.一种包括耦合到基于块的处理器的存储器的装置,所述装置包括:
指令块地址寄存器,存储到所述存储器的索引地址,所述存储器存储指令块的多个指令,当所述处理器处于一个或多个非特权操作模式时,被索引的地址不可访问;
一个或多个执行单元,被配置为执行所述指令块的指令;以及
控制单元,被配置为基于被索引的地址,从所述存储器中取回并且译码所述多个指令中的两个或更多个指令。
8.根据权利要求7所述的装置,其中所述控制单元还被配置为通过以下来执行被编码在所述指令块中的分支指令:将存储在所述指令块地址寄存器中的所述索引地址改变为由所述分支指令生成的结果值。
9.根据权利要求7所述的装置,还包括附加的一个或多个指令块地址寄存器,所述指令块地址寄存器中的每一个针对要由所述处理器推测性地取回、译码和/或执行的相应指令块,存储到所述存储器的索引地址。
10.一种操作基于块的处理器的方法,所述方法包括:
读取存储在指令块地址寄存器中的存储器地址,所述存储器地址指示用于指令块的入口点,所述存储器地址和所述指令块地址寄存器对于所述基于块的处理器的、包括所述指令块的当前正执行的进程或线程是不可访问的;以及
取回并且译码由所述存储器地址指示的所述指令块的至少一部分。
11.根据权利要求10所述的方法,还包括执行编码在所述指令块中的两个或更多个指令而不改变存储在所述指令块地址寄存器中的所述存储器地址。
12.根据权利要求10或权利要求11所述的方法,还包括:
确定指令块的出口点;以及
基于所述确定,更新存储在所述指令块寄存器中的所述存储器地址并且使得所述当前正执行的进程或线程的执行切换到由所确定的所述出口点指示的指令块。
13.根据权利要求10至12中任一项所述的方法,其中所述取回和所述译码部分地基于为所述指令块编码的大小字段。
14.根据权利要求10至13中任一项所述的方法,还包括当所述处理器被配置为处于特权操作模式时:
将针对所述入口点的所述存储器地址存储到虚拟存储器地址,所述存储使得存储在所述指令块地址寄存器中的所述存储器地址改变为被存储到所述虚拟存储器地址的存储器地址。
15.根据权利要求10至13中任一项所述的方法,还包括当所述处理器被配置为处于特权操作模式时:
从虚拟存储器地址读取针对所述入口点的所述存储器地址,所述读取使得存储在所述指令块地址寄存器中的所述存储器地址从所述虚拟存储器地址中被读取。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562221003P | 2015-09-19 | 2015-09-19 | |
US62/221,003 | 2015-09-19 | ||
US15/060,483 | 2016-03-03 | ||
US15/060,483 US10095519B2 (en) | 2015-09-19 | 2016-03-03 | Instruction block address register |
PCT/US2016/051415 WO2017048654A1 (en) | 2015-09-19 | 2016-09-13 | Instruction block address register |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108027768A true CN108027768A (zh) | 2018-05-11 |
Family
ID=66000900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680054457.8A Withdrawn CN108027768A (zh) | 2015-09-19 | 2016-09-13 | 指令块地址寄存器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10095519B2 (zh) |
EP (1) | EP3350707A1 (zh) |
CN (1) | CN108027768A (zh) |
WO (1) | WO2017048654A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111398786A (zh) * | 2020-04-02 | 2020-07-10 | 上海燧原科技有限公司 | 切换控制电路、片上系统芯片、芯片测试系统及方法 |
CN112162939A (zh) * | 2020-10-29 | 2021-01-01 | 上海兆芯集成电路有限公司 | 进阶主机控制器及其控制方法 |
CN113157631A (zh) * | 2020-01-22 | 2021-07-23 | 瑞昱半导体股份有限公司 | 处理器电路以及数据处理方法 |
WO2023283895A1 (zh) * | 2021-07-15 | 2023-01-19 | 华为技术有限公司 | 处理器和指令处理方法 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US20180157492A1 (en) * | 2016-12-01 | 2018-06-07 | Centipede Semi Ltd. | Memory access control for parallelized processing |
US10621342B2 (en) * | 2017-11-02 | 2020-04-14 | Microsoft Technology Licensing, Llc | Speculative side channel attack mitigation using uncacheable memory |
US11100007B2 (en) * | 2019-05-28 | 2021-08-24 | Micron Technology, Inc. | Memory management unit (MMU) for accessing borrowed memory |
US11334387B2 (en) | 2019-05-28 | 2022-05-17 | Micron Technology, Inc. | Throttle memory as a service based on connectivity bandwidth |
US11438414B2 (en) | 2019-05-28 | 2022-09-06 | Micron Technology, Inc. | Inter operating system memory services over communication network connections |
GB2589895B (en) | 2019-12-11 | 2022-03-16 | Advanced Risc Mach Ltd | Intermodal calling branch instruction |
US11836493B2 (en) * | 2022-02-10 | 2023-12-05 | International Business Machines Corporation | Memory access operations for large graph analytics |
Family Cites Families (104)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0583089B1 (en) | 1992-08-12 | 2000-01-26 | Advanced Micro Devices, Inc. | Instruction decoder |
US5666506A (en) | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5790822A (en) | 1996-03-21 | 1998-08-04 | Intel Corporation | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor |
US5920724A (en) | 1996-03-28 | 1999-07-06 | Intel Corporation | Software pipelining a hyperblock loop |
US5796997A (en) | 1996-05-15 | 1998-08-18 | Hewlett-Packard Company | Fast nullify system and method for transforming a nullify function into a select function |
US5845103A (en) | 1997-06-13 | 1998-12-01 | Wisconsin Alumni Research Foundation | Computer with dynamic instruction reuse |
US6044222A (en) | 1997-06-23 | 2000-03-28 | International Business Machines Corporation | System, method, and program product for loop instruction scheduling hardware lookahead |
US5943501A (en) | 1997-06-27 | 1999-08-24 | Wisconsin Alumni Research Foundation | Multiple processor, distributed memory computer with out-of-order processing |
US5930158A (en) | 1997-07-02 | 1999-07-27 | Creative Technology, Ltd | Processor with instruction set for audio effects |
US6182210B1 (en) | 1997-12-16 | 2001-01-30 | Intel Corporation | Processor having multiple program counters and trace buffers outside an execution pipeline |
US6164841A (en) | 1998-05-04 | 2000-12-26 | Hewlett-Packard Company | Method, apparatus, and product for dynamic software code translation system |
US6988183B1 (en) | 1998-06-26 | 2006-01-17 | Derek Chi-Lan Wong | Methods for increasing instruction-level parallelism in microprocessors and digital system |
EP0992894A1 (en) | 1998-10-06 | 2000-04-12 | Texas Instruments Inc. | Apparatus and method for loop execution |
JP3565314B2 (ja) | 1998-12-17 | 2004-09-15 | 富士通株式会社 | 分岐命令実行制御装置 |
GB2348305A (en) | 1999-03-24 | 2000-09-27 | Int Computers Ltd | Instruction execution mechanism |
US6513109B1 (en) | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
US6732203B2 (en) | 2000-01-31 | 2004-05-04 | Intel Corporation | Selectively multiplexing memory coupling global bus data bits to narrower functional unit coupling local bus |
US6732260B1 (en) * | 2000-03-06 | 2004-05-04 | Intel Corporation | Presbyopic branch target prefetch method and apparatus |
US6918032B1 (en) | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
US7032217B2 (en) | 2001-03-26 | 2006-04-18 | Intel Corporation | Method and system for collaborative profiling for continuous detection of profile phase transitions |
AU2002363142A1 (en) | 2001-10-31 | 2003-05-12 | Doug Burger | A scalable processing architecture |
EP1313012A1 (en) | 2001-11-15 | 2003-05-21 | Texas Instruments France | Java DSP acceleration by byte-code optimization |
JP2005522773A (ja) | 2002-04-08 | 2005-07-28 | ユニバーシティー・オブ・テキサス・システム | 非均等型キャッシュ装置、システム及び方法 |
WO2004001584A2 (en) | 2002-06-24 | 2003-12-31 | Ante Vista Gmbh | A method for executing structured symbolic machine code on a microprocessor |
JP3804941B2 (ja) | 2002-06-28 | 2006-08-02 | 富士通株式会社 | 命令フェッチ制御装置 |
US7299458B2 (en) | 2002-10-31 | 2007-11-20 | Src Computers, Inc. | System and method for converting control flow graph representations to control-dataflow graph representations |
US7210127B1 (en) | 2003-04-03 | 2007-04-24 | Sun Microsystems | Methods and apparatus for executing instructions in parallel |
US7500087B2 (en) * | 2004-03-09 | 2009-03-03 | Intel Corporation | Synchronization of parallel processes using speculative execution of synchronization instructions |
EP1731998A1 (en) | 2004-03-29 | 2006-12-13 | Kyoto University | Data processing device, data processing program, and recording medium containing the data processing program |
US7334143B2 (en) | 2004-04-19 | 2008-02-19 | Hewlett-Packard Development Company, L.P. | Computer power conservation apparatus and method that enables less speculative execution during light processor load based on a branch confidence threshold value |
US7747992B2 (en) | 2004-08-23 | 2010-06-29 | Intel Corporation | Methods and apparatus for creating software basic block layouts |
US7552318B2 (en) | 2004-12-17 | 2009-06-23 | International Business Machines Corporation | Branch lookahead prefetch for microprocessors |
US7380038B2 (en) | 2005-02-04 | 2008-05-27 | Microsoft Corporation | Priority registers for biasing access to shared resources |
US7853777B2 (en) | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US7447882B2 (en) * | 2005-04-20 | 2008-11-04 | Arm Limited | Context switching within a data processing system having a branch prediction mechanism |
US7779213B2 (en) | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US7475225B2 (en) | 2005-12-30 | 2009-01-06 | Intel Corporation | Method and apparatus for microarchitecture partitioning of execution clusters |
US8510596B1 (en) | 2006-02-09 | 2013-08-13 | Virsec Systems, Inc. | System and methods for run time detection and correction of memory corruption |
US7350027B2 (en) | 2006-02-10 | 2008-03-25 | International Business Machines Corporation | Architectural support for thread level speculative execution |
US8327115B2 (en) | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
JP4849606B2 (ja) | 2006-04-28 | 2012-01-11 | 株式会社日立製作所 | 制御フロー誤り検出方法、データ処理装置、及びコンパイラ |
US7958396B2 (en) | 2006-05-19 | 2011-06-07 | Microsoft Corporation | Watchdog processors in multicore systems |
EP2527972A3 (en) | 2006-11-14 | 2014-08-06 | Soft Machines, Inc. | Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes |
US8291400B1 (en) | 2007-02-07 | 2012-10-16 | Tilera Corporation | Communication scheduling for parallel processing architectures |
JP4339371B2 (ja) | 2007-03-22 | 2009-10-07 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置および情報処理方法 |
US8447911B2 (en) | 2007-07-05 | 2013-05-21 | Board Of Regents, University Of Texas System | Unordered load/store queue |
US8180997B2 (en) | 2007-07-05 | 2012-05-15 | Board Of Regents, University Of Texas System | Dynamically composing processor cores to form logical processors |
CN101344843B (zh) | 2007-07-10 | 2012-11-21 | 北京简约纳电子有限公司 | 一种指令级并行处理方法 |
JP2009026106A (ja) | 2007-07-20 | 2009-02-05 | Oki Electric Ind Co Ltd | 命令コード圧縮方法と命令フェッチ回路 |
US8006070B2 (en) | 2007-12-05 | 2011-08-23 | International Business Machines Corporation | Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system |
US8321850B2 (en) | 2008-06-06 | 2012-11-27 | Vmware, Inc. | Sharing and persisting code caches |
US8127119B2 (en) | 2008-12-05 | 2012-02-28 | The Board Of Regents Of The University Of Texas System | Control-flow prediction using multiple independent predictors |
US20100146209A1 (en) | 2008-12-05 | 2010-06-10 | Intellectual Ventures Management, Llc | Method and apparatus for combining independent data caches |
US8214831B2 (en) | 2009-05-05 | 2012-07-03 | International Business Machines Corporation | Runtime dependence-aware scheduling using assist thread |
US20100325395A1 (en) | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
US8433885B2 (en) | 2009-09-09 | 2013-04-30 | Board Of Regents Of The University Of Texas System | Method, system and computer-accessible medium for providing a distributed predicate prediction |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
US20110078424A1 (en) | 2009-09-30 | 2011-03-31 | International Business Machines Corporation | Optimizing program code using branch elimination |
US8464002B2 (en) | 2009-10-14 | 2013-06-11 | Board Of Regents Of The University Of Texas System | Burst-based cache dead block prediction |
WO2011067896A1 (en) | 2009-12-02 | 2011-06-09 | Mush-A Co., Ltd. | Data processing apparatus, data processing system, packet, recording medium, storage device, and data processing method |
JP5057256B2 (ja) | 2009-12-02 | 2012-10-24 | 株式会社Mush−A | データ処理装置、データ処理システムおよびデータ処理方法 |
EP2519876A1 (en) | 2009-12-28 | 2012-11-07 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
GB201001621D0 (en) | 2010-02-01 | 2010-03-17 | Univ Catholique Louvain | A tile-based processor architecture model for high efficiency embedded homogenous multicore platforms |
US8667260B2 (en) | 2010-03-05 | 2014-03-04 | International Business Machines Corporation | Building approximate data dependences with a moving window |
JP2011209904A (ja) | 2010-03-29 | 2011-10-20 | Sony Corp | 命令フェッチ装置、および、プロセッサ |
US8201024B2 (en) | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
US9021241B2 (en) | 2010-06-18 | 2015-04-28 | The Board Of Regents Of The University Of Texas System | Combined branch target and predicate prediction for instruction blocks |
US10241799B2 (en) | 2010-07-16 | 2019-03-26 | Qualcomm Incorporated | Out-of-order command execution with sliding windows to maintain completion statuses |
US9052890B2 (en) | 2010-09-25 | 2015-06-09 | Intel Corporation | Execute at commit state update instructions, apparatus, methods, and systems |
US8904115B2 (en) | 2010-09-28 | 2014-12-02 | Texas Instruments Incorporated | Cache with multiple access pipelines |
US9836304B2 (en) | 2010-11-15 | 2017-12-05 | Advanced Micro Devices, Inc. | Cumulative confidence fetch throttling |
US8612726B2 (en) | 2010-12-07 | 2013-12-17 | King Fahd University Of Petroleum And Minerals | Multi-cycle programmable processor with FSM implemented controller selectively altering functional units datapaths based on instruction type |
US9164772B2 (en) | 2011-02-04 | 2015-10-20 | Qualcomm Incorporated | Hybrid queue for storing instructions from fetch queue directly in out-of-order queue or temporarily in in-order queue until space is available |
WO2012136766A1 (en) | 2011-04-06 | 2012-10-11 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-core processors |
US20130024676A1 (en) | 2011-07-19 | 2013-01-24 | Glew Andrew F | Control flow integrity |
CN102306094B (zh) | 2011-08-16 | 2014-03-26 | 北京北大众志微系统科技有限责任公司 | 实现现代处理器间接转移预测的装置及方法 |
WO2013081556A1 (en) | 2011-12-01 | 2013-06-06 | National University Of Singapore | Polymorphic heterogeneous multi-core architecture |
WO2013095401A1 (en) | 2011-12-20 | 2013-06-27 | Intel Corporation | System and method for out-of-order prefetch instructions in an in-order pipeline |
US9304776B2 (en) | 2012-01-31 | 2016-04-05 | Oracle International Corporation | System and method for mitigating the impact of branch misprediction when exiting spin loops |
US9348775B2 (en) | 2012-03-16 | 2016-05-24 | Analog Devices, Inc. | Out-of-order execution of bus transactions |
WO2013156825A1 (en) | 2012-04-20 | 2013-10-24 | Freescale Semiconductor, Inc. | A computer system and a method for generating an optimized program code |
GB2505884B (en) * | 2012-09-12 | 2015-06-03 | Imagination Tech Ltd | Dynamically resizable circular buffers |
US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9710276B2 (en) | 2012-11-09 | 2017-07-18 | Advanced Micro Devices, Inc. | Execution of instruction loops using an instruction buffer |
US9619229B2 (en) | 2012-12-27 | 2017-04-11 | Intel Corporation | Collapsing of multiple nested loops, methods and instructions |
US10223124B2 (en) | 2013-01-11 | 2019-03-05 | Advanced Micro Devices, Inc. | Thread selection at a processor based on branch prediction confidence |
US9354884B2 (en) | 2013-03-13 | 2016-05-31 | International Business Machines Corporation | Processor with hybrid pipeline capable of operating in out-of-order and in-order modes |
US9880842B2 (en) | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
US9886277B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
WO2014189510A1 (en) | 2013-05-23 | 2014-11-27 | Intel Corporation | Techniques for detecting return-oriented programming |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
GB2515076B (en) | 2013-06-13 | 2020-07-15 | Advanced Risc Mach Ltd | A data processing apparatus and method for handling retrieval of instructions from an instruction cache |
US9547496B2 (en) | 2013-11-07 | 2017-01-17 | Microsoft Technology Licensing, Llc | Energy efficient multi-modal instruction issue |
US9569613B2 (en) | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US20160378488A1 (en) | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Access to target address |
US20160378491A1 (en) | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Determination of target location for transfer of processor control |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US20170083343A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Out of order commit |
-
2016
- 2016-03-03 US US15/060,483 patent/US10095519B2/en not_active Expired - Fee Related
- 2016-09-13 WO PCT/US2016/051415 patent/WO2017048654A1/en active Application Filing
- 2016-09-13 CN CN201680054457.8A patent/CN108027768A/zh not_active Withdrawn
- 2016-09-13 EP EP16775377.1A patent/EP3350707A1/en not_active Withdrawn
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157631A (zh) * | 2020-01-22 | 2021-07-23 | 瑞昱半导体股份有限公司 | 处理器电路以及数据处理方法 |
CN111398786A (zh) * | 2020-04-02 | 2020-07-10 | 上海燧原科技有限公司 | 切换控制电路、片上系统芯片、芯片测试系统及方法 |
CN112162939A (zh) * | 2020-10-29 | 2021-01-01 | 上海兆芯集成电路有限公司 | 进阶主机控制器及其控制方法 |
CN112162939B (zh) * | 2020-10-29 | 2022-11-29 | 上海兆芯集成电路有限公司 | 进阶主机控制器及其控制方法 |
WO2023283895A1 (zh) * | 2021-07-15 | 2023-01-19 | 华为技术有限公司 | 处理器和指令处理方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017048654A1 (en) | 2017-03-23 |
US20170083340A1 (en) | 2017-03-23 |
EP3350707A1 (en) | 2018-07-25 |
US10095519B2 (en) | 2018-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108027768A (zh) | 指令块地址寄存器 | |
CN108027767A (zh) | 寄存器读取/写入排序 | |
CN108027770A (zh) | 用于数据流isa的密集读取编码 | |
CN108139913A (zh) | 处理器操作的配置模式 | |
CN108027769A (zh) | 使用寄存器访问指令发起指令块执行 | |
CN107810479A (zh) | 用于处理器控制传送的目标位置的确定 | |
CN108027750A (zh) | 乱序提交 | |
CN109074260A (zh) | 乱序的基于块的处理器和指令调度器 | |
CN108027731A (zh) | 针对基于块的处理器的调试支持 | |
CN108027729A (zh) | 分段式指令块 | |
CN108027773A (zh) | 存储器访问指令顺序编码的生成和使用 | |
CN107810480A (zh) | 根据性能度量的指令块分配 | |
CN108027730A (zh) | 写入无效 | |
CN108027771A (zh) | 基于块的处理器核复合寄存器 | |
CN108027766A (zh) | 预取指令块 | |
CN108027732A (zh) | 与断言的加载指令相关联的预取 | |
CN108027772A (zh) | 用于逻辑处理器的不同的系统寄存器 | |
CN107810483A (zh) | 验证基于块的处理器中的跳转目标 | |
CN108027807A (zh) | 基于块的处理器核拓扑寄存器 | |
US20170083320A1 (en) | Predicated read instructions | |
CN108027734A (zh) | 空指令的动态生成 | |
CN110249302A (zh) | 在处理器核上同时执行多个程序 | |
CN108027778A (zh) | 与断言的存储指令相关联的预取 | |
CN108027733A (zh) | 在目标字段中存储无效 | |
CN109564508A (zh) | 处理器的事务寄存器文件 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180511 |