CN108027771B - 基于块的处理器核复合寄存器 - Google Patents
基于块的处理器核复合寄存器 Download PDFInfo
- Publication number
- CN108027771B CN108027771B CN201680054472.2A CN201680054472A CN108027771B CN 108027771 B CN108027771 B CN 108027771B CN 201680054472 A CN201680054472 A CN 201680054472A CN 108027771 B CN108027771 B CN 108027771B
- Authority
- CN
- China
- Prior art keywords
- processor
- core
- instruction
- cores
- 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.)
- Active
Links
- 239000000203 mixture Substances 0.000 title claims abstract description 80
- 238000000034 method Methods 0.000 claims abstract description 67
- 238000013507 mapping Methods 0.000 claims description 16
- 238000005516 engineering process Methods 0.000 abstract description 38
- 238000004891 communication Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 18
- 239000000872 buffer Substances 0.000 description 17
- 239000002131 composite material Substances 0.000 description 15
- 238000003860 storage Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 238000007726 management method Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 230000001976 improved effect Effects 0.000 description 8
- 230000007704 transition Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000008685 targeting Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000013329 compounding Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 238000011010 flushing procedure Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 101150004219 MCR1 gene Proteins 0.000 description 1
- 101100206347 Schizosaccharomyces pombe (strain 972 / ATCC 24843) pmh1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000001193 catalytic steam reforming Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003863 physical function Effects 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000005381 potential energy Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008093 supporting effect Effects 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
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/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
- 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/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/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/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
-
- 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
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/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
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/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/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- 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/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
-
- 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)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
Abstract
公开了与基于块的处理器核复合寄存器相关的系统、装置和方法。在所公开的技术的一个示例中,处理器可以包括多个基于块的处理器核,多个基于块的处理器核用于执行包括多个指令块的程序。相应的基于块的处理器核可以包括一个或多个可共享资源和可编程复合控制寄存器。可编程复合控制寄存器可以用于配置一个或多个可共享资源中的哪些资源与多个处理器核中的其他处理器核共享。
Description
背景技术
由于摩尔定律所预测的持续的晶体管扩展,微处理器已经从晶体管数的持续增加、集成电路成本、制造资本、时钟频率、以及能量效率中收益,而相关的处理器指令集架构(ISA)却很小变化。然而,从在过去40年里驱动半导体工业的光刻扩展实现的益处正在放缓或者甚至反转。精简指令集计算(RISC)架构已经成为处理器设计中的主导典范很多年。乱序超标量实现尚未在面积或性能方面展现出持续改进。因此,存在对于扩展性能改进的处理器ISA改进的足够机会。
发明内容
公开了用于将处理器核的一个或多个资源组成为较大的逻辑处理核的方法、装置和计算机可读存储设备。处理器核实现了基于块的处理器指令集架构(BB-ISA)。所描述的技术和工具能够潜在地改进处理器性能,并且可以彼此分离地被实现,或者彼此各种组合被实现。如下面将更充分地描述的,所描述的技术和工具可以被实现在以下各项中:数字信号处理器、微处理器、专用集成电路(ASIC)、软处理器(例如,使用可重新配置逻辑被实现在现场可编程门阵列(FPGA)中的微处理器核)、可编程逻辑、或者其他适合的逻辑电路。如对于本领域的普通技术人员而言将容易地明显的,所公开的技术可以被实现在各种计算平台中,包括但不限于服务器、大型机、手机、智能电话、PDA、手持式设备、手持式计算机、触摸屏平板设备、平板计算机、可穿戴计算机、以及膝上型计算机。
在所公开的技术的一些示例中,处理器可以包括用于执行包括多个指令块的程序的多个基于块的处理器核。相应的基于块的处理器核可以包括可编程复合控制寄存器和一个或多个可共享资源。可编程复合控制寄存器可以用于配置一个或多个可共享资源中的哪些资源与多个处理器核中的其他处理器核共享。
提供本发明内容以引入以在具体实施方式中下面进一步描述的简化形式的概念的选择。本发明内容不旨在标识要求保护的主题的关键特征或基本特征,其也不旨在用于限制要求保护的主题的范围。所公开的主题的前述和其他目标、特征以及优点将从参考附图进行的以下具体实施方式变得更加明显。
附图说明
图1图示了如可以在所公开的技术的一些示例中使用的包括多个处理器核的基于块的处理器。
图2图示了如可以在所公开的技术的一些示例中使用的基于块的处理器核。
图3图示了根据所公开的技术的某些示例的多个指令块。
图4图示了源代码和相应的指令块的部分。
图5图示了如可以在所公开的技术的一些示例中使用的基于块的处理器头部和指令。
图6是图示基于块的处理器中的处理器核的状态的进展的示例的流程图。
图7是图示包括具有多个基于块的处理器核的处理器的示例系统的示图。
图8是图示包括可共享和不可共享资源的基于块的处理器核的示例的示图。
图9是图示基于块的处理器核的示例控制寄存器的示图。
图10至图12图示了被配置为使得资源在物理处理器核之间共享的多核处理器的示例。
图13和14是图示如可以在所公开的技术的一些示例中执行的对处理器编程以使用逻辑处理器和/或逻辑资源来执行线程的示例方法的流程图。
图15至17是图示如可以在所公开的技术的一些示例中使用的在逻辑处理器和/或逻辑资源上配置和/或执行程序的线程的示例方法的流程图。
图18是图示用于实现所公开的技术的一些实施例的适合的计算环境的块图。
具体实施方式
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的存储器管理单元(MMU)。
I/O接口145包括用于将输入信号和输出信号接收并且发送到其他部件的电路,诸如硬件中断、系统控制信号、外围接口、协处理器控制和/或数据信号(例如,用于图形处理单元、浮点协处理器、物理处理单元、数字信号处理器或者其他协处理部件的信号)、时钟信号、信号量或者其他适合的I/O信号。I/O信号可以是同步的或者异步的。在一些示例中,I/O接口的全部或部分结合存储器接口140使用存储器映射的I/O技术被实现。
基于块的处理器100还可以包括控制单元160。控制单元可以经由核互连120或边带互连(未示出)与处理核110、I/O接口145和存储器接口140通信。控制单元160监督处理器100的操作。可以由控制单元160执行的操作可以包括对核的分配和去分配以用于执行指令处理;对任何核、寄存器文件、存储器接口140和/或I/O接口145中之间的输入数据和输出数据的控制;对执行流的修改;以及验证控制流中的分支指令、指令头部和其他改变的(一个或多个)目标位置。控制单元160还可以处理硬件中断,并且控制特殊系统寄存器(例如,被存储在一个或多个寄存器文件中的程序计数器)的读取和写入。在所公开的技术的一些示例中,控制单元160至少部分地使用处理器核110中的一个或多个核被实现,而在其他示例中,控制单元160使用非基于块的处理器核(例如,耦合到存储器的通用RISC处理核)被实现。在一些示例中,控制单元160至少部分地使用以下各项中的一项或多项被实现:硬连线有限状态机、可编程微代码、可编程门阵列或者其他适合的控制电路。在备选示例中,可以由核110中的一个或多个核来执行控制单元功能。
控制单元160包括用于将指令块分配到处理器核110的调度器。如在此所使用的,调度器分配涉及用于引导指令块的操作的硬件,包括发起指令块映射、取指、译码、执行、提交、中止、空闲以及刷新指令块。在一些示例中,硬件接收使用计算机可执行指令所生成的信号,以引导指令调度器的操作。处理器核110在指令块映射期间被指派到指令块。指令操作的叙述阶段出于说明性目的,并且在所公开的技术的一些示例中,某些操作可以被组合、被省略、被分离为多个操作,或者被添加附加操作。
基于块的处理器100还包括时钟发生器170,其将一个或多个时钟信号分布到处理器内的各种部件(例如,核110、互连120、存储器接口140和I/O接口145)。在所公开的技术的一些示例中,所有部件共享共同时钟,而在其他示例中,不同的部件使用不同的时钟(例如,具有不同的时钟频率的时钟信号)。在一些示例中,时钟的一部分被选通以在处理器部件中的一些部件未被使用时允许功率节省。在一些示例中,时钟信号使用锁相环(PLL)被生成以生成具有固定的恒定频率和占空比的信号。接收时钟信号的电路可以在单个边沿(例如,上升沿)上被触发,而在其他示例中,接收电路中的至少一些电路通过上升和下降时钟沿而被触发。在一些示例中,时钟信号可以光学地或无线地被传输。
IV.示例的基于块的处理器核
图2是如可以在所公开的技术的某些示例中使用的进一步详述用于基于块的处理器100(并且特别地,基于块的处理器核之一的实例(处理器核111))的示例微架构的块图200。为了便于解释,示例性的基于块的处理器核111被图示有五个阶段:指令取指(IF)、译码(DC)、操作数取回、执行(EX)以及存储器/数据访问(LS)。然而,本领域的普通技术人员将容易地理解到,对所图示的微架构的修改(诸如添加/移除阶段、添加/移除执行操作的单元、以及其他实现细节)可以被修改为适合用于基于块的处理器的特定应用。
在所公开的技术的一些示例中,处理器核111可以用于执行和提交程序的指令块。指令块是包括指令块头部和多个指令的基于块的处理器指令的原子集合。如将在下面进一步讨论的,指令块头部可以包括描述指令块的执行模式的信息和可以用于进一步限定指令块中的多个指令中的一个或多个指令的语义的信息。取决于所使用的特定ISA和处理器硬件,还可以在指令的执行期间使用指令块头部,以通过例如允许指令和/或数据的提前取指、改进的分支预测、推测执行、改进的能量效率和改进的码紧凑性来提高执行指令块的性能。
指令块的指令可以是显式地编码指令块的生产者-消费者指令之间的关系的数据流指令。特别地,指令可以通过仅为目标指令保留的操作数缓冲器而直接将结果传达给目标指令。存储在操作数缓冲器中的中间结果通常对于在执行核外部的核不可见,因为块原子执行模型仅在指令块之间传递最终结果。当指令块被提交时,由执行原子指令块的指令而导致的最终结果在执行核外部变为可见。因此,由每个指令块生成的可见架构状态可以表现为在执行核外部的单个事务,并且中间结果通常在执行核外部不可观察。
如图2所示,处理器核111包括控制单元205,控制单元205可以从其他核接收控制信号,并且生成控制信号以调节核操作并且使用指令调度器206调度核内的指令流。控制单元205可以包括用于检查核状态和/或配置处理器核111的操作模式的状态访问逻辑207。控制单元205可以包括用于在处理器核111的一个或多个操作模式期间生成控制信号的执行控制逻辑208。可以由控制单元205和/或指令调度器206执行的操作可以包括对核的分配和去分配以用于执行指令处理;在任意核、寄存器文件、存储器接口140和/或I/O接口145之间的输入数据和输出数据的控制。控制单元205还可以处理硬件中断,并且控制特殊系统寄存器(例如存储在一个或多个寄存器文件中的程序计数器)的读取和写入。在所公开的技术的其他示例中,控制单元205和/或指令调度器206使用非基于块的处理核(例如,耦合到存储器的通用RISC处理核)被实现。在一些示例中,控制单元205、指令调度器206、状态访问逻辑207和/或执行控制逻辑208至少部分使用以下中的一个或多个被实现:硬连线有限状态机、可编程微码、可编程门阵列或其他合适的控制电路。
控制单元205可以译码指令块头部以获得关于指令块的信息。例如,指令块的执行模式可以通过各种执行标志而在指令块头部中被指定。译码的执行模式可以被存储在执行控制逻辑208的寄存器中。基于执行模式,执行控制逻辑208可以生成控制信号以调节核操作并且调度核111内的指令流,诸如通过使用指令调度器206。例如,在默认执行模式期间,执行控制逻辑208可以对在处理器核111的一个或多个指令窗口(例如,210、211)上执行的一个或多个指令块的指令进行排序。具体地,每个指令可以通过指令取指、译码、操作数取回、执行和存储器/数据访问阶段进行排序,使得指令块的指令可以被流水线化并且被并行执行。指令在它们的操作数可用时准备好执行,并且指令调度器206可以选择执行指令的顺序。
状态访问逻辑207可以包括用于其他核和/或处理器级控制单元(诸如图1的控制单元160)与核111通信并且访问核111的状态的接口。例如,状态访问逻辑207可以连接到核互连(诸如图1的核互连120),并且其他核可以经由控制信号、消息、读取和写入寄存器等进行通信。
状态访问逻辑207可以包括用于修改和/或检查指令块的模式和/或状态和/或核状态的控制状态寄存器或其他逻辑。作为示例,核状态可以指示指令块是否被映射到核111或者核111的指令窗口(例如,指令窗口210、211)、指令块是否驻留在核111上、指令块是否执行在核111上、指令块是否准备提交、指令块是否正执行提交、以及指令块是否空闲。作为另一示例,指令块的状态可以包括指示指令块是所执行的最旧的指令块的标记或者标志以及指示指令块正推测地执行的标志。作为另一示例,处理器核的状态可以包括功率状态,诸如针对处理器核的个体资源或整个处理器核的功率状态。
控制状态寄存器(CSR)可以被映射到被保留以用于由基于块的处理器使用的唯一存储器位置。例如,控制单元160(图1)的CSR可以被指派给第一地址范围,存储器接口140(图1)的CSR可以被指派给第二地址范围,第一处理器核可以被指派给第三地址范围,第二处理器核可以被指派给第四地址范围,等等。在一个实施例中,CSR可以使用基于块的处理器的通用存储器加载和存储指令而被访问。附加地或备选地,CSR可以使用用于CSR的特定读取和写入指令(例如,用于读取/写入CSR的指令具有与存储器加载和存储指令不同的指令)而被访问。因此,一个核可以通过从与不同核的CSR相对应的地址进行读取来检查不同核的配置状态。类似地,一个核可以通过向与不同核的CSR相对应的地址进行写入来修改不同核的配置状态。可以对CSR进行保护或控制,使得只有受信任的软件组件才能读取和写入CSR。例如,CSR只能从特权或内核模式访问。附加地或备选地,CSR可以通过串行扫描链(诸如通过联合测试行动组(JTAG)测试访问端口和边界扫描逻辑)将命令移入状态访问逻辑207中来访问。以这种方式,一个核可以检查不同核的状态访问逻辑207,并且一个核可以修改不同核的状态访问逻辑207或模式。
如本文中进一步描述的,状态访问逻辑207可以包括用于将核配置和/或重新配置为在不同操作模式下操作的寄存器或其他逻辑。例如,状态访问逻辑207可以包括可通过CSR写入的复合控制寄存器,其控制处理器核的哪些资源可以与其他处理器核共享。复合控制寄存器还可以指定处理器核是否作为逻辑处理器的一部分被复合。复合控制寄存器还可以控制处理器核的功率状态。作为另一示例,状态访问逻辑207可以包括可通过CSR写入的复合拓扑寄存器,其控制哪些处理器核可以与其他处理器核分组。
指令窗口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位的数据称为字)。在一些示例中,寄存器文件230内的寄存器中的一些寄存器可以被分配为特殊目的。例如,寄存器中的一些寄存器可以被专用作系统寄存器示例,其包括存储常量值(例如,所有零字)、(一个或多个)程序计数器(PC)(其指示正被执行的程序线程的当前地址)、物理核数目、逻辑核数目、核分配拓扑、核控制标志、处理器拓扑或者其他适合的专用目的的寄存器。在一些示例中,存在多个程序计数器寄存器、一个或每个程序计数器,以允许跨一个或多个处理器核和/或处理器的多个执行线程的并发执行。在一些示例中,程序计数器被实现为指定存储器位置,而不是寄存器文件中的寄存器。在一些示例中,系统寄存器的使用可以由操作系统或者其他监督式计算机指令进行限制。在一些示例中,寄存器文件230被实现为触发器阵列,而在其他示例中,寄存器文件可以使用锁存器、SRAM或者其他形式的存储器存储装置被实现。针对给定处理器(例如,处理器100)的ISA规格指定寄存器文件230内的寄存器如何被定义并且被使用。
在一些示例中,处理器100包括由多个处理器核共享的全局寄存器文件。在一些示例中,与处理器核相关联的个体寄存器文件可以被组合以静态地或者动态地形成较大的文件,这取决于处理器ISA和配置。
如在图2中所示,指令窗口210的存储器存储库215包括若干译码的指令241、左操作数(LOP)缓冲器242、右操作数(ROP)缓冲器243以及指令记分板245。在所公开的技术的一些示例中,指令块中的每个指令被分解为一行译码的指令、左操作数和右操作数和记分板数据,如在图2中所示。译码的指令241可以包括被存储为位级控制信号的指令的部分或者完全译码的版本。操作数缓冲器242和243存储操作数(例如,从寄存器文件230接收到的寄存器值、从存储器接收到的数据、在指令内编码的中间操作数、由较早发出的指令计算的操作数、或者其他操作数值),直到其相应的译码的指令准备好执行。指令操作数从操作数缓冲器242和243被读取,而不是寄存器文件。
第二指令窗口211的存储器存储库216存储类似的指令信息(译码的指令、操作数和记分板)作为存储器存储库215,但是出于简单的原因在图2中未示出。指令块可以关于第一指令窗口由第二指令窗口211并发地或者顺序地执行,这受制于ISA约束并且如由控制单元205引导。
在所公开的技术的一些示例中,前端流水线阶段IF和DC可以从后端流水线阶段(IS、EX、LS)运行去耦合。在一个实施例中,控制单元可以每时钟周期将两个指令取指并且译码到指令窗口210和211中的每个指令窗口中。在备选实施例中,控制单元可以每时钟周期将一个、四个或者另一数目的指令取指并且译码到对应数目的指令窗口中。控制单元205使用记分板245来提供指令窗口数据流调度逻辑以监测每个译码的指令的输入(例如,每个相应指令的(一个或多个)断言和(一个或多个)操作数)的就绪状态。当针对特定译码的指令的所有输入就绪时,指令准备好发出。控制逻辑205然后每周期发起一个或多个下一指令(例如,最低编号的就绪指令)的执行,并且其译码指令和输入操作数被发送到功能单元260中的一个或多个功能单元以用于执行。译码的指令还可以对若干就绪事件进行编码。控制逻辑205中的调度器接受来自其他源的这些和/或事件,并且更新窗口中的其他指令的就绪状态。因此执行从处理器核的111个就绪零输入指令开始,继续以零输入指令为目标的指令等。
译码指令241不需要以其被布置在指令窗口210的存储器存储库215内的相同次序被执行。相反,指令记分板245用于追踪译码的指令的依存性,并且当依存性已经被满足时,相关联的个体译码指令被调度用于执行。例如,当依存性已经针对相应指令被满足时,对相应指令的参考可以被推送到就绪队列上,并且指令可以从就绪队列以先进先出(FIFO)次序被调度。被存储在记分板245中的信息可以包括但不限于相关联的指令的执行断言(诸如指令是否正等待要被计算的断言位,并且在断言位是真或者假的情况下指令是否执行)、操作数对于指令的可用性、或者在执行相关联的个体指令之前所要求的其他前提条件。
在一个实施例中,记分板245可以包括:译码就绪状态,其由指令译码器228初始化;以及活跃就绪状态,其在指令的执行期间由控制单元205初始化。例如,译码就绪状态可以编码相应指令是否已经被译码、等待断言和/或一些操作数(也许经由广播信道)、或者立即准备发出。活跃就绪状态可以编码相应指令是否等待断言和/或一些操作数、是准备发出还是已经发出。译码就绪状态可以在块重置或者块刷新时被清除。在分支到新指令块时,译码就绪状态和活跃就绪状态被清除(块或核被重置)。然而,当指令块在核上被重新执行时(诸如当其分支回到其自身(块刷新)),仅仅活跃就绪状态被清除。块刷新可以立即发生(当指令块分支到自身),或者在执行若干其他中间指令块之后发生。指令块的译码就绪状态可以因此被保留,使得其不需要重新取指并且译码块的指令。因此,块刷新可以用于节省循环和其他重复程序结构中的时间和能量。
被存储在每个指令窗口中的指令的数目通常对应于指令块内的指令的数目。在一些示例中,指令块内的指令的数目可以是32、64、128、1024或者另一数目的指令。在所公开的技术的一些示例中,跨处理器核内的多个指令窗口分配指令块。在一些示例中,指令窗口210、211可以被逻辑分区,使得多个指令块可以在单个处理器核上被执行。例如,可以在一个核上执行一个、两个、四个或者另一数目的指令块。相应的指令块可以彼此并发地或者顺序地被执行。
指令可以使用被定位在处理器核111内的控制单元205而被分配并且被调度。控制单元205安排来自存储器的对指令的取指、对执行的译码、在其已经被加载到相应的指令窗口时对指令的执行、进/出处理器核111的数据流,并且控制由处理器核输入和输出的信号。例如,控制单元205可以包括如上文所描述的就绪队列,以用于在调度指令中使用。可以原子地执行被存储在被定位在每个相应的指令窗口210和211中的存储器库215和216中的指令。因此,对由执行的指令影响的可见架构状态(诸如寄存器文件230和存储器)的更新可以本地缓存在核内直到指令被提交为止。控制单元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的实现性能和基于块的处理器核110的吞吐量。
指令调度器206可以具有不同的功能。在某些较高的性能示例中,指令调度器是高并发的。例如,每个周期(一个或多个)译码器将指令的译码就绪状态和译码指令写入到一个或多个指令窗口中,选择要发出的下一个指令,并且作为响应后端发送第二就绪事件——以特定指令的输入槽(断言、左操作数、右操作数等)为目标的任一目标就绪事件或者以所有指令为目标的广播就绪事件。每指令就绪状态位连同译码就绪状态可以用于确定指令准备好发出。
在一些示例中,指令调度器206使用存储装置(例如,先进先出(FIFO)队列、内容可寻址存储器(CAM))被实现,存储装置存储指示被用于根据所公开的技术调度指令块的执行的信息的数据。例如,关于指令依存性的数据、控制的传递、推测、分支预测和/或数据加载和存储被布置在存储装置中,以促进将指令块映射到处理器核中的确定。例如,指令块依存性可以与标签相关联,标签被存储在FIFO或者CAM中并且后续由用来将指令块映射到一个或多个处理器核的选择逻辑进行访问。在一些示例中,指令调度器206使用耦合到存储器的通用处理器被实现,存储器被配置为存储用于调度指令块的数据。在一些示例中,指令调度器206使用专用处理器或者使用耦合到存储器的基于块的处理器核被实现。在一些示例中,指令调度器206被实现为耦合到存储器的有限状态机。在一些示例中,在处理器(例如,通用处理器或者基于块的处理器核)上执行的操作系统生成优先级、断言和其他数据,其可以至少部分地用于利用指令调度器206来调度指令块。如本领域的普通技术人员将容易地理解到,在集成电路、可编程逻辑或者其他适合的逻辑中实现的其他电路结构可以用于实现用于指令调度器206的硬件。
在一些情况下,调度器206接受目标指令的事件,其尚未被译码并且还必须禁止已发出的就绪指令的重新发出。指令可以是非断言的、或者断言的(基于真或假条件)。断言的指令直到其由另一指令的断言结果作为目标时才变得就绪,并且该结果匹配断言条件。如果相邻的断言未匹配,则指令绝不发出。在一些示例中,断言指令可以推测地被发出并且被执行。在一些示例中,处理器可以随后检查推测地发出和执行的指令被正确地推测。在一些示例中,误推测的发出指令和消耗其输出的块中的指令的特定传递闭包可以被重新执行、或者被误推测取消的副作用。在一些示例中,对误推测的指令的发现导致整个指令块的完全回滚和重新执行。
V.示例指令块流
现在转到图3的示图300,图示了基于块的指令流的一部分310,包括若干可变长度指令块311-315(A-E)。指令流可以用于实现用户应用、系统服务或者任何其他适合的用途。在图3中所示的示例中,每个指令块从指令头部开始,其跟随有不同的数目的指令。例如,指令块311包括头部320和二十条指令321。所图示的特定指令头部320包括部分地控制指令块内的指令的执行的若干数据字段,并且还允许改进的性能增强技术,包括例如分支预测、推测执行、惰性评估和/或其他技术。指令头部320还包括指示头部是指令头部而非指令的ID位。指令头部320还包括指令块大小的指示。指令块大小可以处于比一更大的指令的数据块中,例如,被包含在指令块内的4指令数据块的数目。换句话说,块的大小被移动4位以便压缩被分配到指定指令块大小的头部空间。因此,0的大小值指示最小大小的指令块,其是跟随有四条指令的块头部。在一些示例中,指令块大小被表达为字节数、字数、n字数据块数、地址、地址偏移或者使用用于描述指令块的大小的其他适合的表达。在一些示例中,指令块大小由指令块头部和/或脚部中的终止位模式来指示。
指令块头部320还可以包括执行标志,其指示特殊指令执行要求。例如,取决于特定应用,分支预测或者存储器依存性预测可以针对某些指令块被禁止。
在所公开的技术的一些示例中,指令头部320包括指示编码数据是指令头部的一个或多个标识位。例如,在一些基于块的处理器ISA,最低有效位空间中的单个ID位总是被设定为二进制值1,以指示有效指令块的开始。在其他示例中,不同的位编码可以用于(一个或多个)标识位。在一些示例中,指令头部320包括指示相关联的指令块被编码所针对的ISA的特定版本的信息。
指令块头部还可以包括用于在例如分支预测、控制流确定和/或坏跳检测中使用的若干块退出类型。退出类型可以指示分支指令的类型是什么,例如:顺序分支指令,其指向存储器中的下一相连的指令块;偏移指令,其是相对于偏移而计算的存储器地址处的另一指令块的分支;子例程调用、或者子例程返回。通过编码指令头部中的分支退出类型,分支预测器可以至少部分地在相同指令块内的分支指令已经被取指和/或被译码之前开始操作。
指令块头部320还包括存储掩码,其标识被指派到存储操作的加载存储队列标识符。指令块头部还可以包括写入掩码,其标识相关联的指令块将写入的(一个或多个)全局寄存器。相关联的寄存器文件必须在指令块可以完成之前接收对每个条目的写入。在一些示例中,基于块的处理器架构可以包括不仅标量指令,而且单指令多数据(SIMD)指令,这允许具有单个指令内的较大数目的数据操作数的操作。
VI.示例块指令目标编码
图4是描绘C语言源代码的两个部分410和415及其相应的指令块420和425(以汇编语言)的示例的示图400,这图示了基于块的指令可以如何显式地编码其目标。高级C语言源代码可以通过其目标是基于块的处理器的编译器被转换为低级汇编语言和机器代码。高级语言可以提取出底层计算机架构的许多细节,使得程序员可以聚焦于程序的功能。相反,机器代码根据目标计算机的ISA来编码程序,使得其可以使用计算机的硬件资源在目标计算机上被执行。汇编语言是机器代码的人类可读形式。
在下面的示例中,汇编语言指令使用以下命名法:“I[<number>]指定指令块内的指令的编号,其中对于在指令头部之后的指令,编号从零开始,并且对于每个连续指令,指令编号递增;指令的操作(诸如READ、ADDI、DIV等)遵循指令编号;可选值(诸如中间值1)或对寄存器的引用(诸如用于寄存器0的R0)遵循操作;并且要接收指令结果的可选目标遵循值和/或操作。每个目标可以指向另一指令、是指向其他指令的广播信道、或者是可以在指令块被提交时对另一指令块可见的寄存器。指令目标的一个示例是以指令1的右操作数为目标的T[1R]。寄存器目标的一个示例是W[R0],其中目标被写入到寄存器0。
在示图400中,指令块420的前两个READ指令430和431分别指向ADD指令432的右(T[2R])和左(T[2L])操作数。在所图示的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准备好发出,因为其不具有输入依存性。当其发出并且执行时,从寄存器R6和R7读取的值被写入到ADD 432的右操作数缓冲器和左操作数缓冲器中,这使得ADD 432的左操作数和右操作数“就绪”。因此,ADD 432指令变为就绪、发出到ALU、执行,并且之和被写入到TLEI 433的左操作数。
作为比较,传统的乱序RISC或者CISC处理器将使用附加的硬件复杂性、功率、面积并且减少时钟频率和性能来在运行时建立依存性图形。然而,依存性图形在编译时是静态地已知的并且EDGE编译器可以通过ISA直接地编码指令之间的生产者-消费者关系,这使得微架构免于动态地重新发现他们。这可以潜在地实现更简单的微架构,减少面积、功率和升压频率和性能。
VII.示例的基于块的指令格式
图5是图示用于指令头部510、通用指令520和分支指令530的指令格式的一般化示例的示图。指令头部或者指令中的每一个根据位数而被标记。例如,指令头部510包括四个32位的字并且从其最低有效位(lsb)(位0)被标记直到其最高有效位(msb)(位127)。如所示出的,指令头部包括写入掩码字段、存储掩码字段、多个退出类型字段、多个执行标志字段(X标志)、指令块大小字段和指令头部ID位(指令头部的最低有效位)。
执行标志字段可以指示特殊的指令执行模式。例如,当标志被设置时,“抑制分支预测器”标志可以用于抑制针对指令块的分支预测。作为另一示例,当标志被设置时,“抑制存储器依赖性预测”标志可以用于抑制针对指令块的存储器依赖性预测。作为另一示例,当指令块被提交时,“在块之后中断”标志可以用于暂停指令线程并且引发中断。作为另一示例,“在块之前中断”标志可以用于暂停指令线程,并且在指令块头部被译码时并且在指令块的指令被执行之前引发中断。
退出类型字段包括可以用于指示被编码在指令块内的控制流和/或同步指令的类型的数据。例如,退出类型字段可以指示指令块包括以下各项中的一项或多项:顺序分支指令、偏移分支指令、间接分支指令、调用指令、返回指令、和/或中断指令。在一些示例中,分支指令可以是用于在指令块之间传递控制流的任何控制流指令,包括相对地址和/或绝对地址,并且使用有条件的断言或者无条件的断言。除了确定隐式控制流指令之外,退出类型字段可以用于分支预测和推测执行。在一些示例中,多达六种退出类型可以被编码在退出类型字段中,并且字段与对应的显式或者隐式控制流指令之间的对应性可以通过例如检查指令块中的控制流指令而被确定。
所图示的通用块指令520被存储为一个32位的字,并且包括操作码字段、断言字段、广播ID字段(BID)、第一目标字段(T1)、以及第二目标字段(T2)。对于具有比目标字段更大的消费者的指令而言,编译器可以使用移动指令来构建扇出树,或者其可以将高扇出指令指派到广播。广播支持通过轻量网络将操作数发送到核中的任何数目的消费者指令。广播标识符可以被编码在一般块指令520中。
虽然由通用指令520概述的通用指令格式可以表示由基于块的处理器处理的一些或全部指令,但是本领域的技术人员将容易理解到,即使对于ISA的特定示例而言,指令字段中的一个或多个指令字段也可以偏离用于特定指令的通用格式。操作码字段指定指令520的长度或宽度以及由指令520执行的(一个或多个)操作,诸如存储器读取/写入、寄存器加载/存储、加法、减法、乘法、除法、移位、旋转、系统操作或者其他适合的指令。断言字段指定指令在其下将执行的条件。例如,断言字段可以指定值“真”,并且指令将仅在对应的条件标志匹配指定的断言值的情况下执行。在一些示例中,断言字段至少部分地指定哪一个被用于比较断言,而在其他示例中,执行在由先前指令(例如,指令块中的先前指令)设定的标志上被断定。在一些示例中,断言字段可以指定指令将总是或者绝不被执行。因此,断言字段的使用可以通过减少分支指令的数目来允许更密集的目标代码、改进的能量效率以及改进的处理器性能。
目标字段T1和T2指定基于块的指令的结果被发送到的指令。例如,在指令槽5处的ADD指令可以指定其计算结果将被发送到槽3和10处的指令。取决于特定指令和ISA,所图示的目标字段之一或二者可以由其他信息替换,例如,第一目标字段T1可以由中间操作数、附加操作码、指定两个目标等来替换。
分支指令530包括操作码字段、断言字段、广播ID字段(BID)以及偏移字段。操作码和断言字段在如关于通用指令所描述的格式和功能方面是类似的。偏移可以以四个指令为单位被表达,因此扩展在其上可以执行分支的存储器地址范围。利用通用指令520和分支指令530示出的断言可以用于避免指令块内的附加分支。例如,特定指令的执行可以根据先前指令的结果(例如,两个操作数的比较)被断定。如果断言是假的,则指令将不提交由特定指令计算出的值。如果断言值未匹配所要求的断言,则指令不发出。例如,BRO_F(断言假)指令将发出其是否被发送假断言值。
应当容易理解到,如在此所使用的,术语“分支指令”不限于将程序执行改变到相对存储器位置,而且包括跳跃到绝对或者符号存储器位置、子例程调用和返回,以及可以修改执行流的其他指令。在一些示例中,通过改变系统寄存器(例如,程序计数器PC或者指令指针)的值来修改执行流,而在其他示例中,可以通过修改被存储在存储器中的指定位置处的值来改变执行流。在一些示例中,跳跃寄存器分支指令用于跳跃到被存储在寄存器中的存储器位置。在一些示例中,分别使用跳跃和链接以及跳跃寄存器指令来实现子例程调用和返回。
VIII.处理器核的示例状态
图6是图示基于块的处理器的计算机核的状态600的进展的示例的流程图。基于块的处理器包括共同地用于运行或者执行软件程序的多个处理器核。程序可以以各种高级语言被编写,并且然后使用以基于块的处理器为目标的编译器针对基于块的处理器而被编译。编译器可以发射当在基于块的处理器上被运行或者被执行时将执行由高级程序指定的功能的代码。编译代码可以被存储在可以由基于块的处理器访问的计算机可读存储器中。编译代码可以包括被分组为一系列指令块的指令流。在执行期间,指令块中的一个或多个可以由基于块的处理器执行以执行程序的功能。通常,程序将包括比在任一时间可以在核上执行的指令块更多的指令块。因此,程序的块被映射到相应核,核执行由块指定的工作,并且然后相应核上的块利用不同块被替换直到程序完成。指令块中的一些指令块可以被执行超过一次(诸如在程序的循环或者子例程期间)。可以针对每次指令块将被执行时创建指令块的“实例”。因此,指令块的每个重复可以使用指令块的不同实例。当程序运行时,基于架构约束、可用硬件资源和程序的动态流动,相应的指令块可以被映射到处理器核并且在处理器核上执行。在程序的执行期间,相应的处理器核可以通过状态600的进展进行转变,使得一个核可以处于一个状态并且另一核可以处于不同的状态。
在状态605处,相应的处理器核的状态可以是未映射。未映射处理器核是当前未被指派以执行指令块的实例的核。例如,处理器核可以在程序开始基于块的计算机上的执行之前是未映射。作为另一示例,处理器核可以在程序开始执行但是并非所有核正被使用之后是未映射的。特别地,程序的指令块至少部分地根据程序的动态流动而被执行。程序的一些部分可以总体上串行地或者顺序地流动(诸如当后续的指令块取决于来自较早的指令块的结果时)。程序的其他部分可以具有更多平行流,诸如当在不使用并行执行的其他块的结果的情况下多个指令块可以同时执行时。较少的核可以用于在程序的更多顺序流期间执行程序,并且较多的核可以用于在程序的更多并行流期间执行程序。
在状态610处,相应的处理器核的状态可以是映射。映射的处理器核是当前被指派以执行指令块的实例的或者作为逻辑资源的一部分被保留的核。当指令块被映射到特定处理器核时,指令块在运行中。运行中的指令块是以基于块的处理器的特定核为目标的块,并且块将或正在推测地或者非推测地在特定处理器核上执行。特别地,运行中的指令块对应于被映射到状态610-650中的处理器核的指令块。在程序将使用由执行指令块提供的工作的块映射期间块是已知的时,块非推测地执行。在映射程序将使用或将不使用由执行指令块所提供的工作期间块是未知的时,块推测地执行。推测地执行块能够潜在地提高性能(诸如当比在已知块的工作将被使用之后或之时块将被开始的情况下更早地开始推测块时)。然而,推测地执行可以潜在地增加当执行程序时(诸如当推测工作未由程序使用时)使用的能量。
基于块的处理器包括有限数目的同构或者异构处理器核。典型的程序可以包括比可以适配到处理器核上更多的指令块。因此,程序的相应指令块将通常与程序的其他指令块共享处理器核。换句话说,给定核可以在程序的执行期间执行多个不同的指令块中的指令。具有有限数目的处理器核还意味着在所有处理器核忙于执行指令块并且没有新核可用于分派时,程序的执行可以停止或者被延迟。当处理器核变得可用时,指令块的实例可以被映射到处理器核。
指令块调度器可以指派哪个指令块将在哪个处理器核上执行并且指令块何时将被执行。映射可以基于各种因素,诸如将被用于执行的目标能量、处理器核的数目和配置、处理器核的当前和/或先前使用、程序的动态流、推测执行是否被启用、推测块将被执行的置信度水平以及其他因素。指令块的实例可以被映射到当前可用的处理器核(诸如当没有指令块当前正在其上执行时)。在一个实施例中,指令块的实例可以被映射到当前繁忙的处理器核(诸如当核正执行指令块的不同实例时),并且后续映射的实例可以在较早映射的实例完成时开始。
在状态620处,相应处理器核的状态可以是取指。例如,处理器核的IF流水线阶段在取指状态期间可以是活跃的。取指指令块可以包括将块从存储器(诸如L1高速缓存、L2高速缓存或主存储器)传送给处理器核,并且从处理器核的本地缓冲器读取指令,使得指令可以被译码。例如,指令块的指令可以被加载到处理器核的指令高速缓存、缓冲器或寄存器中。指令块的多个指令可以在相同的时钟周期期间并行(例如,同时)被取指。取指状态可以是多个周期长,并且可以在处理器核被流水线化时与译码(630)和执行(640)状态重叠。
当指令块中的指令被加载到处理器核上时,指令块驻留在处理器核上。指令块在指令块的一些但非所有指令被加载时部分驻留。指令块在指令块中的所有指令被加载时完全驻留。指令块将驻留在处理器核上,直到处理器核被重置或者不同的指令块被取指到处理器核上。特别地,当核处于状态620-670时,指令块驻留在处理器核中。
在状态630处,相应的处理器核的状态可以是译码。例如,处理器核的DC流水线阶段可以在取指状态期间是活跃的。在译码状态期间,指令块中的指令正在被译码,使得其可以被存储在处理器核的指令窗口的存储器存储库中。特别地,指令可以从相对地紧凑的机器代码被转换为可以用于控制处理器核的硬件资源的较不紧凑的表示。译码状态可以是多个周期长,并且可以与在处理器核被流水线化时的取指(620)和执行(630)状态重叠。在指令块的执行被译码之后,其可以在指令的所有依存性被满足时被执行。
在状态640处,相应处理器核的状态可以是执行。在执行状态期间,指令块中的指令正被执行。特别地,处理器核的EX和/或LS流水线阶段可以在执行状态期间是活跃的。指令块可以推测地或者非推测地执行。推测块可以执行到完成或者其可以在完成之前被终止(诸如当确定由推测块执行的工作将不被使用时)。当指令块被终止时,处理器可以转变为中止状态。当确定块的工作将被使用时(例如,所有寄存器写入被缓冲,对存储器的所有写入被缓冲,并且分支目标被计算),推测块可以完成。当例如所有寄存器写入被缓冲、对存储器的所有写入被缓冲并且分支目标被计算时,非推测块可以执行到完成。执行状态可以是多个周期长,并且可以与在处理器核被流水线化时的取指(620)和译码(630)状态重叠。当指令块完成时,处理器可以转变为提交状态。
在状态650处,相应的处理器核的状态可以是提交或者中止。在提交期间,指令块的指令的工作可以原子地被提交,使得其他块可以使用指令的工作。特别地,提交状态可以包括其中本地缓冲架构状态被写入到由其他处理器核可见或者可访问的架构状态的提交阶段。当可见架构状态被更新时,提交信号可以被发出并且处理器核可以被释放,使得另一指令块可以在处理器核上被执行。在中止状态期间,核的流水线可以被停止以减少动态功率耗散。在一些应用中,核可以功率选通来减少静态功率耗散。在提交/中止状态的结束处,处理器核可以接收在处理器核上待执行的新的指令块,核可以被刷新,核可以被空闲,或者核可以被重置。
在状态660处,可以确定驻留在处理器核上的指令块是否可以被刷新。如在此所使用的,指令块刷新或者处理器核刷新意味着使得处理器核能够重新执行驻留在处理器核上的一个或多个指令块。在一个实施例中,刷新核可以包括重置针对一个或多个指令块的活跃就绪状态。当指令块是循环或者重复的子例程的一部分时或者当推测块被终止并且将被重新执行时,在相同处理器核上重新执行指令块可以是期望的。刷新的决策可以由处理器核自身(连续的重新使用)或者由处理器外部(非连续的重新使用)做出。例如,刷新的决策可以来自另一处理器核或者执行指令块调度的控制核。当与在不同核上执行指令块相反在已经执行指令的核上刷新指令块时,可以存在潜在能量节省。能量被用于对指令块中的指令取指并且译码,但是刷新块可以通过旁路这些状态来节省取指和译码状态中使用的大部分能量。特别地,刷新块可以在执行状态(640)时重新开始,因为已经由核取指并且译码指令。当块被刷新时,译码指令和译码就绪状态可以被维持,同时活跃就绪状态被清除。刷新指令块的决策可以作为提交操作的一部分或在后续时间发生。如果指令块未被刷新,则处理器核可以是空闲的。
在状态670处,相应的处理器核的状态可以是空闲。基于在给定时间活跃的处理器核的数目,基于块的处理器的性能和功耗可以潜在地被调节或者被折中。例如,如果推测误预测速率很高,则在并行地运行的核上执行推测工作可以增加计算的速度而不是增加功率。作为另一示例,在提交或者中止较早执行的指令块之后立即向处理器地指派新指令块可以增加并行地执行的处理器的数目,但是可以减少重新使用驻留在处理器核上的指令块的机会。重新使用可以在空闲处理器核的高速缓存或者池被维持时增加。例如,当处理器核提交常用的指令块时,处理器核可以被放置在空闲池中,使得核可以在下次相同指令块将被执行时被刷新。如上文所描述的,刷新处理器核可以节省用来对驻留指令块取指和译码的时间和能量。在空闲高速缓存中放置的指令块/处理器核可以基于由编译器执行的静态分析或者由指令块调度器执行的动态分析而被确定。例如,指示指令块的潜在重新使用的编译器提示可以被放置在块的头部中,并且指令块调度器可以使用提示来确定块是将空闲还是在提交指令块之后被重新分配到不同的指令块。当空闲时,处理器核可以被放置在低功率状态中以减少例如动态功率消耗。
在状态680处,可以确定驻留在空闲处理器核上的指令块是否可以被刷新。如果核要被刷新,则块刷新信号可以被声明并且核可以转变为执行状态(640)。如果核不将被刷新,则块重置信号可以被声明并且核可以转变为未映射状态(605)。当核被重置时,核可以被放入具有未映射核的池中,使得指令块调度器可以将新指令块分配到核。
IX.示例多核处理器架构
多核处理器可以包括多个基于块的物理处理器核,其中每个物理核包括一个或多个可共享资源。物理处理器核直接对应于处理器的制造的处理器核。图7图示了包括具有多个物理处理器核的处理器的示例系统。图8图示了包括可共享和不可共享资源的基于块的处理器核的示例。图9图示了基于块的处理器核的示例控制寄存器。例如,控制寄存器可以用于选择物理核的哪些资源在核之间共享以及哪些物理核被复合成逻辑核。图10-图12图示了被配置为使得资源在物理处理器核之间共享的多核处理器的各种示例。
如本文所述,多核处理器可以通过以下而动态地适配于给定工作负载:在物理核之间共享资源,将物理核组合成更大的逻辑核,和/或将逻辑核拆分成更小的逻辑或物理核。逻辑核可以包括彼此协调以执行程序的线程内的指令块的一个或多个物理核。线程是程序中的控制单元,其中指令块根据线程的控制流进行排序。线程可以包括程序的一个或多个指令块。线程可以包括用于将其与其他线程区分开的线程标识符、引用线程的非推测指令块的程序计数器、用于在线程的指令块之间传递值的逻辑寄存器文件、和用于存储数据(诸如激活记录)的在线程本地的堆栈。程序可以是多线程的,其中每个线程可以独立于其他线程操作。因此,不同的线程可以在不同的相应逻辑核上执行。
多个物理核可以在运行时合并在一起,以形成更大更强大的逻辑核。作为具体示例,工作负载的串行部分可以通过将多个物理核组成为更大的逻辑处理器来处置,该更大的逻辑处理器如同激进的超标量体系结构一样地执行。备选地,当有足够的线程级并行性可用时,同一大型逻辑处理器可以被分解或拆分成多个逻辑处理器,因此每个物理处理器可以独立工作并且执行来自独立线程的指令块。将物理核合并在一起被称为组成逻辑核,而拆分逻辑核被称为分解逻辑核。
逻辑核可以在物理核之间交错对寄存器和存储器的访问,以向逻辑核给出所有被复合的物理核的组合计算资源。例如,包含两个物理核的逻辑核可以使用地址的附加位来在核的两个物理高速缓存之间进行选择,从而有效地将L1高速缓存容量加倍。寄存器文件可以被类似地交错。
线程的每个指令块被映射到单个物理处理器。在被复合时,架构可以使用逻辑处理器的附加核来执行线程的推测指令块。通过比仅使用非推测执行时所执行的更早地执行工作,推测可以潜在地提高在串行工作负载上的性能。当非推测块提交时,它可以向逻辑处理器中的所有其他核连同退出分支地址一起发送提交信号。在正确路径上的推测块可以继续执行,而在未采用的路径上的块可以被中止。
当改变配置的开销小于更高效配置的性能增益时,组成逻辑核可能是合乎需要的。复合总是在块边界处进行,并且可以由运行时系统发起。运行时系统可以分布在物理核之间,或者可以在处理器的全局控制单元上执行。物理核和物理核的可共享资源可以采用各种不同的方式被复合,每种方式提供开销和效率的不同折衷。
完全复合改变了逻辑核中的物理核的数目,并且改变寄存器文件和高速缓存映射。脏的高速缓存行可以被懒散地(lazily)写出到主存储器。逻辑寄存器和高速缓存位置在整个物理核间均匀分布。高速缓存行被映射到库,其中每个库对应于具体物理核的高速缓存。因此,完全复合可以包括更大的逻辑高速缓存,该更大的逻辑高速缓存是逻辑核的所有物理核的高速缓存容量的总和。图10图示了完全复合的示例。
快速复合向逻辑处理器添加了附加的物理核,但是保留相同的L1数据高速缓存和寄存器映射,并且在复合期间不将脏高速缓存行写出到主存储器。这导致逻辑处理器具有比完全复合的情况下可能的更小的数据高速缓存,但是使能访问已经在高速缓存中的数据,以在组成之后仍然命中。快速复合可能是短期活动爆发所期望的,其中附加的执行单元是有用的,但是其中重新配置高速缓存的开销可能大于从更大更高效的高速缓存配置所节省的开销。
资源复合向逻辑核添加了附加的物理资源而不添加附加的物理核的所有能力。例如,可以使用多个物理核的高速缓存来组成逻辑高速缓存。具体而言,线程可以使用超过物理处理器的高速缓存大小的数据集。通过使用来自相邻物理核的高速缓存组成逻辑高速缓存来增加线程可用的高速缓存大小,线程的高速缓存命中率可以潜在地得以改善。相邻物理核的非高速缓存资源可以被断电以节约能量。图11和图12图示了资源复合的示例。
去复合从逻辑处理器移除物理核或资源,并且可以对被移除的核或资源进行断电以节约能量。执行可以在其余的物理核上继续。去复合可以包括冲刷从逻辑处理器丢弃的每个高速缓存的脏线并且更新高速缓存映射。当高速缓存行被逐出时,其余物理核中的脏高速缓存行可以被写回。
转到图7,计算系统700可以包括处理器705、存储器770、输入设备750和输出设备740。处理器705可以包括控制单元710、多个物理的基于块的(BB)处理器核720-727、输入/输出(I/O)接口730以及可选的存储器控制器和/或二级(L2)高速缓存760。控制单元710包括用于管理处理器的执行的逻辑,诸如用于执行运行时系统712的全部或一部分的码。I/O接口730可以用于将处理器705连接到各种输入设备(诸如输入设备750)和各种输出设备(诸如输出设备740)。I/O接口730可以包括使用一个或多个通信协议的一个或多个I/O桥接器,一个或多个通信协议诸如外设组件互连(PCI)、PCI-Express、通用串行总线(USB)、加速图形端口(AGP)等。在一些示例中,控制单元710、存储器控制器和L2高速缓存760以及I/O接口730至少部分使用以下中的一个或多个而被实现:硬连线有限状态机、可编程微码、可编程门阵列或其他合适的控制电路。在一些示例中,控制单元710、存储器控制器和L2高速缓存760以及I/O接口730至少部分使用处理器(例如,执行控制码的片上处理器)和/或外部计算机(例如,执行控制码并且经由通信接口(未示出)与处理器705通信的片外处理器)而被实现。
存储器770可以包括程序的存储的指令。例如,程序可以包括指令块A-E。处理器705可以经由存储器控制器和L2高速缓存760与存储器770通信,以将程序的全部或部分取回或加载到物理处理器核720-727中的一个或多个上。具体地,存储器控制器和L2高速缓存760可以用于生成用于与存储器770通信的控制信号并且为来自或去往存储器770的信息提供临时存储。备选地,物理处理器核720-727可以直接与存储器770通信。
控制单元710包括用于管理处理器的执行的逻辑,诸如用于执行运行时系统712的全部或一部分的码。例如,运行时系统712可以包括用于以下的码:分配和组织用于程序的指令的存储器;分配、去分配和组织用于程序的数据的存储器;分配、去分配和调度用于执行程序的物理BB处理器核720-727;分配、去分配和调度物理BB处理器核720-727的可共享资源;以及在程序与操作系统之间提供接口。例如,运行时系统712可以包括指令块调度器,指令块调度器用于分配物理BB处理器核720-727,使得一个或多个程序可以在处理器705上被执行。例如,指令块调度器可以向物理BB处理器核720-727中的空闲的一个或多个物理BB处理器核分配程序的指令块。当程序正在被执行时,程序的指令块可以被分配给物理BB处理器核720-727,所以在任何给定时间,程序的指令块中仅一部分可以驻留在物理BB处理器核720-727上。
作为具体示例,短程序可以包括包含指令块A-E的单个控制线程。指令块调度器可以分配单个逻辑处理器来执行线程。逻辑处理器可以包括单个物理处理器核或多个物理处理器核。多个指令块可以被调度到给定的物理处理器核。例如,物理处理器核可以具有用于多达128个译码指令的存储,这些译码指令可以进一步被划分为具有用于多达32个译码指令的存储的指令块槽或指令窗口。因此,给定的物理处理器核可以顺序地或同时地执行一个至四个指令块,其中不同的指令块使用给定的物理处理器核的不同的相应指令窗口而被执行。
线程根据线程的控制流来执行。例如,包括指令块A-E的线程可以具有依赖图780。通过线程的控制流可以取决于到程序的输入而不同。因此,在程序的一次运行期间,可以执行指令块ABDE,并且在程序的另一次运行期间,可以执行指令块ACDE。在这个示例中,指令块B和C中仅一个将在程序的给定运行期间执行。线程的非推测执行可以包括根据控制流来串行地执行线程的指令块,其中线程的下一指令块不会被启动,直到已知线程的下一指令块。因此,当线程仅被非推测地执行时,指令块B或C将不开始执行,直到指令块A被提交或直到已知来自块A的目标地址(例如,块B或C的地址)。然而,在已知来自块A的目标地址之前,线程可以通过推测地执行块B和C中的一个或多个而潜在地被加速。例如,在已知来自块A的目标地址之前,仅块B、仅块C、或者块B和C两者可以开始推测地执行。在已知来自块A的目标地址之前,块D和E也可以开始推测地执行。指令块的推测执行可以发生在相同的物理核上(例如,在不同的指令窗口中)或者在作为执行线程的逻辑处理器的一部分的不同的物理核上。作为一个示例,指令块A可以在物理处理器核720上非推测地执行,而同时指令块B、D和E分别在物理处理器核721、722和723上推测地执行。当已知来自块A的目标地址时,正确路径上的块可以继续执行,而未采用的路径上的块可以被中止。
用于执行程序的线程的逻辑处理器可以包括物理处理器核720-727中的一个或多个。物理处理器核720-727在处理器705内具有布局或取向。例如,处理器705可以是单片集成电路(IC),并且物理处理器核720-727可以在IC的区域上方被制造,其中物理处理器核720-727中的每一个不重叠。如图所示,物理处理器核720-727可以被布置成具有两列和四行的2×4阵列。然而,处理器可以包括以各种拓扑布置的各种数目的物理BB处理器核。尽管为了说明的目的选择了2×4阵列,但是对于物理BB处理器核,1×4、2×2、4×4、8×8、4×8等是可能的设计选择。逻辑核的物理核可以经由在物理核之间运行的控制信号而彼此协调。因此,期望的是,为逻辑核所选择的物理核在物理上彼此接近,使得与核在物理上距离更远的情况相比,控制信号可以以更短的时间在核之间传播。
如本文所述,将要向给定的逻辑核指派的特定物理处理器核720-727可以独立于其物理接近度而被指派,或者基于处理器705的拓扑和附加标准而被指派。作为一个示例,运行时系统712可以使用诸如物理处理器核720和727的任何两个空闲物理核来组成逻辑处理器。物理处理器核720和727可以在物理上相邻或在物理上分开(如图所示)。作为另一示例,能够成为给定逻辑处理器的一部分的物理处理器核可以基于处理器705的拓扑和逻辑处理器的物理处理器核的数目而被约束。作为具体示例,由两个核组成的任何逻辑处理器可以仅由一行内的物理处理器核组成,诸如用虚线791-794所图示的。附加地或备选地,由四个核组成的任何逻辑处理器可以仅由四元组(quad)内的物理处理器核复合,诸如用虚线795-796所图示的。附加地或备选地,逻辑处理器可以由所有物理处理器核组成,诸如用虚线797所图示的。应当注意,组成逻辑处理器的物理处理器核可以以各种不同的方式被约束。例如,物理处理器核的对和/或四元组可以被分组在列中。
个体物理处理器核的一些资源可以由逻辑处理器内的其他物理处理器核共享。例如,物理处理器核中的每一个可以包括一级(L1)数据高速缓存,并且逻辑核的所有物理处理器核可以共享L1数据高速缓存,使得逻辑处理器有效地具有比任何个体物理处理器核大的L1数据高速缓存。附加地或备选地,个体物理处理器核的一些资源可以由逻辑处理器外部的其他物理处理器核共享。附加地或备选地,个体物理处理器核的其他资源可以是私有的,并且不由个体物理处理器核外部的其他物理处理器核共享。
图8图示了包括可共享资源和不可共享资源的物理的基于块的处理器核800的示例。处理器核800可以包括控制逻辑810、执行单元820、寄存器文件830、指令窗口840-841、加载存储队列850和L1数据高速缓存860。在一个实施例中,可共享资源可以包括执行单元820、寄存器文件830和L1数据高速缓存860。不可共享资源可以包括控制逻辑810、指令窗口840-841和加载存储队列850。在备选实施例中,可共享和不可共享资源可以不同地被分隔。在一些示例中,控制逻辑810、执行单元820、寄存器文件830、指令窗口840-841、加载存储队列850和L1数据高速缓存860至少部分使用以下中的一个或多个而被实现:硬连线有限状态机、可编程微码、可编程门阵列或其他合适的控制电路。
控制逻辑810可以包括用于控制物理的基于块的处理器核800的操作的逻辑。例如,控制逻辑810可以包括头部译码逻辑811、指令调度器812、配置状态813、分支预测器814、引退逻辑815、核接口逻辑816和功率管理逻辑818。头部译码逻辑811可以用于对将要在处理器核800上被执行的指令块的指令块头部进行译码。指令调度器812可以用于调度在处理器核800上执行的指令块的指令。例如,当操作数变为可用于相应指令时,可以按数据流顺序调度指令。配置状态813可以包括用于将处理器核800编程为与给定逻辑处理器相关联和/或与另一处理器核共享一个或多个可共享资源的寄存器,诸如参考图9所描述的。寄存器可以被映射到处理器核800的可见架构状态中的存储器,使得寄存器的值仅在向寄存器写入的指令块的提交阶段被改变。具体地,寄存器的值可以在与处理器核800不同的处理器核上执行的指令块的提交阶段被改变。
分支预测器814可以通过预测针对每个指令块的分支出口地址来跨指令块进行推测。分支预测器814可以使用各种算法来跨指令块进行推测,诸如通过使用顺序块预测(例如,假设采用下一顺序指令块)或前瞻分支预测(例如,使用取回表缓冲器)。预测分支出口地址允许指令块被取回并且在当前块完成之前开始推测执行。最旧的指令块被标记为非推测的,并且可以预测分支出口地址。如果存在可用指令窗口,则所预测的地址(对应于所预测的指令块)可以被取回,并且所预测的指令块可以开始在逻辑处理器中的另一物理核上或者在相同的物理核(例如,处理器核800)上执行。
所采用的分支地址可以在指令块完成之前解析。在这种情况下,非推测块可以使用所采用的分支信号来向逻辑处理器中的其他核通知所采用的地址。最旧的指令块然后变成非推测块。任何未被正确推测的块可以被中止。所采用的分支信号不同于提交信号。当所采用的分支允许下一块继续推测并且开始取回新的指令块时,更新后的寄存器和存储器值无效,直到提交信号之后。
分支预测器814可以通过预测断言值和通过指令块的控制流路径来在指令块内进行推测。可以在指令块内使用三种不同类型的推测,包括断言推测、存储器推测和加载推测。断言推测可以用于预测断言的值。存储器推测包括从L1高速缓存加载可以被推测性较小的块所改变的针对推测块的值。加载推测可以包括使用加载存储队列来允许加载在具有较低加载存储标识符的存储之前执行。在所有三种情况下,误推测会导致整个指令块的重新执行。例如,所有操作数缓冲器中的有效位可能被重置并且零操作数指令可以被重新加载。
引退逻辑815可以监测执行块的进度,并且管理非推测指令块的提交阶段。由于所预测的执行,指令块可以在不执行块中的所有指令的情况下完成。当一个(且只有一个)分支已经被执行时,指令块可以完成,并且修改外部状态(寄存器写入和存储)的所有指令已经被执行。例如,编译器可以将寄存器写入和存储标识符编码在指令块头部中,使得引退逻辑815可以标识所有寄存器写入和存储何时完成。在执行期间,块的指令不修改可见架构状态。代之,所有改变被缓存并且在提交阶段被一起提交。在处理器核800进入针对指令块的提交阶段后,利用所有寄存器写入来更新逻辑寄存器文件,并且将加载存储队列中的所有存储从最低序列标识符开始发送到逻辑L1数据高速缓存。如下面进一步描述的,逻辑寄存器文件可以包括寄存器文件830和/或来自其他物理处理器核的寄存器文件。类似地,逻辑L1数据高速缓存可以包括L1数据高速缓存860和/或来自其他物理处理器核的L1数据高速缓存。在所有寄存器写入和存储已经提交后,引退逻辑815可以向同一逻辑处理器中的所有其他物理核发送提交信号。仅非推测块可以被提交,并且推测块将等待提交,直到推测块是最旧的块并且因此不再是推测的。
核接口逻辑816提供用于与其他物理处理器核通信的逻辑。例如,核接口逻辑816可以用于使用控制接口817来与逻辑处理器内的其他物理处理器核通信。控制接口817可以包括例如控制信号的集合、总线或片上网络(NOC)。控制接口817可以包括所采用的分支信号、目标地址信号、提交信号和用于在物理处理器核之间通信的其他各种信号。
功率管理逻辑818可以包括用于动态地和选择性地减少处理器核800的能耗的逻辑。例如,功率管理逻辑818可以包括用于将处理器核800的一个或多个组件置于低功率模式的逻辑。低功率模式可以包括对相应组件的时钟门控、电压缩放、频率缩放和/或功率门控。功率管理逻辑818可以包括用于唤醒处理器核800处于低功率模式的组件的逻辑。取决于性能和功率目标,可以选择处理器核800的各种不同量来置于低功率模式。例如,可以在不同的电压岛上和/或用不同的时钟树来制造处理器核800的可共享和不可共享资源。不可共享资源可以在一个电压岛和时钟树上,并且不同的可共享资源可以具有不同的各自的电压岛和时钟树。作为具体示例,可共享资源可以包括执行单元820、寄存器文件830和L1数据高速缓存860。每个可共享资源可以具有不同的电压岛和/或时钟树,使得每个可共享资源可以独立地被置于低功率模式,诸如通过对功率管理逻辑818的寄存器编程。备选地,处理器核800的大部分可以处于低功率模式,而同时一个或多个可共享组件是处于完全操作模式。作为具体示例,处理器核800的大部分可以处于低功率模式,而同时仅L1数据高速缓存860被通电。处理器核800的大部分可以包括除了专门通电的资源和功率管理逻辑818之外的所有可共享和不可共享资源。即使当处理器核800的其余部分处于低功率模式时,功率管理逻辑818也被通电,使得功率管理逻辑818可以响应于唤醒请求。
L1数据高速缓存860可以用于临时存储程序数据。L1数据高速缓存860可以包括内容可寻址存储器(CAM)以及用于访问和管理CAM的内容的逻辑。L1数据高速缓存860可以按行布置,其中每行对应于主存储器中的连续地址范围。L1数据高速缓存860通常比主存储器小,所以L1数据高速缓存860可以保持主存储器中的数据的子集。数据的子集通过存储对地址的引用而被跟踪,该地址与存储在L1数据高速缓存860中的来自主存储器的每行数据相关联。地址870可以被划分成不同的字段,以提供存储器中的地址到存储在L1数据高速缓存860中的行的映射。例如,地址870可以被划分成标记字段872、可选的索引字段874和偏移字段876。当存储器的内容被加载到L1数据高速缓存860的行中时,标记字段872被存储在L1数据高速缓存860中。标记字段引用数据从其被读取和/或将被写回到的存储器位置。偏移字段876是数据在行内的地址。例如,如果高速缓存行是1024位,则高速缓存行中有128个字节和32个32位字。当小于整个高速缓存行被引用时,偏移字段876可以区分高速缓存行内的不同字节和/或字。索引字段874可以用于将高速缓存行映射到逻辑高速缓存的库和/或集合。当逻辑高速缓存仅包括单个直接映射的高速缓存时,不使用索引字段874,因为仅存在一个库。然而,当逻辑高速缓存包括多个物理高速缓存时,索引字段874用于区分逻辑高速缓存的不同库。
L1数据高速缓存860可以是可与其他物理处理器核共享的。作为一个示例,L1数据高速缓存860可以与逻辑处理器的其他物理处理器核共享。附加地或备选地,L1数据高速缓存860可以与不是逻辑处理器的一部分的其他物理处理器核共享。当L1数据高速缓存860与其他物理处理器核共享时,L1数据高速缓存860是较大逻辑高速缓存的一部分。例如,L1数据高速缓存860可以是逻辑高速缓存的库。如下面进一步描述的,每个物理高速缓存可以被指派与索引字段874的值相对应的库标识符。当地址到存储器的索引字段位命中或匹配L1数据高速缓存860的库标识符时,L1数据高速缓存860在响应于存储器访问时被使用。
L1数据高速缓存860可以使用高速缓存接口862与其他处理器核通信。高速缓存接口862可以包括读/写使能、地址信号和数据信号。例如,L1数据高速缓存860可以使用高速缓存接口862向发出对数据的请求的另一处理器核提供数据。L1数据高速缓存860是可见架构状态,并且因此在指令块提交时其被更新。具体地,指令块的中间结果可以在被提交给L1数据高速缓存860之前被缓存在加载存储队列850中。在一些实施例中,当L1数据高速缓存860与其他处理器核共享时,加载存储队列850可以被访问。
执行单元820可以用于执行指令块的指令。执行单元820可以包括用于执行指令的数学和/或逻辑运算的算术逻辑单元(ALU)、浮点单元(FPU)、桶形移位器、乘法器、图形加速器、物理加速器和各种其他逻辑函数中的一个或多个。指令块的译码的指令和指令的操作数可以被存储在指令窗口840-841中。指令部分地通过以下方式而被执行:将指令的操作数路由到适当的执行单元820并且将执行单元820的输出存储在另一指令的操作数缓冲器、加载存储队列850和/或寄存器文件830中。在基于块的处理器核800的数据流执行模型下,一旦指令被译码并且所有操作数可用于指令,指令就可以潜在地发出或执行。然而,可以并行执行的指令的数目可以由处理器核800上可用的执行单元820的数目来限制。作为具体示例,如果有四个ALU指令准备好执行,但是处理器核800仅能访问两个ALU,则在同一周期内仅能并行发出两个ALU指令。然而,执行单元820可以在物理处理器核之间共享,以形成执行单元的逻辑组。指令调度器812的发出逻辑可以从执行单元的逻辑组中选择个体执行单元来执行指令块的指令。例如,可以使用执行单元接口822在物理核之间传递控制信号、操作数和结果。具体地,可以使用执行单元接口822将操作数从第一物理处理器核的指令窗口路由给第二物理处理器核的执行单元。可以使用执行单元接口822将来自第二物理处理器核的执行单元的结果路由回第一物理处理器核。在非本地处理器核上执行指令可以增加延迟以解决物理处理器核之间的通信,所以指令调度器812可以优先排序在本地物理处理器核上执行指令。
寄存器文件830是可以用于存储在指令块之间传递的数据的可见架构状态。寄存器文件830可以包括用于存储指令块的中间结果的缓冲器或影子寄存器文件,并且寄存器文件830可以在提交阶段被更新。寄存器文件830可以在物理处理器核之间共享,以形成逻辑寄存器文件。寄存器文件830的个体寄存器类似于存储器中的位置被编号或寻址。每个物理寄存器文件可以是逻辑寄存器文件的库,并且因此寄存器编号内的索引可以用于确定哪个库被引用。寄存器文件接口832可以用于向不同的物理处理器核上的寄存器文件传达控制信号、地址和数据。
图9是图示物理的基于块的处理器核的示例控制寄存器的示图。控制寄存器可以用于对物理处理器核的哪些资源与其他物理处理器核共享进行编程。控制寄存器可以用于对哪些物理处理器核可以在彼此间共享资源进行编程。控制寄存器是可以在程序的运行时被编程的可见架构状态。具体地,控制寄存器在指令块的提交阶段期间被更新。控制寄存器可以通过多种方式被访问,包括以下中的一个或多个:通用存储器映射的加载和存储;用于读取和写入控制寄存器的具体指令;受保护的(例如,诸如通过特权或内核模式)存储器映射的加载和存储;以及通过测试访问端口扫描输入的命令。在一些示例中,控制寄存器至少部分使用以下中的一个或多个而被实现:触发器、锁存器、寄存器文件、静态随机存取存储器(SRAM)、动态随机存取存储器、电可擦除可编程只读存储器EEPROM)、闪存或其他合适的存储器元件。
给定物理处理器核的复合控制寄存器900可以用于对给定物理处理器核的哪些资源与其他物理处理器核共享进行编程。例如,主控制寄存器(MCR)字段901可以被编码以指示给定物理处理器核与其他物理核共享的资源。MCR字段901可以包括多个比特以实现各种资源的共享、指示给定物理核是逻辑核的一部分、和/或对给定物理处理器核的大部分或给定物理处理器的特定资源断电。在表910中图示了用于MCR字段901的编码的一个示例。在该示例中,最低有效位(位0)可以用于使能L1数据高速缓存的共享;位1可以用于使能寄存器文件的共享;位2可以用于使能执行单元的共享;位3可以用于指示给定物理处理器核是较大的逻辑处理器核的一部分;并且最高有效位(位4)可以用于指示针对给定物理处理器核的默认功率状态,其中“0”指示默认状态是低功率模式并且“1”指示默认状态是上电。可以同时设置多个位来共享多个资源。MCR字段901的编码的具体示例包括:“00000”编码可以队包括核的可共享资源的给定物理处理器核的大部分断电;“10000”编码可以对给定物理处理器核上电并且使可共享资源保持在给定物理处理器核中私有;“00001”编码可以使得L1数据高速缓存能够在其他物理处理器核之间被共享并且对给定物理处理器核的其余部分断电;“00010”编码可以使得寄存器文件能够在其他物理处理器核之间被共享并且对给定物理处理器核的其余部分断电;“00100”编码可以使得执行单元能够在其他物理处理器核之间被共享并且对给定物理处理器核的其余部分断电;“11001”编码可以指示给定物理处理器核是更大的逻辑处理器核的一部分并且使得L1数据高速缓存能够在其他物理处理器核之间被共享;以及“11000”编码可以指示给定物理处理器核是更大的逻辑处理器核的一部分并且可以对L1数据高速缓存断电。应当注意,这些编码是为了说明的目的而选择的,并且具有更多或更少位的不同的各种编码是可能的。
复合控制寄存器900可以包括用于对可以在彼此之间共享资源的物理处理器核的数目进行编程的可选核数目字段902。作为一个示例,核数目字段可以用高达处理器的最大核数目的任何数目进行编程。在另一示例中,核数目字段可以包括与可以被分组的不同法定物理核数目相对应的单独位。作为特定示例,物理核可以仅以2的幂被分组,使得地址的索引字段被完全映射到核。因此,一个、两个、四个和八个物理处理器核的分组可以被允许用于包括八个物理处理器核的处理器。例如,核数目字段902可以包括用于对两个物理处理器核进行分组的第一位、用于对四个物理处理器核进行分组的第二位、以及用于对八个物理处理器核进行分组的第三位。备选地,被编程在核数目字段902中的值可以指示被分组的两个核的幂,所以值3可以指示八个核被分组在一起。
被编程在核数目字段902中的值和给定物理处理器核的相对物理位置可以用于组成逻辑处理器和/或逻辑资源。例如,资源的共享可以基于处理器的拓扑而被约束,诸如参考图7所描述的那样。特别地,两个物理核的分组可以被约束到处理器的一行,并且四个物理核的分组可以被约束到处理器的四元组。MCR字段901可以确定处理器核的分组是否对应于逻辑核和/或逻辑资源。例如,如果MCR字段901的位(例如,位3)被设置,则给定物理处理器核是较大的逻辑处理器核的一部分。然而,如果MCR字段901的位清零并且与可共享资源相对应的另一位被设置,则资源可以被共享,而不将给定物理处理器核作为较大的逻辑处理器核的一部分。
物理处理器核的分组内的不同处理器核的MCR字段可以被不同地编程,使得不同处理器核不同地共享资源。例如,逻辑处理器可以包括第一处理器和第二处理器。第一处理器可以共享它的L1高速缓存,并且第二处理器可以禁用它的L1高速缓存。
复合控制寄存器900可以是处理器级寄存器而不是处理器核级寄存器。例如,复合控制寄存器900可以是处理器级控制单元的一部分。复合控制寄存器900可以包括用于处理器的每个相应处理器核的单独的MCR字段。例如,复合控制寄存器900可以包括对应于处理器核0的MCR0字段901、对应于处理器核1的MCR1字段903和对应于处理器核n的MCRn字段904,其中处理器包括n个处理器核。处理器级复合控制寄存器900的值可以以各种方式被传达给个体处理器核。例如,处理器级复合控制寄存器900的值可以经由专用控制信号而被连续递送给个体处理器核。作为另一示例,对处理器级复合控制寄存器900的更新可以经由通过片上网络发送的中断或消息而被传达给个体处理器核。
在一个实施例中,给定处理器核可以包括复合控制寄存器900和复合拓扑寄存器920。复合控制寄存器900可以用于指示给定物理处理器核的哪些资源在一组物理处理器核之间被共享,并且复合拓扑寄存器920可以用于指示哪些物理处理器核是这组物理处理器核的一部分。例如,复合拓扑寄存器920可以包括可以被编程为将物理处理器核逻辑地分组的多个位921-923。作为具体示例,位921-923可以表示作为逻辑组的一部分的处理器核的位图。位C0 921可以对应于第一物理处理器核,位C1 922可以对应于第二物理处理器核,并且位Cn 923可以对应于第n物理处理器核,其中处理器包括n个物理处理器核。因此,如果位C0 921和C1 922是复合拓扑寄存器920中被设置的唯一比特,则第一和第二物理处理器核是逻辑组的一部分。作为特定示例,如果相应复合控制寄存器900的MCR字段指示物理处理器核是较大的逻辑处理器核的一部分,则第一和第二物理处理器核是逻辑处理器的一部分。备选地,如果相应复合控制寄存器900的MCR字段指示物理处理器核仅共享其L1高速缓存,则第一和第二物理处理器核的L1高速缓存形成逻辑L1高速缓存,但是第一和第二物理处理器核不是逻辑处理器的一部分。
位921-923可以被编程为使得所选择的物理处理器核跨处理器的拓扑稀疏地分布。然而,可能期望的是,将逻辑组的物理处理器核紧密分组以减少物理处理器核之间的通信延迟。物理处理器核可以包括用于分析复合拓扑寄存器920的编程值的监测逻辑。作为示例,处理器核可以断言中断或拒绝对未达分组的接近度标准的值进行编程。
复合拓扑寄存器920可以包括用于指示如何解释位921-923的可选的拓扑模式设置924。例如,如果拓扑模式设置924被编程有第一值(例如,“0”),则位921-923可以是物理处理器核的位图,如前所述。如果拓扑模式设置924被编程有第二值(例如,“1”),则位921-923可以是用于该组的物理处理器核的数目。与相应的物理处理器核的相对位置相结合的物理处理器核的数目可以用于限定分组的物理处理器核。例如,每个物理处理器核可以仅在预定义的行、列、四元组等中被分组。
在备选实施例中,控制寄存器可以专用于单个可共享资源并且用于对可共享资源的可访问性编程。例如,可共享资源可以是高速缓存、寄存器文件或执行单元中的一个或多个。作为具体示例,高速缓存复合控制寄存器930可以用于对可以共享相应物理处理器核的高速缓存的物理处理器核的分组进行编程。高速缓存复合控制寄存器930可以包括数据高速缓存库的数目字段931,以用于对使用多少物理高速缓存库来创建逻辑高速缓存进行编程。在一个示例中,物理高速缓存库的数目和相应物理处理器核在处理器拓扑内的相对物理位置用于确定逻辑高速缓存的所有物理高速缓存库。例如,每个物理高速缓存库仅能在预定义的行、列、四元组等中被分组。在另一示例中,逻辑高速缓存可以包括来自处理器的任何物理处理器核的物理高速缓存库。作为具体示例,诸如核标识(核ID)字段932-935的多个标识字段可以用于标识个体物理高速缓存库。例如,特定的核标识字段可以用与特定物理处理器核相对应的地址或标识符来编程。具体地,每个物理处理器核可以用处理器内的唯一编号和/或位置(例如,行和列)来标识。标识字段的数目可以从0到M变化,其中M是被允许用于逻辑高速缓存的最大高速缓存库数目。M可以小于或等于处理器上的物理高速缓存库的数目。
核标识字段在高速缓存复合控制寄存器930中的位置可以用于将地址的索引字段映射到逻辑高速缓存的特定物理高速缓存库。作为具体示例,逻辑高速缓存可以通过用“2”对数据高速缓存库的数目字段931编程而被配置为具有两个物理高速缓存库;核标识字段932可以对应于索引字段“0”,并且核标识字段933可以对应于索引字段“1”。作为另一示例,逻辑高速缓存可以通过用“4”对数据高速缓存库的数目字段931编程而被配置为具有四个物理高速缓存库;核标识字段932可以对应于索引字段“00”,核标识字段933可以对应于索引字段“01”,核标识字段934可以对应于索引字段“10”,并且核标识字段935可以对应于索引字段“11”。类似地,可以添加附加的核标识字段,以将更多索引字段位映射到较大的逻辑高速缓存的物理高速缓存库。
处理器拓扑寄存器940可以向运行时系统提供处理器的拓扑信息。运行时系统可以使用拓扑信息来做出关于如何将物理处理器核和/或可共享资源分组成逻辑核和/或资源的决策。处理器拓扑寄存器940可以使用行字段942来指示物理处理器核的行数。处理器拓扑寄存器940可以使用列字段944来指示物理处理器核的列数。当处理器由只读存储器设计和提供时,由处理器拓扑寄存器940报告的行数和列数可以是固定的。处理器拓扑寄存器940可以使用处理器类型标识符字段946来指示用于该处理器类型的唯一标识符。例如,在初始化序列期间,运行时系统可以读取处理器类型标识符字段946以确定哪种类型的处理器正在执行运行时系统,并且基于从处理器类型标识符字段946读取的值,处理器的拓扑信息可以被确定。例如,用于不同处理器类型的拓扑信息可以被存储在与不同的相应处理器类型标识符相关联的表中。因此,通过提供针对处理器类型的唯一标识符,可以使用软件(例如,读取表)以及通过读取硬编码在处理器拓扑寄存器940中的值来确定拓扑信息。
图10-图12图示了被配置为使得资源在物理处理器核之间被共享的多核处理器的示例。图10图示了执行程序的多个线程的多个逻辑处理器的示例。图11图示了包括多个物理高速缓存库的逻辑高速缓存的示例。图12图示了执行程序的多个线程并且使用共享逻辑高速缓存的多个逻辑处理器的示例。
在图10中,处理器1000包括以两列四行阵列布置的八个物理的基于块的处理器核1020、1030、1040、1050和1080-1083。图示了在具有包括线程0和线程1在内的多个线程的程序的执行期间的处理器1000。每个线程可以包括可以在处理器1000的逻辑处理器上被执行的一个或多个指令块。例如,线程0可以在包括物理处理器核1020和1030的逻辑处理器1010上被执行;并且线程1可以在包括物理处理器核1040和1050的逻辑处理器1060上被执行。逻辑处理器可以包含对处理器1000的控制寄存器和/或物理的基于块的处理器核编程的运行时系统。例如,每个逻辑处理器可以通过对物理处理器核的相应复合控制寄存器和复合拓扑寄存器编程而被配置。作为具体示例,逻辑处理器1010可以通过以下方式而被配置:对物理处理器核1020和1030的复合控制寄存器编程,使得每个物理处理器核作为逻辑处理器的一部分被复合并且使得L1数据高速缓存被共享;以及对物理处理器核1020和1030的复合拓扑寄存器编程,使得物理处理器核1020和1030被分组在一起。因此,物理处理器核1020和1030可以被复合成具有逻辑高速缓存1015的逻辑处理器1010。物理处理器核1020的L1数据高速缓存可以是逻辑高速缓存1015的第一库,并且物理处理器核1030的L1数据高速缓存可以是逻辑高速缓存1015的第二库。将物理处理器核1020和1030分组到逻辑处理器1010中可以通过仅对物理处理器核1020和1030的复合拓扑寄存器中的物理处理器核的数目进行编程来指定。备选地,将物理处理器核1020和1030分组到逻辑处理器1010中可以通过对物理处理器核1020和1030的复合拓扑寄存器中的物理处理器核的位图进行编程来指定。
类似地,逻辑处理器1060可以通过以下而被配置:对物理处理器核1040和1050的复合控制寄存器编程,使得每个物理处理器核作为逻辑处理器的一部分被复合并且使得L1数据高速缓存被共享;以及对物理处理器核1040和1050的复合拓扑寄存器编程,使得物理处理器核1040和1050被分组在一起。因此,物理处理器核1040和1050可以被复合成具有逻辑高速缓存1065的逻辑处理器1060。物理处理器核1040的L1数据高速缓存可以是逻辑高速缓存1065的第一库,并且物理处理器核1050的L1数据高速缓存可以是逻辑高速缓存1065的第二库。
在逻辑处理器1010和1060被配置后,线程0和1可以在相应的逻辑处理器上独立执行。例如,线程0的一个指令块可以在物理处理器核(例如,物理处理器核1020)上非推测地执行,并且线程0的不同的指令块可以在不同的物理处理器核(例如,物理处理器核1030)上推测地执行。当非推测指令块被提交时,如果块被正确地预测并且如果块是在线程内执行的最旧的块,则原来的推测执行块可以变为非推测的。在一个物理处理器核上执行的指令块可以访问跨两个物理处理器核1020和1030而分布的逻辑高速缓存。因此,与仅使用单个物理处理器核的物理高速缓存相比,逻辑高速缓存可以提供更大的高速缓存。
物理的基于块的处理器核1080-1083可以被断电以节省能量。例如,可以通过对相应物理处理器核的相应复合控制寄存器或其他功率控制寄存器编程来使物理处理器核1080-1083中的每一个断电。使物理处理器核1080-1083断电可以包括将物理处理器核1080-1083置于低功率模式。例如,物理处理器核1080-1083可以是时钟门控的、以降低的频率钟控、以较低的电压被供电、或被关机。
图11图示了包括以两列四行阵列布置的八个物理的基于块的处理器核的处理器1100的示例。图示了在程序的单个线程执行期间的处理器1100。线程可以包括可以在物理处理器核1120上被执行的一个或多个指令块。物理处理器核1120可以访问延伸超出物理处理器核1120的逻辑数据高速缓存1140。逻辑数据高速缓存1140可以包含对处理器1100的控制寄存器和/或物理的基于块的处理器核编程的运行时系统。作为具体示例,逻辑数据高速缓存1140可以通过以下方式而被配置:对物理处理器核1120的复合控制寄存器编程,使得L1数据高速缓存被共享并且物理处理器核被上电而不被复合;对物理处理器核1130的复合控制寄存器编程,使得物理处理器核的大部分被断电并且L1数据高速缓存被上电且被共享;以及对物理处理器核1120和1130的复合拓扑寄存器编程,使得物理处理器核1120和1130被分组在一起。因此,物理处理器核1120和1130可以被分组,使得物理处理器核1120可以使用逻辑数据高速缓存1140来执行线程的指令块,逻辑数据高速缓存1140使单个物理处理器核的物理数据高速缓存的大小加倍。与利用单个物理处理器核执行线程相比,这可以通过数据高速缓存中更低的缺失率而产生更高的性能,并且与使物理处理器核1120和1130两者都执行线程相比,这可以导致用于执行线程的功率较低。
图12图示了包括以两列四行阵列布置的八个物理的基于块的处理器核的处理器1200的示例。图示了在具有多个线程的程序的执行期间的处理器1200,该多个线程包括线程0和线程1。每个线程可以包括可以在处理器1200的逻辑处理器上被执行的一个或多个指令块。例如,线程0可以在包括物理处理器核1220的逻辑处理器上被执行;并且线程1可以在包括物理处理器核1230的逻辑处理器上被执行。逻辑处理器和线程可以共享逻辑数据高速缓存1240。例如,当不同线程从公共数据集读取时,这可以是有益的。逻辑处理器和逻辑高速缓存可以包含对处理器1200的控制寄存器和/或物理的基于块的处理器核编程的运行时系统。作为具体示例,处理器配置可以通过以下方式来配置:对物理处理器核1220的复合控制寄存器编程,使得L1数据高速缓存被共享并且物理处理器核1220被通电并且不被复合;对物理处理器核1230的复合控制寄存器编程,使得L1数据高速缓存被共享并且物理处理器核1230被通电并且不被复合;以及对物理处理器核1220和1230的复合拓扑寄存器编程,使得物理处理器核1220和1230被分组在一起。因此,物理处理器核1220和1230可以执行共享逻辑高速缓存1240的独立线程。与使用物理处理器核内的单个数据高速缓存执行线程相比,这可以通过数据高速缓存中的更低的错误率而产生更高的性能。
X.编程处理器的示例方法
图13和图14是图示对处理器编程以使用逻辑处理器和/或逻辑资源来执行程序的线程的示例方法的流程图。例如,该方法可以由执行软件指令的运行时系统至少部分在处理器的控制单元上或在处理器的物理的基于块的处理器核上执行。图13是图示用于对处理器编程以使用共享逻辑资源来执行程序的线程的示例方法1300的流程图。例如,处理器可以包括多个基于块的物理处理器核,多个基于块的物理处理器核包括第一物理处理器核和第二物理处理器核。相应的物理处理器核可以包括一个或多个可共享资源,诸如高速缓存、寄存器文件、执行单元和/或各种其他逻辑或数学组件。
在过程框1310处,第一物理处理器核的复合控制寄存器可以被编程,以将第一物理处理器核的给定资源配置为与第二物理处理器核共享。例如,程序可以包括线程初始化指令块,并且第一物理处理器核可以在程序的运行时期间使用线程初始化指令块的指令而被编程。线程初始化指令块可以在多个物理处理器核中的任何一个或处理器的控制单元上执行。复合控制寄存器可以通过对与高速缓存复合控制寄存器相对应的存储器映射的地址执行存储指令而被编程。诸如复合控制寄存器和复合拓扑寄存器的系统寄存器可以是可见架构状态,并且因此存储在系统寄存器中的值仅可以在更新系统寄存器的指令块的提交阶段期间被更新。因此,当存储指令被执行时将要被写入复合控制寄存器的值可以初始地被缓存,并且复合控制寄存器可以在线程初始化指令块的提交阶段期间被更新。
如上所述,可共享资源中的一个或多个可共享资源可以与其他物理处理器核共享,以创建逻辑资源。共享逻辑资源的物理处理器核彼此可以具有不同的关系。例如,第一处理器核和第二处理器核可以被复合以形成执行程序的单个线程的逻辑处理器核。因此,逻辑资源可以在单个线程内被共享。作为另一示例,第一处理器核和第二处理器核可以被配置为执行程序的不同线程。因此,逻辑资源可以跨不同线程被共享。
第一物理处理器核的复合控制寄存器或功率控制寄存器可以被编程,以当第一物理处理器核的给定资源与第二物理处理器核共享时,将第一物理处理器核配置为处于不同功率模式。例如,第一物理处理器核可以处于低功率模式。作为具体示例,除非特定资源在不同的物理处理器核之间被共享,否则第一物理处理器核的资源可以默认为低功率模式。因此,通过仅选择要被共享的第一物理处理器核的高速缓存,高速缓存可以以操作模式被上电,并且第一物理处理器核的其余部分可以处于低功率模式。通过使第一物理处理器核的部分断电,可以在执行程序时节省能量。
在过程框1320处,复合拓扑寄存器可以可选地被编程,以将一组物理处理器核配置为共享资源。例如,这组物理处理器核可以包括第一物理处理器核和第二物理处理器核。这组物理处理器核可以通过提供组的位图或通过提供组中的物理处理器核的数目而被指定。例如,位图可以用于指定来自处理器上任何位置的物理处理器核,而不管物理处理器核彼此相邻还是不相邻。作为另一示例,提供物理处理器核的数目可以基于组中的数目和处理器的拓扑来形成自动分组。
在过程框1330处,指令块的执行可以在第二物理处理器核上被发起。指令块可以包括使用被配置在第一物理处理器核上的给定的可共享资源的指令,使得指令使用第一物理处理器核的可共享资源在第二物理处理器核上被执行。例如,指令块的执行可以通过将指令块分配给第二物理处理器核而在第二物理处理器核上被发起。具体地,与指令块相对应的地址可以被加载到第二物理处理器核的程序计数器中,使得第二物理处理器核可以取回并且执行指令块。
图14是图示用于对逻辑处理器编程以执行程序的线程的示例方法1400的流程图。例如,处理器可以包括多个基于块的物理处理器核,多个基于块的物理处理器核包括第一物理处理器核和第二物理处理器核。相应的物理处理器核可以包括一个或多个可共享资源,诸如高速缓存、寄存器文件、执行单元和/或各种其他逻辑或数学组件。
在过程框1410处,复合拓扑寄存器可以被编程,以组成包括第一物理处理器核和第二物理处理器核的逻辑处理器。例如,复合拓扑寄存器可以在程序的运行时期间被编程,诸如通过执行针对给定线程的线程初始化指令块的指令。逻辑处理器可以用于执行程序的给定线程的非推测和推测指令块。逻辑处理器的物理处理器核可以通过提供组的位图或通过提供组中的物理处理器核的数目而被指定。例如,位图可以用于指定来自处理器上任何位置的物理处理器核,而不管物理处理器核是否物理接近。作为另一示例,提供物理处理器核的数目可以基于组中的数目和处理器的拓扑来形成自动分组。
运行时系统可以被设计为在各种不同的平台上运行,并且其可以基于各种因素来选择逻辑核的物理处理器核,各种因素诸如处理器的拓扑、物理处理器核的利用、或处理器内功能的固定映射。作为一个示例,处理器拓扑寄存器可以存储关于处理器的拓扑信息,诸如物理处理器核的布置。因此,运行时系统可以在具有以1×4、2×2、2×4、4×4、8×8、4×8或其他大小的阵列布置的物理处理器核的处理器上被执行。使用拓扑信息,运行时系统可以确定哪些物理处理器核在物理上彼此相邻和/或在物理上彼此靠近。可能期望的是,逻辑核的物理处理器核靠近在一起以减少物理处理器核之间的通信延迟。运行时系统可以保存空闲物理处理器核的列表。运行时系统可以优先从其中存在足够数目的空闲和相邻物理处理器核的处理器区域中选择逻辑核的物理处理器核。备选地,运行时系统可以使用来自处理器上任何位置的空闲物理处理器核来选择逻辑核的物理处理器核。
在过程框1420处,第一物理处理器核的复合控制寄存器可以可选地被编程,以控制第一物理处理器核的给定资源与第二物理处理器核的共享。例如,控制给定资源的共享可以包括使给定资源保持对第一物理处理器核私有。因此,在逻辑处理器内,相应的物理处理器核可以具有不在逻辑处理器的其他物理处理器核之间共享的私有资源。作为另一示例,控制给定资源的共享可以包括与第二物理处理器核共享给定资源。当给定资源被共享时,其可以是更大的逻辑资源的一部分。第一物理处理器核的复合控制寄存器也可以被编程,以将第一物理处理器核配置为处于不同的功率模式。作为具体示例,第一物理处理器核的高速缓存可以处于低功率模式并且不由逻辑处理器使用。这在第一物理处理器核被添加到现有逻辑处理器并且期望高速缓存不被重新映射时可能是有益的。此外,线程的数据集可以较小,并且使第一物理处理器核的高速缓存断电可以在执行程序时节省能量。
在过程框1430处,程序的给定线程可以被指派给逻辑处理器。例如,逻辑处理器可以为与给定线程的线程标识符相关联的指令块而保留。逻辑核编号可以被指派给逻辑处理器并且被存储在逻辑处理器的每个物理处理器核的逻辑核编号寄存器中。逻辑核编号可以与线程标识符相同或可以与线程标识符相关联。
在过程框1440处,给定线程的第一指令块的执行可以在逻辑处理器的第一物理处理器核上被发起。例如,可以将第一指令块的地址加载到第一物理处理器核上,使得第一指令块的指令可以由第一物理处理器核取指并且执行。作为具体示例,线程初始化指令块可以将给定线程的第一指令块的地址存储在第一物理处理器核的程序计数器寄存器中。当线程初始化指令块提交并且第一指令块的地址在程序计数器寄存器中被更新时,第一指令块(和给定线程)可以开始执行。
XI.执行程序的示例方法
图15-图17是图示在处理器的逻辑处理器和/或逻辑资源上配置和/或执行程序的线程的示例方法的流程图。例如,处理器可以包括多个基于块的物理处理器核,多个基于块的物理处理器核包括第一物理处理器核和第二物理处理器核。相应的物理处理器核可以包括一个或多个可共享资源,诸如高速缓存、寄存器文件、执行单元和/或各种其他逻辑或数学组件。物理处理器核可以被分组或被复合成逻辑处理器。类似地,物理处理器核的可共享资源可以被分组或被复合成逻辑资源。图15是图示用于使用共享逻辑资源来在物理处理器核上执行程序的线程的指令的示例方法1500的流程图。
在过程框1510处,第一物理处理器核的给定资源可以根据第一物理处理器核的可编程复合控制寄存器而被配置为与第二物理处理器核共享。例如,复合控制寄存器可以在程序的运行时期间由线程初始化指令块编程。给定资源可以被配置为当线程初始化指令块被提交时被共享。给定资源可以被配置为更大的逻辑资源的一部分。例如,给定资源可以是高速缓存,并且给定资源可以是更大的逻辑缓存的库。第一物理处理器核的可共享资源可以被选择性地共享,使得第一资源可以被共享而其他资源不被共享。不被共享的资源可以由第一物理处理器核在本地使用,或者不被共享的资源可以被断电。例如,给定资源可以是第一物理处理器核将要被上电并且可操作的唯一主要功能单元。
在过程框1520处,一组物理处理器核可以根据可编程复合拓扑寄存器而可选地被配置为共享资源。例如,这组物理处理器核可以包括第一物理处理器核和第二物理处理器核。这组物理处理器核可以由复合拓扑寄存器的字段内的组的位图来指定。备选地,这组物理处理器核可以由被编程到复合拓扑寄存器中的组的物理处理器核的数目指定。例如,位图可以用于指定来自处理器上任何位置的物理处理器核,而不管物理处理器核是彼此相邻还是彼此不相邻。作为另一示例,物理处理器核的数目可以基于组中的数目和处理器的拓扑形成自动分组。具体地,对于给定大小的逻辑处理器,可以存在物理处理器核到逻辑处理器的固定映射,诸如参考图7所描述的。
在过程框1530处,可以使用第一物理处理器核的可共享资源在第二物理处理器核上执行指令块的指令。具体地,译码的指令可以被存储在第二物理处理器核的指令窗口中,并且由第二物理处理器核的指令发出或调度逻辑发出以用于执行。第一物理处理器核的可共享资源用于指令的执行。作为一个示例,指令的操作数可以从可共享资源中被加载或读取。作为另一示例,指令可以使用第一物理处理器核的共享执行单元而被部分或完全地执行。作为另一示例,指令可以将输出结果存储或写入到可共享资源。
执行指令可以包括指令的各种步骤或微操作,包括:管理第二物理处理器核与第一物理处理器核之间的通信;将与指令相关联的索引字段映射到可共享资源;调度指令的微操作;以及在第二物理处理器核的指令窗口中将指令标记为完成。指令可能花费多个时钟周期才能完成,以考虑第二物理处理器核与第一物理处理器核之间的通信延迟。
图16是图示用于在逻辑处理器上执行程序的线程的示例方法1600的流程图。例如,处理器可以包括多个基于块的物理处理器核,多个基于块的物理处理器核包括第一物理处理器核和第二物理处理器核。相应的物理处理器核可以包括一个或多个可共享资源,诸如高速缓存、寄存器文件、执行单元和/或各种其他逻辑或数学组件。物理处理器核可以被分组或被复合成逻辑处理器。类似地,物理处理器核的可共享资源可以被分组或被复合成逻辑资源。
在过程框1610处,可以根据可编程复合拓扑寄存器来组成逻辑处理器。逻辑处理器可以包括第一物理处理器核和第二物理处理器核。例如,复合拓扑寄存器可以在程序的运行时期间被编程,诸如通过执行针对线程的线程初始化指令块的指令。逻辑处理器可以用于执行程序的线程的非推测和推测指令块。逻辑处理器的物理处理器核可以通过提供组的位图或通过提供组中的物理处理器核的数目而被指定。例如,位图可以用于指定来自处理器上任何位置的个体物理处理器核。作为另一示例,取决于组中的数目和处理器的拓扑,组的物理处理器核可以具有固定的映射。
在过程框1620处,第一物理处理器核的给定资源可以根据第一物理处理器核的复合控制寄存器而可选地被配置为与第二物理处理器核共享。物理处理器核的可共享资源可以具有用于指示资源是否与其他物理处理器核共享的默认设置。例如,在默认情况下,可共享资源可以是在物理处理器核内私有的。作为另一示例,在默认情况下,可共享资源可以是在逻辑处理器的物理处理器核之间被共享的。不同的可共享资源可以具有不同的默认设置。例如,高速缓存可以默认为在逻辑处理器的物理处理器核之间被共享,并且执行单元可以默认为在其物理处理器核内私有。复合控制寄存器可以用于通过对复合控制寄存器中的不同的共享设置进行编程来覆盖默认共享设置。
在过程框1630处,可以在第一物理处理器核上非推测地执行线程的第一指令块。线程可以具有在给定时间执行的单个非推测指令块。非推测指令块是线程的首先发出的或最旧的指令块。线程的附加指令块可以在非推测指令块被提交之前在不同的指令窗口或不同的物理处理器核上开始。然而,附加指令块是推测的,直到已知附加指令块将提交。例如,非推测指令块可以接收要在附加指令块可以被提交之前被服务的中断。作为另一示例,附加指令块可以在误预测的路径上。当非推测块提交时,它可以将提交信号连同退出分支地址一起发送给逻辑处理器的所有其他物理处理器核。位于正确路径上的推测块可以继续执行,而位于未采用的路径上的块可以被中止。
第一指令块的非推测执行可以包括:预测第一指令块的分支目标地址,使得用于线程的推测指令块的路径可以被确定;将所预测的分支目标地址发送给逻辑处理器的一个或多个物理处理器核;使用与另一物理处理器核共享的逻辑资源来执行第一指令块的指令;确定提交条件是否被满足;当提交条件被满足时开始提交阶段;以及当提交阶段完成时向逻辑处理器的其他物理处理器核发送提交信号和目标分支地址。
在过程框1640处,可以在第二物理处理器核上推测地执行线程的第二指令块。第二物理处理器核可以推测地发出指令,直到已知第二指令块是否在错误的预测路径上或直到第二指令块变为非推测指令块。例如,如果第二指令块的起始地址与提交的非推测指令块的目标分支地址相匹配,则第二指令块可以变为非推测指令块。即使推测指令块在非推测指令块之前完成执行,推测指令块也不能提交,直到推测指令块被转换为非推测指令块。
第二指令块的推测执行可以包括:在第一指令块提交之前取回第二指令块;使用与另一物理处理器核共享的逻辑资源来执行第一指令块的指令;当提交信号被接收时,将第二指令块的起始地址与目标分支地址进行比较;当第二指令块的起始地址在提交信号被接收时与目标分支地址相匹配时,将第二指令块转换为非推测指令块;将所预测的路径与执行路径进行比较;当所预测的路径不同于所执行的路径时,中止第二指令块;以及延迟提交阶段,直到第二指令块是非推测指令块。
以这种方式,逻辑处理器的物理处理器核可以用于执行线程的指令块。具体地,推测指令块和非推测指令块两者可以在逻辑处理器的物理处理器核上同时被执行。当推测路径被正确预测时,通过在较早的非推测指令块提交时将推测指令块之一转换为非推测指令块,非推测指令块可以在物理处理器核之间迁移。可以根据分配策略来选择被选择为推测地执行线程的相应指令块的物理处理器核。例如,分配策略可以是逻辑处理器的物理处理器核的轮询调度。
图17是图示用于在逻辑处理器上发起程序的线程的执行的示例方法1700的流程图。例如,处理器可以包括多个基于块的物理处理器核。相应的物理处理器核可以包括一个或多个可共享资源,诸如高速缓存、寄存器文件、执行单元和/或各种其他逻辑或数学组件。物理处理器核可以被分组或被复合成逻辑处理器。类似地,物理处理器核的可共享资源可以被分组或被复合成逻辑资源。
在1710处,可以针对在线程初始化指令块之后执行的指令块使推测执行静默(quiesce)。线程初始化指令块可以包括用于将资源配置为执行程序的线程的指令。通过使在线程初始化指令块之后的推测执行静默或停止,空闲的物理处理器核可以被标识并且编程为组成逻辑处理器。运行时系统可以动态跟踪空闲的物理处理器核,使得逻辑处理器的复合可以基于当前的运行时信息。
在1720,可以从线程初始化指令块内执行对复合拓扑和/或复合控制寄存器的存储操作。例如,逻辑处理器的每个物理处理器核可以具有复合拓扑寄存器,复合拓扑寄存器用于指定物理处理器核是否作为逻辑处理器核的一部分被复合以及物理处理器核的资源是否被共享。用于逻辑处理器的相应物理处理器核的复合拓扑寄存器可以不同地被编程,使得相应物理处理器核的不同资源被共享。逻辑处理器的每个物理处理器核可以具有用于指定将要与之复合和/或共享资源的一组物理处理器核的复合拓扑寄存器。
在1730处,可以在线程初始化指令块的提交阶段期间执行对线程的第一指令块的分支操作,以在逻辑处理器上发起线程的执行。分支操作可以包括将第一指令块的地址加载到逻辑处理器的物理处理器核之一的程序计数器中。当线程初始化指令块被提交时,非推测指令块将成为线程的第一指令块。因此,线程可以从第一指令块开始执行。
XII.示例计算环境
图18图示了其中可以实现所描述的实施例、技巧和技术的合适的计算环境1800的概括示例。
计算环境1800不旨在提出关于技术的使用或者功能的范围的任何限制,因为技术可以被实现在不同的通用或者专用计算环境中。例如,所公开的技术可以利用其他计算机系统配置被实现,包括手持式设备、多处理器系统、可编程消费者电子产品、网络PC、微型计算机、大型计算机,等等。所公开的技术还可以被实践在分布式计算环境中,其中任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块(包括用于基于块的指令块的可执行指令)可以被定位在本地存储器存储设备和远程存储器存储设备二者中。
参考图18,计算环境1800包括至少一个基于块的处理单元1810和存储器1820。在图18中,该最基本配置1830被包括在虚线内。基于块的处理单元1810执行计算机可执行指令并且可以是真实处理器或者虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指以增加处理能力,并且如此多个处理器可以同时运行。存储器1820可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪速存储器等)、或者两者的组合。存储器1820存储可以例如实现在此所描述的技术的软件1880、图像和视频。计算环境可以具有附加的特征。例如,计算环境1800包括存储装置1840、一个或多个输入设备1850、一个或多个输出设备1860以及一个或多个通信连接1870。互连机制(未示出)(诸如总线、控制器或者网络)将计算环境1800的部件相互连接。通常,操作系统软件(未示出)提供用于在计算环境1800中执行的其他软件的操作环境,并且协调计算环境1800的部件的活动。
存储装置1840可以是可移除或者不可移除的,并且包括磁盘、磁带或者磁带盒、CD-ROM、CD-RW、DVD或者可以用于存储信息并且可以在计算环境1800内访问的任何其他介质。存储装置1840存储用于软件1880的指令、插入数据和消息,其可以用于实现在此所描述的技术。
(一个或多个)输入设备1850可以是触摸输入设备,诸如键盘、小键盘、鼠标、触屏显示器、笔或轨迹球、语音输入设备、扫描设备或者向计算环境1800提供输入的另一设备。对于音频而言,(一个或多个)输入设备1850可以是以模拟或者数字形式接受音频输入的声卡或者类似设备,或者向计算环境1800提供音频样本的CD-ROM读取器。(一个或多个)输出设备1860可以是显示器、打印机、扬声器、刻录机或者提供来自计算环境1800的输出的另一设备。
(一个或多个)通信连接1870实现通过通信介质(例如,连接网络)与另一计算实体的通信。通信介质传达诸如计算机可执行指令、压缩图形信息、视频或者调制数据信号中的其他数据的信息。(一个或多个)通信连接1870不限于有线连接(例如,兆比特或吉比特以太网、无限带宽、电气或光纤连接上的光纤信道),而且包括无线技术(例如,经由蓝牙、WiFi(IEEE 802.11a/b/n)、WiMax、蜂窝、卫星、激光、红外的RF连接)以及用于提供用于所公开的代理、网桥和代理数据消费者的网络连接的其他适合的通信连接。在虚拟主机环境中,(一个或多个)通信连接可以是由虚拟主机所提供的虚拟化网络连接。
可以使用实现计算云1890中的所公开的技术的全部或部分的计算机可执行指令执行所公开的方法的一些实施例。例如,所公开的编译器和/或基于块的处理器的服务器被定位在计算环境1830中,或者所公开的编译器可以在被定位在计算云1890中的服务器上执行。在一些示例中,所公开的编译器在传统的中央处理单元(例如,RISC或者CISC处理器)上执行。
计算机可读介质是可以在计算环境1800内访问的任何可用介质。以示例而非限制的方式,利用计算环境1800,计算机可读介质包括存储器1820和/或存储装置1840。如应当容易理解的,术语计算机可读存储介质包括用于数据存储的介质(诸如存储器1820和存储装置1840)而非传输介质(诸如调制数据信号)。
XIII.所公开的技术的附加示例
根据上文所讨论的示例在此讨论了所公开的主题的附加示例。
在一个实施例中,一种处理器包括多个基于块的物理处理器核,该多个基于块的物理处理器核用于执行包括以一个或多个线程布置的多个指令块的程序。相应的物理处理器核被配置为执行程序的给定线程的指令块。相应的物理处理器核包括一级数据高速缓存和可编程高速缓存复合控制寄存器。可编程高速缓存复合控制寄存器可以用于使用一级数据高速缓存和多个基于块的物理处理器核中的其他物理处理器核的一级数据高速缓存来组成用于给定线程的逻辑缓存。可编程控制寄存器适于在程序的运行时被编程。高速缓存复合控制寄存器可以部分地通过对与高速缓存复合控制寄存器相对应的存储器映射的地址执行在多个核中的任一个上执行的指令块的存储指令而可编程。在具有存储指令的指令块的提交阶段期间高速缓存复合控制寄存器的值可以被更新,存储指令是对与高速缓存复合控制寄存器相对应的存储器映射的地址的。
作为一个示例,高速缓存复合控制寄存器可以包括用于对将要用于逻辑高速缓存的一级数据高速缓存的数目进行编程的字段,并且用于逻辑高速缓存的一级数据高速缓存仅由相应物理处理器核的相对物理位置和将要用于逻辑高速缓存的一级数据高速缓存的数目确定。到逻辑高速缓存的一级数据高速缓存的地址到存储器的映射由相应的一级数据高速缓存的相对物理位置和将要用于逻辑高速缓存的一级数据高速缓存的数目预定。备选地,高速缓存复合控制寄存器可以包括用于对将要用于逻辑高速缓存的一级数据高速缓存的数目进行编程的第一字段,并且用于逻辑高速缓存的一级数据高速缓存使用高速缓存复合控制寄存器的附加字段而被标识。高速缓存复合控制寄存器的附加字段的相应字段与到逻辑高速缓存的一级数据高速缓存的地址的映射相对应。
处理器可以用在各种不同的计算系统中。例如,服务器计算机可以包括:非易失性存储器和/或存储设备;网络连接;存储一个或多个指令块的存储器;以及包括用于执行指令块的基于块的处理器核的处理器。作为另一示例,一种设备可以包括:用户界面组件;非易失性存储器和/或存储设备;蜂窝和/或网络连接;存储指令块中的一个或多个指令块的存储器;以及包括用于执行指令块的基于块的处理器在内的处理器。用户界面组件可以包括以下中的至少一个或多个:显示器、触摸屏显示器、触觉输入/输出设备、运动感测输入设备和/或语音输入设备。
在一个实施例中,一种处理器包括多个基于块的处理器核,多个基于块的处理器核用于执行包括多个指令块的程序。相应的基于块的处理器核包括一个或多个可共享资源和可编程复合控制寄存器。可编程复合控制寄存器可以用于配置一个或多个可共享资源中的哪些资源与多个处理器核中的其他处理器核共享。可编程控制寄存器在程序的执行期间是动态可编程的。
作为一个示例,一个或多个可共享资源可以仅在包括相应的基于块的处理器核的逻辑处理器核内被共享,其中逻辑处理器核被配置为执行程序的单个线程。相应的基于块的处理器核还可以包括可编程复合拓扑寄存器,可编程复合拓扑寄存器用于指定多个基于块的处理器核中的哪些处理器核被复合以形成逻辑处理器核。因此,一个或多个可共享资源可以被编程为在单个线程内被共享。作为另一示例,一个或多个可共享资源可以包括一级数据高速缓存。相应的基于块的处理器核可以被配置为执行程序的第一线程,并且一级数据高速缓存可以被配置为与执行程序的第二线程的第二基于块的处理器核共享。因此,一个或多个可共享资源可以被编程为跨多个线程被共享。
一个或多个可共享资源可以选自以下中的一个或多个:一级数据高速缓存、寄存器库、执行单元和完整的相应的基于块的处理器核。复合控制寄存器可以是可编程的,以在共享一个或多个可共享资源中所选择的资源的同时将相应核的一部分置于低功率模式。复合控制寄存器可以是可编程的,以在相应的基于块的处理器核的操作期间禁用一个或多个可共享资源中的特定资源。
在一个实施例中,可以执行在处理器上执行程序的方法。处理器可以包括多个基于块的处理器核,其中相应的处理器核包括一个或多个可共享资源。该方法包括:根据第一处理器核的可编程复合控制寄存器,来将第一处理器核的给定的可共享资源配置为与多个处理器核中的第二处理器核共享。该方法还包括:使用被配置在第一处理器核上的给定的可共享资源来在第二处理器核上执行指令块的指令。给定的可共享资源可以是高速缓存,并且第一处理器核的高速缓存可以是逻辑高速缓存的第一库,并且第二处理器核的高速缓存可以是逻辑高速缓存的第二库。指令的存储器地址可以包括索引字段,并且索引字段可以用于确定存储器是被映射到第一库还是被映射到第二库。
作为一个示例,第一处理器核可以被配置为执行程序的第一线程的指令块,并且第二处理器核可以被配置为执行程序的第二线程的指令块。作为另一示例,第一处理器核可以处于低功率模式。作为另一示例,第一处理器核和第二处理器核可以被复合以形成执行程序的单个线程的逻辑处理器核。
鉴于所公开的主题的原理可以应用的许多可能实施例,应当认识到所图示的实施例仅是优选的示例并且不应该当作将权利要求的范围限于那些优选的示例。相反,要求保护的主题的范围由所附的权利要求进行限定。我们因此根据我们的发明要求保护落在这些权利要求的范围内的全部内容。
Claims (17)
1.一种处理器,包括:
多个物理处理器核,所述多个物理处理器核用于执行包括多个指令集的程序,所述物理处理器核中的给定核被配置为执行所述程序的给定线程的所述指令集,所述给定核包括数据高速缓存,与所述给定核的指令流水线被断电同时地,所述数据高速缓存可配置为被通电并且在所述多个物理处理器核中的两个或更多物理处理器核之间可共享;
第一可编程复合控制寄存器,用于使所述给定核的所述指令流水线断电,并且使能被并入所述给定核中的所述数据高速缓存用于与所述物理处理器核中的一个或多个其他核共享,所述第一可编程复合控制寄存器适于在所述程序的运行时被编程;以及
第二可编程复合控制寄存器,包括:
用于对数目进行编程的字段,其中所述数目指示包括所述给定核的所述数据高速缓存和所述其他核的一个或多个数据高速缓存的多少数据高速缓存将要用于共享逻辑高速缓存;以及
多个附加字段,所述附加字段中的每个附加字段指示相应核和所述相应核的关联数据高速缓存,使得所述附加字段的所述关联数据高速缓存一起形成所述共享逻辑高速缓存,并且包括所述给定核的所述数据高速缓存。
2.根据权利要求1所述的处理器,其中所述第二可编程复合控制寄存器的所述附加字段对应于到所述逻辑高速缓存的所述数据高速缓存的地址的映射。
3.根据权利要求1所述的处理器,其中所述第二可编程复合控制寄存器通过以下操作而部分地可编程:对与所述第二可编程复合控制寄存器相对应的存储器映射地址执行在多个所述核中的任何核上执行的指令块的存储指令。
4.根据权利要求3所述的处理器,其中在具有对与所述第二可编程复合控制寄存器相对应的所述存储器映射地址的所述存储指令的所述指令块的提交阶段期间,所述第二可编程复合控制寄存器的值被更新。
5.根据权利要求1所述的处理器,其中所述处理器还包括用于可共享寄存器文件或可共享执行单元的一个或多个可编程复合控制寄存器。
6.一种处理器,包括:
多个处理器核,所述多个处理器核用于执行包括多个指令集的程序,所述处理器核中的给定核包括:
指令流水线,包括取指、译码和执行阶段;以及
多个可共享资源;
一个或多个可编程寄存器,所述一个或多个可编程寄存器用于将所述多个可共享资源中的第一资源配置为被通电并且被使能以用于与所述处理器核中的其他核共享,并且用于将所述指令流水线配置为与所述第一资源的所述共享同时地被断电,所述一个或多个可编程寄存器在所述程序的执行期间是可编程的;并且
其中所述一个或多个可编程寄存器包括:
用于存储数目的字段,所述数目指示包括所述第一资源的多少资源将要用于在所述给定核和所述其他核之间被共享;以及
多个附加字段,所述附加字段中的每个附加字段指示所述处理器核中的相应核以及所述相应核的共享资源,其中所述附加字段中的一个附加字段指示所述给定核和所述第一资源,所述附加字段指示能够共享所述第一资源的所述其他核中的至少一个核和所述给定核。
7.根据权利要求6所述的处理器,其中所述给定核和所述其他核可配置为逻辑处理器核,所述逻辑处理器核被配置为执行所述程序的单个线程。
8.根据权利要求7所述的处理器,还包括:
可编程复合拓扑寄存器,所述可编程复合拓扑寄存器用于指定所述处理器核中的哪些核被复合以形成所述逻辑处理器核。
9.根据权利要求6所述的处理器,其中:
所述多个可共享资源包括一级数据高速缓存;
所述给定核被配置为执行所述程序的第一线程;并且
所述一级数据高速缓存被配置为:与所述处理器核中的执行所述程序的第二线程的第二核共享。
10.根据权利要求6所述的处理器,其中所述多个可共享资源选自以下中的一个或多个:一级数据高速缓存、寄存器库、执行单元或完整的所述给定核。
11.根据权利要求6所述的处理器,其中所述一个或多个可编程寄存器是可编程的,以在所述给定核的操作期间禁用所述多个可共享资源中的特定资源。
12.根据权利要求6所述的处理器,其中所述第一资源具有私有的默认状态,并且所述多个可共享资源中的第二资源具有共享的默认状态。
13.根据权利要求7所述的处理器,其中所述一个或多个可编程寄存器还被配置为与所述处理器核中的第二核共享所述多个可共享资源中的第二资源,所述第二核在所述逻辑处理器核外部。
14.一种在包括多个处理器核的处理器上执行程序的方法,每个处理器核包括一个或多个可共享资源,所述方法包括:
将所述处理器核中的第一核配置为根据所述第一核的控制寄存器操作,所述控制寄存器被编程为:在所述第一核的给定可共享存储器资源被通电并且与所述处理器核中的第二核共享的同时,将所述第一核的指令流水线配置为被断电;以及
使用所述第一核的所述给定可共享存储器资源,在所述第二核上执行指令块的指令;并且
所述控制寄存器包括:
第一字段,所述第一字段存储指示包括所述给定可共享存储器资源的多少存储器资源将要在所述第一核和所述第二核之间被共享的值;以及
附加字段,所述附加字段指示所述第一核和所述处理器核中的至少一个其他核贡献相应的可共享存储器资源以用于共享,所述相应的可共享存储器资源包括所述给定可共享存储器资源;
其中所述附加字段包括:
第二字段,所述第二字段存储指示所述第二核和所述第二核的第二可共享存储器资源的值;以及
第三字段,所述第三字段存储指示所述处理器核的第三处理器核和所述第三处理器核的第三可共享存储器资源的值。
15.根据权利要求14所述的方法,其中所述共享存储器资源形成逻辑高速缓存;其中所述给定可共享存储器资源、所述第二可共享存储器资源和所述第三可共享存储器资源形成所述逻辑高速缓存的相应的第一库、第二库和第三库。
16.根据权利要求15所述的方法,其中存储器地址包括索引字段,并且所述索引字段用于确定所述存储器是被映射到所述第一库、还是被映射到所述第二库、还是被映射到所述第三库。
17.根据权利要求14所述的方法,还包括:与所述给定可共享存储器资源在所述第一核和第四核之间被共享同时地,将所述第四核的第四可共享存储器资源配置为处于禁用状态,所述第四核具有与所述给定可共享存储器资源相同的类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111002933.0A CN113703834B (zh) | 2015-09-19 | 2016-09-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 | ||
US14/757,941 | 2015-12-23 | ||
US14/757,941 US11126433B2 (en) | 2015-09-19 | 2015-12-23 | Block-based processor core composition register |
PCT/US2016/051422 WO2017048660A1 (en) | 2015-09-19 | 2016-09-13 | Block-based processor core composition register |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111002933.0A Division CN113703834B (zh) | 2015-09-19 | 2016-09-13 | 基于块的处理器核复合寄存器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108027771A CN108027771A (zh) | 2018-05-11 |
CN108027771B true CN108027771B (zh) | 2021-08-27 |
Family
ID=66000903
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680054472.2A Active CN108027771B (zh) | 2015-09-19 | 2016-09-13 | 基于块的处理器核复合寄存器 |
CN202111002933.0A Active CN113703834B (zh) | 2015-09-19 | 2016-09-13 | 基于块的处理器核复合寄存器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111002933.0A Active CN113703834B (zh) | 2015-09-19 | 2016-09-13 | 基于块的处理器核复合寄存器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11126433B2 (zh) |
EP (1) | EP3350711B1 (zh) |
CN (2) | CN108027771B (zh) |
WO (1) | WO2017048660A1 (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US11531552B2 (en) | 2017-02-06 | 2022-12-20 | Microsoft Technology Licensing, Llc | Executing multiple programs simultaneously on a processor core |
EP3563307B1 (en) | 2017-02-23 | 2023-04-12 | Cerebras Systems Inc. | Accelerated deep learning |
WO2018193370A1 (en) | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Task activating for accelerated deep learning |
US11488004B2 (en) | 2017-04-17 | 2022-11-01 | Cerebras Systems Inc. | Neuron smearing for accelerated deep learning |
WO2018193352A1 (en) | 2017-04-17 | 2018-10-25 | Cerebras Systems Inc. | Dataflow triggered tasks for accelerated deep learning |
US10853076B2 (en) * | 2018-02-21 | 2020-12-01 | Arm Limited | Performing at least two branch predictions for non-contiguous instruction blocks at the same time using a prediction mapping |
GB2573119A (en) * | 2018-04-24 | 2019-10-30 | Advanced Risc Mach Ltd | Maintaining state of speculation |
US11328207B2 (en) | 2018-08-28 | 2022-05-10 | Cerebras Systems Inc. | Scaled compute fabric for accelerated deep learning |
WO2020044208A1 (en) | 2018-08-29 | 2020-03-05 | Cerebras Systems Inc. | Isa enhancements for accelerated deep learning |
US11328208B2 (en) | 2018-08-29 | 2022-05-10 | Cerebras Systems Inc. | Processor element redundancy for accelerated deep learning |
US10761822B1 (en) * | 2018-12-12 | 2020-09-01 | Amazon Technologies, Inc. | Synchronization of computation engines with non-blocking instructions |
US11409560B2 (en) * | 2019-03-28 | 2022-08-09 | Intel Corporation | System, apparatus and method for power license control of a processor |
US11194582B2 (en) | 2019-07-31 | 2021-12-07 | Micron Technology, Inc. | Cache systems for main and speculative threads of processors |
US11048636B2 (en) | 2019-07-31 | 2021-06-29 | Micron Technology, Inc. | Cache with set associativity having data defined cache sets |
US10915326B1 (en) | 2019-07-31 | 2021-02-09 | Micron Technology, Inc. | Cache systems and circuits for syncing caches or cache sets |
US11200166B2 (en) | 2019-07-31 | 2021-12-14 | Micron Technology, Inc. | Data defined caches for speculative and normal executions |
US10908915B1 (en) | 2019-07-31 | 2021-02-02 | Micron Technology, Inc. | Extended tags for speculative and normal executions |
US11010288B2 (en) | 2019-07-31 | 2021-05-18 | Micron Technology, Inc. | Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution |
US11748024B2 (en) | 2020-04-01 | 2023-09-05 | Samsung Electronics Co., Ltd. | Apparatus and method of managing registers based on register group |
US11848980B2 (en) * | 2020-07-09 | 2023-12-19 | Boray Data Technology Co. Ltd. | Distributed pipeline configuration in a distributed computing system |
CN112463723A (zh) * | 2020-12-17 | 2021-03-09 | 王志平 | 一种微内核阵列的实现方法 |
US12039335B2 (en) | 2022-03-25 | 2024-07-16 | Micron Technology, Inc. | Schedule instructions of a program of data flows for execution in tiles of a coarse grained reconfigurable array |
US11815935B2 (en) * | 2022-03-25 | 2023-11-14 | Micron Technology, Inc. | Programming a coarse grained reconfigurable array through description of data flow graphs |
CN115220789B (zh) * | 2022-06-24 | 2023-02-07 | 北京联盛德微电子有限责任公司 | 一种用于多寄存器的操作命令触发调度方法及单元 |
CN118210599A (zh) * | 2022-12-16 | 2024-06-18 | 华为技术有限公司 | 芯片资源调度方法及相关装置 |
CN116862756B (zh) * | 2023-09-05 | 2023-12-19 | 广东匠芯创科技有限公司 | 行数据处理方法、行缓存器、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577260A (zh) * | 2003-06-26 | 2005-02-09 | 英特尔公司 | 跨线程寄存器共享技术 |
CN101243372A (zh) * | 2005-08-19 | 2008-08-13 | 国际商业机器公司 | 互斥地激活微处理器资源以控制最大功率的系统和方法 |
CN104424129A (zh) * | 2013-08-19 | 2015-03-18 | 上海芯豪微电子有限公司 | 基于指令读缓冲的缓存系统和方法 |
CN104620217A (zh) * | 2012-09-10 | 2015-05-13 | 德克萨斯仪器股份有限公司 | 从非易失性逻辑阵列唤醒恢复的具有受限电源域的处理设备 |
CN104834503A (zh) * | 2014-02-12 | 2015-08-12 | 想象技术有限公司 | 具有粒度的增加立即数能力的处理器和方法 |
Family Cites Families (174)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5317734A (en) | 1989-08-29 | 1994-05-31 | North American Philips Corporation | Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies |
US5551033A (en) | 1991-05-17 | 1996-08-27 | Zenith Data Systems Corporation | Apparatus for maintaining one interrupt mask register in conformity with another in a manner invisible to an executing program |
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 |
US5669001A (en) | 1995-03-23 | 1997-09-16 | International Business Machines Corporation | Object code compatible representation of very long instruction word programs |
US5729228A (en) | 1995-07-06 | 1998-03-17 | International Business Machines Corp. | Parallel compression and decompression using a cooperative dictionary |
US5917505A (en) | 1995-12-19 | 1999-06-29 | Cirrus Logic, Inc. | Method and apparatus for prefetching a next instruction using display list processing in a graphics processor |
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 |
US8583895B2 (en) | 1996-05-15 | 2013-11-12 | Nytell Software LLC | Compressed instruction format for use in a VLIW processor |
US5905893A (en) | 1996-06-10 | 1999-05-18 | Lsi Logic Corporation | Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set |
US6542998B1 (en) | 1997-02-08 | 2003-04-01 | Pact Gmbh | Method of self-synchronization of configurable elements of a programmable module |
US5845103A (en) | 1997-06-13 | 1998-12-01 | Wisconsin Alumni Research Foundation | Computer with dynamic instruction reuse |
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 |
US6178498B1 (en) | 1997-12-18 | 2001-01-23 | Idea Corporation | Storing predicted branch target address in different storage according to importance hint in branch prediction instruction |
US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
TW440793B (en) | 1998-02-25 | 2001-06-16 | Koninkl Philips Electronics Nv | A method for structuring a multi-instruction computer program from basic blocks that compose from internal instructions and external jumps in an internal directed acyclic graph, and a processor loaded with such program |
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 |
US6353883B1 (en) | 1998-08-04 | 2002-03-05 | Intel Corporation | Method and apparatus for performing predicate prediction |
US6240510B1 (en) | 1998-08-06 | 2001-05-29 | Intel Corporation | System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions |
US6275919B1 (en) | 1998-10-15 | 2001-08-14 | Creative Technology Ltd. | Memory storage and retrieval with multiple hashing functions |
US6367004B1 (en) | 1998-12-31 | 2002-04-02 | Intel Corporation | Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared |
US6453344B1 (en) | 1999-03-31 | 2002-09-17 | Amdahl Corporation | Multiprocessor servers with controlled numbered of CPUs |
US6438671B1 (en) | 1999-07-01 | 2002-08-20 | International Business Machines Corporation | Generating partition corresponding real address in partitioned mode supporting system |
US7430670B1 (en) | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6513109B1 (en) | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
US7051188B1 (en) | 1999-09-28 | 2006-05-23 | International Business Machines Corporation | Dynamically redistributing shareable resources of a computing environment to manage the workload of that environment |
US6651125B2 (en) | 1999-09-28 | 2003-11-18 | International Business Machines Corporation | Processing channel subsystem pending I/O work queues based on priorities |
US6986137B1 (en) | 1999-09-28 | 2006-01-10 | International Business Machines Corporation | Method, system and program products for managing logical processors of a computing environment |
US6446197B1 (en) | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
KR100337149B1 (ko) | 2000-07-05 | 2002-05-18 | 권 기 홍 | 프로그램 테스트 및 디버깅이 용이한 중앙처리장치 |
US6918032B1 (en) | 2000-07-06 | 2005-07-12 | Intel Corporation | Hardware predication for conditional instruction path branching |
US6662294B1 (en) | 2000-09-28 | 2003-12-09 | International Business Machines Corporation | Converting short branches to predicated instructions |
US6934254B2 (en) | 2001-01-18 | 2005-08-23 | Motorola, Inc. | Method and apparatus for dynamically allocating resources in a communication system |
US20030023959A1 (en) | 2001-02-07 | 2003-01-30 | Park Joseph C.H. | General and efficient method for transforming predicated execution to static speculation |
US7032217B2 (en) | 2001-03-26 | 2006-04-18 | Intel Corporation | Method and system for collaborative profiling for continuous detection of profile phase transitions |
US6957435B2 (en) | 2001-04-19 | 2005-10-18 | International Business Machines Corporation | Method and apparatus for allocating processor resources in a logically partitioned computer system |
US7002956B2 (en) | 2001-07-05 | 2006-02-21 | International Business Machines Corporation | Network addressing method and system for localizing access to network resources in a computer network |
US7095343B2 (en) | 2001-10-09 | 2006-08-22 | Trustees Of Princeton University | code compression algorithms and architectures for embedded systems |
WO2003038645A2 (en) | 2001-10-31 | 2003-05-08 | University Of Texas | A scalable processing architecture |
US7114059B2 (en) | 2001-11-05 | 2006-09-26 | Intel Corporation | System and method to bypass execution of instructions involving unreliable data during speculative execution |
US7228402B2 (en) | 2002-01-02 | 2007-06-05 | Intel Corporation | Predicate register file write by an instruction with a pending instruction having data dependency |
US6892292B2 (en) | 2002-01-09 | 2005-05-10 | Nec Corporation | Apparatus for one-cycle decompression of compressed data and methods of operation thereof |
US6877059B2 (en) | 2002-03-29 | 2005-04-05 | Emc Corporation | Communications architecture for a high throughput storage processor |
EP1495407A1 (en) | 2002-04-08 | 2005-01-12 | The University Of Texas System | Non-uniform cache apparatus, systems, and methods |
US6769316B2 (en) * | 2002-06-21 | 2004-08-03 | Rupprecht & Patashnick Company, Inc. | Sampling cartridge for gas sampling apparatus |
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 | 富士通株式会社 | 命令フェッチ制御装置 |
JP4196614B2 (ja) | 2002-08-22 | 2008-12-17 | パナソニック株式会社 | 命令スケジューリング方法、命令スケジューリング装置、及びプログラム |
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 |
US20040163082A1 (en) * | 2003-02-13 | 2004-08-19 | Marc Tremblay | Commit instruction to support transactional program execution |
US20040193849A1 (en) | 2003-03-25 | 2004-09-30 | Dundas James D. | Predicated load miss handling |
US7308682B2 (en) | 2003-04-25 | 2007-12-11 | Intel Corporation | Method and apparatus for recovering data values in dynamic runtime systems |
US6996698B2 (en) | 2003-05-12 | 2006-02-07 | International Business Machines Corporation | Blocking processing restrictions based on addresses |
US7284100B2 (en) | 2003-05-12 | 2007-10-16 | International Business Machines Corporation | Invalidating storage, clearing buffer entries, and an instruction therefor |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
KR100877138B1 (ko) | 2004-03-29 | 2009-01-09 | 고쿠리츠 다이가쿠 호진 교토 다이가쿠 | 데이터 처리장치, 데이터 처리 프로그램, 및 데이터 처리프로그램을 기록한 기록매체 |
US7392524B2 (en) | 2004-04-06 | 2008-06-24 | International Business Machines Corporation | Method, system, and storage medium for managing computer processing functions |
US7424482B2 (en) | 2004-04-26 | 2008-09-09 | Storwize Inc. | Method and system for compression of data for block mode access storage |
US7401240B2 (en) | 2004-06-03 | 2008-07-15 | International Business Machines Corporation | Method for dynamically managing power in microprocessor chips according to present processing demands |
JP4296996B2 (ja) | 2004-06-15 | 2009-07-15 | 富士通株式会社 | マルチコアプロセサ制御方式 |
US7302543B2 (en) | 2004-06-16 | 2007-11-27 | Nec Laboratories America, Inc. | Compressed memory architecture for embedded systems |
US7873776B2 (en) | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
US7685354B1 (en) * | 2004-06-30 | 2010-03-23 | Sun Microsystems, Inc. | Multiple-core processor with flexible mapping of processor cores to cache banks |
US8230252B2 (en) | 2004-07-20 | 2012-07-24 | Hewlett-Packard Development Company, L.P. | Time of day response |
US8166282B2 (en) | 2004-07-21 | 2012-04-24 | Intel Corporation | Multi-version register file for multithreading processors with live-in precomputation |
US7606995B2 (en) | 2004-07-23 | 2009-10-20 | Hewlett-Packard Development Company, L.P. | Allocating resources to partitions in a partitionable computer |
JP4345630B2 (ja) | 2004-09-29 | 2009-10-14 | ソニー株式会社 | 情報処理装置、割り込み処理制御方法、並びにコンピュータ・プログラム |
JP4982971B2 (ja) | 2004-09-29 | 2012-07-25 | ソニー株式会社 | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
US7624386B2 (en) | 2004-12-16 | 2009-11-24 | Intel Corporation | Fast tree-based generation of a dependence graph |
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 |
JP4322232B2 (ja) | 2005-06-14 | 2009-08-26 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム |
US7398084B2 (en) * | 2005-06-29 | 2008-07-08 | Agilent Technologies, Inc. | Method and system of correlating dissimilar call records to a high level aggregated view |
US8312452B2 (en) | 2005-06-30 | 2012-11-13 | Intel Corporation | Method and apparatus for a guest to access a privileged register |
US7389403B1 (en) | 2005-08-10 | 2008-06-17 | Sun Microsystems, Inc. | Adaptive computing ensemble microprocessor architecture |
US7437518B2 (en) | 2005-09-07 | 2008-10-14 | Intel Corporation | Hiding conflict, coherence completion and transaction ID elements of a coherence protocol |
US7412353B2 (en) | 2005-09-28 | 2008-08-12 | Intel Corporation | Reliable computing with a many-core processor |
JP4720436B2 (ja) | 2005-11-01 | 2011-07-13 | 株式会社日立製作所 | リコンフィギュラブルプロセッサまたは装置 |
KR100806274B1 (ko) | 2005-12-06 | 2008-02-22 | 한국전자통신연구원 | 멀티 쓰레디드 프로세서 기반의 병렬 시스템을 위한 적응형실행 방법 |
US7565654B2 (en) | 2006-01-10 | 2009-07-21 | National Instruments Corporation | Programmatic control of tasks in a programmable logic controller |
US9870267B2 (en) | 2006-03-22 | 2018-01-16 | Intel Corporation | Virtual vector processing |
US7802073B1 (en) | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US20070239965A1 (en) | 2006-03-31 | 2007-10-11 | Saul Lewites | Inter-partition communication |
TW200739419A (en) | 2006-04-07 | 2007-10-16 | Univ Feng Chia | Prediction mechanism of a program backward jump instruction |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US7962725B2 (en) | 2006-05-04 | 2011-06-14 | Qualcomm Incorporated | Pre-decoding variable length instructions |
US7487340B2 (en) | 2006-06-08 | 2009-02-03 | International Business Machines Corporation | Local and global branch prediction information storage |
US20070288733A1 (en) | 2006-06-08 | 2007-12-13 | Luick David A | Early Conditional Branch Resolution |
US7461241B2 (en) | 2006-07-31 | 2008-12-02 | International Business Machines Corporation | Concurrent physical processor reassignment method |
JP4912790B2 (ja) | 2006-08-18 | 2012-04-11 | 富士通株式会社 | システムコントローラ,スヌープタグ更新方法および情報処理装置 |
CN101512956B (zh) * | 2006-08-29 | 2012-05-30 | 皇家飞利浦电子股份有限公司 | 用于高速lvds通信的同步的方法和设备 |
US7809926B2 (en) | 2006-11-03 | 2010-10-05 | Cornell Research Foundation, Inc. | Systems and methods for reconfiguring on-chip multiprocessors |
EP2122461A4 (en) | 2006-11-14 | 2010-03-24 | Soft Machines Inc | DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES |
US8028131B2 (en) | 2006-11-29 | 2011-09-27 | Intel Corporation | System and method for aggregating core-cache clusters in order to produce multi-core processors |
US8291400B1 (en) | 2007-02-07 | 2012-10-16 | Tilera Corporation | Communication scheduling for parallel processing architectures |
US7853950B2 (en) | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
US8161476B2 (en) | 2007-07-04 | 2012-04-17 | International Business Machines Corporation | Processor exclusivity in a partitioned system |
US8180997B2 (en) * | 2007-07-05 | 2012-05-15 | Board Of Regents, University Of Texas System | Dynamically composing processor cores to form logical processors |
US8447911B2 (en) | 2007-07-05 | 2013-05-21 | Board Of Regents, University Of Texas System | Unordered load/store queue |
US7818542B2 (en) | 2007-07-10 | 2010-10-19 | Globalfoundries Inc. | Method and apparatus for length decoding variable length instructions |
JP2009026106A (ja) | 2007-07-20 | 2009-02-05 | Oki Electric Ind Co Ltd | 命令コード圧縮方法と命令フェッチ回路 |
US8225315B1 (en) | 2007-07-23 | 2012-07-17 | Oracle America, Inc. | Virtual core management |
US8544014B2 (en) | 2007-07-24 | 2013-09-24 | Microsoft Corporation | Scheduling threads in multi-core systems |
US9710384B2 (en) | 2008-01-04 | 2017-07-18 | Micron Technology, Inc. | Microprocessor architecture having alternative memory access paths |
JP5043560B2 (ja) | 2007-08-24 | 2012-10-10 | パナソニック株式会社 | プログラム実行制御装置 |
US9384003B2 (en) | 2007-10-23 | 2016-07-05 | Texas Instruments Incorporated | Determining whether a branch instruction is predicted based on a capture range of a second instruction |
US7870371B2 (en) | 2007-12-17 | 2011-01-11 | Microsoft Corporation | Target-frequency based indirect jump prediction for high-performance processors |
US7818551B2 (en) | 2007-12-31 | 2010-10-19 | Microsoft Corporation | Feedback mechanism for dynamic predication of indirect jumps |
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 |
US20100191943A1 (en) | 2009-01-26 | 2010-07-29 | Agere Systems Inc. | Coordination between a branch-target-buffer circuit and an instruction cache |
US20100325395A1 (en) | 2009-06-19 | 2010-12-23 | Doug Burger | Dependence prediction in a memory system |
US8364902B2 (en) | 2009-08-07 | 2013-01-29 | Via Technologies, Inc. | Microprocessor with repeat prefetch indirect instruction |
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 |
US9135079B2 (en) | 2009-10-21 | 2015-09-15 | International Business Machines Corporation | Dynamically assigning a portion of physical computing resource to logical partitions based on characteristics of executing logical partitions |
JP5057256B2 (ja) | 2009-12-02 | 2012-10-24 | 株式会社Mush−A | データ処理装置、データ処理システムおよびデータ処理方法 |
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 |
CN102096579B (zh) | 2009-12-11 | 2013-10-16 | 陈罡 | 一种嵌入式自适应模糊微处理器的组成与结构 |
WO2011079942A1 (en) | 2009-12-28 | 2011-07-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 |
KR101603751B1 (ko) | 2010-02-18 | 2016-03-16 | 삼성전자주식회사 | 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법 |
US8201024B2 (en) | 2010-05-17 | 2012-06-12 | Microsoft Corporation | Managing memory faults |
KR101731742B1 (ko) | 2010-06-18 | 2017-04-28 | 보드 오브 리전츠 더 유니버시티 오브 텍사스 시스템 | 결합된 분기 타깃 및 프레디킷 예측 |
US20120158647A1 (en) | 2010-12-20 | 2012-06-21 | Vmware, Inc. | Block Compression in File System |
US9766893B2 (en) | 2011-03-25 | 2017-09-19 | Intel Corporation | Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines |
KR101620676B1 (ko) * | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
US8540721B2 (en) * | 2011-04-04 | 2013-09-24 | Amicus Design Group, Llc | Adjustable apparatus and methods for inserting an implant |
US8490107B2 (en) | 2011-08-08 | 2013-07-16 | Arm Limited | Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels |
WO2013052788A2 (en) | 2011-10-06 | 2013-04-11 | Land O'lakes Purina Feed Llc | System and method for feeding ruminants based on rumen morphology |
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 |
US9513922B2 (en) | 2012-04-20 | 2016-12-06 | Freescale Semiconductor, Inc. | Computer system and a method for generating an optimized program code |
US8880638B2 (en) | 2012-06-18 | 2014-11-04 | International Business Machines Corporation | Distributed image cache for servicing virtual resource requests in the cloud |
CN103513957B (zh) | 2012-06-27 | 2017-07-11 | 上海芯豪微电子有限公司 | 高性能缓存方法 |
US9424191B2 (en) | 2012-06-29 | 2016-08-23 | Intel Corporation | Scalable coherence for multi-core processors |
US10203934B2 (en) | 2012-07-11 | 2019-02-12 | Intel Corporation | Parallell processing of a single data buffer |
US9582287B2 (en) | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US9218040B2 (en) * | 2012-09-27 | 2015-12-22 | Apple Inc. | System cache with coarse grain power management |
US9400650B2 (en) | 2012-09-28 | 2016-07-26 | Intel Corporation | Read and write masks update instruction for vectorization of recursive computations over interdependent data |
CN103729166B (zh) * | 2012-10-10 | 2017-04-12 | 华为技术有限公司 | 程序的线程关系确定方法、设备及系统 |
DE112012007119T5 (de) * | 2012-12-26 | 2015-07-30 | Intel Corporation | Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur |
US10073779B2 (en) * | 2012-12-28 | 2018-09-11 | Intel Corporation | Processors having virtually clustered cores and cache slices |
US9880842B2 (en) | 2013-03-15 | 2018-01-30 | Intel Corporation | Using control flow data structures to direct and track instruction execution |
JP6086230B2 (ja) | 2013-04-01 | 2017-03-01 | 日本電気株式会社 | 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法 |
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 |
US9619750B2 (en) | 2013-06-29 | 2017-04-11 | Intel Corporation | Method and apparatus for store dependence prediction |
US9239735B2 (en) | 2013-07-17 | 2016-01-19 | Texas Instruments Incorporated | Compiler-control method for load speculation in a statically scheduled microprocessor |
US9513687B2 (en) | 2013-08-28 | 2016-12-06 | Via Technologies, Inc. | Core synchronization mechanism in a multi-die multi-core microprocessor |
US9547496B2 (en) | 2013-11-07 | 2017-01-17 | Microsoft Technology Licensing, Llc | Energy efficient multi-modal instruction issue |
CN104679481B (zh) | 2013-11-27 | 2020-04-28 | 上海芯豪微电子有限公司 | 一种指令集转换系统和方法 |
US9471480B2 (en) * | 2013-12-02 | 2016-10-18 | The Regents Of The University Of Michigan | Data processing apparatus with memory rename table for mapping memory addresses to registers |
US20160357647A1 (en) | 2014-02-10 | 2016-12-08 | Hitachi, Ltd. | Computer, hypervisor, and method for allocating physical cores |
US9304805B2 (en) | 2014-06-06 | 2016-04-05 | Interinational Business Machines Corporation | Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors |
CN104310225A (zh) | 2014-08-19 | 2015-01-28 | 中国十七冶集团有限公司 | 建筑起重机械安全控制装置 |
US20160055004A1 (en) | 2014-08-21 | 2016-02-25 | Edward T. Grochowski | Method and apparatus for non-speculative fetch and execution of control-dependent blocks |
US10282227B2 (en) | 2014-11-18 | 2019-05-07 | Intel Corporation | Efficient preemption for graphics processors |
JP6488711B2 (ja) | 2015-01-14 | 2019-03-27 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US9946549B2 (en) | 2015-03-04 | 2018-04-17 | Qualcomm Incorporated | Register renaming in block-based instruction set architecture |
US20170083319A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Generation and use of block branch metadata |
US20170083318A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Configuring modes of processor operation |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US20170083320A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Predicated read instructions |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US20170083341A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Segmented instruction block |
US20170083313A1 (en) | 2015-09-22 | 2017-03-23 | Qualcomm Incorporated | CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs) |
-
2015
- 2015-12-23 US US14/757,941 patent/US11126433B2/en active Active
-
2016
- 2016-09-13 WO PCT/US2016/051422 patent/WO2017048660A1/en active Application Filing
- 2016-09-13 CN CN201680054472.2A patent/CN108027771B/zh active Active
- 2016-09-13 EP EP16775382.1A patent/EP3350711B1/en active Active
- 2016-09-13 CN CN202111002933.0A patent/CN113703834B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1577260A (zh) * | 2003-06-26 | 2005-02-09 | 英特尔公司 | 跨线程寄存器共享技术 |
CN101243372A (zh) * | 2005-08-19 | 2008-08-13 | 国际商业机器公司 | 互斥地激活微处理器资源以控制最大功率的系统和方法 |
CN104620217A (zh) * | 2012-09-10 | 2015-05-13 | 德克萨斯仪器股份有限公司 | 从非易失性逻辑阵列唤醒恢复的具有受限电源域的处理设备 |
CN104424129A (zh) * | 2013-08-19 | 2015-03-18 | 上海芯豪微电子有限公司 | 基于指令读缓冲的缓存系统和方法 |
CN104834503A (zh) * | 2014-02-12 | 2015-08-12 | 想象技术有限公司 | 具有粒度的增加立即数能力的处理器和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113703834B (zh) | 2024-08-02 |
WO2017048660A1 (en) | 2017-03-23 |
US11126433B2 (en) | 2021-09-21 |
EP3350711B1 (en) | 2024-02-28 |
US20170083315A1 (en) | 2017-03-23 |
CN113703834A (zh) | 2021-11-26 |
EP3350711A1 (en) | 2018-07-25 |
CN108027771A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108027771B (zh) | 基于块的处理器核复合寄存器 | |
CN108027807B (zh) | 基于块的处理器核拓扑寄存器 | |
CN108027772B (zh) | 用于逻辑处理器的不同的系统寄存器 | |
US20230106990A1 (en) | Executing multiple programs simultaneously on a processor core | |
CN108027766B (zh) | 预取指令块 | |
CN108027769B (zh) | 使用寄存器访问指令发起指令块执行 | |
EP3314401B1 (en) | Block-based architecture with parallel execution of successive blocks | |
EP3314398B1 (en) | Reuse of decoded instruction blocks in a block based architecture | |
US20170371660A1 (en) | Load-store queue for multiple processor cores | |
US20170083343A1 (en) | Out of order commit | |
CN108027733B (zh) | 在目标字段中存储无效 | |
EP3350707A1 (en) | Instruction block address register | |
US20170371659A1 (en) | Load-store queue for block-based processor |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |