CN108139913A - 处理器操作的配置模式 - Google Patents

处理器操作的配置模式 Download PDF

Info

Publication number
CN108139913A
CN108139913A CN201680053059.4A CN201680053059A CN108139913A CN 108139913 A CN108139913 A CN 108139913A CN 201680053059 A CN201680053059 A CN 201680053059A CN 108139913 A CN108139913 A CN 108139913A
Authority
CN
China
Prior art keywords
instruction
block
core
processor
pattern
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN201680053059.4A
Other languages
English (en)
Inventor
D·C·伯格
A·L·史密斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN108139913A publication Critical patent/CN108139913A/zh
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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/3891Concurrent 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3557Indexed addressing using program counter as base address
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

公开了用于配置、操作和编译用于基于块的处理器架构的代码的装置和方法。在所公开的技术的一个示例中,基于块的处理器包括处理器核,处理器核配置用于对包括一个或多个字段的基于块的处理器指令块的指令块头部进行译码,并且配置核中的至少一个核根据由字段中的至少一个字段指示的操作模式来执行指令块中的指令,模式包括以下中的一种或多种:核融合操作、向量模式操作、存储器依赖预测操作和/或确定的执行次序。

Description

处理器操作的配置模式
背景技术
由于摩尔定律所预测的持续晶体管扩展,微处理器已经从晶体管数的持续增加、集成电路成本、制造资本、时钟频率、以及能量效率中受益,而相关的处理器指令集架构(ISA)却很小变化。然而在过去40年里,来自驱动半导体工业的光刻扩展实现的益处正在放缓或者甚至反转。精简指令集计算(RISC)架构已经成为处理器设计中的主导典范很多年。乱序超标量实现尚未在面积或性能方面展现出持续改进。因此,存在对于扩展性能改进的处理器ISA改进的充足机会。
发明内容
公开了用于配置、操作和编译用于包括显式数据图执行(EDGE)架构的基于块的处理器架构(BB-ISA)的代码的方法、装置和计算机可读存储设备。用于例如改进处理器性能和/或减少能量消耗的解决方案的所描述的技术和工具可以彼此分离地被实现,或者彼此以各种组合被实现。如下面将更充分地描述的,所描述的技术和工具可以在以下各项中被实现:数字信号处理器、微处理器、专用集成电路(ASIC)、软处理器(例如,使用可重新配置逻辑被实现在现场可编程门阵列(FPGA)中的处理器核)、可编程逻辑、或者其他适合的逻辑电路。如对于本领域的普通技术人员而言将容易地明显的,所公开的技术可以被实现在各种计算平台中,包括但不限于服务器、大型机、手机、智能电话、PDA、手持式设备、手持式计算机、PDA、触摸屏平板设备、平板计算机、可穿戴计算机、以及膝上型计算机。
在所公开的技术的一个示例中,一种基于块的处理器包括处理器核,处理器核配置用于对针对包括数据的基于块的处理器指令块的指令块头部进行译码,以及配置核中的至少一个核而根据数据指定的操作模式来执行指令块中的指令,模式包括以下中的一种或多种:核融合操作、向量模式操作、存储器依赖预测操作或者确定的执行次序(order)。在一些示例中,一种方法包括根据由数据指定的操作模式来操作处理器,由数据指定的操作模式包括核融合操作、向量模式操作、存储器依赖预测操作或者确定的执行次序。在一些示例中,一种方法包括将源代码和/或目标代码转换为用于操作基于块的处理器的计算机可执行指令,以用于所公开的方法执行。在一些示例中,用于根据一个或多个指定的操作模式来操作处理器的指令存储在计算机可读存储介质中。
提供本发明内容以引入以在下文具体实施方式中进一步描述的简化形式的概念的选择。本发明内容不旨在标识要求保护的主题的关键特征或基本特征,其也不旨在用于限制要求保护的主题的范围。所公开的主题的前述和其他目标、特征以及优点将从参考附图进行的以下具体实施方式变得更加明显。
附图说明
图1图示了如可以在所公开的技术的一些示例中使用的基于块的处理器核。
图2图示了如可以在所公开的技术的一些示例中使用的基于块的处理器核。
图3图示了根据所公开的某些示例的多个指令块。
图4图示了如可以在所公开的技术的一些示例中使用的源代码和指令块的部分。
图5图示了如可以在所公开的技术的一些示例中使用的基于块的处理器头部和指令。
图6图示了如可以在所公开的技术的一些示例中使用的源代码和汇编代码的示例。
图7图示了如可以在所公开的技术的一些示例中使用的多个指令块和处理器核。
图8是图示了如可以在所公开的技术的某些示例中实现的根据所选择的操作模式来执行针对指令块的指令的示例方法的流程图。
图9是概述如可以在所公开的技术的某些示例中实现的、配置处理器以根据指令块头部中指定的一个或多个操作模式来执行的示例方法的流程图。
图10是图示了如可以在所公开的技术的某些示例中实现的基于块的处理器的核融合操作的示图。
图11是图示了如可以在所公开的技术的某些示例中实现的主从向量操作的示图。
图12是图示了如可以在所公开的技术的某些示例中实现的分布式向量模式操作的示例的示图。
图13A和图13B是可以在所公开的技术的某些示例中按序或者乱序执行的代码的示例。
图14是可以在所公开的技术的某些示例中执行的包括混叠的源代码的示例。
图15是如可以在所公开的技术的某些示例中执行的包括I/O操作的源代码的示例。
图16是概述如可以在所公开的技术的某些示例中实现的将代码转换为包括执行模式标志的基于块的处理器可执行代码的示例的流程图。
图17是图示用于实现所公开的技术的一些实施例的适合的计算环境的框图。
具体实施方式
I.总体考虑
在未旨在以任何方式进行限制的代表性实施例的上下文中阐述了本公开内容。
如在本申请中所使用的,除非上下文清楚地指明,否则单数形式“一”、“一种”和“该”包括复数形式。此外,术语“包括”意味着“包含”。而且,术语“耦合的”涵盖机械的、电的、磁性的、光学的以及将项耦合或链接在一起的其他实际方式,并且不排除耦合项之间的中间元件的存在。另外,如在此所使用的,术语“和/或”意味着短语中的任何一项或多项的组合。
在此所描述的系统、方法和装置不应当以任何方式被解释为限制性的。相反,本公开涉及彼此单独并且以各种组合和子组合的各种所公开的实施例的所有新颖和非显而易见的特征和方面。所公开的系统、方法和装置既不限于任何特定方面或者特征或者其组合,所公开的内容和方法也不要求任何一个或多个特定优点存在或者问题被解决。此外,所公开的实施例的任何特征或者方面可以彼此以各种组合和子组合被使用。
虽然为了方便呈现而以特定顺序的次序描述所公开的方法中的一些方法的操作,但是应当理解,除非特定排序由下面阐述的特定语言要求,否则说明书的这种方式涵盖重新布置。例如,顺序地描述的操作可以在一些情况下重新布置或者并行地执行。此外,出于简单的缘故,附图可能未示出所公开的内容和方法可以结合其他内容和方法使用的各种方式。此外,说明书有时使用类似“产生”、“生成”、“显示”、“接收”、“发射”、“验证”、“执行”和“发起”的术语来描述所公开的方法。这些术语是所执行的实际操作的高层描述。对应于这些术语的实际操作将取决于特定实现而变化并且是由本领域的普通技术人员容易地可辨别的。
参考本公开的装置或者方法在此所呈现的操作理论、科学原理或者其他理论描述已经出于更好的理解的目的而被提供,并且不旨在范围方面是限制性的。所附的权利要求中的装置和方法不限于以由这样的操作理论所描述的方式实现的那些装置和方法。
所公开的方法中的任一方法可以被实现为被存储在一个或多个计算机可读介质(例如,计算机可读介质(诸如一个或多个光学介质光盘、易失性存储器部件(诸如DRAM或SRAM))或非易失性存储器部件(诸如硬盘驱动器))上并且被执行在计算机(例如,任何商业可获得的计算机,包括智能电话或者包括计算硬件的其他移动设备)上的计算机可执行指令。用于实现所公开的技术的计算机可执行指令中的任一指令以及在所公开的实施例的实现期间创建和使用的任何数据可以被存储在一个或多个计算机可读介质(例如,计算机可读存储介质)上。计算机可执行指令可以是例如专用软件应用或者经由网络浏览器或者其他软件应用(诸如远程计算应用)访问或者下载的软件应用的一部分。这样的软件可以例如在单个本地计算机(例如,利用在任何适合的商业可获得的计算机上执行的通用和/或基于块的处理器)上被执行,或者在使用一个或多个网络计算机的网络环境中(例如,经由因特网、广域网、局域网、客户端服务器网络(诸如云计算网络)、或者其他这样的网络)中被执行。
为了清晰起见,描述了基于软件的实现的仅某些所选的方面。省略了在本领域中众所周知的其他细节。例如,应当理解,所公开的技术不限于任何特定计算机语言或者程序。例如,所公开的技术可以通过以C、C++、JAVA或者任何其他适合的编程语言来实现。同样地,所公开的技术不限于任何特定计算机或者硬件类型。适合的计算机和硬件的某些细节是众所周知的并且不需要在本公开中被详细阐述。
此外,基于软件的实施例(包括例如用于使得计算机执行所公开的方法中的任一方法的计算机可执行指令)中的任一实施例可以通过适合的通信手段被上载、被下载或者被远程访问。这样的适合的通信手段包括例如因特网、万维网、内联网、软件应用、电缆(包括光纤电缆)、磁通信、电磁通信(包括RF、微波和红外通信)、电子通信、或者其他这样的通信手段。
II.对所公开的技术的介绍
超标量乱序微架构采用大量的电路资源来重命名寄存器,以数据流次序调度指令,在误推测之后清理,并且针对精确异常按序收回结果。这包括昂贵的电路,诸如深的许多端口的寄存器文件、用于数据流指令调度唤醒的许多端口的内容可访问存储器(CAM)、以及许多宽总线复用器和旁路网络,所有的这些都是资源密集的。例如,多读取、多写入RAM的基于FPGA的实现通常要求复制、多循环操作、时钟加倍、组交错、实况值表和其他昂贵技术的混合。
所公开的技术可以通过应用包括高指令集并行性(ILP)、乱序(OoO)、超标量执行的技术来实现性能增强,同时避免处理器硬件和相关联的软件二者中的大量的复杂性和开销。在所公开的技术的一些示例中,基于块的处理器使用针对区域和能量有效的高ILP执行所设计的EDGE ISA。在一些示例中,EDGE架构和相关联的编译器的使用巧妙处理重命名CAM的寄存器的远离和复杂性。
在所公开的技术的某些示例中,EDGE ISA可以消除对于一个或多个复杂架构特征的需要,包括寄存器重命名、数据流分析、误推测恢复以及按序隐退,同时支持主流编程语言(诸如C和C++)。在所公开的技术的某些示例中,基于块的处理器执行多个(两个或两个以上)指令作为原子块。基于块的指令可以被用于以更显式的方式表达程序数据流和/或指令流的语义,这允许改进的编译器和处理器性能。在所公开的技术的某些示例中,显式数据图形执行指令集架构(EDGE ISA)包括关于可以用于改进对不适当的控制流指令的检测的程序控制流的信息,从而增加性能、节省存储器资源和/或并且节省能量。
在所公开的技术的一些示例中,在指令块内组织的指令原子地被取指、被执行并且被提交。块内的指令以数据流次序执行,其使用寄存器重命名减少或者消除并且提供功率有效的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)控制器。在一些示例中,存储器接口管理虚拟存储器的分配,扩展可用的主存储器155。
I/O接口145包括用于将输入信号和输出信号接收并且发送到其他部件的电路,诸如硬件中断、系统控制信号、外围接口、协处理器控制和/或数据信号(例如,用于图形处理单元、浮点协处理器、物理处理单元、数字信号处理器或者其他协处理部件的信号)、时钟信号、信号量或者其他适合的I/O信号。I/O信号可以是同步的或者异步的。在一些示例中,I/O接口的全部或部分结合存储器接口140使用存储器映射的I/O技术被实现。
基于块的处理器100还可以包括控制单元160。控制单元160监督处理器100的操作。可以由控制单元160执行的操作可以包括用于执行指令处理而对核的分配和解除分配;对任何核、寄存器文件、存储器接口140和/或I/O接口145中之间的输入数据和输出数据的控制;对执行流的修改;以及验证控制流中的分支指令、指令头部和其他改变的(一个或多个)目标位置。例如,控制单元160可以对用于核融合操作或者向量模式操作的核进行分配和解除分配。
控制单元160还可以用于配置处理器以根据存储在例如指令块头部、通过执行处理器指令而配置的寄存器或者指明的架构寄存器或存储器位置中的数据指定的操作模式来执行指令块中的指令。处理器可以根据其进行操作的适合的操作模式包括核融合操作、向量模式操作、存储器依赖预测操作或者确定的执行次序。
控制单元160还可以处理硬件中断,并且控制特殊系统寄存器(例如,被存储在一个或多个寄存器文件中的程序计数器)的读取和写入。在所公开的技术的一些示例中,控制单元160至少部分地使用处理器核110中的一个或多个核被实现,而在其他示例中,控制单元160使用非基于块的处理器核(例如,耦合到存储器的通用RISC处理核)被实现。在一些示例中,控制单元160至少部分地使用以下各项中的一项或多项被实现:硬连线有限状态机、可编程微代码、可编程门阵列或者其他适合的控制电路。在备选示例中,可以由核110中的一个或多个核来执行控制单元功能。
在一些示例中,指令调度器206使用耦合到存储器的通用处理器被实现,存储器被配置为存储用于调度指令块的数据。在一些示例中,指令调度器206使用专用处理器或者使用耦合到存储器的基于块的处理器核被实现。在一些示例中,指令调度器206被实现为耦合到存储器的有限状态机。在一些示例中,在处理器(例如,通用处理器或者基于块的处理器核)上执行的操作系统生成优先级、断言和其他数据,其可以至少部分地用于利用指令调度器206来调度指令块。如本领域的普通技术人员将容易地理解到,在集成电路、可编程逻辑或者其他适合的逻辑中实现的其他电路结构可以用于实现用于指令调度器206的硬件。
控制单元160包括用于将指令块分配到处理器核110的调度器165。如在此所使用的,调度器分配涉及引导指令块的操作,包括发起指令块映射、取指、译码、执行、提交、中止(abort)、空闲以及刷新指令块。处理器核110在指令块映射期间被指派到指令块。所描述的指令操作的阶段出于说明性目的,并且在所公开的技术的一些示例中,某些操作可以被组合、被省略、被分离为多个操作,或者被添加附加操作。调度器165调度指令的流,包括用于实现指令处理而对的核的分配和解除分配、核中的任何核、寄存器文件、存储器接口140和/或I/O接口145之间的输入数据和输出数据的控制。控制单元60还包括操作模式寄存器167,其可以用于存储指示针对指令块的一个或多个操作模式的数据。
基于块的处理器100还包括时钟发生器170,其将一个或多个时钟信号分布到处理器内的各种部件(例如,核110、互连120、存储器接口140和I/O接口145)。在所公开的技术的一些示例中,所有部件共享共同时钟,而在其他示例中,不同的部件使用不同的时钟(例如,具有不同的时钟频率的时钟信号)。在一些示例中,时钟的一部分被选通以在处理器部件中的一些部件未被使用时允许功率节省。在一些示例中,时钟信号使用锁相环(PLL)被生成以生成具有固定的恒定频率和占空比的信号。接收时钟信号的电路可以在单个边沿(例如,上升沿)上被触发,而在其他示例中,接收电路中的至少一些电路通过上升和下降时钟沿而被触发。在一些示例中,时钟信号可以光学地或无线地被传输。
IV.示例基于块的处理器核
图2是如可以在所公开的技术的某些示例中使用的进一步详述用于基于块的处理器100(并且特别地,基于块的处理器核之一的实例)的示例微架构的块图200。为了便于解释,示例性的基于块的处理器核被图示有五个阶段:指令取指(IF)、译码(DC)、操作数取指、执行(EX)以及存储器/数据访问(LS)。然而,本领域的普通技术人员将容易地理解到,对所图示的微架构的修改(诸如添加/移除阶段、添加/移除执行操作的单元、以及其他实现细节)可以被修改为适合用于基于块的处理器的特定应用。
如在图2中所示,处理器核111包括控制单元205,其生成控制信号来调节核操作,并且使用指令调度器206调度核内的指令流。可以由控制单元205和/或指令调度器206执行的操作可以包括用于执行指令处理而对核的分配和解除分配;对任意核、寄存器文件、存储器接口140和/或I/O接口145之间的输入数据和输出数据的控制。例如,控制单元205可以对用于核融合操作或者向量模式操作的核进行分配和解除分配。
控制单元205还包括操作模式寄存器,其可以存储指定一个或多个操作模式的数据。例如,控制单元205可以用于配置处理器以根据存储在例如指令块头部、通过执行处理器指令而配置的操作模式寄存器或者指明的架构寄存器或存储器位置中的数据指定的操作模式,来执行指令块中的指令。例如,操作模式数据可以存储在操作模式寄存器207中,操作模式寄存器207通过控制单元205可访问,但是这不是架构上可见的。操作模式数据还可以存储在寄存器文件230中的指明寄存器中。处理器可以根据其来操作的适合的操作模式包括核融合操作、向量模式操作、存储器依赖预测操作或者确定的执行次序。
控制单元205还可以处理硬件中断,并且控制特殊系统寄存器(例如,被存储在一个或多个寄存器文件中的程序计数器)的读取和写入。在所公开的技术的其他示例中,控制单元205和/或指令调度器206使用非基于块的处理器核(例如,耦合到存储器的通用RISC处理核)被实现。在一些示例中,控制单元205和/或指令调度器206至少部分地使用以下各项中的一项或多项被实现:硬连线有限状态机、可编程微代码、可编程门阵列、或者其他适合的控制电路。
示例性处理器核111包括两个指令窗口210和211,其中的每个指令窗口可以被配置为执行指令块。在所公开的技术的一些示例中,指令块是基于块的处理器指令的原子集合,其包括指令块头部以及多个一个或多个指令。如下面将进一步讨论的,指令块头部包括可以被用于进一步定义指令块内的多个指令中的一个或多个指令的语义的信息。取决于所使用的特定ISA和处理器硬件,还可以在指令的执行期间使用指令块头部,并且通过例如允许对指令和/或数据的早期取回、改进的分支预测、推测的执行、改进的能量效率以及经改进的代码紧密性,来改进执行指令块的性能。在其他示例中,不同的数目的指令窗口是可能的,诸如一个、四个、八个或其他数目的指令窗口。
指令窗口210和211中的每个指令窗口可以从输入端口220、221和222(其连接到互连总线)中的一个或多个输入端口以及指令高速缓存227(其进而连接到指令译码器228和229)接收指令和数据。附加的控制信号还可以在附加的输入端口225上被接收。指令译码器228和229中的每个指令译码器对指令头部和/或用于指令块中的指令进行译码,并且将所译码的指令存储在被定位在每个相应的指令窗口210和211中的存储器存储库215和216内。另外,译码器228和229中的每个译码器向控制单元205发送数据,例如,用以根据指令块头部或者指令中指定的操作模式来配置处理器核111的操作。
处理器核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中的信息可以包括但不限于相关联的指令的执行断言(诸如指令是否正等待要被计算的断言位,并且在断言位是真或者假的情况下指令是否执行)、操作数对于指令的可用性、或者在执行相关联的个体指令之前所要求的其他前提条件。被存储在每个指令窗口中的指令的数目通常对应于指令块内的指令的数目。在一些示例中,指令块内的指令的数目可以是32、64、128、1024或者另一数目的指令。在所公开的技术的一些示例中,跨处理器核内的多个指令窗口分配指令块。根据指定一个或多个操作模式的数据可以控制乱序操作和存储器访问。
在一些示例中,(例如,根据架构定义,或者通过处理器的可编程配置)在处理器上施加约束,以禁用不按指令布置在指令块中的顺序次序的指令的执行。在一些示例中,可用的最低编号的指令被配置成为下一个要执行的指令。在一些示例中,控制逻辑遍历指令块中的指令,并且执行准备好要执行的下一个指令。在一些示例中,一次只有一个指令可以发布和/或执行。在一些示例中,指令块内的指令以确定的次序(例如,指令布置在块中的顺序次序)来发布和执行。在一些示例中,当使用软件调试器或者通过用户调试在基于块的处理器上执行的程序时,可以配置对指令排序的约束。
指令可以使用被定位在处理器核111内的控制单元205而被分配并且被调度。控制单元205安排来自存储器的对指令的取指、对执行的译码、在其已经被加载到相应的指令窗口时对指令的执行、进/出处理器核111的数据流,并且控制由处理器核输入和输出的信号。例如,控制单元205可以包括如上文所描述的就绪队列,以用于在调度指令中使用。可以原子地执行被存储在被定位在每个相应的指令窗口210和211中的存储器存储库215和216中的指令。因此,对由执行的指令影响的可见架构状态(诸如寄存器文件230和存储器)的更新可以本地缓存在核200内直到指令被提交为止。控制单元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二者可以将数据发送回到指令(例如,作为用于指令块内的其他指令的操作数)。
如本领域的普通技术人员将容易理解到,个体核200内的部件不限于图2中所示的那些部件,而是可以根据特定应用的要求而变化。例如,核可以具有更少或更多的指令窗口,单个指令译码器可以由两个或两个以上指令窗口共享,并且所使用的功能单元的数目和类型可以取决于用于基于块的处理器的特定目标应用而变化。在利用指令核选择并且分配资源时应用的其他考虑包括性能要求、能量使用要求、集成电路芯片、处理技术和/或成本。
对于本领域的普通技术人员而言将容易明显的,可以通过处理器核110的指令窗口(例如,指令窗口210)和控制单元205内的资源的设计和分配来在处理器性能中做出折中。面积、时钟周期、能力和限制实质上确定个体核110的实现性能和基于块的处理器100的吞吐量。
指令调度器206可以具有不同的功能。在某些较高的性能示例中,指令调度器是高并发的。例如,每个周期(一个或多个)译码器将指令的译码就绪状态和译码指令写入到一个或多个指令窗口中,选择要发出的下一个指令,并且作为响应后端发送第二就绪事件——以特定指令的输入槽(断言、左操作数、右操作数等)为目标的任一目标就绪事件或者以所有指令为目标的广播就绪事件。每指令就绪状态位连同译码就绪状态可以被用于确定指令准备好发出。
在一些情况下,调度器206接受目标指令的事件,其尚未被译码并且还必须禁止已发出的就绪指令的重新发出。在一些示例中,指令可以是非断言的、或者断言的(基于真或假条件)。断言的指令直到其由另一指令的断言结果作为目标时才变得就绪,并且该结果匹配断言条件。如果相邻的断言未匹配,则指令绝不发出。在一些示例中,断言指令可以推测地被发出并且被执行。在一些示例中,处理器可以随后地检查推测地发出和执行的指令被正确地推测。在一些示例中,误推测的发出指令和消耗其输出的块中的指令的特定传递闭包可以被重新执行、或者误推测取消的副作用。在一些示例中,误推测的指令的发现导致整个指令块的完全回滚和重新执行。
在分支到新指令块时,相应的指令窗口就绪状态被清除(块被重置)。然而,当指令块分支回到其自身(块刷新)时,仅仅活跃就绪状态被清除。指令块的译码就绪状态可以因此被保留,使得其不需要重新取指并且译码块的指令。因此,块刷新可以用于节省循环中的时间和能量。
V.示例指令块流
现在转到图3的示图300,图示了基于块的指令流的一部分310,包括若干可变长度指令块311-314。指令流可以用于实现用户应用、系统服务或者任何其他适合的用途。例如,指令流可以根据指定的操作模式来执行。在图3中所示的示例中,每个指令块从指令头部开始,其跟随有不同的数目的指令。例如,指令块311包括头部320和二十条指令321。所图示的特定指令头部320包括部分地控制指令块内的指令的执行的若干数据字段,并且还允许改进的性能增强技术,包括例如分支预测、推测执行、惰性评估和/或其他技术。指令头部320还包括指令块大小的指示。指令块大小可以处于比一更大的指令的数据块中,例如,被包含在指令块内的4指令数据块的数目。换句话说,块的大小被移动4位以便压缩被分配到指定指令块大小的头部空间。因此,0的大小值指示最小大小的指令块,其是跟随有四条指令的块头部。在一些示例中,指令块大小被表达为字节数、字数、n字数据块数、地址、地址偏移或者使用用于描述指令块的大小的其他适合的表达。在一些示例中,指令块大小由指令块头部和/或脚部中的终止位模式来指示。
指令块头部320还可以包括一个或多个执行标志,该一个或多个执行标志指示用于执行指令块的一个或多个操作模式。例如,操作模式可以包括核融合操作、向量模式操作、存储器依赖预测和/或按序或者确定的指令执行。
在所公开的技术的一些示例中,指令头部320包括指示编码数据是指令头部的一个或多个标识位。例如,在一些基于块的处理器ISA,最低有效位空间中的单个ID位总是被设定为二进制值1,以指示有效指令块的开始。在其他示例中,不同的位编码可以用于(一个或多个)标识位。在一些示例中,指令头部320包括指示相关联的指令块被编码所针对的ISA的特定版本的信息。
指令块头部还可以包括用于在例如分支预测、控制流确定和/或分支处理中使用的若干块退出类型。退出类型可以指示分支指令的类型是什么,例如:顺序的分支指令,其指向存储器中的下一相连的指令块;偏移指令,其是相对于偏移而计算的存储器地址处的另一指令块的分支;子例程调用、或者子例程返回。通过编码指令头部中的分支退出类型,分支预测器可以至少部分地在相同指令块内的分支指令已经被取指和/或被译码之前开始操作。
指令块头部320还包括存储掩码,其标识被指派到存储操作的加载存储队列标识符。指令块头部还可以包括写入掩码,其标识相关联的指令块将写入的(一个或多个)全局寄存器。相关联的寄存器文件必须在指令块可以完成之前接收对每个条目的写入。在一些示例中,基于块的处理器架构可以包括不仅标量指令,而且单指令多数据(SIMD)指令,这允许具有单个指令内的较大数目的数据操作数的操作。
可以用于指令321的适合的基于块的指令的示例可以包括用于执行整数和浮点运算、逻辑操作、类型变换、寄存器读取和写入、存储器加载和存储、分支和跳转的执行的指令以及其他适合的处理器指令。在一些示例中,指令包括用于配置处理器例如通过设置/清除一个或多个操作标志或者将数据存储在控制寄存器(例如,操作模式寄存器167或207)中而根据一个或多个操作来操作的指令。在一些示例中,诸如用以分配给(例如,用于所有或者指定的指令块的)核融合或者向量模式操作的核的数目的数据可以存储在控制寄存器中。在一些示例中,控制寄存器不是架构上可见的。在一些示例中,对控制寄存器的访问被配置为限制于监督模式或者处理器的其他受保护模式的处理器操作。
VI.示例块指令目标编码
图4是描绘C语言源代码的两个部分410和415及其相应的指令块420和425的示例的示图400,这图示了基于块的指令可以如何显式地编码其目标。可以根据指定的操作模式来执行示例指令。在该示例中,前两个READ指令430和431相应地以ADD指令432的右(T[2R])和左(T[2L])操作数为目标。在所图示的ISA中,读指令是从全局寄存器文件(例如,寄存器文件230)读取的唯一指令;然而,任何指令可以以全局寄存器文件为目标。当ADD指令432接收到这两个寄存器读取的结果时,其将变为就绪并且执行。
当TLEI(测试小于等于立即(test-less-than-equal-immediate))指令433从ADD接收其单个输入操作数时,其将变为就绪并且执行。测试然后产生在信道一(B[1P])上广播到在广播信道上监听的所有指令的断言操作数,其在该示例中是两个断言的分支指令(BRO_T434和BRO_F 435)。接收匹配断言的分支将激发。
指令块420的依赖性图形440还被图示为指令节点阵列450和其对应的操作数目标455和456。这图示了块指令420、对应的指令窗口条目以及由指令所表示的底层数据流程图之间的对应性。此处,译码指令READ 430和READ 431准备好发出,因为其不具有输入依赖性。当其发出并且执行时,从寄存器R0和R7读取的值被写入到ADD 432的右操作数缓冲器和左操作数缓冲器中,这使ADD 432的左操作数和右操作数“就绪”。因此,ADD 432指令变为就绪、发出到ALU、执行,并且和被写入到TLEI指令433的左操作数。
VII.示例基于块的指令格式
图5是图示用于指令头部510、通用指令520和分支指令530的指令格式的一般化示例的示图。指令格式可以用于根据指定操作模式执行的指令块。指令头部或者指令中的每一个根据位数而被标记。例如,指令头部510包括五个32位的字并且从其最低有效位(lsb)(位0)被标记直到其最高有效位(msb)(位159)。如所示出的,指令头部包括写入掩码字段、存储掩码字段、多个退出类型字段、多个执行标志字段515、指令块大小字段和指令头部ID位(指令头部的最低有效位)。指令头部510还包括附加元数据517,附加元数据517还指定指令的操作。在一些示例中,元数据517是固定长度(例如,一个或两个字的数据)。在其他示例中,元数据517可以是可变长度的。
图5中描绘的执行标志字段515占用指令块头部510的6到13位,并且指示用于执行指令块的一个或多个操作模式。例如,操作模式可以包括核融合操作、向量模式操作、存储器依赖预测和/或按序或确定的指令执行。在所公开的技术的一些示例中,6位(XFLAGS[0])指示向量模式操作,7位指示和融合模式,8位指示是否抑制存储器依赖预测器,并且13位(XFLAGS[7])指示是否强制确定执行(例如,按顺序次序或者按不严格的顺序次序执行,该不严格的顺序次序不会基于数据依赖性或者其他变化的操作延迟而改变)。在一些示例中,元数据517可以包括进一步定义操作模式的附加数据。例如,元数据517可以指示用于核融合操作的核的数目和/或拓扑。
退出类型字段包括可以用于指示被编码在指令块内的控制流指令的类型的数据。例如,退出类型字段可以指示指令块包括以下各项中的一项或多项:顺序分支指令、偏移分支指令、间接分支指令、调用指令、和/或返回指令。在一些示例中,分支指令可以是用于在指令块之间传递控制流的任何控制流指令,包括相对地址和/或绝对地址,并且使用有条件的断言或者无条件的断言。除了确定隐式控制流指令之外,退出类型字段可以用于分支预测和推测执行。在一些示例中,多达六种退出类型可以被编码在退出类型字段中,并且字段与对应的显式或者隐式控制流指令之间的对应性可以通过例如检查指令块中的控制流指令而被确定。
所图示的通用块指令520被存储为一个32位的字,并且包括操作码字段、断言字段、广播ID字段(BID)、向量操作字段(V)、单指令多数据(SIMD)字段、第一目标字段(T1)、以及第二目标字段(T2)。对于具有比目标字段更大的消费者的指令而言,编译器可以使用移动指令来构建扇出树,或者其可以向广播信道指派指令目标操作数。广播支持通过轻量级网络将操作数发送到核中的任何数目的消费者指令。发送指令对目标信道和/或类型(例如,LOP、ROP或PRED)进行编码,以发送一个或全部两个目标字段(T1和/或T2)中的广播数据。广播标识符字段(BID)可以编码在类属(generic)块指令520中,并且指示指令接收广播操作数所在的信道。在其他示例中,BID字段可以进一步对传入广播操作数的类型进行编码。
虽然由通用指令520概述的通用指令格式可以表示由基于块的处理器处理的一些或全部指令,但是本领域的技术人员将容易理解到,即使对于ISA的特定示例而言,指令字段中的一个或多个指令字段也可以偏离用于特定指令的通用格式。操作码字段指定由指令520执行的(一个或多个)操作,诸如存储器读取/写入、寄存器加载/存储、加法、减法、乘法、除法、移位、旋转、系统操作或者其他适合的指令。断言字段指定指令在其下将执行的条件。例如,断言字段可以指定值“真”,并且指令将仅在对应的条件标志匹配指定的断言值的情况下执行。在一些示例中,断言字段至少部分地指定哪一个被用于比较断言,而在其他示例中,执行在由先前指令(例如,指令块中的先前指令)设定的标志上被断定。在一些示例中,断言字段可以指定指令将总是或者绝不被执行。因此,断言字段的使用可以通过减少分支指令的数目来允许更密集的目标代码、改进的能量效率以及改进的处理器性能。
目标字段T1和T2指定基于块的指令的结果被发送到的指令。例如,在指令槽5处的ADD指令可以指定其计算结果将被发送到槽3和10处的指令。取决于特定指令和ISA,所图示的目标字段之一或二者可以由其他信息替换,例如,第一目标字段T1可以由中间操作数、附加操作码、指定两个目标等来替换。
分支指令530包括操作码字段、断言字段、广播ID字段(BID)以及偏移字段。操作码和断言字段在如关于通用指令所描述的格式和功能方面是类似的。偏移可以以四个指令的组为单位被表达,因此扩展在其上可以执行分支的存储器地址范围。利用通用指令520和分支指令530示出的断言可以用于避免指令块内的附加分支。例如,特定指令的执行可以根据先前指令的结果(例如,两个操作数的比较)被断定。如果断言是假的,则指令将不提交由特定指令计算出的值。如果断言值未匹配所要求的断言,则指令不发出。例如,BRO_F(断言假)指令将发出其是否被发送假断言值。
应当容易理解到,如在此所使用的,术语“分支指令”不限于将程序执行改变到相对存储器位置,而且包括跳跃到绝对或者符号存储器位置、子例程调用和返回,以及可以修改执行流的其他指令。在一些示例中,通过改变系统寄存器(例如,程序计数器PC或者指令指针)的值来修改执行流,而在其他示例中,可以通过修改被存储在存储器中的指定位置处的值来改变执行流。在一些示例中,跳跃寄存器分支指令用于跳跃到被存储在寄存器中的存储器位置。在一些示例中,分别使用跳跃和链接以及跳跃寄存器指令来实现子例程调用和返回。
VIII.示例处理器状态图
图6是图示了在指令块被映射、执行和退出时被指派给指令块的状态的数目的状态图600。例如,可以在根据指定的操作模式执行指令期间指派状态中的一个或多个状态。应当易于理解的是,图6中所示的状态是针对所公开的技术的一个示例,而在其他示例中,指令块可以具有附加的或者更少的状态,并且具有与状态图600中所描述的那些不同的状态。在状态605处,指令块是未映射的。指令块可以驻留在耦合至基于块的处理器的存储器中,存储在计算机可读存储设备(诸如硬盘驱动器或者闪速驱动器),并且可以在处理器本地或者定位在远程服务器上并且使用计算机网络可访问。未映射的指令还可以至少部分地驻留在耦合至基于块的处理器的高速缓存中。
在指令块映射状态610处,用于基于块的处理器(诸如指令调度器)的控制逻辑可以用于监测基于块的处理器的处理核资源,并且将指令块映射至处理核中的一个或多个处理核。
控制单元可以将指令块中的一个或多个指令块映射至处理器核和/或特定处理器核的指令窗口。在一些示例中,控制单元监测先前已经执行特定指令块的处理器核,并且可以重新使用经译码的针对仍然驻留在“预热”的处理器核上的指令块的指令。一旦一个或多个指令块已经被映射到处理器核,指令块就可以进行到取指状态620。
当指令块在取指状态620(例如,指令取回)中时,映射的处理器核从基于块的处理器的存储器系统取回计算机可读块指令,并且将其加载到与特定处理器核相关联的存储器中。例如,所取回的针对指令块的指令可以取回并且存储在处理器核内的指令高速缓存中。可以使用核互连将指令传送至处理器核。一旦已经取回指令块的至少一个指令,指令块就可以进入指令译码状态630。
在指令译码状态630期间,所取回的指令的各个位被译码为可以由处理器核使用以控制特定指令的执行的信号。例如,经译码的指令可以存储在以上图2中所示的存储器存储215或216中的一个中。译码包括生成针对经译码的指令的依赖性、针对经译码的指令的操作数信息和针对经译码的指令的目标。一旦已经对指令块的至少一个指令进行译码,指令块就可以进行到执行状态640。
在执行状态640期间,使用例如上文关于图2讨论的功能单元260来实现与指令相关联的操作。如上文所讨论的,所实现的功能可以包括运算功能、逻辑功能、分支指令、存储器操作和寄存器操作。与处理器核相关联的控制逻辑监测指令块的执行,并且一旦确定指令块可以被提交,或者指令块要被中止,指令块状态就被设置为提交/中止650。
在提交/中止状态650处,处理器核控制单元确定可以完成由指令块实现的操作。例如,根据指令块的控制流将明确地实现存储器负载存储操作、寄存器读取/写入、分支指令和其他指令。备选地,如果指令块将被中止,例如,因为指令的依赖性中的一个或多个依赖性未被满足,或者对未被满足的针对指令块的断言推测地执行指令,指令块被中止,使得其将不影响存储器或者寄存器文件中的指令序列的状态。不管指令块是否已经被提交或者中止,指令块进入状态660以确定指令块是否应当被刷新。如果指令块被刷新,则处理器核通常使用新的数据值重新执行指令块,新的数据值特别是由块的刚刚提交执行更新的寄存器和存储器,并且直接进行到执行状态640。由此,可以避免对指令块进行映射、取指和译码而耗费的时间和能量。备选地,如果指令块没有要被刷新,则指令块进入空闲状态670。
在空闲状态670中,例如可以通过关闭处理器核内的硬件的电源,同时针对指令块维持经译码的指令的至少一部分,而使执行指令块的处理器核空闲。在某一时刻,控制单元确定(680)处理器核上空闲的指令块是否要被刷新。如果空闲的指令块要被刷新,则指令块可以在执行状态640处恢复执行。备选地,如果指令块不将被刷新,则指令块是未映射的,并且处理器核可以被冲刷,并且随后指令块可以被映射至经冲刷的处理器核。
虽然为了易于解释,状态图600图示了指令块在单个处理器上执行时的状态,但是相关领域技术人员应当易于理解的是,在某些示例中,多个处理器核可以同时用于执行给定指令块的多个实例。
IX.示例基于块的处理器和存储器配置
图7是图示了包括基于块的处理器710的装置的示图700,该基于块的处理器710包括控制单元720,控制单元720配置用于根据针对一个或多个操作模式的数据来执行指令块。控制单元720包括核调度器725和操作模式寄存器727。核调度器725调度指令的流,包括用于实现指令处理的核的分配和解除分配、在核中的任何核、寄存器文件、存储器接口和/或I/O接口之间的输入数据和输出数据的控制。控制单元720还包括操作模式寄存器717,其可以用于存储指示针对指令块的一个或多个操作模式的数据。
基于块的处理器710还包括:一个或多个处理器核730-737,被配置以当从指令块中的一个指令块接收到指示目标位置的分支信号时,取回和执行指令块;和控制单元720。所图示的基于块的处理器710具有多达八个核,但是在其他示例中,可以具有64、512、1024个或者其他数目的基于块的处理器核。基于块的处理器710耦合至存储器740,存储器740包括多个指令块750-755。在所公开的技术的一些示例中,代替或者附加于操作模式寄存器727,操作模式数据表760可以存储在存储器中,或者在运行时动态地建立,以指示用于执行指令块750-754的操作模式。
X.针对所选择的操作模式配置处理器的示例方法
图8是概述了可以在所公开的技术的某些示例中实现的根据所选择的操作模式来配置处理器操作的示例方法的框图800。例如,上文所述的基于块的处理器100可以配置用于实现图8的方法。
在过程框810处,处理器配置用于根据指示一个或多个所选择的操作模式的数据来执行指令块。例如,可以针对基于块的处理器指令块来译码指令块头部,基于块的处理器指令块包括指示一个或多个所选择的操作模式的一个或多个字段。处理器继而配置其处理器核中的至少一个处理器核来根据由字段中的一个或多个字段指定的操作模式来执行指令块中的指令。可以实现的操作模式包括但不限于:核融合操作、向量模式操作、存储器依赖预测操作和/或按序执行操作。在一些示例中,当指定模式中的至少一个是核融合操作时,与指定模式相对应的字段可以指示分配基于块的处理器的多个核以执行相关联的指令块。在一些示例中,核配置用于根据两个或更多个操作模式来执行指令。例如,核可以配置用于实现核融合操作并且启用或者禁用存储器依赖预测。备选地,例如,处理器可以配置用于核融合操作和按序执行操作。在一些示例中,例如,通过执行指令块的特定指令,通过将值存储在指明的寄存器或者存储器位置中,或者用于提供指示操作模式的数据的其他适当的手段,将指示指定操作模式中的一个或多个的数据可以存储在指令块头部以外的位置。一旦处理器配置用于执行指令块,方法就进行到过程框820。
在过程框820处,根据过程框810处选择的操作模式来执行指令块中的指令。例如,图1、图2或图7中描绘的处理器核中的一个或多个处理器核可以配置用于根据所选择操作模式来执行指令,所选择的操作模式包括但不限于核融合操作、向量模式操作、存储器依赖预测操作和/或按序执行操作。下文关于图13A、图13B、图14和/或图15讨论的示例代码可以使用图8的方法来执行,下文关于图10-图12讨论的核融合和向量模式操作也是如此。
XI.针对所选择的操作模式配置处理器的示例方法
图9是概述了可以在所公开的技术的某些示例中实现的根据操作模式来配置处理器执行的示例方法的流程图900。例如,图1的基于块的处理器100可以用于实现所描绘的方法。
在过程框910处,指令块头部被译码,其包括包含用于指示处理器模式操作的数据的一个或多个字段。例如,字段可以包括被指定为指示各种操作模式和/或针对操作模式的参数(例如,针对指令块的执行而分配的核的数目)的标志。在指令块译码器已经被译码之后,方法进行到过程框920。
在过程框920处,基于块的处理器配置用于根据头部中指定的操作模式来执行相关联的指令块。该处理确定一个或多个操作模式中的哪一个已经被指明,并且因此进行到所图示的过程框930、940和/或950中适合的一个或多个。在一些示例中,基于块的处理器配置用于根据核融合和/或向量操作模式来执行,如关于过程框930所讨论。在一些示例中,基于块的处理器配置用于根据确定的次序操作模式来执行,如关于过程框940所讨论。在一些示例中,基于块的处理器配置用于根据存储器依赖预测单元操作模式的启用或者禁用来执行,如关于过程框950所讨论。在一些示例中,基于块的处理器配置用于根据以下中任一个来操作:过程框930和940二者的模式,处理框930和950二者的模式,过程框940和950二者的模式,或者过程框940、940和950的模式。
在过程框930处,根据从过程框910处的译码指令块头部而确定的操作模式,为执行指令块而分配核的数目。例如,核的数目可以用于使用核融合和/或向量模式操作来执行指令块。在一些示例中,分配给指令块的核的数目可以在运行时动态地改变。
A图示核融合的示例
图10是图示了可以在流程图900中图示的方法的某些示例中实现的根据所选择的操作模式的基于块的处理器710的两种配置的示图。在第一配置1000中,已经执行基于块的处理器710的多个核以分配指令块。例如,已经分配了指令块A以在处理器核730-733上执行。已经将指令块B分配给处理器核734和735,并且已经将指令块C分配给处理器核736和737。由此,不止一个处理器核可以被分配以用于基于操作模式(例如,利用指令头部中的标志来指定,通过使用处理器指令,指令内编码,或者存储在指明的寄存器或存储器中)而实现指令块的执行。
在一些示例中,可以利用指示所选择的操作模式的数据来指定分配给指令块的核的数目。例如,针对指令块的指令块头部可以指定该块应当分配给2个、3个、4个或者更多的处理器核。在其他示例中,由处理器控制单元或者调度器来确定被分配以执行指令块的处理器核的数目。例如,可以将特定指令块分配给基于处理器内当前可用的核的性能统计或者数目而动态确定的数目的核。在一些示例中,此类融合核的使用可以用于通过例如允许指令块的推测执行而增强性能。
第二示图1010图示了根据所选择的一个或多个操作模式的处理器核的另一可能分配。在示图1010的示例配置中,操作模式标志指定指令块A被分配给两个核730和731,而指令块B、C、D和E中每个被分别分配给单个处理器核(732-735)。
为单个指令块的执行分配两个或更多个核是“核融合”的示例。在核融合的一些示例中,指示操作模式的数据指示执行指令块所利用的核的数目。在执行和提交指令块至少一次之后,指示操作模式的数据可以改变,以指示为了执行指令块而分配的第二、不同数目的核。基于改变所分配的核的数目,处理器可以使用由改变的数目指示的第二数目的核来执行指令块中的至少一个指令。例如,根据核融合操作模式指示核的数目的数据可以存储在基于块的处理器内的指明寄存器中。在其他示例中,改变的数据可以存储在指明的存储器位置处。在其他示例中,指示用于分配的核的数目的数据存储在指令块头部中,并且指令块头部中的数目可以在以类似于自修改码的方式执行指令块的不同实例之间改变。在其他示例中,可以通过执行处理器指令来指明操作模式,并且该处理器指令的该目标的操作数被改变,以便改变被融合和用于执行指令块的核的数目。
由此,核融合可以用于通过向指令块分配来自两个或更多个核的附加功能单元来增强基于块的处理器的性能。
B图示向量操作模式的示例
图11是概述了在执行向量化代码1110的一部分时多个处理器核730-733的操作,在下文中将向量化代码1110的一部分再现为表1。处理器可以配置用于流程图900中图示的方法的某些示例中的向量模式操作。如所示的,向量化代码1110将两个向量A和B相乘并且将结果放在第三向量F中。向量操作可以在多个处理器核之间分发。在所示的示例中,操作已经被分发到四个处理器核,但是可以使用其他数目的过程,例如,2、8、16个或者其他适合数目的核。对向量化代码1110的一部分进行编译,并且转换为机器代码1120,其也在下文中再现为表2。在图11的配置中,利用处理器核的单个执行通道1130来执行针对代码的向量部分的机器代码。主通道1130转而将指令的执行指引到其他三个从动核1131、1132和1133上。由此,仅利用单个执行通道1130来实现控制流的执行,同时向其他从动核发送适合的控制信号以实现向量处理。
for(i=0;i<=num;i=++i){
F[i]=A[i]*B[i];
}
表1
表2
如图11所示,向量化操作已经被分发,以使得在处理器核的特定“通道”上执行向量的每个第四个元素。每个通道具有用于实现向量化操作的指派的功能单元。例如,主执行通道1130将处理向量A、B和F的元素编号0、4、8、12。类似地,第二通道1131将实现对向量A、B、F的元素编号1、5、9、13等的操作。
虽然在图11中以一种方式示出了向量元素的处理的分发,但是相关领域技术人员将易于理解,其他的向量操作的分发也是可能的。例如,向量化操作可以与核融合组合。在这样的示例中,将每个融合的处理器核指派给向量的元素的一部分。将处理器核中的一个指明为主核,并且基于主核来确定控制流,类似于上文讨论的主执行通道示例。
图12是图示了用于根据操作模式使用基于块的处理器来实现向量模式操作的另一配置的示图1200。如图所示,已经将向量代码1110的一部分编译为机器代码(向量机器代码1120)。然而,在图示的示例中,将机器代码复制(例如,作为复制向量机器代码1221)并且在处理器核730-733中的每一个上执行。由此,在每个个体处理器核上实现控制流的执行。然而,处理器核730-733中的每个可以彼此通信(例如,通过发送控制信号),以便同步每个核的操作。例如,诸如存储器加载和存储以及寄存器加载和存储的操作在一些示例中可以不同时执行。由此,通信可以用于同步向量操作。
相关领域技术人员将易于理解的是,可以使用与诸如上文讨论的用于核融合的那些技术相类似的技术来实现向量模式操作的指明。例如,可以使用处理器指令或者通过将值存储在指明的寄存器或者存储器位置中,而在指令块头部中指定操作模式。另外,可以在运行时动态地调整分配给向量模式的核的数目,所以,取决于特定实现,所分配的核的数目可以从一个核调整至多达对处理器可用的核的最大数目。
在过程框940处,以指令块头部中指定的确定次序执行指令块中的指令。在一些示例中,确定次序是指令在指令块内布置的顺序次序。在其他示例中,其他标准用于确定该确定次序。在一些示例中,在软件调试器正在由处理器执行时,操作模式导致单个步骤方式的指令块的执行。由此,通过启用确定的指令执行,可以简化诸如调试的操作。
C.按确定次序的指令块的示例执行
图13A包括用于命名为pi_example的功能的源代码1300的一部分,而图13B包括用于基于示例功能的基于块的处理器的相对应汇编代码1310(其可以转化为用于执行的相对应的机器代码)的一部分,其分别在以下表3和表4中再现。
表3
如图13A(表3)中所示,两个整数x和y相除以生成浮点数pi,其存储在存储器中的位置pi_loc处。整数x和y还用于生成整数z,其是函数pi_example的返回值。
L_PI_EXAMPLE:
表4
现在返回图13B(表4),在指令编号0-8处指派基于块的处理器指令的数目。然而,应当注意,在所公开的技术的某些示例中,指令块内的个体指令不需要以所示的顺序次序执行。相反,一旦基于块的处理器的指令中的任何指令的输入操作数和任何相关联的断言可用,则该指令可以执行。例如,针对所示的汇编代码1310,在浮点指令3-5中的一个或多个以及依赖存储指令编号6已经完成之前,很有可能的是,机器代码指令编号7和8可以发起或者甚至完成执行。
虽然允许指令一旦在其操作数和断言可用时就执行可以提高性能,但是其也可能导致程序员更加难以调试。例如,当程序员是例如借助于调试器程序以单步步进通过个体指令块指令时,执行可能按这个次序进行:0、1、2、7、8、3、4、5、6。这样的乱序执行可能是混乱的。另外,在其他示例中,存储器延迟和指令延迟的差别可能导致某些指令不按其在指令块中出现的顺序次序执行。另外,不仅是指令可以不按其顺序次序执行,而且指令可以不以确定的方式执行。换言之,取决于系统高速缓存、主存储器和/或虚拟存储器的状态,相同的指令块可以按不止一个次序执行,甚至针对相同变量和存储器值也是如此。
处理器可以配置用于例如根据流程图900中图示的方法的某些示例来启用或者禁用确定执行的某些方面。在所公开的技术的某些示例中,指定操作模式,其指示指令块的指令将要被执行的顺序次序。例如,操作模式可以指示处理器将要以严格的顺序次序0、1、2、3等来执行特定指令块。在一些示例中,执行是根据与指令块中的指令的顺序排序不匹配的确定次序而实现的。例如,这样的确定排序可以首先执行寄存器读取,之后是存储器加载,之后是运算指令,之后是存储器写入,并且之后是寄存器写入。在一些示例中,利用存储在存储器中的数据来指明确定排序,数据诸如由所包括的调试器利用所执行的二进制代码生成的数据。相关领域技术人员将易于理解的是,可以采用其他方法来确定用于执行指令块中的指令的确定次序。在一些示例中,根据指定次序以单步方式执行指令块中的指令,软件调试器正在由处理器执行。这样的单步调试允许用户在处理器进行到执行下一指令之前提供输入。在一些示例中,软件调试器导致指令的执行步调一致地进行。换言之,核中的每个核将以相关于步调一致地操作的其他核同步的方式执行一个指令。
在一些示例中,发射指令的编译器确定可能的死锁情况,并且在指令块中对指令和/或依赖性进行排序,以避免在以顺序次序执行指令时发生死锁。在其他示例中,处理器控制单元在实现单步调试时检测死锁情况,并且冲刷该块或者采取其他行动来防止死锁。
D.启用和禁用存储器依赖预测单元的示例
在过程框950处,如可以在流程图900中图示的方法的某些示例中实现的,可以启用或者禁用存储器依赖预测单元。例如,展现存储器混叠的代码或者正在访问存储器映射I/O的代码可以配置用于禁用存储器依赖预测单元,从而节省了资源并且避免了执行期间的抖动(thrashing)。可以启用存储器依赖预测以便允许处理器和处理器核的较高性能。在所公开的技术的一些示例中,仅针对准备好要执行的指令而不针对其条件尚未评估的预测指令实现存储器依赖预测。在其他示例中,控制单元分析针对存储器加载和存储操作的依赖性,并且断言与所分析的存储器加载和存储操作相关联,这允许处理器核在已经确定所有断言之前推测地执行指令。处理器核还配置用于监测存储器加载和存储操作以避免读取和/或写入危险,读取和/或写入危险例如由于与程序的语义指定的次序相反,在执行写入到存储器位置的指令之前执行从相同的存储器位置加载的指令而造成。在一些示例中,配置用于发出基于块的指令的编译器可以通过移除断言条件来“提升”某些断言加载指令,从而导致加载指令总是执行。
存储器混叠(例如,读取和写入编译时不可确定的相同存储器位置)和存储器映射I/O技术也可能导致读取/写入危险。此类危险可能导致流水线冲刷,导致一个或多个断言被确定之后代码的重新执行。针对代码的一些部分可以确定(例如,通过编译器分析或者程序员的指明):针对代码的部分应当禁用存储器依赖预测,从而避免由于存储器依赖危险和流水线冲刷而造成的性能损失和能量浪费。
图14是根据所公开的技术的某些示例的当在处理器上编译和执行时可以展现存储器混叠的功能的源代码摘录1400。如所示的,因为编译器在编译时不知道名称为from[]和to[]的数组的地址,并且这两个数组可能在存储器中重叠,所图示的复制操作有可能对相同的位置读取和写入。另外,由于copy_array函数中声明的名称为zero[]的数组和整数i的布置,如果整数i存储在相邻于名称为zero[]的数组的存储器中,则针对名称为zero的数组的所分配的空间之后的存储器访问可能覆盖整数i的值。由此,这些是可能发生存储器混叠的两种示例情况。因为当使用存储器依赖预测时,这样的存储器混叠可能产生较差的性能,所以可以期望在所公开的技术的某些示例中禁用这样的预测。
可以用于将源代码摘录1400转换为处理器(例如,基于块的处理器)上可执行的机器代码的编译器可以标识某些混叠情况,包括类似于所示的示例的那些情况,并且设置标志来指示针对一个或多个指令块的操作模式以实现对代码禁用。在一些示例中,程序员可以手动地标识混叠情况,并且使用例如编译指示声明来向编译器提供指令。一旦编译器执行源代码和/或目标代码并且将其转换为可执行代码,可执行代码就将包括至少一个执行模式标志,该至少一个执行模式标志指示用以启用或禁用存储器依赖预测的操作模式。在一些示例中,通过指令块头部中的一个或多个位来指示操作模式。在其他示例中,在诸如存储器加载或存储指令的指令中,或者可以通过执行用以启用或禁用操作模式的单独指令来指示存储器依赖预测启用。在一些示例中,寄存器或者存储器位置可以设置有指示适合的操作模式的标志。
图15包括在根据所公开的技术可以处理器(包括基于块的处理器)上编译和执行的源代码1500的示例。源代码1500包括用以使用存储器映射寻址实现I/O操作的代码。例如,指针c_reg用于初始化I/O请求,并且继而该指针进一步用于轮询相同的存储器位置,以确定连接的I/O设备准备好接收数据。一旦在野(wild)循环内接收到就绪指示,该函数就进行到在指针w_reg指示的位置处写入另一字符。在这样的示例中,通常可期望禁用存储器优化,包括存储器依赖预测,以便保证处理器的高性能操作。可以使用与上文关于图14讨论的类似的技术来启用或者禁用存储器依赖预测,包括在指令块头部中设置标志,执行用于设置操作模式的指令,利用指令的一个位,和/或通过在指明的寄存器或存储器地址中存储值。
XII.生成基于块的可执行指令的示例方法
图16是概述了可以在所公开的技术的某些示例中实现的将源代码和/或目标代码编译为用于基于块的处理器的可执行代码的方法的流程图1600。例如,可以使用基于块的处理器或者包括用于实现所公开的方法的指令的通用处理器来实现该方法。
在过程框1610处,将用于基于块的处理器的源代码和/或目标代码转换为可执行代码。可执行代码包括至少一个执行模式标志,其指示在利用基于块的处理器执行时启用或者禁用操作模式。可以在可执行代码中指示的适当的操作模式包括以下中的至少一个或多个:通过两个或更多个处理器核的指令块的执行(例如,针对核融合或向量模式操作)、存储器依赖预测或者指令块中的指令的确定排序。在一些示例中,执行模式标志包括分配给指令块的核的数目的指示。在一些示例中,执行模式标志包括在指令块头部中,而在其他示例中,通过如下而将执行模式标志赋予(impart)指令块:包括专用的基于块的处理器指令,通过修改存储在指明的寄存器或者存储器位置中的值,或者用于指示操作模式的其他适当手段。在一些示例中,指明的操作模式是通过两个或更多个处理器核的指令块的执行,其导致执行经编译的代码的处理器使用两个或更多个处理器核来执行指令块。在一些示例中,执行模式标志基于在正在转换的指令块中检测到的存储器混叠或者可能的存储器混叠中的一个或多个可能的发生,而指示操作模式要禁用存储器依赖预测。在一些示例中,执行模式标志基于确定指令块中的存储器指令正在转换、对一个或多个I/O映射地址的读取和/或写入的一个或多个可能的发生而指示操作模式要禁用存储器依赖预测。
在过程框1620处,将源代码和/或目标代码转换为基于块的处理器可执行代码,其包括在过程框1610处确定的执行模式标志。在一些示例中,操作模式的确定是由编译器自动确定的。在其他示例中,操作模式的确定至少部分是通过由指令块代码的程序员提供的指引来确定的。例如,交易开发环境内的选项、编译器编译指示、定义的语句和/或位于源代码内的注释中的关键词可以用于至少部分地指示操作模式。
通过转换源代码和/或目标代码而生成的可执行代码可以存储在计算机可读存储介质中。在其他示例中,向处理器提供可执行代码作为指令流的一部分(例如,通过经由计算机网络发送可执行指令,或者通过本地以解译语言编写的解译代码)。
XIII.示例性计算环境
图17图示了在其中可以实现所描述的实施例、方法和技术(包括基于块的处理器)的适合的计算环境1700的一般示例。例如,计算环境1700可以实现用于根据一个或多个操作模式,来配置处理器操作或者将代码编译为用于执行如在此所描述的此类操作的计算机可执行指令的所公开的技术。
计算环境1700不旨在提出关于技术的使用或者功能的范围的任何限制,因为技术可以被实现在不同的通用或者专用计算环境中。例如,所公开的技术可以利用其他计算机系统配置被实现,包括手持式设备、多处理器系统、可编程消费者电子产品、网络PC、微型计算机、大型计算机,等等。所公开的技术还可以被实践在分布式计算环境中,其中任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块(包括用于基于块的指令块的可执行指令)可以被定位在本地存储器存储设备和远程存储器存储设备二者中。
参考图17,计算环境1700包括至少一个基于块的处理单元1710和存储器1720。在图17中,最基本配置1730被包括在虚线内。基于块的处理单元1710执行计算机可执行指令并且可以是真实处理器或者虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指以增加处理能力,并且如此多个处理器可以同时运行。存储器1720可以是易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪速存储器等)、或者两者的组合。存储器1720存储可以例如实现在此所描述的技术的软件1780、图像和视频。计算环境可以具有附加的特征。例如,计算环境1700包括存储装置1740、一个或多个输入设备1750、一个或多个输出设备1760以及一个或多个通信连接1770。互连机制(未示出)(诸如总线、控制器或者网络)将计算环境1700的部件相互连接。通常,操作系统软件(未示出)提供用于在计算环境1700中执行的其他软件的操作环境,并且协调计算环境1700的部件的活动。
存储装置1740可以是可移除或者不可移除的,并且包括磁盘、磁带或者磁带盒、CD-ROM、CD-RW、DVD或者可以用于存储信息并且可以在计算环境1700内访问的任何其他介质。存储装置1740存储用于软件1780的指令、插入数据和消息,其可以用于实现在此所描述的技术。
(一个或多个)输入设备1750可以是触摸输入设备,诸如键盘、小键盘、鼠标、触屏显示器、笔或轨迹球、语音输入设备、扫描设备或者向计算环境1700提供输入的另一设备。对于音频而言,(一个或多个)输入设备1750可以是以模拟或者数字形式接受音频输入的声卡或者类似设备,或者向计算环境1700提供音频样本的CD-ROM读取器。(一个或多个)输出设备1760可以是显示器、打印机、扬声器、刻录机或者提供来自计算环境1700的输出的另一设备。
(一个或多个)通信连接1770实现通过通信介质(例如,连接网络)与另一计算实体的通信。通信介质传达诸如计算机可执行指令、压缩图形信息、视频或者调制数据信号中的其他数据的信息。(一个或多个)通信连接1770不限于有线连接(例如,兆比特或吉比特以太网、无限带宽、电气或光纤连接上的光纤信道),而且包括无线技术(例如,经由蓝牙、WiFi(IEEE 802.11a/b/n)、WiMax、蜂窝、卫星、激光、红外的RF连接)以及用于提供用于所公开的方法的网络连接的其他适合的通信连接。在虚拟主机环境中,(一个或多个)通信连接可以是由虚拟主机所提供的虚拟化网络连接。
可以使用实现在计算云1790中的所公开的技术的全部或部分的计算机可执行指令执行所公开的方法的一些实施例。例如,所公开的编译器和/或基于块的处理器的服务器被定位在计算环境中,或者所公开的编译器可以在被定位在计算云1790中的服务器上执行。在一些示例中,所公开的编译器在传统的中央处理单元(例如,RISC或者CISC处理器)上执行。
计算机可读介质是可以在计算环境1700内访问的任何可用介质。以示例而非限制的方式,利用计算环境1700,计算机可读介质包括存储器1720和/或存储装置1740。如应当容易理解,术语计算机可读存储介质包括用于数据存储的介质(诸如存储器1720和存储装置1740)而非传输介质(诸如调制数据信号)。
XIV.所公开的技术的附加示例
在此根据上文所讨论的示例讨论了所公开的主题的附加示例。
在所公开的技术的一些示例中,装置包括一个或多个基于块的处理器核,核中的至少一个核配置用于对针对包括一个或多个字段的基于块的处理器指令块的指令块头部进行译码,并且配置核中的至少一个核而根据字段中的至少一个字段指定的操作模式来执行指令块中的指令,模式包括以下中的一种或多种:核融合操作、向量模式操作、存储器依赖预测操作和/或按序执行操作。在一些示例中,指定的模式是核融合操作,并且与指定的模式相对应的字段还指示向指令块的执行分配的基于块的处理器的核的数目。在一些示例中,字段存储在专用寄存器或者存储器位置中与指令块的指令分离的位置中。
在一些示例中,核中的至少一个核配置用于根据两个或更多操作模式来执行指令。在一些示例中,以字段指令块头部的33到6位被编码。在一些示例中,装置包括计算机可读存储介质,其存储用于指令块头部和指令块中的指令的数据。在一些示例中,基于块的处理器实现为现场可编程门阵列、专用集成电路和/或集成电路。
在一些示例中,操作基于块的或者EDGE ISA处理器的方法包括配置处理器根据指示选择的一个或多个操作模式的数据来执行显式数据图执行指令的块,以及根据选择的操作模式中的至少一个操作模式来执行指令块中的至少一个指令,选择的模式中的每个模式确定执行的以下方面中的相应一个:为执行指令块分配的核的数目、执行指令块的指令的次序或者存储器依赖预测单元的操作。
在一些示例中,处理器接收包括指令块的指令流中的数据。在一些示例中,指令流包括指令头部。在一些示例中,指令流作为由编译器生成的目标代码而存储,或者作为来自即时编译器的指令流式传输。在一些示例中,数据存储在处理器中的指明寄存器中或者由处理器可访问的指明存储器位置中,并且使用由数据指示的核的数目来实现执行指令块中的至少一个指令。
在一些示例中,指示的数目是第一核数目,并且该方法还包括:在至少一次执行和提交指令块之后,将存储在指明寄存器中的数据改变为指示不同的第二核数目,并且通过使用由数据指示的第二核数目来执行指令块的至少一个指令。在一些示例中,模式指示指令块的指令要被执行的确定次序,执行由处理器根据确定次序实现。在一些示例中,模式指示指令块的指令将要被执行的顺序次序,并且执行根据顺序次序实现。在一些示例中,模式指定指令块的指令将要被执行的次序,并且该方法还包括:基于模式,在软件调试器正在由处理器执行时,根据指定的次序以单步方式执行指令块中的指令。在一些示例中,当处理器配置为处于调试模式时使用顺序次序或者确定的次序。
在一些示例中,模式确定向执行指令块分配的核的数目。在一些示例中,模式还指示指令块是用于向量模式执行,并且该方法还包括:基于模式,分配两个或更多个核以执行指令块,核中的每个核对由指令块指令所指示的数据向量的一部分执行指令块的指令。在一些示例中,分配单个核的两个或更多个通道(每个通道包括一个或多个功能单元)以实现对数据向量的一部分的操作。在一些示例中,分配相应两个或更多个核的两个或更多个通道以实现对数据向量的一部分的操作。
在一些示例中,模式确定向执行指令块分配的核的数目,并且模式还指示指令块用于向量模式执行,并且该方法还包括,基于模式:分配第一主核以执行指令块,主核配置用于发送指示指令块的哪些指令正在被执行的信号,并且分配第二一个或多个从动核以执行指令块,从动核中的每个从动核对数据向量的一部分进行操作,从动核中的每个从动核根据由主核发送的信号来执行指令块的指令。
在所公开的技术的一些示例中,一个或多个计算机可读存储介质存储计算机可读指令,计算机可读指令在由处理器执行时使得处理器执行方法,该指令包括用于将源代码和/或目标代码转为用于基于块的处理器的可执行代码的指令,可执行代码包括指示在利用基于块的处理器执行块时要启用或禁用操作模式的至少一个执行模式标志,并且操作模式是以下中的至少一种或多种:由两个或更多个处理器核的指令块的执行、存储器依赖预测和/或指令块中的指令的确定排序。在一些示例中,操作模式是由两个或更多个处理器核的指令块的执行,并且操作模式使得执行处理器使用两个或更多个处理器来执行指令块。在一些示例中,执行模式标志基于指令块中的存储器混叠的一个或多个出现而指示操作模式要禁用存储器依赖预测。在一些示例中,执行模式标志基于指令块中的存储器指令写入和/或向一个或多个输入/输出映射地址写入的一个或多个出现而指示操作模式将要禁用存储器依赖预测。
在一些示例中,一个或多个计算机可读存储介质存储用于基于块的处理器的计算机可执行指令,该计算机可执行指令在执行时导致处理器实现本文公开的方法中的任何方法。
鉴于所公开的主题的原理可以应用的许多可能实施例,应当认识到所图示的实施例仅是优选的示例,并且不应该当作将权利要求的范围限于那些优选的示例。相反,要求保护的主题的范围由所附的权利要求进行限定。我们因此根据我们的发明要求保护落在这些权利要求的范围内的全部内容。

Claims (15)

1.一种包括一个或多个基于块的处理器核的装置,所述核中的至少一个核被配置用于:
对用于基于块的处理器指令块的指令块头部进行译码,所述指令块头部包括一个或多个字段;以及
配置所述核中的至少一个核以根据由所述字段中的至少一个字段指定的操作模式来执行所述指令块中的指令,所述模式包括以下中的一种或多种:核融合操作、向量模式操作、存储器依赖预测操作或者按序执行操作。
2.根据权利要求1所述的装置,其中指定的所述模式是所述核融合操作,与指定的所述模式相对应的字段还指示要向所述指令块的执行分配的所述基于块的处理器的核的数目。
3.根据权利要求1或者权利要求2所述的装置,其中所述至少一个核被配置用于根据两个或者更多个操作模式来执行指令。
4.根据权利要求1-3中的任一项所述的装置,其中所述字段以所述指令块头部的13至6位被编码。
5.一种操作处理器的方法,所述方法包括:
配置所述处理器以根据指示选择的一个或多个操作模式的数据来执行显式数据图执行指令的块;以及
根据选择的所述操作模式中的至少一个操作模式来执行所述指令块中的至少一个指令,选择的所述模式中的每个模式确定所述执行的以下方面中的相应一个方面:向执行所述指令块分配的核的数目、所述指令块的指令被执行的次序或者存储器依赖预测单元的操作。
6.根据权利要求5所述的方法,其中:
所述数据被存储在所述处理器中的指明的寄存器中或者所述处理器可访问的指明的存储器位置中;以及
使用由所述数据指示的核的数目来实现执行所述指令块中的所述至少一个指令。
7.根据权利要求6所述的方法,其中所述数目是第一核数目,并且其中所述方法还包括:在至少一次执行和提交所述指令块之后:
改变被存储在指明的所述寄存器中的所述数据以指示不同的第二核数目;以及
通过使用由所述数据指示的所述第二核数目来执行所述指令块的所述至少一个指令。
8.根据权利要求5-7中的任一项所述的方法,其中:
所述模式指示所述指令块的指令要被执行的确定次序;以及
根据所述确定次序来实现所述执行。
9.根据权利要求5-7中的任一项所述的方法,其中:
所述模式指定所述指令块的指令要被执行的次序;以及
所述方法还包括,基于所述模式,在软件调试器正在由所述处理器执行时,根据指定的所述次序以单步方式执行所述指令块中的指令。
10.根据权利要求5-9中的任一项所述的方法,其中:
所述模式指定将要向执行所述指令块分配的核的数目;
所述模式还指示所述指令块用于向量模式执行;以及
所述方法还包括,基于所述模式:
分配两个或更多个核以执行所述指令块,所述核中的每个核对由所述指令块指令指示的数据向量的一部分执行所述指令块的所述指令。
11.根据权利要求5-10中的任一项所述的方法,其中:
所述模式指定向执行所述指令块分配的核的数目;
所述模式还指示所述指令块用于向量模式执行;以及
所述方法还包括,基于所述模式:
分配第一主核以执行所述指令块,所述主核被配置用于发送指示所述指令块的哪些指令正在被执行的信号,以及
分配第二一个或多个从动核以执行所述指令块,所述从动核中的每个从动核对数据向量的一部分进行操作,所述从动核中的每个从动核根据由所述主核发送的所述信号来执行所述指令块的指令。
12.一个或多个计算机可读存储介质,其存储用于基于块的处理器的计算机可执行指令,所述计算机可执行指令在被执行时,使得所述处理器实现根据权利要求5-11中的任一项所述的方法。
13.一个或多个计算机可读存储介质,其存储计算机可读指令,所述计算机可读指令在由处理器执行时,使得所述处理器实现方法,所述指令包括:
用于将源代码和/或目标代码转换为用于基于块的处理器的可执行代码的指令,所述可执行代码包括指示在利用基于块的处理器执行所述块时启用或禁用操作模式的至少一个执行模式标志,所述操作模式是以下中的至少一个或多个:由两个或更多个处理器核的指令块的执行、存储器依赖预测或者所述指令块中的指令的确定排序。
14.根据权利要求13所述的计算机可读存储介质,其中:
所述执行模式标志基于所述指令块中存储器混叠的一个或多个可能的出现而指示所述操作模式将要禁用存储器依赖预测。
15.根据权利要求13或权利要求14所述的方法,其中:
所述执行模式标志基于所述指令块中的存储器指令写入和/或向一个或多个输入/输出映射地址写入的一个或多个出现而指示所述操作模式将要禁用存储器依赖预测。
CN201680053059.4A 2015-09-19 2016-09-12 处理器操作的配置模式 Withdrawn CN108139913A (zh)

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,944 US20170083318A1 (en) 2015-09-19 2015-12-23 Configuring modes of processor operation
US14/757,944 2015-12-23
PCT/US2016/051207 WO2017048605A1 (en) 2015-09-19 2016-09-12 Configuring modes of processor operation

Publications (1)

Publication Number Publication Date
CN108139913A true CN108139913A (zh) 2018-06-08

Family

ID=66000892

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680053059.4A Withdrawn CN108139913A (zh) 2015-09-19 2016-09-12 处理器操作的配置模式

Country Status (4)

Country Link
US (1) US20170083318A1 (zh)
EP (1) EP3350685A1 (zh)
CN (1) CN108139913A (zh)
WO (1) WO2017048605A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
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
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US9934009B2 (en) 2016-06-01 2018-04-03 International Business Machines Corporation Processor that includes a special store instruction used in regions of a computer program where memory aliasing may occur
US10169010B2 (en) 2016-06-01 2019-01-01 International Business Machines Corporation Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing
US10169009B2 (en) 2016-06-01 2019-01-01 International Business Machines Corporation Processor that detects memory aliasing in hardware and assures correct operation when memory aliasing occurs
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
US11150908B2 (en) * 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US10884749B2 (en) 2019-03-26 2021-01-05 International Business Machines Corporation Control of speculative demand loads
CN112540796B (zh) * 2019-09-23 2024-05-07 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
US11816061B2 (en) 2020-12-18 2023-11-14 Red Hat, Inc. Dynamic allocation of arithmetic logic units for vectorized operations

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100337149B1 (ko) * 2000-07-05 2002-05-18 권 기 홍 프로그램 테스트 및 디버깅이 용이한 중앙처리장치
US20070022673A1 (en) * 2005-07-29 2007-02-01 William Paul Sectioning scheme applied to two- or four-foot cross tee members associated with a ceiling grid system and accounting for an offset existing between an associated end of a cross tee and a center point of the main tee measured to an oppositely positioned wall angle
US9870267B2 (en) * 2006-03-22 2018-01-16 Intel Corporation Virtual vector processing
US8026403B2 (en) * 2007-06-27 2011-09-27 H R D Corporation System and process for production of liquid product from light gas
US8180997B2 (en) * 2007-07-05 2012-05-15 Board Of Regents, University Of Texas System Dynamically composing processor cores to form logical processors
US20140033123A1 (en) * 2009-07-30 2014-01-30 Adobe Systems, Inc. User interface and method for comparing a local version of a profile to an online update
JP5606619B2 (ja) * 2011-04-18 2014-10-15 三菱電機株式会社 回転機コイルおよびその製造方法
WO2013081556A1 (en) * 2011-12-01 2013-06-06 National University Of Singapore Polymorphic heterogeneous multi-core architecture
ES2435495B1 (es) * 2012-01-13 2014-10-23 Gamo Outdoor, S.L. Procedimiento para la fabricación de un cañón para carabinas de aire comprimido o CO2 y cañón para carabinas de aire comprimido o CO2 obtenido.
US9354884B2 (en) * 2013-03-13 2016-05-31 International Business Machines Corporation Processor with hybrid pipeline capable of operating in out-of-order and in-order modes
US9619750B2 (en) * 2013-06-29 2017-04-11 Intel Corporation Method and apparatus for store dependence prediction
US9547496B2 (en) * 2013-11-07 2017-01-17 Microsoft Technology Licensing, Llc Energy efficient multi-modal instruction issue

Also Published As

Publication number Publication date
WO2017048605A1 (en) 2017-03-23
EP3350685A1 (en) 2018-07-25
US20170083318A1 (en) 2017-03-23

Similar Documents

Publication Publication Date Title
CN108139913A (zh) 处理器操作的配置模式
EP3350712B1 (en) Register read/write ordering
US11681531B2 (en) Generation and use of memory access instruction order encodings
CN109074260A (zh) 乱序的基于块的处理器和指令调度器
US20170083320A1 (en) Predicated read instructions
CN108027732A (zh) 与断言的加载指令相关联的预取
CN108027769A (zh) 使用寄存器访问指令发起指令块执行
CN108027768A (zh) 指令块地址寄存器
US10445097B2 (en) Multimodal targets in a block-based processor
US10198263B2 (en) Write nullification
CN108027750A (zh) 乱序提交
CN108027766A (zh) 预取指令块
CN108027731A (zh) 针对基于块的处理器的调试支持
CN108027770A (zh) 用于数据流isa的密集读取编码
CN107810483A (zh) 验证基于块的处理器中的跳转目标
CN108027733B (zh) 在目标字段中存储无效
CN108027778A (zh) 与断言的存储指令相关联的预取
CN108027734B (zh) 空指令的动态生成
CN108112269A (zh) 多重无效
CN109478140A (zh) 基于块的处理器中的加载-存储顺序
US20180329708A1 (en) Multi-nullification
CN108027735B (zh) 用于操作处理器的装置、方法和计算机可读存储介质
WO2017048645A1 (en) Multimodal targets in a 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
WW01 Invention patent application withdrawn after publication

Application publication date: 20180608

WW01 Invention patent application withdrawn after publication