[go: up one dir, main page]

CN113424162A - 动态存储器重新配置 - Google Patents

动态存储器重新配置 Download PDF

Info

Publication number
CN113424162A
CN113424162A CN202080014341.8A CN202080014341A CN113424162A CN 113424162 A CN113424162 A CN 113424162A CN 202080014341 A CN202080014341 A CN 202080014341A CN 113424162 A CN113424162 A CN 113424162A
Authority
CN
China
Prior art keywords
memory
cache
graphics
processor
processing
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.)
Pending
Application number
CN202080014341.8A
Other languages
English (en)
Inventor
J·雷
N·库雷
S·迈于兰
A·科克
P·瑟蒂
V·乔治
V·安德烈
A·阿普
G·加西亚
P·克
S·金
S·库马尔
P·马罗利亚
E·乌尔-艾哈迈德-瓦尔
V·兰加纳坦
W·萨德勒
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN113424162A publication Critical patent/CN113424162A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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
    • 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/0877Cache access modes
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0893Caches characterised by their organisation or structure
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/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
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30079Pipeline control instructions, e.g. multicycle 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/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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/3888Concurrent 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/46Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • 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/455Image or video data
    • 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
    • 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/601Reconfiguration of cache memory
    • 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/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • 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/6028Prefetching based on hints or prefetch instructions
    • 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/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size 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/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/3818Decoding for concurrent 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Linguistics (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Computer Graphics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)

Abstract

本文描述的实施例提供了能够实现通用图形处理单元上的存储器的动态重新配置的技术。本文描述的一个实施例基于硬件统计能够实现高速缓冲存储器存储体指派的动态重新配置。一个实施例在相同页表层级内和相同页目录下使用混合四千字节和六十四千字节页能够实现虚拟存储器地址转化。一个实施例规定了一种图形处理器和相关联的异质处理系统,所述图形处理器和相关联的异质处理系统具有相同级别的缓存层级的近区域和远区域。

Description

动态存储器重新配置
相关申请的交叉引用
本申请涉及并根据35 U.S.C.119(e)要求由Abhishek Appu等人于2019年3月15日提交的题为GRAPHICS PROCESSING的美国临时申请62/819337(代理人案号AC0271-Z)、由Lakshminarayanan Striramassarma等人于2019年3月15日提交的题为GRAPHICS DATAPROCESSING的美国临时申请62/819435(代理人案号AC0285-Z)以及由SubramaniamMaiyuran等人于2019年3月15日提交的题为SYSTEMS AND METHODS FOR PARTITIONINGCACHE TO REDUCE CACHE ACCESS LATENCY的美国临时申请62/819361(代理人案号AC0286-Z)的权益和优先权,所有内容通过引用并入本文中。
技术领域
本公开一般涉及数据处理,并且更特定地涉及通用图形处理单元上的存储器的动态重新配置。
背景技术
当前并行图形数据处理包括被开发成对图形数据执行特定操作的系统和方法,所述特定操作诸如例如线性内插(linear interpolation)、曲面细分(tessellation)、栅格化(rasterization)、纹理映射(texture mapping)、深度测试等。传统上,图形处理器使用固定功能计算单元来处理图形数据;然而最近,已使图形处理器的部分可编程,从而使此类处理器能够支持用于处理顶点数据和片段数据的更广泛种类的操作。
为了进一步提高性能,图形处理器通常实现诸如流水线化(pipelining)的处理技术,其试图遍及图形流水线的不同部分并行处理尽可能多的图形数据。具有单指令多线程(SIMT)架构的并行图形处理器被设计成最大化图形流水线中的并行处理量。在SIMT架构中,并行线程的群组试图尽可能经常地一起同步执行程序指令以提高处理效率。对于SIMT架构的软件和硬件的总体概述可在Shane Cook,CUDA Programming的第三章第37-51页(2013)中找到。
附图说明
为了可详细地理解本实施例的上述特征所采用的方式,可通过参考实施例来得到对上文简要概述的实施例的更特定描述,所述实施例中的一些在附图中示出。然而,要注意,附图仅示出了典型的实施例,并且因此不应被认为是对其范围的限制。
图1是示出被配置成实现本文描述的实施例的一个或多个方面的计算机系统的框图;
图2A-2D示出并行处理器组件;
图3A-3C是图形多处理器和基于多处理器的GPU的框图;
图4A-4F示出了示例性架构,其中多个GPU通信地耦合到多个多核处理器;
图5示出了图形处理流水线;
图6示出了机器学习软件堆栈;
图7示出了通用图形处理单元;
图8示出了多GPU计算系统;
图9A-9B示出了示例性深度神经网络的层;
图10示出了示例性递归神经网络;
图11示出了深度神经网络的训练和部署;
图12是示出分布式学习的框图;
图13示出了适合于使用经训练的模型来执行推理的示例性推理片上系统(SOC);
图14是处理系统的框图;
图15A-15C示出了计算系统和图形处理器;
图16A-16C示出了另外的图形处理器和计算加速器架构的框图;
图17是图形处理器的图形处理引擎的框图;
图18A-18B示出了包括在图形处理器核中采用的处理元件的阵列的线程执行逻辑;
图19示出了另外的执行单元;
图20是示出图形处理器指令格式的框图;
图21是另外的图形处理器架构的框图;
图22A-22B示出了图形处理器命令格式和命令序列;
图23示出了用于数据处理系统的示例性图形软件架构;
图24A是示出IP核开发系统的框图;
图24B示出了集成电路封装组装件的截面侧视图;
图24C示出了包括连接到衬底(例如,基础管芯)的硬件逻辑小芯片的多个单元的封装组装件;
图24D示出了包括可互换小芯片的封装组装件;
图25是示出示例性片上系统集成电路的框图;
图26A-26B是示出供在SoC内使用的示例性图形处理器的框图;
图27示出了包括存储体化的(banked)高速缓存的处理系统;
图28示出了包括具有动态散列单元的高速缓存控制器的处理系统;
图29示出了基于硬件统计能够实现存储器存储体散列的动态重新配置的方法;
图30示出了包括统一存储器空间的异质处理系统;
图31A-31B示出了4K和64K页的层级页表结构;
图32A-32C示出了根据实施例的能够实现层级页表结构内4K和64K页的混合的页目录(directory)和页表;
图33A-33B示出了能够实现层级页表结构内4K和64K页的混合的方法;
图34示出了包括具有近区域和远区域的高速缓存的处理系统;
图35示出了具有近高速缓存区域和远高速缓存区域的异质处理系统;
图36示出了用于包括多区域L3高速缓存的并行处理器的封装组装件;
图37示出了管理具有多个高速缓存区域的高速缓存的方法;
图38是根据实施例的数据处理系统3800的框图;以及
图39是根据实施例的包括图形处理器的计算装置的框图。
具体实施方式
图形处理单元(GPU)通信地耦合到主机/处理器核以加速例如图形操作、机器学习操作、模式分析操作和/或各种通用GPU(GPGPU)功能。GPU可通过总线或另一互连(例如,高速互连,诸如PCIe或NVLink)通信地耦合到主机处理器/核。备选地,GPU可与核集成在相同封装或芯片上,并且通过内部处理器总线/互连(即,在封装或芯片内部)通信地耦合到核。不管连接GPU所采用的方式如何,处理器核可以以工作描述符中所包含的命令/指令的序列的形式将工作分配给GPU。GPU接着将专用电路系统/逻辑用于高效地处理这些命令/指令。
本文描述的实施例提供了能够实现通用图形处理单元上的存储器的动态重新配置的技术。本文描述的一个实施例基于硬件统计能够实现高速缓冲存储器存储体指派的动态重新配置。一个实施例在相同页表层级内和相同页目录下使用混合四千字节和64千字节页能够实现虚拟存储器地址转化(translation)。一个实施例提供了一种图形处理器和相关联的异质处理系统,所述图形处理器和相关联的异质处理系统具有相同级别的缓存层级的近区域和远区域。
在以下描述中,阐述了许多特定细节以提供更透彻的理解。然而,对于本领域技术人员来说将清楚的是,可在没有这些特定细节中的一个或多个的情况下实践本文描述的实施例。在其它情况下,尚未描述公知的特征,以免模糊本实施例的细节。
系统概述
图1是示出被配置成实现本文描述的实施例的一个或多个方面的计算机系统100的框图。计算系统100包括处理子系统101,所述处理子系统101具有一个或多个处理器102和系统存储器104,所述一个或多个处理器102和系统存储器104经由可包括存储器集线器(hub)105的互连路径来通信。存储器集线器105可以是芯片集组件内的单独组件,或可集成在一个或多个处理器102内。存储器集线器105经由通信链路106与I/O子系统111耦合。I/O子系统111包括I/O集线器107,所述I/O集线器107可使得计算系统100能够从一个或多个输入装置108接收输入。另外,I/O集线器107可使得显示控制器能够将输出提供给一个或多个显示装置110A,所述显示控制器可被包括在一个或多个处理器102中。在一个实施例中,与I/O集线器107耦合的一个或多个显示装置110A可包括局部、内部或嵌入式显示装置。
处理子系统101例如包括一个或多个并行处理器112,所述一个或多个并行处理器112经由总线或其它通信链路113耦合到存储器集线器105。通信链路113可以是任何数量的基于标准的通信链路技术或协议之一(诸如但不限于,PCI Express),或可以是供应商特定的通信接口或通信组构。一个或多个并行处理器112可形成计算上集中的并行或向量处理系统,所述系统可包括大量处理核和/或处理集群(诸如,集成众核(MIC)处理器)。例如,一个或多个并行处理器112形成图形处理子系统,所述图形处理子系统可将像素输出到经由I/O集线器107耦合的一个或多个显示装置110A之一。一个或多个并行处理器112还可包括显示控制器和显示器接口(未示出)以能够实现与一个或多个显示装置110B的直接连接。
在I/O子系统111内,系统存储单元114可连接到I/O集线器107以提供用于计算系统100的存储机制。I/O开关116可用于提供接口机制以能够实现I/O集线器107与其它组件之间的连接,所述其它组件诸如可集成到平台中的网络适配器118和/或无线网络适配器119,以及可经由一个或多个附加(add-in)装置120添加的各种其它装置。(一个或多个)附加装置120还可包括例如一个或多个外部图形处理器装置和/或计算加速器。网络适配器118可以是以太网适配器或另一有线网络适配器。无线网络适配器119可包括以下中的一个或多个:Wi-Fi、蓝牙、近场通信(NFC)、或包括一个或多个无线无线电装置(wirelessradio)的其它网络装置。
计算系统100可包括未明确示出的其它组件,其包括USB或其它端口连接件、光学存储驱动器、视频捕获装置等,所述其他组件也可连接到I/O集线器107。将图1中的各种组件互连的通信路径可使用任何合适的协议来实现,诸如基于PCI(外设组件互连)的协议(例如,PCI-Express)或任何其它总线或点对点通信接口和/或(一个或多个)协议,诸如NVLink高速互连或本领域中已知的互连协议。
一个或多个并行处理器112可合并针对图形和视频处理进行优化的电路系统,其包括例如视频输出电路系统),并且构成图形处理单元(GPU)。备选地或附加地,一个或多个并行处理器112可合并针对通用处理进行优化的电路系统,同时保持本文中更详细描述的底层计算架构。计算系统100的组件可与一个或多个其它系统元件一起集成在单个集成电路上。例如,一个或多个并行处理器112、存储器集线器105、(一个或多个)处理器102和I/O集线器107可集成到片上系统(SoC)集成电路中。备选地,计算系统100的组件可集成到单个封装中以形成封装中系统(SIP)配置。在一个实施例中,计算系统100的组件的至少一部分可集成到多芯片模块(MCM)中,所述多芯片模块(MCM)可与其它多芯片模块一起互连到模块化计算系统中。
将认识到的是,本文中示出的计算系统100是说明性的,并且变化和修改是有可能的。可按期望修改连接拓扑,其包括桥接器的数量和布置、(一个或多个)处理器102的数量和(一个或多个)并行处理器112的数量。例如,系统存储器104可直接而非通过桥接器而被连接到(一个或多个)处理器102,而其它装置经由存储器集线器105与系统存储器104和(一个或多个)处理器102通信。在其它备选拓扑中,(一个或多个)并行处理器112连接到I/O集线器107或直接连接到一个或多个处理器102之一,而不是连接到存储器集线器105。在其它实施例中,I/O集线器107和存储器集线器105可集成到单个芯片中。还可能的是经由多个插口(socket)附连的两组或更多组处理器102,它们可与(一个或多个)并行处理器112的两个或更多个实例耦合。
本文中示出的特定组件中的一些是可选的,并且可不被包括在计算系统100的所有实现中。例如,可支持任何数量的附加卡或外设,或可消除一些组件。此外,针对与图1中示出的那些组件类似的组件,一些架构可使用不同的术语。例如,在一些架构中,存储器集线器105可称为北桥(Northbridge),而I/O集线器107可称为南桥(Southbridge)。
图2A示出了并行处理器200。并行处理器200可以是如本文描述的GPU、GPGPU等。并行处理器200的各种组件可使用一个或多个集成电路装置(诸如可编程处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA))来实现。所示出的并行处理器200可以是图1中所示的(一个或多个)并行处理器112或图1中所示的(一个或多个)并行处理器112中的一个。
并行处理器200包括并行处理单元202。并行处理单元包括I/O单元204,所述I/O单元204能够实现与其它装置(包括并行处理单元202的其它实例)的通信。I/O单元204可直接连接到其它装置。例如,I/O单元204经由使用集线器或开关接口(诸如,存储器集线器105)来与其它装置连接。存储器集线器105与I/O单元204之间的连接形成通信链路113。在并行处理单元202内,I/O单元204与主机接口206和存储器交叉开关(memory crossbar)216连接,其中主机接口206接收针对执行处理操作的命令,并且存储器交叉开关216接收针对执行存储器操作的命令。
当主机接口206经由I/O单元204接收命令缓冲器时,主机接口206可将用于执行那些命令的工作操作导引至前端208。在一个实施例中,前端208与调度器210耦合,该调度器210配置成将命令或其它工作项分布至处理集群阵列212。调度器210确保在任务被分布至处理集群阵列212的处理集群之前,处理集群阵列212被适当地配置且处于有效状态。调度器210可经由微控制器上执行的固件逻辑来实现。微控制器实现的调度器210可配置成以粗糙粒度和精细粒度来执行复杂的调度和工作分布操作,从而能够实现处理阵列212上执行的线程的上下文切换和快速抢占(rapid preemption)。优选地,主机软件可经由多个图形处理门铃(doorbell)之一来检验工作负荷在处理阵列212上调度。随后工作负荷可由调度器微控制器内的调度器210逻辑来跨处理阵列212自动地分布。
处理集群阵列212可包括多达“N”个处理集群(例如,集群214A、集群214B、直到集群214N)。处理集群阵列212的每个集群214A-214N都可执行大数量的并发线程。调度器210可使用各种调度和/或工作分布算法将工作分配给处理集群阵列212的集群214A-214N,这可取决于针对每种类型的程序或计算而产生的工作负荷而变化。调度可由调度器210动态地处置,或者可在配置用于由处理集群阵列212执行的程序逻辑的编译期间部分地由编译器逻辑进行辅助。可选地,可将处理集群阵列212的不同集群214A-214N分配用于处理不同类型的程序,或用于执行不同类型的计算。
可将处理集群阵列212配置成执行各种类型的并行处理操作。例如,将集群阵列212配置成执行通用并行计算操作。例如,处理集群阵列212可包括用于执行处理任务的逻辑,所述处理任务包括过滤视频和/或音频数据、执行建模操作(包括物理操作)以及执行数据变换。
处理集群阵列212配置成执行并行图形处理操作。在其中并行处理器200配置成执行图形处理操作的这样的实施例中,处理集群阵列212可包括用于支持执行此类图形处理操作的附加逻辑,其包括但不限于用于执行纹理操作的纹理采样逻辑以及曲面细分逻辑和其它顶点处理逻辑。另外,处理集群阵列212可配置成执行图形处理相关的着色器(shader)程序,诸如但不限于顶点着色器、曲面细分着色器、几何着色器和像素着色器。并行处理单元202可经由I/O单元204来转移来自系统存储器的数据以便处理。在处理期间,可将所转移的数据在处理期间存储到芯片上存储器(例如,并行处理器存储器222),然后将其写回到系统存储器。
在其中并行处理单元202用于执行图形处理的实施例中,调度器210可配置成将处理工作负荷划分成近似相等大小的任务,以更好地能够实现将图形处理操作分布到处理集群阵列212的多个集群214A-214N。在这些实施例中的一些中,处理集群阵列212的部分可配置成执行不同类型的处理。例如,第一部分可配置成执行顶点着色和拓扑生成,第二部分可配置成执行曲面细分和几何着色,并且第三部分可配置成执行像素着色或其它屏幕空间操作,以产生用于显示的渲染图像。由集群214A-214N中的一个或多个所产生的中间数据可存储在缓冲器中以允许中间数据在集群214A-214N之间传送以便进一步处理。
在操作期间,处理集群阵列212可经由调度器210来接收要执行的处理任务,所述调度器210从前端208接收定义处理任务的命令。针对图形处理操作,处理任务可包括定义要如何处理数据(例如,要执行什么程序)的命令和状态参数以及要处理的数据的索引,所述数据例如表面(补片(patch))数据、图元(primitive)数据、顶点数据和/或像素数据。调度器210可配置成提取(fetch)与任务相对应的索引,或可从前端208接收索引。前端208可配置成确保在发起由传入命令缓冲器(例如,分批缓冲器、推动缓冲器等)所指定的工作负荷之前处理集群阵列212配置成有效状态。
并行处理单元202的一个或多个实例中的每个都可与并行处理器存储器222耦合。并行处理器存储器222可经由存储器交叉开关216来访问,所述存储器交叉开关216可从处理集群阵列212以及I/O单元204接收存储器请求。存储器交叉开关216可经由存储器接口218访问并行处理器存储器222。存储器接口218可包括多个分区单元(例如,分区单元220A、分区单元220B、直到分区单元220N),其可各自耦合到并行处理器存储器222的一部分(例如,存储器单元)。可将分区单元220A-220N的数量配置成等于存储器单元的数量,使得第一分区单元220A具有对应的第一存储器单元224A,第二分区单元220B具有对应的存储器单元224B,并且第N分区单元220N具有对应的第N存储器单元224N。在其它实施例中,分区单元220A-220N的数量可不等于存储器装置的数量。
存储器单元224A-224N可包括各种类型的存储器装置,其包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如同步图形随机存取存储器(SGRAM),其包括图形双数据速率(GDDR)存储器。可选地,存储器单元224A-224N还可包括3D堆叠式存储器,其包括但不限于高带宽存储器(HBM)。本领域技术人员将认识到,存储器单元224A-224N的特定实现可变化,并且可选自各种常规设计之一。渲染目标,诸如帧缓冲器或纹理(texture)映射可跨存储器单元224A-224N存储,从而允许分区单元220A-220N并行写入每个渲染目标的部分以高效地使用并行处理器存储器222的可用带宽。在一些实施例中,可排除并行处理器存储器222的本地实例,以有利于利用系统存储器连同本地高速缓冲存储器的统一存储器设计。
可选地,处理集群阵列212的集群214A-214N中的任何一个都具有处理将被写入到并行处理器存储器222内的存储器单元224A-224N中的任何的数据的能力。可将存储器交叉开关216配置成将每个集群214A-214N的输出转移到任何分区单元220A-220N或另一集群214A-214N,其可对输出执行附加处理操作。每个集群214A-214N都可通过存储器交叉开关216与存储器接口218通信,以从各种外部存储器装置读取或写入到各种外部存储器装置。在具有存储器交叉开关216的实施例中的一个中,存储器交叉开关216具有与存储器接口218的连接以与I/O单元204通信,以及与并行处理器存储器222的本地实例的连接,从而使不同处理集群214A-214N内的处理单元能够与系统存储器或对于并行处理单元202不是本地的其它存储器通信。通常,存储器交叉开关216可例如能够使用虚拟通道以分离集群214A-214N与分区单元220A-220N之间的业务流。
虽然在并行处理器200内示出了并行处理单元202的单个实例,但是可包括并行处理单元202的任何数量的实例。例如,可在单个附加卡上提供并行处理单元202的多个实例,或可将多个附加卡互连。并行处理单元202的不同实例可配置成互操作,即使不同实例具有不同数量的处理核、不同量的本地并行处理器存储器和/或其它配置差异也是如此。可选地,并行处理单元202的一些实例相对于其它实例可包括更高精度浮点单元。合并并行处理单元202或并行处理器200的一个或多个实例的系统可采用各种配置和形状因数(formfactor)来实现,包括但不限于台式计算机、膝上型计算机、或手持个人计算机、服务器、工作站、游戏控制台和/或嵌入式系统。
图2B是分区单元220的框图。分区单元220可以是图2A的分区单元220A-220N之一的实例。如所示出,分区单元220包括L2高速缓存221、帧缓冲器接口225和ROP 226(栅格操作单元)。L2高速缓存221是读/写高速缓存,其配置成执行从存储器交叉开关216和ROP 226接收的加载和存储操作。由L2高速缓存221将读未命中(read miss)和紧急回写请求输出到帧缓冲器接口225以便处理。也可经由帧缓冲器接口225将更新发送到帧缓冲器以便处理。在一个实施例中,帧缓冲器接口225与并行处理器存储器中的存储器单元(诸如,图2A的存储器单元224A-224N(例如,在并行处理器存储器222内))中的一个通过接口连接(interface)。分区单元220还可附加地或备选地经由存储器控制器(未示出)与并行处理器存储器中的存储器单元中的一个通过接口连接。
在图形应用中,ROP 226是执行诸如模板印刷(stencil)、z测试、混合之类的栅格操作的处理单元。随后ROP 226输出存储在图形存储器中的经处理的图形数据。在一些实施例中,ROP 226包括压缩逻辑,用于压缩写入到存储器的深度或颜色数据,并且解压缩从存储器读取的深度或颜色数据。压缩逻辑可以是利用多种压缩算法中的一种或多种压缩算法的无损压缩逻辑。由ROP 226所执行的压缩的类型可基于要压缩的数据的统计特性而变化。例如,在一个实施例中,变量颜色压缩(delta color compression)在逐贴片(per-tile)的基础上对深度和颜色数据执行。
在每个处理集群(例如,图2A的集群214A-214N)而不是分区单元220内可包括ROP226。在这样的实施例中,通过存储器交叉开关216传送对于像素数据而不是像素片段数据的读和写请求。经处理的图形数据可在显示装置(例如图1的一个或多个显示装置110)上显示、被路由以供(一个或多个)处理器102进一步处理、或被路由以供图2A的并行处理器200内的处理实体中的一个来进一步处理。
图2C是并行处理单元内的处理集群214的框图。例如,处理集群是图2A的处理集群214A-214N之一的实例。处理集群214可配置成并行执行许多线程,其中术语“线程”是指在特定的一组输入数据上执行的特定程序的实例。可选地,在不提供多个独立指令单元的情况下,可使用单指令多数据(SIMD)指令发布技术以支持对大数量线程的并行执行。备选地,使用配置成将指令发布到处理集群中的每一个内的一组处理引擎的公共指令单元,单指令多线程(SIMT)技术可被用于支持大量的一般同步的线程的并行执行。不像SIMD执行制度,其中所有处理引擎通常执行相同的指令,SIMT执行允许不同线程通过给定线程程序更容易地遵循分歧的执行路径。本领域技术人员将理解,SIMD处理制度表示SIMT处理制度的功能子集。
可经由流水线管理器232来控制处理集群214的操作,所述流水线管理器232将处理任务分布到SIMT并行处理器。流水线管理器232从图2A的调度器210接收指令,并且经由图形多处理器234和/或纹理单元236来管理那些指令的执行。所示出的图形多处理器234是SIMT并行处理器的示例性实例。然而,不同架构的各种类型的SIMT并行处理器可被包括在处理集群214内。图形多处理器234的一个或多个实例可被包括在处理集群214内。图形多处理器234可处理数据,并且数据交叉开关240可用于将所处理的数据分布到多个可能目的地(包括其它着色器单元)之一。流水线管理器232可通过指定针对要经由数据交叉开关240来分布的经处理的数据的目的地来促进分布经处理的数据。
处理集群214内的每个图形多处理器234可包括相同一组功能执行逻辑(例如,算术逻辑单元、加载-存储单元等)。能以流水线方式来配置功能执行逻辑,采用该流水线方式,在先前的指令完成之前可发布新指令。功能执行逻辑支持各种操作,其包括整数和浮点算术、比较操作、布尔操作、位移位和各种代数函数的计算。可利用相同功能单元硬件来执行不同操作,并且可存在功能单元的任何组合。
传送至处理集群214的指令构成线程。跨一组并行处理引擎而执行的一组线程是线程群组。线程群组对不同的输入数据执行相同程序。可将线程群组内的每个线程分配给图形多处理器234内的不同处理引擎。线程群组可包括比图形多处理器234内的处理引擎数量更少的线程。当线程群组包括比处理引擎的数量更少的线程时,处理引擎中的一个或多个在线程群组正在被处理的循环期间可以是空闲的。线程群组也可包括比图形多处理器234内的处理引擎数量更多的线程。当线程群组包括比图形多处理器234内的处理引擎数量更多的线程时,可通过连续时钟循环执行处理。可选地,可在图形多处理器234上并发地执行多个线程群组。
图形多处理器234可包括用于执行加载和存储操作的内部高速缓冲存储器。可选地,图形多处理器234可放弃内部高速缓存,并且使用处理集群214内的高速缓冲存储器(例如,L1高速缓存248)。每个图形多处理器234还有权访问可用于在线程之间转移数据并且在所有处理集群214当中共享的分区单元(例如,图2A的分区单元220A-220N)内的L2高速缓存。图形多处理器234还可访问芯片外全局存储器,所述芯片外全局存储器可包括本地并行处理器存储器和/或系统存储器中的一个或多个。可将并行处理单元202外部的任何存储器用作全局存储器。其中处理集群214包括图形多处理器234的多个实例的实施例可共享公共指令和数据,所述公共指令和数据可存储在L1高速缓存248中。
每个处理集群214可包括MMU 245(存储器管理单元),所述MMU 245(存储器管理单元)配置成将虚拟地址映射到物理地址中。在其它实施例中,MMU 245的一个或多个实例可驻留在图2A的存储器接口218内。MMU 245包括一组页表条目(PTE),其用于将贴片的虚拟地址映射到物理地址;以及可选地高速缓存行索引。MMU 245可包括可驻留在图形多处理器234或L1高速缓存或处理集群214内的地址转化后备缓冲器(address translationlookaside buffer)(TLB)或高速缓存。物理地址经处理以分布表面数据访问局域性,从而允许在分区单元当中高效的请求交织。高速缓存行索引可用于确定针对高速缓存行的请求是命中还是未命中。
在图形和计算应用中,处理集群214可被配置使得每个图形多处理器234耦合到纹理单元236以用于执行纹理映射操作,例如确定纹理样本位置、读取纹理数据和过滤纹理数据。根据需要,从内部纹理L1高速缓存(未示出)或在一些实施例中从图形多处理器234内的L1高速缓存读取纹理数据,并且从L2高速缓存、本地并行处理器存储器或系统存储器提取所述纹理数据。每个图形多处理器234将经处理的任务输出到数据交叉开关240以将经处理的任务提供给另一处理集群214,以供进一步处理或以经由存储器交叉开关216将经处理的任务存储在L2高速缓存、本地并行处理器存储器或系统存储器中。preROP 242(预栅格操作单元)配置成从图形多处理器234接收数据、将数据引导到ROP单元,所述ROP单元可与如本文描述的分区单元(例如,图2A的分区单元220A-220N)位于一起。preROP 242单元可执行针对颜色混合的优化、组织像素颜色数据和执行地址转化。
将认识到,本文描述的核架构是说明性的,并且变形和修改是有可能的。任何数量的处理单元(例如,图形多处理器234、纹理单元236、preROP 242等)可被包括在处理集群214内。此外,虽然仅示出了一个处理集群214,但是如本文描述的并行处理单元可包括处理集群214的任何数量的实例。可选地,每个处理集群214可配置成使用单独且不同的处理单元、L1高速缓存等独立于其它处理集群214来操作。
图2D示出了图形多处理器234的示例,图2D中图形多处理器234与处理集群214的流水线管理器232耦合。图形多处理器234具有执行流水线,其包括但不限于:指令高速缓存252、指令单元254、地址映射单元256、寄存器堆(file)258、一个或多个通用图形处理单元(GPGPU)核262和一个或多个加载/存储单元266。GPGPU核262和加载/存储单元266经由存储器和高速缓存互连268与高速缓冲存储器272和共享存储器270耦合。图形多处理器234可另外包括张量和/或光线追踪核263,其包括用于加速矩阵和/或光线追踪操作的硬件逻辑。
指令高速缓存252可从流水线管理器232接收待执行的指令流。指令被高速缓存在指令高速缓存252中,并且由指令单元254分派以便执行。指令单元254可将指令分派为线程群组(例如,线程束(warp)),其中线程群组的每个线程被指派给GPGPU核262内的不同执行单元。指令可通过指定统一地址空间内的地址来访问本地、共享或全局地址空间中的任何。地址映射单元256可用于将统一地址空间中的地址转化成可由加载/存储单元266访问的不同的存储器地址。
寄存器堆258为图形多处理器234的功能单元提供一组寄存器。寄存器堆258为连接到图形多处理器234的功能单元(例如,GPGPU核262、加载/存储单元266)的数据路径的操作数提供临时存储。在功能单元中的每个之间可划分寄存器堆258,使得每个功能单元分配寄存器堆258的专用部分。例如,在由图形多处理器234执行的不同线程束之间可划分寄存器堆258。
GPGPU核262可各自包括浮点单元(FPU)和/或整数算术逻辑单元(ALU),它们用于执行图形多处理器234的指令。在一些实现中,GPGPU核262可包括硬件逻辑,其可以以其它方式驻留在张量和/或光线追踪核263内。GPGPU核262可在架构上是类似的,或可在架构上是不同的。例如且在一个实施例中,GPGPU核262的第一部分包括单精度FPU和整数ALU,而GPGPU核的第二部分包括双精度FPU。可选地,FPU可针对浮点算术来实现IEEE 754-2008标准,或能够实现可变精度浮点算术。图形多处理器234可另外包括一个或多个固定功能或特殊功能单元以执行特定功能(诸如,复制矩形或像素混合操作)。GPGPU核中的一个或多个也可包括固定或特殊功能逻辑。
GPGPU核262可包括能够对多组数据执行单指令的SIMD逻辑。可选地,GPGPU核262可物理地执行SIMD4、SIMD8和SIMD16指令,并且逻辑上执行SIMD1、SIMD2和SIMD32指令。用于GPGPU核的SIMD指令可由着色器编译器在编译时间生成,或者可在执行针对单程序多数据(SPMD)或SIMT架构而编写和编译的程序时自动生成。针对SIMT执行模型而配置的程序的多个线程可经由单个SIMD指令而执行。例如且在一个实施例中,执行相同或类似操作的八个SIMT线程可经由单个SIMD8逻辑单元并行地执行。
存储器和高速缓存互连268是互连网络,其将图形多处理器234的功能单元中的每个连接到寄存器堆258并连接到共享存储器270。例如,存储器和高速缓存互连268是交叉开关互连,其允许加载/存储单元266在共享存储器270与寄存器堆258之间实现加载和存储操作。寄存器堆258能与GPGPU核262以相同频率操作,由此在GPGPU核262与寄存器堆258之间的数据转移是非常低的时延。共享存储器270可用于能够实现图形多处理器234内的功能单元上执行的线程之间的通信。高速缓冲存储器272可用作例如数据高速缓存,以对功能单元与纹理单元236之间传递的纹理数据进行高速缓存。共享存储器270也可用作程序管理的高速缓存(cached)。在GPGPU核262上执行的线程能以程序方式将除了存储在高速缓冲存储器272内的自动高速缓存的数据之外的数据存储在共享存储器内。
图3A-3C示出了根据实施例的另外的图形多处理器。图3A-3B示出了图形多处理器325、350,所述图形多处理器325、350与图2C的图形多处理器234相关,并且可代替这些中的一个使用。因此,本文中任何特征与图形多处理器234的组合的公开也公开了与(一个或多个)图形多处理器325、350的对应组合,但不限于此。图3C示出了图形处理单元(GPU)380,其包括布置成多核群组365A-365N的图形处理资源的专用集合,所述多核群组365A-365N对应于图形多处理器325、350。示出的图形多处理器325、350和多核群组365A-365N可以是能够同时执行大量执行线程的流播多处理器(streaming multiprocessor)(SM)。
图3A的图形多处理器325包括涉及图2D的图形多处理器234的执行资源单元的多个附加实例。例如,图形多处理器325可包括指令单元332A-332B、寄存器堆334A-334B和(一个或多个)纹理单元344A-344B的多个实例。图形多处理器325还包括多组图形或计算执行单元(例如,GPGPU核336A-336B、张量核337A-337B、光线追踪核338A-338B)和多组加载/存储单元340A-340B。执行资源单元具有公共指令高速缓存330、纹理和/或数据高速缓冲存储器342以及共享存储器346。
各种组件可经由互连组构327通信。互连组构327可包括一个或多个交叉开关(crossbar switch)以能够实现图形多处理器325的各种组件之间的通信。互连组构327可以是分开的、高速网络组构层,图形多处理器325的每个组件堆叠在该分开的高速网络组构层上。图形多处理器325的组件经由互连组构327与远程组件通信。例如,GPGPU核336A-336B、337A-337B以及338A-338B可各自经由互连组构327与共享存储器346通信。互连组构327可仲裁图形多处理器325内的通信以确保组件之间的公平带宽分配。
图3B的图形处理器350包括多组执行资源356A-356D,其中每组执行资源包括多个指令单元、寄存器堆、GPGPU核和加载存储单元,如图2D和图3A中所示出。执行资源356A-356D可与(一个或多个)纹理单元360A-360D一致地工作以用于纹理操作,同时共享指令高速缓存354和共享存储器353。例如,执行资源356A-356D可共享指令高速缓存354和共享存储器353,以及纹理和/或数据高速缓冲存储器358A-358B的多个实例。各种组件可经由类似于图3A的互连组构327的互连组构352来通信。
本领域技术人员将理解,图1、图2A-2D以及图3A-3B中所描述的架构就本实施例的范畴而言是描述性的而非限制性的。因此,在不背离本文描述的实施例的范畴的情况下,本文描述的技术可在任何正确配置的处理单元上实现,所述处理单元包括但不限于一个或多个移动应用处理器、一个或多个台式计算机或服务器中央处理单元(CPU)(包括多核CPU)、一个或多个并行处理单元(诸如,图2A的并行处理单元202)以及一个或多个图形处理器或专用处理单元。
如本文描述的并行处理器或GPGPU可通信地耦合到主机/处理器核以加速图形操作、机器学习操作、模式分析操作和各种通用GPU(GPGPU)功能。GPU可通过总线或其它互连(例如,诸如PCIe或NVLink的高速互连)通信地耦合到主机处理器/核。在其它实施例中,GPU可与所述核集成在相同封装或芯片上,并且通过内部处理器总线/互连(即,在所述封装或芯片的内部)通信地耦合到所述核。不管连接GPU所采用的方式如何,处理器核都可采取以工作描述符中所包含的命令/指令的序列的形式将工作分配给GPU。GPU然后使用专用的电路系统/逻辑以用于高效地处理这些命令/指令。
图3C示出了包括布置到多核群组365A-365N中的图形处理资源的专用集合的图形处理单元(GPU)380。尽管提供了仅单个多核群组365A的细节,但将领会的是,其它多核群组365A-365N可被配备有图形处理资源的相同或类似集合。关于多核群组365A-365N描述的细节也可适用于本文描述的任何图形多处理器234、325、350。
如所示出的,多核群组365A可包括一组图形核370、一组张量核371和一组光线追踪核372。调度器/分派器368调度和分派图形线程以供在各种核370、371、372上执行。一组寄存器堆369存储在执行图形线程时由核370、371、372使用的操作数值。这些寄存器可包括例如用于存储整数值的整数寄存器、用于存储浮点值的浮点寄存器、用于存储打包数据元素(整数和/或浮点数据元素)的向量寄存器及用于存储张量/矩阵值的贴片寄存器。贴片寄存器可被实现为向量寄存器的组合集合。
一个或多个组合的1级(L1)高速缓存和共享存储器单元373在每个多核群组365A内本地地存储图形数据,诸如纹理数据、顶点数据、像素数据、光线数据、包围体积数据等。一个或多个纹理单元374还可被用于执行纹理操作,诸如纹理映射和采样。由多核群组365A-365N的全部或其子集共享的2级(L2)高速缓存375存储用于多个并发图形线程的图形数据和/或指令。如所示出的,L2高速缓存375可跨多个多核群组365A-365N被共享。一个或多个存储器控制器367将GPU 380耦合到存储器366,所述存储器366可以是系统存储器(例如,DRAM)和/或专用图形存储器(例如,GDDR6存储器)。
输入/输出(I/O)电路系统363将GPU 380耦合到一个或多个I/O装置362,诸如数字信号处理器(DSP)、网络控制器或用户输入装置。片上互连可被用于将I/O装置362耦合到GPU 380和存储器366。I/O电路系统363的一个或多个I/O存储器管理单元(IOMMU)364将I/O装置362直接耦合到系统存储器366。可选地,IOMMU 364管理页表的多个集合,以将虚拟地址映射到系统存储器366中的物理地址。I/O装置362、(一个或多个)CPU 361和(一个或多个)GPU 380然后可共享相同虚拟地址空间。
在IOMMU 364的一个实现中,IOMMU 364支持虚拟化。在此情况下,它可管理页表的第一集合以将客户/图形虚拟地址映射到客户/图形物理地址,并且管理页表的第二集合以将客户/图形物理地址映射到系统/主机物理地址(例如,在系统存储器366内)。页表的第一和第二集合中的每个的基址可被存储在控制寄存器中并且在上下文切换时被换出(例如,使得新的上下文被提供有对页表的相关集合的访问)。尽管在图3C中未被示出,但多核群组365A-365N和/或核370、371、372中的每个可包括转化后备缓冲器(TLB),以对客户虚拟到客户物理转化、客户物理到主机物理转化以及客户虚拟到主机物理转化进行高速缓存。
CPU 361、GPU 380和I/O装置362可被集成在单个半导体芯片和/或芯片封装上。示出的存储器366可被集成在相同芯片上,或者可经由片外(off-chip)接口被耦合到存储器控制器367。在一个实现中,存储器366包括GDDR6存储器,所述GDDR6存储器共享与其它物理系统级存储器相同虚拟地址空间,但是本文描述的基础原理不限于此特定实现。
张量核371可包括特别设计成执行矩阵运算的多个执行单元,所述矩阵运算是用于执行深度学习操作的基础计算操作。例如,同时矩阵乘法运算可被用于神经网络训练和推理。张量核371可使用各种操作数精度来执行矩阵处理,所述各种操作数精度包括单精度浮点(例如,32位)、半精度浮点(例如,16位)、整数字(16位)、字节(8位)和半字节(4位)。例如,神经网络实现取出每个经渲染的场景的特征,潜在地组合来自多个帧的细节,以构造高质量的最终图像。
在深度学习实现中,可调度并行矩阵乘法工作以供在张量核371上执行。神经网络的训练特别要求大量的矩阵点积运算。为了处理N x N x N矩阵相乘的内积公式,张量核371可包括至少N个点积处理元素。在矩阵相乘开始前,一个完整矩阵被加载到贴片寄存器,并且在N个周期的每个周期,第二矩阵的至少一列被加载。每个周期,有被处理的N个点积。
取决于特定实现,可以以不同精度存储矩阵元素,所述不同精度包括16位字、8位字节(例如,INT8)和4位半字节(例如,INT4)。可为张量核371指定不同精度模式以确保最高效的精度被用于不同工作负载(例如,诸如可容许量化到字节和半字节的推理工作负载)。
光线追踪核372对于实时光线追踪和非实时光线追踪实现二者均可使光线追踪操作加速。特别地,光线追踪核372可包括光线遍历(ray traversal)/交叉电路系统,以用于使用包围体积层级(bounding volume hierarchy)(BVH)来执行光线遍历并且标识封闭在BVH体积之内的图元与光线之间的交叉。光线追踪核372还可包括用于执行深度测试和拣选(culling)(例如,使用Z缓冲器或类似布置)的电路系统。在一个实现中,光线追踪核372与本文描述的图像去噪技术协同执行遍历和交叉操作,其至少一部分可在张量核371上被执行。例如,张量核371可实现深度学习神经网络以执行由光线追踪核372生成的帧的去噪。然而,(一个或多个)CPU 361、图形核370和/或光线追踪核372还可实现去噪和/或深度学习算法的全部或一部分。
另外,如上所述,可采用去噪的分布式方法,其中GPU 380在通过网络或高速互连耦合到其它计算装置的计算装置中。在该分布式方法中,互连的计算装置可共享神经网络学习/训练数据来改进速度,利用该速度整个系统学习对不同类型的图像帧和/或不同的图形应用执行去噪。
光线追踪核372可处理所有BVH遍历和/或光线-图元交叉,从而避免图形核370以每光线数千个指令而过载。例如,每个光线追踪核372包括用于执行包围盒测试(例如,对于遍历操作)的专用电路系统的第一集合和/或用于执行光线-三角形交叉测试(例如,交叉已被遍历的光线)的专用电路系统的第二集合。因此,例如,多核群组365A可仅仅启动光线探头,并且光线追踪核372独立执行光线遍历和交叉并且将命中(hit)数据(例如,命中、无命中(no hit)、多次命中等)返回到线程上下文。在光线追踪核372执行遍历和交叉操作的同时,其它核370、371被释放以执行其它图形或计算工作。
可选地,每个光线追踪核372可包括用于执行BVH测试操作的遍历单元和/或执行光线-图元交叉测试的交叉单元。交叉单元生成“命中”、“无命中”或“多次命中”响应,交叉单元将该响应提供到适当的线程。在遍历和交叉操作期间,其它核(例如,图形核370和张量核371)的执行资源被释放以执行其它形式的图形工作。
在下述的一个可选实施例中,使用了混合栅格化/光线追踪方法,其中在图形核370与光线追踪核372之间分布工作。
光线追踪核372(和/或其它核370、371)可包括对诸如Microsoft的DirectX光线追踪(DXR)之类的光线追踪指令集的硬件支持,所述DXR包括DispatchRays命令以及光线-生成、最接近-命中、任何-命中和未命中(miss)着色器,这些能够实现对每个对象指派纹理和着色器的独特集合。可由光线追踪核372、图形核370和张量核371支持的另一光线追踪平台是Vulkan 1.1.85。然而,注意本文描述的基础原理不限于任何特定光线追踪ISA。
一般而言,各种核372、371、370可支持光线追踪指令集,所述光线追踪指令集包括用于光线生成、最接近命中、任何命中、光线-图元交叉、每图元和分层包围盒构造、未命中、访问及异常(exception)中的一个或多个的指令/功能。更特定地,优选的实施例包括光线追踪指令以执行以下功能中的一个或多个:
光线生成 – 可为每个像素、样本或其它用户定义的工作指派执行光线生成指令。
最接近命中 – 可执行最接近命中指令,以用场景内的图元来定位光线的最接近交叉点。
任何命中 - 任何命中指令标识场景内的图元与光线之间的多个交叉,潜在地标识新的最接近交叉点。
交叉 - 交叉指令执行光线-图元交叉测试并且输出结果。
每图元包围盒构造 - 此指令围绕给定图元或图元的群组构建包围盒(例如,在构建新的BVH或其它加速数据结构时)。
未命中 – 指示光线未命中场景的指定区域或场景内的所有几何。
访问 – 指示光线将遍历的子代体积(children volume)。
异常 - 包括各种类型的异常处理程序(例如,针对各种误差状况而被调用)。
用于GPU与主机处理器互连的技术
图4A示出了示例性架构,其中多个GPU 410-413(例如,诸如图2A中所示的并行处理器200)通过高速链路440A-440D(例如,总线、点对点互连等)通信地耦合到多个多核处理器405-406。取决于实现,高速链路440A-440D可支持4GB/s、30GB/s、80GB/s或更高的通信吞吐量。可使用各种互连协议,包括但不限于PCIe 4.0或5.0以及NVLink 2.0。然而,本文描述的根本原理不限于任何特定通信协议或吞吐量。
GPU 410-413中的两个或更多个可通过高速链路442A-442B互连,所述高速链路可使用与用于高速链路440A-440D的那些协议/链路相同或不同的协议/链路来实现。类似地,多核处理器405-406中的两个或更多个可通过高速链路443连接,所述高速链路443可以是以20GB/s、30GB/s、120GB/s或更高来操作的对称多处理器(SMP)总线。备选地,图4A中所示的各种系统组件之间的所有通信可使用相同协议/链路(例如,通过公共互连组构(fabric))来实现。然而,如所提到的,本文描述的根本原理不限于任何特定类型的互连技术。
每个多核处理器405-406可分别经由存储器互连430A-430B通信地耦合到处理器存储器401-402,并且每个GPU 410-413分别通过GPU存储器互连450A-450D通信地耦合到GPU存储器420-423。存储器互连430A-430B以及450A-450D可利用相同或不同的存储器访问技术。通过示例且非限制的方式,处理器存储器401-402和GPU存储器420-423可以是易失性存储器,诸如动态随机存取存储器(DRAM)(包括堆叠式DRAM)、图形DDR SDRAM(GDDR)(例如,GDDR5、GDDR6)或高带宽存储器(HBM),和/或可以是非易失性存储器,诸如3D XPoint/Optane或Nano-Ram。例如,存储器的某部分可以是易失性存储器,并且另一部分可以是非易失性存储器(例如,使用两级存储器(2LM)层级)。
如下文所述,虽然各种处理器405-406和GPU 410-413可分别物理地耦合到特定存储器401-402、420-423,但是可实现统一存储器架构,其中相同虚拟系统地址空间(也称为“有效地址”空间)被分布在所有各个物理存储器当中。例如,处理器存储器401-402可各自包括64GB的系统存储器地址空间,并且GPU存储器420-423可各自包括32GB的系统存储器地址空间(在本示例中产生总共256GB的可寻址存储器)。
图4B示出多核处理器407与图形加速模块446之间的互连的额外可选细节。该图形加速模块446可包括集成在线卡上的一个或多个GPU芯片,所述线卡经由高速链路440耦合到处理器407。备选地,可将图形加速模块446与处理器407集成在相同的封装或芯片上。
所示出的处理器407包括多个核460A-460D,其各自具有转化后备缓冲器461A-461D和一个或多个高速缓存462A-462D。所述核可包括用于执行指令和处理数据的各种其它组件(例如,指令提取单元、分支预测单元、解码器、执行单元、重排序缓冲器等),未示出所述其它组件以免模糊本文描述的组件的根本原理。高速缓存462A-462D可包括1级(L1)和2级(L2)高速缓存。另外,一个或多个共享的高速缓存456可被包括在高速缓存层级中并且由多组核460A-460D共享。例如,处理器407的一个实施例包括24个核,其各自具有其自身的L1高速缓存、十二个共享的L2高速缓存和十二个共享的L3高速缓存。在本实施例中,L2和L3高速缓存中的一个由两个邻近的核共享。处理器407和图形加速器集成模块446与系统存储器441连接,所述系统存储器441可包括处理器存储器401-402。
通过一致性总线464经由核间通信来针对存储在各种高速缓存462A-462D、456和系统存储器441中的数据和指令而维持一致性。例如,每个高速缓存可具有与其相关联的高速缓存一致性逻辑/电路系统以响应于对于特定高速缓存行的检测到的读或写来通过一致性总线464进行通信。在一个实现中,通过一致性总线464来实现高速缓存监听协议,以监听高速缓存访问。高速缓存监听/一致性技术被本领域技术人员良好地理解,并且此处将不详细描述以免模糊使本文描述的根本原理。
可提供代理电路425,所述代理电路425将图形加速模块446通信地耦合到一致性总线464,从而允许图形加速模块446作为核的对等物来加入高速缓存一致性协议。具体而言,接口435提供通过高速链路440(例如,PCIe总线、NVLink等)至代理电路425的连接性,并且接口437将图形加速模块446连接到高速链路440。
在一个实现中,加速器集成电路436代表图形加速模块446的多个图形处理引擎431、432、N来提供高速缓存管理、存储器访问、上下文管理和中断管理服务。图形处理引擎431、432、N可各自包括单独的图形处理单元(GPU)。备选地,图形处理引擎431、432、N可包括GPU内不同类型的图形处理引擎,诸如图形执行单元、媒体处理引擎(例如,视频编码器/解码器)、采样器和blit引擎。换句话说,图形加速模块可以是具有多个图形处理引擎431-432、N的GPU,或图形处理引擎431-432、N可以是集成在公共封装、线卡或芯片上的个体GPU。
加速器集成电路436可包括存储器管理单元(MMU)439以用于执行各种存储器管理功能,诸如虚拟至物理存储器转化(也称为有效至真实存储器转化)和用于访问系统存储器441的存储器访问协议。MMU 439还可包括转化后备缓冲器(TLB)(未示出)以用于高速缓存虚拟/有效至物理/真实地址转化。在一个实现中,高速缓存438存储命令和数据以供图形处理引擎431-432、N进行高效访问。存储在高速缓存438和图形存储器433-434、M中的数据可与核高速缓存462A-462D、456以及系统存储器411保持一致。如所提到,这可经由代理电路425来实现,所述代理电路425代表高速缓存438和存储器433-434、M来参与高速缓存一致性机制(例如,将更新发送到高速缓存438(与处理器高速缓存462A-462D、456上的高速缓存行的修改/访问相关),以及从高速缓存438接收更新)。
一组寄存器445存储用于由图形处理引擎431-432、N执行的线程的上下文数据,并且上下文管理电路448管理线程上下文。例如,上下文管理电路448可在上下文切换期间执行保存和恢复操作以保存和恢复各种线程的上下文(例如,其中,第一线程被保存并且第二线程被存储,使得可由图形处理引擎来执行第二线程)。例如,在上下文切换时,上下文管理电路448可将当前寄存器值存储到存储器中指派的(例如,由上下文指针标识的)区域。然后,其可在返回到上下文时恢复所述寄存器值。中断管理电路447例如可接收并处理从系统装置接收的中断。
在一个实现中,由MMU 439将来自图形处理引擎431的虚拟/有效地址转化成系统存储器411中的真实/物理地址。可选地,加速器集成电路436支持多个(例如,4、8、16个)图形加速器模块446和/或其它加速器装置。图形加速器模块446可专用于在处理器407上执行的单个应用,或可在多个应用之间共享。可选地,提供虚拟化的图形执行环境,其中与多个应用或虚拟机(VM)共享图形处理引擎431-432、N的资源。所述资源可被细划分成“切片”,其被分配给不同的VM和/或应用,这基于与所述VM和/或应用相关联的处理要求和优先级来进行。
因此,加速器集成电路436充当到对于图形加速模块446的系统的桥接器,并且提供地址转化和系统存储器高速缓存服务。在一个实施例中,为了促进桥接功能性,加速器集成电路436还可包括共享I/O 497(例如,PCIe、USB)和硬件以能够实现电压、计时、性能、热气和安全的系统控制。共享I/O 497可利用单独的物理连接或可穿过高速链路440。另外,加速器集成电路436可为主机处理器提供虚拟化设施,以管理中断、存储器管理和图形处理引擎的虚拟化。
因为图形处理引擎431-432、N的硬件资源被显式地映射到由主机处理器407所见的真实地址空间,所以任何主机处理器都可使用有效地址值来直接寻址这些资源。加速器集成电路436的一个可选功能是图形处理引擎431-432、N的物理分离,使得它们对系统呈现为独立的单元。
一个或多个图形存储器433-434、M可分别耦合到图形处理引擎431-432、N中的每个。图形存储器433-434、M存储正在由图形处理引擎431-432、N中的每个处理的指令和数据。图形存储器433-434、M可以是易失性存储器,诸如DRAM(包括堆叠式DRAM)、GDDR存储器(例如,GDDR5、GDDR6)或HBM,和/或可以是非易失性存储器,诸如3D XPoint/Optane或Nano-Ram。
为了减少高速链路440上的数据业务,可使用偏置技术以确保存储在图形存储器433-434、M中的数据是将被图形处理引擎431-432、N最频繁地使用的并且优选地不被核460A-460D(至少不是频繁地)使用的数据。类似地,偏置机制试图将由核(且优选地不是图形处理引擎431-432、N)所需的数据保存在系统存储器411和所述核的高速缓存462A-462D、456内。
根据图4C中所示出的变型,加速器集成电路436被集成在处理器407内。图形处理引擎431-432、N经由接口437和接口435(其再次可利用任何形式的总线或接口协议)通过高速链路440来直接与加速器集成电路436通信。加速器集成电路436可执行与针对于图4B所描述的那些操作相同的操作,但考虑到其与一致性总线464和高速缓存462A-462D、456的紧密接近性而潜在地处于更高的吞吐量。
实施例可支持不同的编程模型,包括专用进程编程模型(没有图形加速模块虚拟化)和共享的编程模型(有虚拟化)。后者可包括由加速器集成电路436控制的编程模型和由图形加速模块446控制的编程模型。
在专用进程模型的实施例中,图形处理引擎431-432、N可在单一操作系统下专用于单个应用或进程。单个应用可将其它应用请求汇集(funnel)到图形引擎431-432、N,从而在VM/分区内提供虚拟化。
在专用进程编程模型中,可由多个VM/应用分区来共享图形处理引擎431-432、N。共享的模型要求系统管理程序来虚拟化图形处理引擎431-432、N,以允许由每个操作系统进行访问。针对无管理程序的单分区系统,图形处理引擎431-432、N由操作系统所拥有。在两种情况下,操作系统可虚拟化图形处理引擎431-432、N以提供对每个进程或应用的访问。
针对共享的编程模型,图形加速模块446或个体图形处理引擎431-432、N使用进程句柄(process handle)来选择进程元素(process element)。进程元素可存储在系统存储器441中,并且使用本文描述的有效地址至真实地址转化技术是可寻址的。进程句柄可以是在向图形处理引擎431-432、N来登记其上下文(那就是说,调用系统软件以将进程元素添加到进程元素链表)时被提供给主机进程的实现特定的值。进程句柄的较低16位可以是进程元素链表内的进程元素的偏移。
图4D示出了示例性加速器集成切片490。如本文中所使用,“切片”包括加速器集成电路436的处理资源的指定部分。系统存储器441内的应用有效地址空间482存储进程元素483。响应于来自处理器407上执行的应用480的GPU调用(invocation)481可存储进程元素483。进程元素483包含对应的应用480的进程状态。包含在进程元素483中的工作描述符(WD)484可以是由应用请求的单个作业,或可包含指向作业队列的指针。在后一种情况下,WD 484是指向应用的地址空间482中的作业请求队列的指针。
图形加速模块446和/或个体图形处理引擎431-432、N可被系统中的进程中的全部或子集共享。例如,本文描述的技术可包括用于设置进程状态并且向图形加速模块446发送WD 484以在虚拟化环境中开始作业的基础设施。
在一个实现中,专用进程编程模型是实现特定的。在这个模型中,单个进程拥有图形加速模块446或个体图形处理引擎431。由于图形加速模块446由单个进程所拥有,在指派图形加速模块446之时,管理程序为拥有的分区初始化加速器集成电路436,并且操作系统为拥有的进程初始化加速器集成电路436。
在操作中,加速器集成切片490中的WD提取单元491提取下一个WD 484,所述下一个WD 484包括待由图形加速模块446的图形处理引擎之一来完成的工作的指示。来自WD484的数据可存储在寄存器445中,并且由如所示出的MMU 439、中断管理电路447和/或上下文管理电路448使用。例如,MMU 439可包括用于访问OS虚拟地址空间485内的段/页表486的段/页行走电路系统(walk circuitry)。中断管理电路447可处理从图形加速模块446接收的中断事件492。当执行图形操作时,由MMU 439将由图形处理引擎431-432、N所生成的有效地址493转化为真实地址。
可为每个图形处理引擎431-432、N和/或图形加速模块446复制相同一组寄存器445,并且这组寄存器445可由管理程序或操作系统来初始化。这些复制的寄存器中的每个可被包括在加速器集成切片490中。表1中示出了可由管理程序来初始化的示例性寄存器。
表1-管理程序初始化的寄存器
1 切片控制寄存器
2 真实地址(RA)调度的进程区域指针
3 权限掩蔽覆盖寄存器
4 中断向量表条目偏移
5 中断向量表条目限制
6 状态寄存器
7 逻辑分区ID
8 真实地址(RA)管理程序加速器利用记录指针
9 存储描述寄存器
表2中示出了可由操作系统来初始化的示例性寄存器。
表2-操作系统初始化的寄存器
1 进程和线程标识
2 有效地址(EA)上下文保存/恢复指针
3 虚拟地址(VA)加速器利用记录指针
4 虚拟地址(VA)存储段表指针
5 权限掩蔽
6 工作描述符
每个WD 484可以是特定于特定图形加速模块446和/或图形处理引擎431-432、N的。它包含图形处理引擎431-432、N要完成其工作所要求的全部信息,或者它可以是对其中应用已设立待完成的工作的命令队列的存储器位置的指针。
图4E示出了共享模型的附加可选细节。它包括其中存储有进程元素列表499的管理程序真实地址空间498。管理程序真实地址空间498经由管理程序496是可访问的,所述管理程序496虚拟化用于操作系统495的图形加速模块引擎。
共享的编程模型允许来自系统中所有分区或分区子集的所有进程或进程子集使用图形加速模块446。存在两个编程模型,其中,图形加速模块446由多个进程和分区共享:时间切片共享和图形定向共享(graphics directed shared)。
在这个模型中,系统管理程序496拥有图形加速模块446,并且使其功能可用于所有操作系统495。为使图形加速模块446支持由系统管理程序496进行的虚拟化,图形加速模块446可遵守以下要求:1)应用的作业请求必须是自主的(那就是说,无需在作业之间保持状态),或图形加速模块446必须提供上下文保存和恢复机制。2)由图形加速模块446保证在指定时间量内完成应用的作业请求(包括任何转化故障),或图形加速模块446提供抢占作业的处理的能力。3)当在定向共享编程模型中操作时,必须保证图形加速模块446在进程之间的公平性。
针对共享模型,要求应用480可用图形加速模块446类型、工作描述符(WD)、权限掩蔽寄存器(AMR)值和上下文保存/恢复区域指针(CSRP)来进行操作系统495系统调用。图形加速模块446类型描述了用于系统调用的靶向加速功能。图形加速模块446类型可以是系统特定的值。WD专门针对图形加速模块446被格式化,并且可采用如下形式:图形加速模块446命令、对用户定义的结构的有效地址指针、对命令队列的有效地址指针或用于描述待由图形加速模块446完成的工作的任何其它数据结构。在一个实施例中,AMR值是待用于当前进程的AMR状态。被传递到操作系统的值类似于设定AMR的应用。如果加速器集成电路436和图形加速模块446实现不支持用户权限掩蔽覆盖寄存器(UAMOR),则在管理程序调用中传递AMR之前操作系统可将当前UAMOR值应用于AMR值。可选地,在将AMR放置到进程元素483中之前管理程序496可应用当前权限掩蔽覆盖寄存器(AMOR)值。CSRP可以是寄存器445之一,其包含应用的地址空间482中的区域的有效地址以用于使图形加速模块446保存和恢复上下文状态。如果不要求在作业之间保存状态或当作业被抢占时,这个指针是可选的。上下文保存/恢复区域可以是固定的(pinned)系统存储器。
在接收到系统调用时,操作系统495可验证应用480已注册并且已被给予使用图形加速模块446的权限。然后,操作系统495用表3中所示的信息来调用管理程序496。
表3–OS至管理程序调用参数
1 工作描述符(WD)
2 权限掩蔽寄存器(AMR)值(潜在地被掩蔽)
3 有效地址(EA)上下文保存/恢复区域指针(CSRP)
4 进程ID(PID)和可选线程ID(TID)
5 虚拟地址(VA)加速器利用记录指针(AURP)
6 存储段表指针(SSTP)的虚拟地址
7 逻辑中断服务号(LISN)
在接收到管理程序调用时,管理程序496验证操作系统495已注册并且已被给予使用图形加速模块446的权限。然后,管理程序496将进程元素483放入到对于对应的图形加速模块446类型的进程元素链表中。进程元素可包括表4中所示的信息。
表4-进程元素信息
1 工作描述符(WD)
2 权限掩蔽寄存器(AMR)值(潜在地被掩蔽)
3 有效地址(EA)上下文保存/恢复区域指针(CSRP)
4 进程ID(PID)和可选线程ID(TID)
5 虚拟地址(VA)加速器利用记录指针(AURP)
6 存储段表指针(SSTP)的虚拟地址
7 逻辑中断服务号(LISN)
8 从管理程序调用参数导出的中断向量表
9 状态寄存器(SR)值
10 逻辑分区ID(LPID)
11 真实地址(RA)管理程序加速器利用记录指针
12 存储装置描述符寄存器(SDR)
管理程序可初始化多个加速器集成切片490寄存器445。
如图4F中所示出,在一个可选实现中,采用经由公共虚拟存储器地址空间可寻址的统一存储器,所述公共虚拟存储器地址空间用于访问物理处理器存储器401-402和GPU存储器420-423。在这种实现中,在GPU 410-413上执行的操作利用相同的虚拟/有效存储器地址空间来访问处理器存储器401-402且反之亦然,由此简化可编程性。虚拟/有效地址空间的第一部分可被分配给处理器存储器401,第二部分被分配给第二处理器存储器402,第三部分被分配GPU存储器420,等等。由此跨处理器存储器401-402和GPU存储器420-423中的每个可分布整个虚拟/有效存储器空间(有时称为有效地址空间),从而允许任何处理器或GPU访问任何物理存储器(采用被映射到该存储器的虚拟地址)。
可提供MMU 439A-439E中的一个或多个内的偏置/一致性管理电路系统494A-494E,所述偏置/一致性管理电路系统494A-494E确保主机处理器(例如,405)与GPU 410-413的高速缓存之间的高速缓存一致性,并且实现指示其中应存储有某些类型的数据的物理存储器的偏置技术。虽然图4F中示出了偏置/一致性管理电路系统494A-494E的多个实例,但是可在一个或多个主机处理器405的MMU内和/或在加速器集成电路436内实现偏置/一致性电路系统。
可使用共享虚拟存储器(SVM)技术来访问GPU附连的存储器420-423并可将其映射为系统存储器的一部分,而无需经受与完全系统高速缓存一致性相关联的典型性能缺陷。GPU附连的存储器420-423作为系统存储器被访问而无繁重的高速缓存一致性开销的能力为GPU卸载提供了有益的操作环境。这种布置允许主机处理器405软件设置操作数和访问计算结果,而没有传统I/O DMA数据拷贝的开销。此类传统拷贝涉及驱动器调用、中断和存储器映射I/O(MMIO)访问,其相对于简单的存储器访问全部都是低效的。同时,访问GPU附连的存储器420-423而无高速缓存一致性开销的能力对于被卸载的计算的执行时间可以是关键的。在具有实质流播写存储器业务的情况下,例如,高速缓存一致性开销可显著减少由GPU410-413所见的有效写带宽。操作数设置的效率、结果访问的效率和GPU计算的效率在确定GPU卸载的有效性中全部都起到一定作用。
可由偏置跟踪器数据结构来驱动GPU偏置与主机处理器偏置之间的选择。例如,可使用偏置表,其可以是每GPU附连的存储器页包括1或2个位的页粒度结构(即,以存储器页的粒度来控制)。可在一个或多个GPU附连的存储器420-423的被偷的(stolen)存储器范围中实现偏置表,其中在GPU 410-413中具有或不具有偏置高速缓存(例如,用于高速缓存偏置表的频繁/最近使用的条目)。备选地,可将整个偏置表维持在GPU内。
在一个实现中,在实际访问GPU存储器之前访问与每一次访问GPU附连的存储器420-423相关联的偏置表条目,从而促使以下操作。首先,来自GPU 410-413的在GPU偏置中寻找其页的本地请求被直接转发到对应的GPU存储器420-423。来自GPU的在主机偏置中寻找其页的本地请求被转发到处理器405(例如,通过如上文所讨论的高速链路)。可选地,来自处理器405的在主机处理器偏置中寻找所请求的页的请求完成像正常存储器读取的请求。备选地,可将针对GPU偏置的页的请求转发到GPU 410-413。然后,如果GPU当前未在使用该页,则GPU可将该页转变到主机处理器偏置。
可由基于软件的机制、硬件辅助的基于软件的机制抑或针对有限的一组情况由纯粹基于硬件的机制来改变页的偏置状态。
用于改变偏置状态的一个机制采用API调用(例如,OpenCL),其进而调用GPU的装置驱动器,所述装置驱动器进而发送消息(或入队命令描述符)到GPU,从而指导它改变偏置状态并且针对一些转变在主机中执行高速缓存转储清除(flushing)操作。高速缓存转储清除操作对于从主机处理器405偏置转变到GPU偏置来说是需要的,但对于反向转变来说是不需要的。
通过暂时渲染由主机处理器405不可高速缓存的GPU偏置页可维持高速缓存一致性。为了访问这些页,处理器405可请求来自GPU 410的访问,其可或可不立即授予访问(取决于实现)。因此,为减少主机处理器405与GPU 410之间的通信,对于确保GPU偏置页是由GPU所要求但非被主机处理器405所要求(且反之亦然)的那些页是有利的。
图形处理流水线
图5示出图形处理流水线500。图形多处理器(诸如,如图2D中的图形多处理器234、图3A的图形多处理器325、图3B的图形多处理器350)可实现所示出的图形处理流水线500。图形多处理器可被包括在如本文描述的并行处理子系统(诸如图2A的并行处理器200)内,其可与图1的(一个或多个)并行处理器112有关并且可代替那些中的一个使用。各种并行处理系统可经由如本文描述的并行处理单元(例如,图2A的并行处理单元202)的一个或多个实例来实现图形处理流水线500。例如,着色器单元(例如,图2C的图形多处理器234)可配置成执行顶点处理单元504、曲面细分控制处理单元508、曲面细分评估处理单元512、几何处理单元516和片段/像素处理单元524中的一个或多个的功能。数据组装器502、图元组装器506、514、518、曲面细分单元510、栅格化器522和栅格操作单元526的功能也可由处理集群(例如,图2A的处理集群214)内的其它处理引擎和对应的分区单元(例如,图2A的分区单元220A-220N)来执行。还可使用针对一个或多个功能的专用处理单元来实现图形处理流水线500。还可能的是,由通用处理器(例如,CPU)内的并行处理逻辑来执行图形处理流水线500的一个或多个部分。可选地,图形处理流水线500的一个或多个部分可经由存储器接口528来访问芯片上存储器(例如,如图2A中的并行处理器存储器222),所述存储器接口528可以是图2A的存储器接口218的实例。图形处理器流水线500也可经由如图3C中的多核群组365A来实现。
数据组装器502是可收集对于表面和图元的顶点数据的处理单元。数据组装器502随后将包括顶点属性的顶点数据输出至顶点处理单元504。顶点处理单元504是可编程执行单元,其执行顶点着色器程序,如由顶点着色器程序所指定那样照亮(lighting)并变换顶点数据。顶点处理单元504读取存储在高速缓存、本地或系统存储器中的数据以供在处理顶点数据时使用,并且顶点处理单元504可被编程为将顶点数据从基于对象的坐标表示变换到世界空间坐标空间或归一化装置坐标空间。
图元组装器506的第一实例从顶点处理单元504接收顶点属性。图元组装器506按需读取存储的顶点属性,并且构建图形图元以用于由曲面细分控制处理单元508处理。图形图元包括如由各种图形处理应用编程接口(API)所支持的三角、线段、点、补片(patch)等等。
曲面细分控制处理单元508将输入顶点视为用于几何补片的控制点。控制点是从来自补片的输入表示(例如,补片的基础)变换到适合于供曲面细分评估处理单元512在表面评估中使用的表示。曲面细分控制处理单元508也可计算对于几何补片的边缘的曲面细分因数。曲面细分因数应用于单个边缘,并且对与该边缘相关联的依赖视图的细节等级进行量化。曲面细分单元510配置成接收对于补片的边缘的曲面细分因数,并且将补片曲面细分成诸如线、三角或四边形图元的多个几何图元,其被传送到曲面细分评估处理单元512。曲面细分评估处理单元512对细划分的补片的参数化坐标进行操作,以生成对于与几何图元相关联的每个顶点的表面表示和顶点属性。
图元组装器514的第二实例从曲面细分评估处理单元512接收顶点属性,所述曲面细分评估处理单元512按需读取存储的顶点属性,并且构建图形图元以便由几何处理单元516处理。几何处理单元516是可编程执行单元,其执行几何着色器程序以按由几何着色器程序所指定那样变换从图元组装器514所接收的图形图元。几何处理单元516可被编程为将图形图元细划分成一个或多个新图形图元,并且运算用于对新图形图元进行栅格化的参数。
几何处理单元516可以能够在几何流中增加或删除元素。几何处理单元516将指定新图形图元的参数和顶点输出到图元组装器518。图元组装器518从几何处理单元516接收参数和顶点,并且构建图形图元以便由视口缩放、拣选和裁剪单元(clip unit)520来处理。几何处理单元516读取存储在并行处理器存储器或系统存储器中的数据以供处理几何数据时使用。视口缩放、拣选和裁剪单元520执行裁剪、拣选和视口缩放,并将经处理的图形图元输出到栅格化器522。
栅格化器522可执行深度拣选和其它基于深度的优化。栅格化器522还对新图形图元执行扫描转换以生成片段,并且将那些片段和相关联的覆盖数据输出到片段/像素处理单元524。片段/像素处理单元524是配置成执行片段着色器程序或像素着色器程序的可编程执行单元。片段/像素处理单元524按由片段或像素着色器程序所指定那样变换从栅格化器522接收的片段或像素。例如,可将片段/像素处理单元524编程为执行以下操作以产生输出到栅格操作单元526的着色的片段或像素,所述操作包括但不限于纹理映射、着色、混合、纹理校正和透视校正。片段/像素处理单元524可读取存储在并行处理器存储器或系统存储器中的数据以供处理片段数据时使用。可将片段或像素着色器程序配置成以样本、像素、贴片或其它粒度来着色,这取决于针对处理单元配置的采样率。
栅格操作单元526是处理单元,其执行包括但不限于模板印刷、z测试、混合之类的栅格操作,并将像素数据作为经处理的图形数据输出以便存储在图形存储器(例如,如图2A中的并行处理器存储器222和/或如图1中的系统存储器104)中,从而显示在所述一个或多个显示装置110上,或者供(一个或多个)并行处理器112或一个或多个处理器102中的一个做进一步处理。可将栅格操作单元526配置成压缩被写入到存储器的z或颜色数据,并且解压缩从存储器读取的z或颜色数据。
机器学习概述
上述架构可应用于使用机器学习模型来执行训练和推理操作。机器学习在解决多种任务方面已经成功了。当训练和使用机器学习算法(例如,神经网络)时出现的计算自然适合于高效的并行实现。因此,诸如通用图形处理单元(GPGPU)之类的并行处理器已经在深度神经网络的实际实现中起到重要作用。具有单指令多线程(SIMT)架构的并行图形处理器被设计成使图形流水线中的并行处理量最大化。在SIMT架构中,并行线程的群组试图尽可能经常地一起同步执行程序指令,以提高处理效率。由并行机器学习算法实现提供的效率允许使用高容量网络,并使那些网络能够在更大的数据集上得到训练。
机器学习算法是可基于数据集学习的算法。例如,机器学习算法可设计成对数据集内的高级抽象建模。例如,图像识别算法可用于确定给定输入属于若干类别中的哪一个;给定输入的话,回归(regression)算法可输出数值;并且模式识别算法可用于生成经转化的文本或执行文本到语音和/或语音识别。
示例性类型的机器学习算法是神经网络。有许多类型的神经网络;简单类型的神经网络是前馈网络。前馈网络可实现为其中节点用层布置的非循环图(acyclic graph)。通常,前馈网络拓扑包括被至少一个隐藏层分开的输入层和输出层。隐藏层将输入层接收的输入变换为对在输出层中生成输出有用的表示。网络节点经由到相邻层中的节点的边缘而完全连接,但在每个层内的节点之间没有边缘。在前馈网络的输入层的节点处接收的数据经由激活函数被传播(即,“前馈(fed forward)”)到输出层的节点,该激活函数基于分别与连接层的边缘中的每个相关联的系数(“权重”)计算网络中每个连续层的节点的状态。根据由被执行的算法所表示的特定模型,来自神经网络算法的输出可采取各种形式。
在机器学习算法可用于对特定问题建模之前,使用训练数据集来训练算法。训练神经网络涉及选择网络拓扑、使用表示正被网络建模的问题的训练数据的集以及调整权重直到网络模型以最小误差对训练数据集的所有实例执行。例如,在对于神经网络的受监督学习训练过程期间,网络响应于表示训练数据集中的实例而产生的输出与对该实例的“正确的”经标记输出比较,计算表示输出与经标记输出之间的差异的误差信号,并且调整与连接相关联的权重以在误差信号通过网络层向后传播时使该误差最小化。在对于从训练数据集的实例生成的输出中的每个的误差被最小化时,网络被认为是“经训练的(trained)”。
机器学习算法的精确度可明显受到用于训练算法的数据集的质量的影响。训练过程可以是计算密集的并且在常规的通用处理器上可能需要大量时间。因此,并行处理硬件用于训练许多类型的机器学习算法。这对于优化神经网络的训练特别有用,这是因为在调整神经网络中的系数中执行的计算使得它们很自然地有助于并行实现。具体地,许多机器学习算法和软件应用已适合于利用通用图形处理装置内的并行处理硬件。
图6是机器学习软件堆栈600的通用图。机器学习应用602可配置成使用训练数据集来训练神经网络或使用经训练的深度神经网络来实现机器智能。机器学习应用602可包括用于神经网络的训练和推理功能性和/或可用于在部署之前训练神经网络的专用软件。机器学习应用602可实现任何类型的机器智能,其包括但不限于图像识别、测绘(mapping)和定位(localization)、自主导航、语音合成、医学成像或语言翻译。
用于机器学习应用602的硬件加速可经由机器学习框架604而启用。机器学习框架604可提供机器学习图元库。机器学习图元是机器学习算法普遍执行的基本操作。在没有机器学习框架604的情况下,将需要机器学习算法的开发人员创建和优化与机器学习算法相关联的主计算逻辑,然后在开发新的并行处理器时重新优化计算逻辑。取而代之,机器学习应用可配置成使用机器学习框架604提供的图元来执行必要的计算。示例性图元包括张量卷积、激活函数和池化(pooling),它们是在训练卷积神经网络(CNN)时执行的计算操作。机器学习框架604还可提供图元来实现由许多机器学习算法执行的基本线性代数子程序,例如矩阵和向量运算。
机器学习框架604可处理从机器学习应用602接收的输入数据并且生成到计算框架606的合适的输入。计算框架606可抽取提供给GPGPU驱动器608的底层指令以使机器学习框架604能够经由GPGPU硬件610利用硬件加速而不需要机器学习框架604深入了解GPGPU硬件610的架构。另外,计算框架606可对机器学习框架604实现跨各种类型的和各代GPGPU硬件610的硬件加速。
GPGPU机器学习加速
图7示出通用图形处理单元700,其可以是图2A的并行处理器200或图1的(一个或多个)并行处理器112。通用处理单元(GPGPU)700可配置成在处理与训练深度神经网络相关联的那类计算工作负荷时特别高效。另外,GPGPU 700可直接链接到GPGPU的其它实例来创建多GPU集群以针对特定深度神经网络提高训练速度。
GPGPU 700包括主机接口702,用于实现与主机处理器的连接。主机接口702可以是PCI Express接口。然而,主机接口还可以是供应商特定通信接口或通信组构。GPGPU 700从主机处理器接收命令并且使用全局调度器704将与那些命令相关联的执行线程分布到一组处理集群706A-706H。处理集群706A-706H共享高速缓冲存储器708。高速缓冲存储器708可对于处理集群706A-706H内的高速缓冲存储器充当较高级高速缓存。所示的处理集群706A-706H可对应于如图2A中的处理集群214A-214N。
GPGPU 700包括经由一组存储器控制器712A-712B而与处理集群706A-H耦合的存储器714A-714B。存储器714A-714B可包括各种类型的存储器装置,其包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如同步图形随机存取存储器(SGRAM),其包括图形双数据速率(GDDR)存储器。存储器714A-714B还可包括3D堆叠存储器,其包括但不限于高带宽存储器(HBM)。
处理集群706A-706H中的每个可包括一组图形多处理器,诸如图2D的图形多处理器234、图3A的图形多处理器325、图3B的图形多处理器350、或者可包括如图3C中的多核群组365A-365N。计算集群的图形多处理器包括多种类型的整数和浮点逻辑单元,其可在包括适合于机器学习计算的一定精度范围执行计算操作。例如,至少处理集群706A-706H中的每个中的浮点单元的子集可配置成执行16位或32位浮点运算,而浮点单元的不同子集可配置成执行64位浮点运算。
GPGPU 700的多个实例可配置成作为计算集群操作。该计算集群用于同步和数据交换的通信机制因实施例而变化。例如,GPGPU 700的多个实例通过主机接口702通信。在一个实施例中,GPGPU 700包括I/O集线器709,其将GPGPU 700与GPU链路710耦合,该GPU链路710能够实现到GPGPU的其它实例的直接连接。GPU链路710可耦合到专用GPU到GPU网桥,其能够实现GPGPU 700的多个实例之间的通信和同步。可选地,GPU链路710与高速互连耦合以向其它GPGPU或并行处理器传送数据和接收数据。GPGPU 700的多个实例可位于独立数据处理系统中并且经由网络装置通信,该网络装置经由主机接口702而可访问。除主机接口702外或作为主机接口702的备选,GPU链路710可配置成能够实现与主机处理器的连接。
尽管示出的GPGPU 700的配置可配置成训练神经网络,但GPGPU 700的备选配置可被配置用于部署在高性能或低功率推理平台内。在推理配置中,相对于训练配置,GPGPU700包括更少的处理集群706A-706H。另外,与存储器714A-714B相关联的存储器技术在推理和训练配置之间可不同。在一个实施例中,GPGPU 700的推理配置可支持推理特定的指令。例如,推理配置可为通常在对于部署的神经网络的推理操作期间使用的一个或多个8位整数点积指令提供支持。
图8示出多GPU计算系统800。该多GPU计算系统800可包括处理器802,其经由主机接口开关804耦合到多个GPGPU 806A-806D。主机接口开关804可以是PCI Express开关装置,其将处理器802耦合到PCI Express总线,处理器802通过该PCI Express总线可与一组GPGPU 806A-806D通信。多个GPGPU 806A-806D中的每个可以是图7的GPGPU 700的实例。GPGPU 806A-806D可经由一组高速点到点GPU到GPU链路816互连。高速GPU到GPU链路可经由专用GPU链路(诸如图7中的GPU链路710)而连接到GPGPU 806A-806D中的每个。P2P GPU链路816在GPGPU 806A-806D中的每个之间实现直接通信而不需要在处理器802被连接到其的主机接口总线上通信。利用被引导到P2P GPU链路的GPU到GPU业务,主机接口总线仍然可用于系统存储器访问或者例如经由一个或多个网络装置与多GPU计算系统800的其它实例通信。虽然在图8中,GPGPU 806A-806D经由主机接口开关804连接到处理器802,但处理器802可备选地包括对P2P GPU链路816的直接支持并且可直接连接到GPGPU 806A-806D。
机器学习神经网络实现
本文描述的计算架构可配置成执行特别适合于训练和部署神经网络以用于机器学习的并行处理的类型。神经网络可归纳为具有图关系(graph relationship)的功能的网络。如在本领域内众所周知的,有多种类型的神经网络实现在机器学习中使用。一个示例性类型的神经网络是前馈网络,如之前描述的那样。
第二个示例性类型的神经网络是卷积神经网络(CNN)。CNN是用于处理具有已知的网格状拓扑的数据(诸如图像数据)的专门前馈神经网络。因此,CNN通常用于计算视觉和图像识别应用,但它们也可用于其它类型的模式识别,例如语音和语言处理。CNN输入层中的节点被组织成一组“过滤器”(受在视网膜中发现的接受域启发的特征检测器),并且每组过滤器的输出被传播到网络的连续层中的节点。对于CNN的计算包括对每个过滤器应用卷积数学运算来产生该过滤器的输出。卷积是由两个函数执行以产生第三函数的一种专门的数学运算,该第三函数是该两个原始函数中的一个的修改后的版本。在卷积网络术语中,到卷积的第一函数可称为输入,而第二函数可称为卷积内核。输出可称为特征图。例如,到卷积层的输入可以是定义输入图像的各种颜色分量的多维阵列的数据。卷积内核可以是多维阵列的参数,其中这些参数由训练过程为神经网络而适配。
递归神经网络(RNN)是前馈神经网络系列,其包括层之间的反馈连接。RNN通过跨神经网络的不同部分共享参数数据而启用对顺序(sequential)数据建模。RNN的架构包括循环。循环代表变量的当前值在未来时间对它自身的值的影响,这是因为来自RNN的输出数据的至少一部分被用作反馈以用于处理序列中的后续输入。该特征由于可在其中组成语言数据的变量性质而使得RNN对于语言处理特别有用。
下文描述的图呈现示例性前馈、CNN和RNN网络,以及描述用于分别训练和部署那些类型的网络中的每个的通用过程。将理解这些描述关于本文描述的任何特定实施例是示例性且非限制性的并且所示出的概念一般可应用于深度神经网络和一般的机器学习技术。
上文描述的示例性神经网络可用于执行深度学习。深度学习是使用深度神经网络的机器学习。在深度学习中使用的深度神经网络是由多个隐藏层组成的人工神经网络,这与只包括单个隐藏层的浅层神经网络相对。更深层神经网络通常在计算上更密集来训练。然而,网络的额外隐藏层实现多步模式识别,其相对于浅机器学习技术导致输出误差减少。
在深度学习中使用的深度神经网络通常包括耦合到后端网络的前端网络,用于执行特征识别,该后端网络表示可基于提供给模型的特征表示来执行操作(例如,对象分类、语音识别等)的数学模型。深度学习使机器学习能够被执行而不需要对模型执行手工特征工程化。取而代之,深度神经网络可基于输入数据内的统计结构或相关性来学习特征。习得的特征可提供给数学模型,其可将所检测的特征映射到输出。网络使用的数学模型一般专门针对待执行的特定任务,并且不同的模型将用于执行不同任务。
一旦神经网络被构造,则学习模型可应用于网络来训练网络以执行特定任务。学习模型描述了如何调整模型内的权重来减少网络的输出误差。误差后向传播是用于训练神经网络的常见方法。向网络呈现输入向量以用于处理。使用损耗函数将网络的输出与期望输出比较并且对输出层中的神经元中的每个计算误差值。然后,误差值被向后传播直到每个神经元具有相关联的误差值,其大致表示它对原始输出的贡献。然后,网络可使用算法(诸如随机梯度下降算法)从那些误差中学习,以更新神经网络的权重。
图9A-9B示出示例性卷积神经网络。图9A示出CNN内的各种层。如在图9A中示出的,用于对图像处理建模的示例性CNN可接收输入908,其描述输入图像的红、绿和蓝(RGB)分量。输入902可被多个卷积层(例如,卷积层904、卷积层906)处理。来自多个卷积层的输出可以可选地被一组完全连接层908处理。完全连接层中的神经元具有到之前的层中的所有激活的完全连接,如之前针对前馈网络描述的那样。来自完全连接层908的输出可用于从网络生成输出结果。完全连接层908内的激活可使用矩阵乘法而不是卷积来计算。不是所有的CNN实现都利用完全连接层908。例如,在一些实现中,卷积层906能够为CNN生成输出。
卷积层稀疏连接,这与在完全连接层908中发现的传统神经网络配置不同。传统神经网络层完全连接,使得每个输出单元与每个输入单元交互。然而,如示出的,因为场的卷积的输出是到后续层的节点的输入(而不是场中的节点中的每个节点的相应状态值),所以卷积层稀疏连接。与卷积层相关联的内核执行卷积运算,其输出被发送给下一个层。在卷积层内执行的降维是使CNN能够放缩以处理大的图像的一个方面。
图9B示出CNN的卷积层内的示例性计算级。到CNN的卷积层912的输入可在卷积层914的三个级中被处理。这三个级可包括卷积级916、检测器级918和池化级920。然后,卷积层914可向连续卷积层输出数据。网络的最后的卷积层可生成输出特征图数据或向完全连接层提供输入,例如以对到CNN的输入生成分类值。
在卷积级916中并行执行若干卷积以产生一组线性激活。卷积级916可包括仿射变换,其是可规定作为线性变换加平移的任何变换。仿射变换包括这些变换的旋转、平移、缩放和组合。卷积级计算连接到输入中的特定区域的功能(例如,神经元)的输出,该特定区域可被确定作为与神经元相关联的局部区域。神经元计算神经元的权重与神经元连接到其的局部输入中的区域之间的点积。来自卷积级916的输出定义被卷积层914的连续级所处理的一组线性激活。
线性激活可被检测器级918处理。在检测器级918中,每个线性激活被非线性激活函数处理。该非线性激活函数使整体网络的非线性性质增加而不影响卷积层的相应场。可使用若干类型的非线性激活函数。一个特定类型是整流线性单元(ReLU),其使用定义为
Figure DEST_PATH_IMAGE001
的激活函数,使得激活被阈值化在零。
池化级920使用池化函数,其用附近输出的汇总统计来代替卷积层906的输出。池化函数可用于将平移不变性引入神经网络,使得对输入的小的平移不改变池化输出。局部平移的不变性在输入数据中特征的存在比特征的精确位置更重要的情景中可以是有用的。在池化段920期间可使用各种类型的池化函数,其包括最大池化、平均池化和l2范数池化。另外,一些CNN实现不包括池化级。取而代之,这样的实现替代相对于之前的卷积级具有增加步幅的额外卷积级。
然后,来自卷积层914的输出可被下一个层922处理。下一个层922可以是额外卷积层或完全连接层908中的一个。例如,图9A的第一卷积层904可向第二卷积层906输出,而第二卷积层可向完全连接层908的第一层输出。
图10示出示例性递归神经网络1000。在递归神经网络(RNN)中,网络的之前的状态影响网络的当前状态的输出。RNN可使用各种函数用各种方式来构建。RNN的使用一般围绕着使用数学模型以基于输入的先验序列预测未来。例如,给定之前的词序列,RNN可用于执行统计语言建模来预测即将到来的词。所示出的RNN 1000可描述为具有接收输入向量的输入层1002、实现递归功能的隐藏层1004、启用之前状态的‘记忆’的反馈机制1005和输出结果的输出层1006。RNN 1000基于时间步骤操作。RNN在给定时间步骤的状态基于之前的时间步骤经由反馈机制1005而受影响。对于给定时间步骤,隐藏层1004的状态由之前的状态和当前时间步骤的输入来定义。在第一时间步骤的初始输入(x1)可被隐藏层1004处理。第二输入(x2)可被隐藏层1004使用在初始输入(x1)的处理期间所确定的状态信息处理。给定状态可计算为
Figure DEST_PATH_IMAGE002
,其中UW是参数矩阵。函数f一般是非线性的,例如双曲正切函数(Tanh)或整流函数
Figure DEST_PATH_IMAGE003
的变型。然而,在隐藏层1004中使用的特定数学函数可根据RNN 1000的特定实现细节而变化。
除所描述的基本CNN和RNN网络外,可启用这些网络上的变化。一个示例RNN变型是长短期记忆(LSTM)RNN。LSTM RNN能够学习长期依赖性,其对于处理较长语言序列是必要的。关于CNN的变型是卷积深度信任网络,其具有与CNN相似的结构并且采用与深度信任网络相似的方式来训练。深度信任网络(DBN)是生成式神经网络,其由多层的概率性(随机)变量组成。DBN可使用贪婪的无监督学习而逐层训练。然后,DBN的习得权重可用于通过对神经网络确定权重的最佳初始集而提供预先训练神经网络。
图11示出深度神经网络的训练和部署。一旦已经为任务构造给定网络,就使用训练数据集1102来训练神经网络。已开发各种训练框架1104来启用训练过程的硬件加速。例如,图6的机器学习框架604可配置为训练框架604。训练框架604可钩入(hook into)未经训练的神经网络1106并且使该未经训练的神经网能够使用本文描述的并行处理资源来训练以生成经训练的神经网1108。
为了开始训练过程,可随机或通过使用深度信任网络的预先训练来选择初始权重。然后,采用受监督或无监督方式执行训练循环。
受监督学习是其中训练作为介导(mediated)操作而执行的学习方法,诸如当训练数据集1102包括与输入的期望输出配对的输入时,或在训练数据集包括具有已知输出的输入并且神经网络的输出被人工分级的情况下。网络处理输入并且将所得的输出与一组预期或期望输出相比较。然后,误差通过系统被向后传播。训练框架1104可调整成调整控制未经训练的神经网络1106的权重。训练框架1104可提供工具来监测未经训练的神经网络1106在多大程度上向适合于基于已知输入数据生成正确应答的模型收敛。随着调整网络的权重来改善神经网络生成的输出,训练过程反复出现。训练过程可持续直到神经网络达到与经训练的神经网1108相关联的统计上期望的精确度。然后,可部署经训练的神经网络1108来实现任何数量的机器学习操作,以基于新数据1112的输入生成推理结果1114。
无监督学习是其中网络试图使用未标记的数据来训练它自己的学习方法。从而,对于无监督学习,训练数据集1102将包括输入数据而没有任何相关联的输出数据。未经训练的神经网络1106可学习未标记的输入内的分组并且可确定个体输入如何与整体数据集相关。无监督训练可用于生成自组织图,其是能够执行在数据的降维方面有用的操作的一类经训练的神经网络1108。无监督训练还可用于执行异常检测,其允许标识输入数据集中偏离数据的正常模式的数据点。
还可采用关于受监督和无监督训练的变化。半监督学习是其中训练数据集1102包括相同分布的标记和无标记数据的混合的技术。递增式学习是其中输入数据被持续用于进一步训练模型的受监督学习的变型。递增式学习使经训练的神经网络1108能够适合于新的数据1112而没有忘记初始训练期间网络内灌输的知识。
无论是受监督还是无监督,对于特别是深度神经网络的训练过程对于单个计算节点在计算上可能太密集。代替使用单个计算节点,计算节点的分布式网络可用于加速训练过程。
图12是示出分布式学习的框图。分布式学习是使用多个分布式计算节点来执行神经网络的受监督或无监督训练的训练模型。分布式计算节点可各自包括一个或多个主机处理器以及通用处理节点中的一个或多个,诸如,如图7中的高度并行通用图形处理单元700。如示出的,分布式学习可以是所执行的模型并行结构1202、数据并行结构1204或模型和数据并行结构1206的组合。
在模型并行结构1202中,分布式系统中的不同计算节点可对单个网络的不同部分执行训练计算。例如,神经网络的每个层可由分布式系统的不同处理节点训练。模型并行结构的益处包括放缩到尤其大模型的能力。拆分与神经网络的不同层相关联的计算启用了其中所有层的权重将不适合单个计算节点的存储器的这一非常大的神经网络的训练。在一些实例中,模型并行在执行大的神经网络的无监督训练中可特别有用。
在数据并行结构1204中,分布式网络的不同节点具有模型的完整实例并且每个节点接收数据的不同部分。然后,来自不同节点的结果组合。虽然不同的方法对于数据并行结构是可能的,但数据并行训练方法全部需要将结果组合并且使每个节点之间的模型参数同步的技术。组合数据的示例性方法包括参数平均和基于更新的数据并行结构。参数平均训练了训练数据子集上的每个节点并且将全局参数(例如,权重、偏置)设置成来自每个节点的参数的平均值。参数平均使用中央参数服务器,其维持参数数据。基于更新的数据并行结构与参数平均相似,不同之处在于对模型的更新被传输,而不是将来自节点的参数传输到参数服务器。另外,基于更新的数据并行结构可采用分散方式执行,其中更新被压缩并且在节点之间传输。
组合模型和数据并行结构1206可例如在其中每个计算节点包括多个GPU的分布式系统中实现。每个节点可具有模型的完整实例,其中每个节点内的独立GPU用于训练模型的不同部分。
分布式训练相对于在单个机器上的训练具有增加的开销。然而,本文描述的并行处理器和GPGPU可各自实现各种技术来减少分布式训练的开销,这些技术包括实现高带宽GPU到GPU数据传输和加速远程数据同步的技术。
示例性机器学习应用
机器学习可应用于解决各种技术问题,其包括但不限于计算机视觉、自主驾驶和导航、语音识别和语言处理。在传统上,计算机视觉已经是机器学习应用的最活跃研究领域之一。计算机视觉的应用范围从再现人类视觉能力(例如识别面部)到创建视觉能力的新类别而变化。例如,计算机视觉应用可配置成从视频中可见的对象中引发的振动中识别声波。并行处理器加速机器学习使计算机视觉应用能够使用比之前可行的明显更大的训练数据集来训练并且使推理系统能够使用低功率并行处理器来部署。
并行处理器加速机器学习具有自主驾驶应用,其包括车道和道路标志识别、障碍避免、导航和驾驶控制。加速机器学习技术可用于基于定义对特定训练输入的合适的响应的数据集来训练驾驶模型。本文描述的并行处理器可对用于自主驾驶技术方案的日益复杂的神经网络实现快速训练并且在适合于集成到自主车辆内的移动平台中启用低功率推理处理器的部署。
并行处理器加速深度神经网络对自动语音识别(ASR)启用机器学习方法。ASR包括创建这样的函数,即:给定输入声序列,计算最可能的语言序列。使用深度神经网络的加速机器学习已经实现了对之前用于ASR的隐藏马尔可夫模型(HMM)和高斯混合模型(GMM)的替换。
并行处理器加速机器学习还可用于加速自然语言处理。自动学习规程可利用统计推理算法来产生对错误或不熟悉输入具有鲁棒性的模型。示例性自然语言处理器应用包括人类语言之间的自动机器翻译。
用于机器学习的并行处理平台可分成训练平台和部署平台。训练平台一般是高度并行的并且包括优化,以加速多GPU单节点训练和多节点多GPU训练。适合于训练的示例性并行处理器包括图7的通用图形处理单元700和图8的多GPU计算系统800。相反,所部署的机器学习平台一般包括适合于用在诸如摄像机、自主机器人和自主车辆之类的产品的较低功率并行处理器。
图13示出适合于使用经训练的模型来执行推理的示例性推理片上系统(SOC)1300。SOC 1300可集成处理组件,其包括媒体处理器1302、视觉处理器1304、GPGPU 1306和多核处理器1308。GPGPU 1306可以是如本文描述的GPGPU(诸如,GPGPU 700)并且多核处理器1308可以是本文描述的多核处理器(诸如,多核处理器405-406)。SOC 1300可另外包括片上存储器1305,其可实现处理组件中的每个可访问的共享片上数据池。处理组件可对低功率操作优化以实现到各种机器学习平台的部署,其包括自主车辆和自主机器人。例如,SOC1300的一个实现可用作自主车辆的主控制系统的一部分。在SOC 1300配置成供自主车辆使用的情况下,SOC设计且配置成遵从部署管辖的相关功能安全标准。
在操作期间,媒体处理器1302和视觉处理器1304可一起(in concert)工作来加速计算机视觉操作。媒体处理器1302可实现多个高分辨率(例如,4K、8K)视频流的低时延解码。经解码的视频流可写入片上存储器1305中的缓冲器。然后,视觉处理器1304可对经解码的视频解析并且在准备使用经训练的图像识别模型准备处理帧时对经解码的视频的帧执行初步处理操作。例如,视觉处理器1304可针对用于在高分辨率视频数据上执行图像识别的CNN加速卷积运算,而后端模型计算由GPGPU 1306执行。
多核处理器1308可包括控制逻辑来帮助媒体处理器1302和视觉处理器1304所执行的数据传输和共享存储器操作的定序和同步。多核处理器1308还可充当应用处理器来执行可利用GPGPU 1306的推理计算能力的软件应用。例如,导航和驾驶逻辑的至少一部分可在多核处理器1308上执行的软件中实现。这样的软件可直接向GPGPU 1306发出计算工作负荷或可将计算工作负荷发出到多核处理器1308,该多核处理器1308可向GPGPU 1306卸载那些操作的至少一部分。
GPGPU 1306可包括计算集群,诸如通用图形处理单元700内的处理集群706A-706H的低功率配置。GPGPU 1306内的计算集群可支持被专门优化以在经训练的神经网络上执行推理计算的指令。例如,GPGPU 1306可支持执行诸如8位和4位整数向量运算之类的低精度计算的指令。
附加系统概述
图14是处理系统1400的框图。图14的与本文中任何其它图的元件具有相同或类似的名称的元件描述了与其它图中的元件相同的元件,可以以与其类似的方式操作或起作用,可包括相同的组件,并且可链接到其它实体,如本文中其它地方所述的那些那样,但不限于此。系统1400可用于单处理器台式计算机系统、多处理器工作站系统或具有大量处理器1402或处理器核1407的服务器系统中。系统1400可以是并入在供移动、手持式或嵌入式装置中(诸如在带有到局域或广域网的有线或无线连接性的物联网(IoT)装置内)使用的片上系统(SoC)集成电路内的处理平台。
系统1400可以是具有与图1的那些组件对应的组件的处理系统。例如,在不同的配置中,(一个或多个)处理器1402或(一个或多个)处理器核1407可与图1的(一个或多个)处理器102对应。(一个或多个)图形处理器1408可与图1的(一个或多个)并行处理器112对应。外部图形处理器1418可以是图1的(一个或多个)附加装置120之一。
系统1400可包括以下各项、与以下各项耦合或者被集成在以下各项内:基于服务器的游戏平台;游戏控制台,包括游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台。系统1400可以是以下各项的一部分:移动电话、智能电话、平板计算装置或诸如带有低内部存储容量的膝上型计算机之类的移动因特网连接的装置。处理系统1400还可包括以下各项、与以下各项耦合或者被集成在以下各项内:可穿戴装置,诸如智能手表可穿戴装置;智能眼镜(smart eyewear)或服装,其用增强现实(AR)或虚拟现实(VR)特征来被增强以提供视觉、音频或触觉输出,以补充现实世界视觉、音频或触觉体验或者以其它方式提供文本、音频、图形、视频、全息图像或视频、或者触觉反馈;其它增强现实(AR)装置;或者其它虚拟现实(VR)装置。处理系统1400可包括电视或机顶盒装置,或者是电视或机顶盒装置的一部分。系统1400可包括以下各项、与以下各项耦合或者被集成在以下各项内:自动驾驶交通工具,诸如公共汽车、牵引车拖车、汽车、摩托车或电动自行车、飞机或滑翔机(或其任何组合)。自动驾驶交通工具可使用系统1400来处理在交通工具周围感测到的环境。
一个或多个处理器1402可包括一个或多个处理器核1407以处理指令,所述指令在被执行时,执行用于系统或用户软件的操作。一个或多个处理器核1407中的至少一个处理器核可被配置成处理特定指令集1409。指令集1409可促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)的计算。一个或多个处理器核1407可处理不同指令集1409,所述指令集1409可包括用于促进对其它指令集的仿真的指令。处理器核1407还可包括其它处理装置,诸如数字信号处理器(DSP)。
处理器1402可包括高速缓冲存储器1404。取决于架构,处理器1402可具有单个内部高速缓存或多个级别的内部高速缓存。在一些实施例中,在处理器1402的各种组件之间共享高速缓冲存储器。在一些实施例中,处理器1402还使用外部高速缓存(例如,3级(L3)高速缓存或末级高速缓存(LLC))(未示出),其可在使用已知高速缓存一致性技术的处理器核1407之间被共享。寄存器堆1406可另外被包括在处理器1402中,并且可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其它寄存器可特定于处理器1402的设计。
一个或多个处理器1402可与一个或多个接口总线1410耦合,以在处理器1402与系统1400中的其它组件之间传送通信信号,诸如地址、数据或控制信号。在这些实施例中的一个中,接口总线1410可以是处理器总线,诸如某一版本的直接媒体接口(DMI)总线。然而,处理器总线不限于DMI总线,并且可包括一个或多个外设组件互连总线(PeripheralComponent Interconnect bus)(例如,PCI、PCI express)、存储器总线或其它类型的接口总线。例如,(一个或多个)处理器1402可包括集成的存储器控制器1416和平台控制器集线器1430。存储器控制器1416促进存储器装置与系统1400的其它组件之间的通信,而平台控制器集线器(PCH)1430经由本地I/O总线提供到I/O装置的连接。
存储器装置1420可以是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪速存储器装置、相变存储器装置或具有适合性能以充当进程存储器的某一其它存储器装置。存储器装置1420可例如作为用于系统1400的系统存储器进行操作,以存储数据1422和指令1421以供在一个或多个处理器1402执行应用或进程时使用。存储器控制器1416还与可选的外部图形处理器1418耦合,所述外部图形处理器1418可与处理器1402中的一个或多个图形处理器1408进行通信以执行图形和媒体操作。在一些实施例中,可由加速器1412协助图形、媒体和/或计算操作,所述加速器1412是可被配置成执行图形、媒体或计算操作的专门集合的协处理器。例如,加速器1412可以是用于优化机器学习或计算操作的矩阵乘法加速器。加速器1412可以是光线追踪加速器,其可被用于与图形处理器1408协同执行光线追踪操作。在一个实施例中,可替代加速器1412或与加速器1412协同使用外部加速器1419。
可提供显示装置1411,所述显示装置1411可连接到(一个或多个)处理器1402。显示装置1411可以是如在移动电子装置或膝上型装置中的内部显示装置或者经由显示接口(例如,DisplayPort等)附连的外部显示装置中的一个或多个。显示装置1411可以是头戴式显示器(HMD),诸如供在虚拟现实(VR)应用或增强现实(AR)应用中使用的立体显示装置。
平台控制器集线器1430可使得外设能经由高速I/O总线连接到存储器装置1420和处理器1402。I/O外设包括但不限于音频控制器1446、网络控制器1434、固件接口1428、无线收发器1426、触摸传感器1425、数据存储装置1424(例如,非易失性存储器、易失性存储器、硬盘驱动器、闪速存储器、NAND、3D NAND、3D XPoint/Optane等)。数据存储装置1424可经由存储接口(例如,SATA)或经由诸如外设组件互连总线(例如,PCI、PCI express)之类的外设总线进行连接。触摸传感器1425可包括触摸屏传感器、压力传感器或指纹传感器。无线收发器1426可以是Wi-Fi收发器、蓝牙收发器或诸如3G、4G、5G或长期演进(LTE)收发器之类的移动网络收发器。固件接口1428能够实现与系统固件通信,并且可以是例如统一可扩展固件接口(UEFI)。网络控制器1434可能够实现到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线1410耦合。音频控制器1446可以是多通道高清晰度音频控制器。在这些实施例中的一些中,系统1400包括用于将传统(legacy)(例如,个人系统2(PS/2))装置耦合到系统的可选的传统I/O控制器1440。平台控制器集线器1430还可连接到一个或多个通用串行总线(USB)控制器1442连接输入装置,诸如键盘和鼠标1443组合、相机1444或其它USB输入装置。
将领会的是,示出的系统1400是示例性的而非限制性的,因为以不同方式配置的其它类型的数据处理系统也可被使用。例如,存储器控制器1416和平台控制器集线器1430的实例可被集成到分立的外部图形处理器(诸如,外部图形处理器1418)中。平台控制器集线器1430和/或存储器控制器1416可在一个或多个处理器1402的外部。例如,系统1400可包括外部存储器控制器1416和平台控制器集线器1430,其可被配置为与(一个或多个)处理器1402通信的系统芯片组内的存储器控制器集线器和外设控制器集线器。
例如,可使用电路板(“滑板(sled)”),将诸如CPU、存储器和其它组件之类的组件放置在所述滑板上,其被设计用于增加的热性能。诸如处理器之类的处理组件可位于滑板的顶侧上,而诸如DIMM之类的近存储器位于滑板的底侧上。作为通过此设计提供的增强气流的结果,组件可比在典型系统中更高的频率和功率水平操作,由此增加性能。此外,滑板被配置成与机架中的功率和数据通信缆线盲配对,从而增强它们被快速移除、升级、重新安装和/或替换的能力。类似地,位于滑板上的各个组件(诸如处理器、加速器、存储器和数据存储驱动器)被配置成由于它们与彼此增加的间距而容易被升级。在说明性实施例中,组件另外包括硬件证明特征以证实其确实性(authenticity)。
数据中心可利用单个网络架构(“组构”),所述单个网络架构支持包括以太网和全路径(Omni-Path)的多个其它网络架构。滑板可经由光纤被耦合到交换机,所述光纤提供比典型双绞线缆线(例如,类别5、类别5e、类别6等)更高的带宽和更低的时延。由于高带宽、低时延互连和网络架构,数据中心可使用在物理上解聚的池资源(诸如存储器、加速器(例如,GPU、图形加速器、FPGA、ASIC、神经网络和/或人工智能加速器等)以及数据存储驱动器),并且在按照需要的基础上将它们提供到计算资源(例如,处理器),使得计算资源能访问池化资源(pooled resource),如同池化资源是本地的那样。
电力供应或电源可将电压和/或电流提供到本文描述的系统1400或任何组件或系统。在一个示例中,电力供应包括用于插入到壁装电源插座的AC到DC(交流到直流)适配器。此类AC电力可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括DC电源,诸如外部AC到DC转换器。电源或电力供应还可包括无线充电硬件以经由接近充电场进行充电。电源可包括内部电池、交流供应、基于运动的电力供应、太阳能供应或燃料电池源。
图15A-15C示出了计算系统和图形处理器。图15A-15C的与本文中任何其它图的元件具有相同或类似的名称的元件描述了与其它图中的元件相同的元件,可以以与其类似的方式操作或起作用,可包括相同的组件,并且可链接到其它实体,如本文中其它地方所述的那些那样,但不限于此。
图15A是处理器1500的框图,其可以是处理器1402中的一个的变型并且可代替这些处理器之一使用。因此,本文中任何特征与处理器1500的组合的公开也公开了与(一个或多个)处理器1402的对应组合,但不限于此。处理器1500可具有一个或多个处理器核1502A-1502N、集成存储器控制器1514和集成图形处理器1508。在排除集成图形处理器1508的情况下,包括该处理器的系统将包括系统芯片集内或经由系统总线耦合的图形处理器装置。处理器1500可包括另外的核,所述另外的核多达并且包括由虚线框表示的另外的核1502N。处理器核1502A-1502N中的每个包括一个或多个内部高速缓存单元1504A-1504N。在一些实施例中,每个处理器核1502A-1502N还可访问一个或多个共享高速缓存单元1506。内部高速缓存单元1504A-1504N和共享高速缓存单元1506表示处理器1500内的高速缓冲存储器层级。高速缓冲存储器层级可包括每个处理器核内的至少一级的指令和数据高速缓存,以及一级或多级的共享中间级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或其它级的高速缓存,其中在外部存储器前的最高级的高速缓存被分类为LLC。在一些实施例中,高速缓存一致性逻辑维持各种高速缓存单元1506与1504A-1504N之间的一致性。
处理器1500还可包括一组一个或多个总线控制器单元1516和系统代理核1510。一个或多个总线控制器单元1516管理一组外设总线,诸如一个或多个PCI或PCI express总线。系统代理核1510提供用于各种处理器组件的管理功能性。系统代理核1510可包括一个或多个集成存储器控制器1514以管理对各种外部存储器装置(未示出)的访问。
例如,处理器核1502A-1502N中的一个或多个处理器核可包括对同时多线程的支持。系统代理核1510包括用于在多线程的处理期间协调和操作核1502A-1502N的组件。系统代理核1510可另外包括功率控制单元(PCU),所述功率控制单元(PCU)包括用于调节处理器核1502A-1502N和图形处理器1508的功率状态的逻辑和组件。
处理器1500可另外包括用于执行图形处理操作的图形处理器1508。在这些实施例中的一些中,图形处理器1508与一组共享高速缓存单元1506和系统代理核1510耦合,所述系统代理核1510包括一个或多个集成存储器控制器1514。系统代理核1510还可包括用于将图形处理器输出驱动到一个或多个耦合的显示器的显示控制器1511。显示控制器1511还可以是经由至少一个互连与图形处理器耦合的单独模块,或者可被集成在图形处理器1508内。
基于环的互连1512可被用于耦合处理器1500的内部组件。然而,可使用备选互连单元,诸如点对点互连、交换互连或其它技术,其包括本领域中公知的技术。在具有基于环的互连1512的这些实施例中的一些中,图形处理器1508经由I/O链路1513与基于环的互连1512耦合。
示例性I/O链路1513表示多个种类的I/O互连中的至少一个,其包括促进各种处理器组件与诸如eDRAM模块之类的高性能嵌入式存储器模块1518之间的通信的封装上I/O互连。可选地,处理器核1502A-1502N中的每个和图形处理器1508可使用嵌入式存储器模块1518作为共享末级高速缓存。
处理器核1502A-1502N可例如是执行相同指令集架构的同质核(homogenouscore)。备选地,处理器核1502A-1502N在指令集架构(ISA)方面是异质的(heterogeneous),其中处理器核1502A-1502N中的一个或多个处理器核执行第一指令集,而其它核中的至少一个核执行第一指令集的子集或不同指令集。处理器核1502A-1502N可在微架构方面是异质的,其中具有相对更高功耗的一个或多个核与具有更低功耗的一个或多个功率核耦合。作为另一示例,处理器核1502A-1502N在计算能力方面是异质的。另外,处理器1500可在一个或多个芯片上被实现,或者被实现为除其它组件外还具有示出的组件的SoC集成电路。
图15B是根据本文描述的一些实施例的图形处理器核1519的硬件逻辑的框图。有时被称为核切片(core slice)的图形处理器核1519可以是模块化图形处理器内的一个或多个图形核。图形处理器核1519是一个图形核切片的示例,并且如本文描述的图形处理器可包括基于目标功率和性能包络(performance envelope)的多个图形核切片。每个图形处理器核1519可包括与也称为子切片的多个子核1521A-1521F耦合的固定功能块1530,所述多个子核1521A-1521F包括通用和固定功能逻辑的模块化块。
固定功能块1530可包括几何/固定功能流水线1531,所述几何/固定功能流水线1531可例如在更低性能/或更低功率图形处理器实现中由图形处理器核1519中的所有子核共享。几何/固定功能流水线1531可包括3D固定功能流水线(例如,如下述图16A中的3D流水线1612)、视频前端单元、线程派生器(thread spawner)和线程分派器(threaddispatcher)以及管理统一返回缓冲器(unified return buffer)(例如,如下所述的在图17中的统一返回缓冲器1718)的统一返回缓冲器管理器。
固定功能块1530还可包括图形SoC接口1532、图形微控制器1533和媒体流水线1534。图形SoC接口1532提供图形处理器核1519与片上系统集成电路内的其它处理器核之间的接口。图形微控制器1533是可编程子处理器,其可被配置成管理图形处理器核1519的各种功能,其包括线程分派、调度和抢占(pre-emption)。媒体流水线1534(例如,图16A和图17的媒体流水线1616)包括用于促进包括图像和视频数据的多媒体数据的解码、编码、预处理和/或后处理的逻辑。媒体流水线1534经由对子核1521A-1521F内的计算或采样逻辑的请求来实现媒体操作。
SoC接口1532可使得图形处理器核1519能够与通用应用处理器核(例如,CPU)和/或SoC内的其它组件通信,所述SoC内的其它组件包括诸如共享末级高速缓冲存储器、系统RAM和/或嵌入式片上或封装上DRAM之类的存储器层级元件。SoC接口1532还可能够实现与SoC内的固定功能装置(诸如,相机成像流水线)的通信,并且能够实现全局存储器原子的使用和/或实现全局存储器原子,所述全局存储器原子可在图形处理器核1519与SoC内的CPU之间被共享。SoC接口1532还可用于图形处理器核1519的功率管理控制,并且能够实现图形核1519的时钟域与SoC内的其它时钟域之间的接口。可选地,SoC接口1532能够实现接收来自命令流播器和全局线程分派器的命令缓冲器(command buffer),所述命令流播器和全局线程分派器被配置成向图形处理器内的一个或多个图形核中的每个提供命令和指令。命令和指令可在要执行媒体操作时被分派到媒体流水线1534,或者在要执行图形处理操作时被分派到几何和固定功能流水线(例如,几何和固定功能流水线1531、几何和固定功能流水线1537)。
图形微控制器1533可被配置成执行用于图形处理器核1519的各种调度和管理任务。在一个配置中,图形微控制器1533可例如在子核1521A-1521F内的执行单元(EU)阵列1522A-1522F、1524A-1524F内的各种图形并行引擎上执行图形和/或计算工作负载调度。在此工作负载调度中,在包括图形处理器核1519的SoC的CPU核上执行的主机软件可将工作负载提交给多个图形处理器门铃(graphic processor doorbell)中的一个,这调用在适当图形引擎上的调度操作。调度操作包括确定接下来要运行哪个工作负载、向命令流播器提交工作负载、对在引擎上运行的现有工作负载进行抢占、监测工作负载的进展、以及在工作负载完成时通知主机软件。可选地,图形微控制器1533还可促进用于图形处理器核1519的低功率或空闲状态,从而为图形处理器核1519提供独立于操作系统和/或系统上的图形驱动器软件跨低功率状态转变来对图形处理器核1519内的寄存器进行保存和恢复的能力。
图形处理器核1519可具有多于或少于示出的子核1521A-1521F,多达N个的模块化子核。对于N个子核的每个集合,图形处理器核1519还可包括共享功能逻辑1535、共享和/或高速缓冲存储器1536、几何/固定功能流水线1537以及另外的固定功能逻辑1538以加速各种图形和计算处理操作。共享功能逻辑1535可包括与图17的共享功能逻辑1720相关联的逻辑单元(例如,采样器、数学和/或线程间通信逻辑),所述逻辑单元可由图形处理器核1519内的每N个子核共享。共享和/或高速缓冲存储器1536可以是用于图形处理器核1519内的N个子核1521A-1521F的集合的末级高速缓存,并且还可充当可由多个子核访问的共享存储器。几何/固定功能流水线1537可代替固定功能块1530内的几何/固定功能流水线1531而被包括并且可包括相同或类似的逻辑单元。
图形处理器核1519可包括另外的固定功能逻辑1538,其可包括供图形处理器核1519使用的各种固定功能加速逻辑。可选地,另外的固定功能逻辑1538包括供在仅位置着色中使用的另外的几何流水线。在仅位置着色中,存在两个几何流水线:几何/固定功能流水线1538、1531内的完全几何流水线;以及拣选流水线(cull pipeline),其是可被包括在另外的固定功能逻辑1538内的另外的几何流水线。例如,拣选流水线可以是完全几何流水线的裁减版本(trimmed down version)。完全流水线和拣选流水线可执行相同应用的不同实例,每个实例具有单独的上下文。仅位置着色可隐藏被丢弃三角形的长拣选运行,使得在一些实例中能更早完成着色。例如,另外的固定功能逻辑1538内的拣选流水线逻辑可执行与主应用并行的位置着色器,并且一般比完全流水线更快生成关键结果,因为拣选流水线仅对顶点的位置属性进行提取并着色,而不向帧缓冲器执行像素的栅格化和渲染。拣选流水线可使用生成的关键结果来计算用于所有三角形的可见性信息,而不考虑那些三角形是否被拣选。完全流水线(其在此实例中可被称为重放流水线)可消耗可见性信息以跳过被拣选的三角形,以仅对最终被传递到栅格化阶段的可见三角形进行着色。
可选地,另外的固定功能逻辑1538还可包括诸如固定功能矩阵乘法逻辑之类的机器学习加速逻辑,以用于包括针对机器学习训练或推理的优化的实现。
在每个图形子核1521A-1521F内包括一组执行资源,其可被用于响应于图形流水线、媒体流水线或着色器程序的请求而执行图形、媒体和计算操作。图形子核1521A-1521F包括多个EU阵列1522A-1522F、1524A-1524F、线程分派和线程间通信(TD/IC)逻辑1523A-1523F、3D(例如,纹理)采样器1525A-1525F、媒体采样器1506A-1506F、着色器处理器1527A-1527F及共享本地存储器(SLM)1528A-1528F。EU阵列1522A-1522F、1524A-1524F各自包括多个执行单元,所述多个执行单元是能够为图形、媒体或计算操作(包括图形、媒体或计算着色器程序)服务而执行浮点和整数/固定点逻辑运算的通用图形处理单元。TD/IC逻辑1523A-1523F执行用于子核内的执行单元的本地线程分派和线程控制操作,并且促进在子核的执行单元上执行的线程之间的通信。3D采样器1525A-1525F可将纹理或其它3D图形有关数据读取到存储器中。3D采样器可基于配置的样本状态和与给定纹理相关联的纹理格式以不同方式读取纹理数据。媒体采样器1506A-1506F可基于与媒体数据相关联的类型和格式来执行类似的读取操作。例如,每个图形子核1521A-1521F可交替包括统一3D和媒体采样器。在子核1521A-1521F中的每个子核内的执行单元上执行的线程可利用每个子核内的共享本地存储器1528A-1528F,以使得在线程群组内执行的线程能使用片上存储器的公共池来执行。
图15C是根据本文描述的实施例的可被配置为图形处理器(例如,图形处理器1508)和/或计算加速器的通用图形处理单元(GPGPU)1570的框图。GPGPU 1570可经由一个或多个系统和/或存储器总线与主机处理器(例如,一个或多个CPU 1546)和存储器1571、1572互连。存储器1571可以是可与一个或多个CPU 1546共享的系统存储器,而存储器1572是专用于GPGPU 1570的装置存储器。例如,装置存储器1572和GPGPU 1570内的组件可被映射到一个或多个CPU 1546可访问的存储器地址中。可经由存储器控制器1568来促进对存储器1571和1572的访问。存储器控制器1568可包括内部直接存储器存取(DMA)控制器1569,或者可包括逻辑以执行在其它情况下将由DMA控制器执行的操作。
GPGPU 1570包括多个高速缓冲存储器,其包括L2高速缓存1553、L1高速缓存1554、指令高速缓存1555和共享存储器1556,该共享存储器1556的至少一部分也可被分区为高速缓冲存储器。GPGPU 1570还包括多个计算单元1560A-1560N。每个计算单元1560A-1560N包括一组向量寄存器1561、标量寄存器1562、向量逻辑单元1563和标量逻辑单元1564。计算单元1560A-1560N还可包括本地共享存储器1565和程序计数器1566。计算单元1560A-1560N可与常量高速缓存1567耦合,该常量高速缓存1567可被用于存储常量数据,所述常量数据是在GPGPU 1570上执行的内核或着色器程序的运行期间将不改变的数据。常量高速缓存1567可以是标量数据高速缓存,并且经高速缓存的(cached)数据可被直接提取到标量寄存器1562中。
在操作期间,一个或多个CPU 1546可将命令写入已被映射到可访问地址空间中的GPGPU 1570中的寄存器或存储器中。命令处理器1557可从寄存器或存储器读取命令,并且确定将在GPGPU 1570内如何处理那些命令。然后线程分派器1558可被用于将线程分派到计算单元1560A-1560N,以执行那些命令。每个计算单元1560A-1560N可独立于其它计算单元执行线程。另外,每个计算单元1560A-1560N可被独立配置用于有条件的计算,并且可有条件地将计算的结果输出到存储器。在提交的命令完成时,命令处理器1557可中断一个或多个CPU 1546。
图16A-16C例如根据图15A-15C示出了由本文描述的实施例提供的另外的图形处理器和计算加速器架构的框图。图16A-16C的与本文中任何其它图的元件具有相同或类似的名称的元件描述与其它图中的元件相同的元件,可以以与其类似的方式操作或起作用,可包括相同组件,并且可链接到其它实体,如本文中其它地方所描述的那些那样,但不限于此。
图16A是图形处理器1600的框图,该图形处理器1600可以是分立的图形处理单元,或者可以是与多个处理核集成的图形处理器,或诸如但不限于存储器装置或网络接口的其它半导体装置。图形处理器1600可以是图形处理器1508的变型并且可代替图形处理器1508使用。因此,本文中任何特征与图形处理器1508的组合的公开也公开了与图形处理器1600的对应组合,但不限于此。图形处理器可经由到图形处理器上的寄存器的存储器映射I/O接口并且利用被放置到处理器存储器中的命令进行通信。图形处理器1600可包括用于访问存储器的存储器接口1614。存储器接口1614可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存和/或到系统存储器的接口。
可选地,图形处理器1600还包括用于将显示输出数据驱动到显示装置1618的显示控制器1602。显示控制器1602包括用于一个或多个覆盖平面的硬件,以用于显示和组合用户接口元素或视频的多个层。显示装置1618可以是内部或外部显示装置。在一个实施例中,显示装置1618是头戴式显示装置,诸如虚拟现实(VR)显示装置或增强现实(AR)显示装置。图形处理器1600可包括视频编解码器引擎1606以将媒体编码成一个或多个媒体编码格式、从一个或多个媒体编码格式将媒体解码、或者在一个或多个媒体编码格式之间对媒体进行转码,所述编码格式包括但不限于运动图像专家组(MPEG)格式(诸如,MPEG-2)、高级视频编码(AVC)格式(诸如,H.264/MPEG-4 AVC、H.265/HEVC)、开放媒体联盟(AOMedia)VP8、VP9以及电影与电视工程师协会(SMPTE)421M/VC-1和联合图像专家组(JPEG)格式,诸如,JPEG、和运动JPEG(MJPEG)格式。
图形处理器1600可包括用于执行二维(2D)栅格化器操作(包括例如位边界块传送)的块图像传送(BLIT)引擎1604。然而,备选地,可使用图形处理引擎(GPE)1610的一个或多个组件来执行2D图形操作。在一些实施例中,GPE 1610是用于执行包括三维(3D)图形操作和媒体操作的图形操作的计算引擎。
GPE 1610可包括用于执行3D操作的3D流水线1612,所述3D操作诸如使用作用于3D图元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线1612包括可编程和固定功能元件,所述可编程和固定功能元件在元件内执行各种任务和/或派生(spawn)到3D/媒体子系统1615的执行线程。虽然3D流水线1612可被用于执行媒体操作,但GPE 1610的实施例还包括特别用于执行媒体操作(诸如,视频后处理和图像增强)的媒体流水线1616。
媒体流水线1616可包括固定功能或可编程逻辑单元以代替或者代表视频编解码器引擎1606来执行一个或多个专用媒体操作,诸如视频解码加速、视频去交织和视频编码加速。媒体流水线1616另外可包括线程派生单元以派生用于在3D/媒体子系统1615上执行的线程。派生的线程在3D/媒体子系统1615中包括的一个或多个图形执行单元上执行用于媒体操作的计算。
3D/媒体子系统1615可包括用于执行由3D流水线1612和媒体流水线1616派生的线程的逻辑。流水线可将线程执行请求发送到3D/媒体子系统1615,所述3D/媒体子系统1615包括线程分派逻辑,所述线程分派逻辑可用于将各种请求仲裁(arbitrate)并分派到可用线程执行资源。执行资源包括用于处理3D和媒体线程的图形执行单元的阵列。3D/媒体子系统1615可包括用于线程指令和数据的一个或多个内部高速缓存。附加地,3D/媒体子系统1615还可包括共享存储器,所述共享存储器包括寄存器和可寻址存储器,以在线程之间共享数据并且存储输出数据。
图16B示出了图形处理器1620,其是图形处理器1600的变型并且可代替图形处理器1600使用,并且反之亦然。因此,本文中任何特征与图形处理器1600的组合的公开也公开了与图形处理器1620的对应组合,但不限于此。图形处理器1620根据本文描述的实施例具有拼贴(tiled)架构。图形处理器1620可包括图形处理引擎集群1622,所述图形处理引擎集群1622在图形引擎贴片1610A-1610D内具有图16A的图形处理引擎1610的多个实例。每个图形引擎贴片1610A-1610D可经由一组贴片互连1623A-1623F而被互连。每个图形引擎贴片1610A-1610D还可经由存储器互连1625A-1625D被连接到存储器模块或存储器装置1626A-1626D。存储器装置1626A-1626D可使用任何图形存储器技术。例如,存储器装置1626A-1626D可以是图形双倍数据率(GDDR)存储器。存储器装置1626A-1626D可以是高带宽存储器(HBM)模块,其可与其相应图形引擎贴片1610A-1610D一起在管芯上。存储器装置1626A-1626D可以是是堆叠存储器装置,其可被堆叠在其相应图形引擎贴片1610A-1610D之上。如图24B-24D中进一步详细描述的,每个图形引擎贴片1610A-1610D和相关联存储器1626A-1626D可驻留在单独的小芯片上,所述小芯片被接合到基础管芯或基础衬底。
图形处理器1620可配置有非统一存储器访问(NUMA)系统,其中存储器装置1626A-1626D与相关联的图形引擎贴片1610A-1610D耦合。给定的存储器装置可能会被图形引擎贴片而不是直接与其连接的贴片访问。然而,当访问本地贴片时,对存储器装置1626A-1626D的访问时延可以是最低的。在一个实施例中,启用了高速缓存一致性NUMA(ccNUMA)系统,该系统使用贴片互连1623A-1623F来启用图形引擎贴片1610A-1610D内的高速缓存控制器之间的通信,以在多于一个高速缓存存储相同存储器位置时保持一致的存储器图像。
图形处理引擎集群1622可与片上或封装上组构互连1624连接。组构互连1624可能够实现在图形引擎贴片1610A-1610D与诸如视频编解码器1606和一个或多个复制引擎1604的组件之间的通信。复制引擎1604可被用于将数据移出以下各项、将数据移入以下各项以及在以下各项之间移动数据:存储器装置1626A-1626D和在图形处理器1620外的存储器(例如,系统存储器)。组构互连1624还可被用于互连图形引擎贴片1610A-1610D。图形处理器1620可以可选地包括用于能够实现与外部显示装置1618的连接的显示控制器1602。图形处理器还可被配置为图形或计算加速器。在加速器配置中,可省略显示控制器1602和显示装置1618。
图形处理器1620可经由主机接口1628连接到主机系统。主机接口1628可能够实现在图形处理器1620、系统存储器和/或其它系统组件之间的通信。主机接口1628可例如是PCI express总线或另一类型的主机系统接口。
图16C示出了根据本文描述的实施例的计算加速器1630。计算加速器1630可包括与图16B的图形处理器1620的架构类似性并且被优化用于计算加速。计算引擎集群1632可包括计算引擎贴片1640A-1640D的集合,其包括被优化用于并行或基于向量的通用计算操作的执行逻辑。计算引擎贴片1640A-1640D可不包括固定功能图形处理逻辑,虽然在一些实施例中,计算引擎贴片1640A-1640D中的一个或多个计算引擎贴片可包括用于执行媒体加速的逻辑。计算引擎贴片1640A-1640D可经由存储器互连1625A-1625D连接到存储器1626A-1626D。存储器1626A-1626D和存储器互连1625A-1625D可以是与在图形处理器1620中类似的技术,或者可以是不同的。图形计算引擎贴片1640A-1640D还可经由贴片互连1623A-1623F的集合被互连,并且可与组构互连1624连接和/或通过组构互连1624被互连。在一个实施例中,计算加速器1630包括可被配置为装置范围高速缓存的大的L3高速缓存1636。计算加速器1630还可以以与图16B的图形处理器1620类似的方式经由主机接口1628连接到主机处理器和存储器。
图形处理引擎
图17是根据一些实施例的图形处理器的图形处理引擎1710的框图。图形处理引擎(GPE)1710可以是图16A中示出的GPE 1610的某一版本,并且还可表示图16B的图形引擎贴片1610A-1610D。图17的与本文中任何其它图的元件具有相同或类似的名称的元件描述了与其它图中的元件相同的元件,可以以与其类似的方式操作或起作用,可包括相同的组件,并且可链接到其它实体,如本文中其它地方所述的那些那样,但不限于此。例如,在图17中还示出了图16A的3D流水线1612和媒体流水线1616。媒体流水线1616在GPE 1710的一些实施例中是可选的,并且可未被显式地包括在GPE 1710内。例如并且在至少一个实施例中,单独的媒体和/或图像处理器被耦合到GPE 1710。
GPE 1710可与命令流播器1703耦合或者包括该命令流播器1703,该命令流播器1703将命令流提供到3D流水线1612和/或媒体流水线1616。备选地或附加地,命令流播器1703可直接耦合到统一返回缓冲器1718。统一返回缓冲器1718可通信地耦合到图形核阵列1714。可选地,命令流播器1703与存储器耦合,所述存储器可以是系统存储器,或内部高速缓冲存储器和共享高速缓冲存储器中的一个或多个。命令流播器1703可接收来自存储器的命令,并且将命令发送到3D流水线1612和/或媒体流水线1616。命令是从存储用于3D流水线1612和媒体流水线1616的命令的环形缓冲器提取的指令(directive)。环形缓冲器可另外包括存储批量的多个命令的批量命令缓冲器。用于3D流水线1612的命令还可包括对在存储器中存储的数据(诸如但不限于用于3D流水线1612的顶点和几何数据和/或用于媒体流水线1616的图像数据和存储器对象)的引用。3D流水线1612和媒体流水线1616通过经由相应流水线内的逻辑执行操作或者通过将一个或多个执行线程分派到图形核阵列1714来处理命令和数据。图形核阵列1714可包括图形核(例如,(一个或多个)图形核1715A、(一个或多个)图形核1715B)的一个或多个块,每个块包括一个或多个图形核。每个图形核包括:图形执行资源的集合,其包括用于执行图形和计算操作的通用和图形特定执行逻辑;以及固定功能纹理处理和/或机器学习和人工智能加速逻辑。
在各种实施例中,3D流水线1612可包括用于通过处理指令并且将执行线程分派到图形核阵列1714来处理一个或多个着色器程序(诸如,顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其它着色器程序)的固定功能和可编程逻辑。图形核阵列1714提供执行资源的统一块以供在处理这些着色器程序中使用。图形核阵列1714的(一个或多个)图形核1715A-1715B内的多用途执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可执行与多个着色器相关联的多个同时执行线程。
图形核阵列1714可包括用于执行媒体功能(诸如,视频和/或图像处理)的执行逻辑。执行单元可包括通用逻辑,该通用逻辑可编程以除图形处理操作外还执行并行通用计算操作。该通用逻辑可与在图14的(一个或多个)处理器核1407或如图15A中的核1502A-1502N内的通用逻辑并行或结合地执行处理操作。
由在图形核阵列1714上执行的线程生成的输出数据可将数据输出到在统一返回缓冲器(URB)1718中的存储器。URB 1718可存储用于多个线程的数据。URB 1718可被用于在图形核阵列1714上执行的不同线程之间发送数据。URB 1718可另外被用于在图形核阵列上的线程与在共享功能逻辑1720内的固定功能逻辑之间的同步。
可选地,图形核阵列1714可以是可缩放的,使得该阵列包括可变数量的图形核,这些图形核各自基于GPE 1710的目标功率和性能水平而具有可变数量的执行单元。执行资源可以是动态可缩放的,使得可按照需要启用或禁用执行资源。
图形核阵列1714与共享功能逻辑1720耦合,该共享功能逻辑1720包括在图形核阵列中的图形核之间共享的多个资源。在共享功能逻辑1720内的共享功能是硬件逻辑单元,所述硬件逻辑单元将专用补充功能性提供到图形核阵列1714。在各种实施例中,共享功能逻辑1720包括但不限于采样器1721、数学1722和线程间通信(ITC)1723逻辑。另外,可实现在共享功能逻辑1720内的一个或多个高速缓存1725。
至少在其中对给定专用功能的需求不足以包括在图形核阵列1714内的情况下,实现共享功能。相反,该专用功能的单个实例化被实现为在共享功能逻辑1720中的独立实体,并且在图形核阵列1714内的执行资源之间被共享。在图形核阵列1714之间被共享并且包括在图形核阵列1714内的功能的精确集合跨实施例而变化。由图形核阵列1714广泛使用的共享功能逻辑1720内的特定共享功能可被包括在图形核阵列1714内的共享功能逻辑1716内。可选地,图形核阵列1714内的共享功能逻辑1716可包括共享功能逻辑1720内的一些或全部逻辑。可在图形核阵列1714的共享功能逻辑1716内重复共享功能逻辑1720内的全部逻辑元件。备选地,排除了共享功能逻辑1720以有利于图形核阵列1714内的共享功能逻辑1716。
执行单元
图18A-18B示出了根据本文描述的实施例的线程执行逻辑1800,其包括在图形处理器核中采用的处理元件的阵列。图18A-18B的与本文中任何其它图的元件具有相同或类似的名称的元件描述了与其它图中的元件相同的元件,可以以与其类似的方式操作或起作用,可包括相同的组件,并且可链接到其它实体,如本文中其它地方所述的那些那样,但不限于此。图18A-18B示出了线程执行逻辑1800的概述,该线程执行逻辑1800可代表利用图15B的每个子核1521A-1521F示出的硬件逻辑。图18A代表通用图形处理器内的执行单元,而图18B代表可在计算加速器内使用的执行单元。
如在图18A中所示出的,线程执行逻辑1800可包括着色器处理器1802、线程分派器1804、指令高速缓存1806、包括多个执行单元1808A-1808N的可缩放执行单元阵列、采样器1810、共享本地存储器1811、数据高速缓存1812和数据端口1814。可选地,可缩放执行单元阵列可通过基于工作负载的计算要求来启用或禁用一个或多个执行单元(例如,执行单元1808A、1808B、1808C、1808D到1808N-1和1808N中的任何执行单元)来动态地进行缩放。被包括的组件可经由链接到组件中的每个组件的互连组构被互连。线程执行逻辑1800可包括通过指令高速缓存1806、数据端口1814、采样器1810和执行单元1808A-1808N中的一个或多个到存储器(诸如,系统存储器或高速缓冲存储器)的一个或多个连接。每个执行单元(例如,1808A)可以是独立可编程通用计算单元,其能执行多个同时硬件线程,同时为每个线程并行处理多个数据元素。在各种实施例中,执行单元1808A-1808N的阵列是可缩放的,以包括任何数量的各个执行单元。
执行单元1808A-1808N可主要被用于执行着色器程序。着色器处理器1802可处理各种着色器程序,并且经由线程分派器1804分派与着色器程序相关联的执行线程。线程分派器可包括用于对来自图形和媒体流水线的线程发起请求进行仲裁并且在一个或多个执行单元1808A-1808N上实例化所请求的线程的逻辑。例如,几何流水线可将顶点、曲面细分或几何着色器分派到线程执行逻辑以用于处理。可选地,线程分派器1804还可处理来自在执行的着色器程序的运行时间线程派生请求。
执行单元1808A-1808N可支持指令集,所述指令集包括对许多标准3D图形着色器指令的本机支持,使得来自图形库(例如,Direct 3D和OpenGL)的着色器程序以最小的转化被执行。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。执行单元1808A-1808N中的每个执行单元能进行多发布(multi-issue)单指令多数据(SIMD)执行,并且多线程操作在面临更高时延存储器访问时能够实现高效的执行环境。每个执行单元内的每个硬件线程具有专用高带宽寄存器堆和相关联的独立线程状态。执行是对能进行整数、单精度和双精度浮点运算、SIMD分支能力、逻辑运算、超越运算和其它杂项运算的流水线的每时钟多发布。在等待来自存储器或共享功能之一的数据时,执行单元1808A-1808N内的依赖性逻辑促使在等待的线程进行休眠,直到所请求的数据已被返回为止。当在等待的线程正在休眠时,硬件资源可专用于处理其它线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可执行用于像素着色器、片段着色器或另一类型的着色器程序(包括不同顶点着色器,诸如图21中所示的顶点着色器2107)的操作。各种实施例可应用于:通过作为使用SIMD的备选方案或者除使用SIMD之外还使用单指令多线程(SIMT)来使用执行。对SIMD核或操作的引用也可应用于SIMT或者应用于与SIMT组合的SIMD。
执行单元1808A-1808N中的每个执行单元对数据元素的阵列进行操作。数据元素的数量是“执行大小”或指令的通道的数量。执行通道是用于指令内的数据元素访问、掩蔽(masking)和流控制的执行的逻辑单元。通道的数量可独立于特定图形处理器的物理算术逻辑单元(ALU)、浮点单元(FPU)或其它逻辑单元(例如,张量核、光线追踪核等)的数量。附加地,执行单元1808A-1808N可支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可作为打包数据类型存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,在对256位宽向量进行操作时,向量的256位被存储在寄存器中,并且执行单元对作为四个单独的184位打包数据元素(四字(QW)大小数据元素)、八个单独的32位打包数据元素(双字(DW)大小数据元素)、十六个单独的16位打包数据元素(字(W)大小数据元素)或三十二个单独的8位数据元素(字节(B)大小数据元素)的向量进行操作。然而,不同向量宽度和寄存器大小是可能的。
可选地,一个或多个执行单元可被组合成具有线程控制逻辑(1807A-1807N)的融合的执行单元1809A-1809N,所述线程控制逻辑(1807A-1807N)对于融合的EU是公共的。多个EU可被融合成EU群组。融合的EU群组中的每个EU可被配置成执行单独的SIMD硬件线程。融合的EU群组中EU的数量可根据实施例而变化。另外,可每EU执行各种SIMD宽度,包括但不限于SIMD8、SIMD16和SIMD32。每个融合的图形执行单元1809A-1809N包括至少两个执行单元。例如,融合的执行单元1809A包括第一EU 1808A、第二EU 1808B以及线程控制逻辑1807A,该线程控制逻辑1807A对第一EU 1808A和第二EU 1808B是公共的。线程控制逻辑1807A控制在融合的图形执行单元1809A上执行的线程,允许融合的执行单元1809A-1809N内的每个EU使用公共指令指针寄存器来执行。
线程执行逻辑1800中包括一个或多个内部指令高速缓存(例如,1806)以对用于执行单元的线程指令进行高速缓存。在线程执行逻辑1800中可包括一个或多个数据高速缓存(例如,1812)以在线程执行期间对线程数据进行高速缓存。在执行逻辑1800上执行的线程还可在共享本地存储器1811中存储显式管理的数据。可包括采样器1810以提供3D操作的纹理采样和媒体操作的媒体采样。采样器1810可包括专用纹理或媒体采样功能性,以在向执行单元提供采样的数据前在采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体流水线经由线程派生和分派逻辑向线程执行逻辑1800发送线程发起请求。一旦几何对象的群组已被处理并且栅格化成像素数据,着色器处理器1802内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)便被调用于进一步计算输出信息,并且使结果被写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。像素着色器或片段着色器可计算要跨栅格化对象内插的各种顶点属性的值。着色器处理器1802内的像素处理器逻辑然后可执行应用编程接口(API)供应的像素或片段着色器程序。为了执行着色器程序,着色器处理器1802经由线程分派器1804向执行单元(例如,1808A)分派线程。着色器处理器1802可使用采样器1810中的纹理采样逻辑来访问存储在存储器中的纹理映射中的纹理数据。对纹理数据和输入几何数据的算术运算为每个几何片段计算像素颜色数据,或者丢弃一个或多个像素而不进行进一步处理。
此外,数据端口1814可提供存储器访问机制,以便线程执行逻辑1800将经处理的数据输出至存储器以用于在图形处理器输出流水线上进一步处理。数据端口1814可包括或者耦合到一个或多个高速缓冲存储器(例如,数据高速缓存1812)来对数据进行高速缓存以用于经由数据端口1814的存储器访问。
可选地,执行逻辑1800还可包括光线追踪器1805,所述光线追踪器1805可提供光线追踪加速功能性。光线追踪器1805可支持包括用于光线生成的指令/功能的光线追踪指令集。该光线追踪指令集可与由图3C中的光线追踪核372支持的光线追踪指令集类似或不同。
图18B示出了执行单元1808的示例性内部细节。图形执行单元1808可包括指令提取单元1837、通用寄存器堆阵列(GRF)1824、架构寄存器堆阵列(ARF)1826、线程仲裁器1822、发送单元1830、分支单元1832、SIMD浮点单元(FPU)1834的集合以及可选地包括专用整数SIMD ALU 1835的集合。GRF 1824和ARF 1826包括与可在图形执行单元1808中是活动的每个同时硬件线程相关联的通用寄存器堆和架构寄存器堆的集合。在ARF 1826中可维持每线程架构状态,而在线程执行期间使用的数据被存储在GRF 1824中。每个线程的执行状态(包括用于每个线程的指令指针)可被保持在ARF 1826中的线程特定寄存器中。
图形执行单元1808可具有这样的架构,该架构是同时多线程(SMT)和细粒度交错多线程(IMT)的组合。该架构可具有模块化配置,可在设计时基于每执行单元的寄存器的数量和同时线程的目标数量来对所述模块化配置进行微调,其中执行单元资源跨用于执行多个同时线程的逻辑被划分。可由图形执行单元1808执行的逻辑线程的数量不限于硬件线程的数量,并且多个逻辑线程可被指派到每个硬件线程。
可选地,图形执行单元1808可共同发布多个指令,所述多个指令各自可以是不同的指令。图形执行单元线程1808的线程仲裁器1822可将指令分派给发送单元1830、分支单元1832或(一个或多个)SIMD FPU 1834中的一个以用于执行。每个执行线程可访问GRF1824内的128个通用寄存器,其中每个寄存器可存储32个字节,其可作为32位数据元素的SIMD 8元素向量访问。每个执行单元线程可访问GRF 1824内的4千字节,虽然实施例不限于此,并且在其它实施例中可提供更多或更少的寄存器资源。图形执行单元1808可被分区成可独立执行计算操作的七个硬件线程,虽然每执行单元的线程的数量还可根据实施例而变化。例如,可支持多达16个硬件线程。在示例性实施例中,其中七个线程可访问4千字节,GRF1824可存储总共28千字节。在另一示例性实施例中,在16个线程可访问4千字节的情况下,GRF 1824可存储总共64千字节。然而,每执行单元的线程的数量不限于这些示例并且可多于或少于给定的数量。灵活的寻址模式可允许对寄存器一起进行寻址以有效地构建更宽的寄存器或者表示跨步矩形块数据结构(strided rectangular block data structure)。
附加地或备选地,可经由通过消息传递发送单元1830执行的“发送”指令来分派存储器操作、采样器操作和其它较长时延系统通信。可将分支指令分派给专用分支单元1832以促进SIMD发散和最终收敛。
图形执行单元1808可包括一个或多个SIMD浮点单元((一个或多个)FPU)1834以执行浮点运算。(一个或多个)FPU 1834还可支持整数计算。在一些实例中,(一个或多个)FPU1834可SIMD执行多达M个数量的32位浮点(或整数)运算,或者SIMD执行多达2M个16位整数或16位浮点运算。可选地,(一个或多个)FPU中的至少一个提供扩展的数学能力以支持高吞吐量超越数学函数和双精度184位浮点。还可存在8位整数SIMD ALU 1835的集合,并且8位整数SIMD ALU 1835的集合可被特别地优化以执行与机器学习计算相关联的操作。
可选地,图形执行单元1808的多个实例的阵列可在图形子核分组(例如,子切片)中被实例化。为了可缩放性,产品架构师可选定每子核分组的执行单元的确切数量。执行单元1808可跨多个执行通道执行指令。此外,在图形执行单元1808上执行的每个线程可以是在不同的通道上被执行的。
图19示出了另外的示例性执行单元1900。图19的与本文中任何其它图的元件具有相同或类似的名称的元件描述了与其它图中的元件相同的元件,可以以与其类似的方式操作或起作用,可包括相同的组件,并且可链接到其它实体,如本文中其它地方所述的那些那样,但不限于此。执行单元1900可以是供在例如如图16C中的计算引擎贴片1640A-1640D中使用的计算优化的执行单元,但不限于此。执行单元1900还可用于如图16B中的图形引擎贴片1610A-1610D中。执行单元1900可包括线程控制单元1901、线程状态单元1902、指令提取/预提取单元1903和指令解码单元1904。执行单元1900另外包括寄存器堆1906,所述寄存器堆1906存储可被指派到执行单元内的硬件线程的寄存器。执行单元1900另外包括发送单元1907和分支单元1908。发送单元1907和分支单元1908可与图18B的图形执行单元1808的发送单元1830和分支单元1832类似地操作。
执行单元1900还包括计算单元1910,所述计算单元1910包括多个不同类型的功能单元。计算单元1910还可包括ALU单元1911,所述ALU单元1911包括算术逻辑单元的阵列。ALU单元1911可被配置成执行64位、32位和16位整数和浮点运算。整数和浮点运算可同时被执行。计算单元1910还可包括脉动阵列1912和数学单元1913。脉动阵列1912包括可用于以脉动方式执行向量或其它数据并行操作的数据处理单元的宽度W和深度D的网络。脉动阵列1912可被配置成执行矩阵运算,诸如矩阵点积运算。脉动阵列1912可支持16位浮点运算及8位和4位整数运算。脉动阵列1912可被配置成加速机器学习操作。脉动阵列1912可被配置有对bfloat16(16位浮点格式)的支持。可包括数学单元1913来以高效和比ALU单元1911更低功率的方式执行数学运算的特定子集。数学单元1913可包括在由描述的其它实施例提供的图形处理引擎的共享功能逻辑中找到的数学逻辑(例如,图17的共享功能逻辑1720的数学逻辑1722)。数学单元1913可被配置成执行32位和64位浮点运算。
线程控制单元1901包括用于控制执行单元内线程的执行的逻辑。线程控制单元1901可包括用于开始、停止和抢占执行单元1900内线程的执行的线程仲裁逻辑。线程状态单元1902可用于为被指派在执行单元1900上执行的线程存储线程状态。在执行单元1900内存储线程状态能够实现在线程变为阻塞或空闲时那些线程的快速抢占。指令提取/预提取单元1903可从更高级别执行逻辑的指令高速缓存(例如,如图18A中的指令高速缓存1806)提取指令。指令提取/预提取单元1903还可基于当前在执行的线程的分析来发布对要被加载到指令高速缓存中的指令的预提取请求。指令解码单元1904可被用于解码要由计算单元执行的指令。指令解码单元1904可被用作次级解码器以将复杂指令解码成组成的微操作(constituent micro-operation)。
执行单元1900另外包括可由在执行单元1900上执行的硬件线程使用的寄存器堆1906。可跨用于执行在执行单元1900的计算单元1910内的多个同时线程的逻辑来划分寄存器堆1906中的寄存器。可由图形执行单元1900执行的逻辑线程的数量不限于硬件线程的数量,并且多个逻辑线程可被指派到每个硬件线程。寄存器堆1906的大小可基于支持的硬件线程的数量跨实施例而变化。寄存器重命名可被用于动态地将寄存器分配到硬件线程。
图20是示出图形处理器指令格式2000的框图。图形处理器执行单元支持具有采用多种格式的指令的指令集。实线框示出了一般被包括在执行单元指令中的组成部分,而虚线包括可选的或者仅被包括在指令的子集中的组成部分。描述和示出的指令格式2000是宏指令,因为它们是供应给执行单元的指令,而与一旦指令被处理由指令解码产生的微操作相反。
如本文描述的图形处理器执行单元可本机地支持采用128位指令格式2010的指令。基于所选择的指令、指令选项和操作数的数量,64位压缩指令格式2030可用于一些指令。本机128位指令格式2010提供对所有指令选项的访问,而采用64位格式2030,一些选项和操作被限制。采用64位格式2030的可用的本机指令随实施例而变化。使用索引字段2013中索引值的集合来部分地压缩指令。执行单元硬件基于索引值来引用压缩表的集合,并且使用压缩表输出来重构采用128位指令格式2010的本机指令。可使用指令的其它大小和格式。
对于每种格式,指令操作码2012定义执行单元要执行的操作。执行单元跨每个操作数的多个数据元素并行执行每个指令。例如,响应于相加指令,执行单元跨表示纹理元素或图片元素的每个颜色通道来执行同时加法运算。默认情况下,执行单元跨操作数的所有数据通道来执行每个指令。指令控制字段2014可能够实现对诸如通道选择(例如,断定(predication))和数据通道次序(例如,搅混(swizzle))之类的某些执行选项的控制。对于采用128位指令格式2010的指令,执行大小字段2016限制将被并行执行的数据通道的数量。执行大小字段2016可能不可供64位压缩指令格式2030中使用。
一些执行单元指令具有多达三个操作数,所述三个操作数包括两个源操作数src02020、src1 2022和一个目的地2018。执行单元可支持双目的地指令,其中目的地中的一个是隐含的。数据操纵指令可具有第三源操作数(例如,SRC2 2024),其中指令操作码2012确定源操作数的数量。指令的最后源操作数可以是利用指令传递的立即(例如,硬编码的)值。
128位指令格式2010可包括访问/地址模式字段2026,该访问/地址模式字段2026指定例如使用直接寄存器寻址模式还是间接寄存器寻址模式。在使用直接寄存器寻址模式时,由指令中的位来直接提供一个或多个操作数的寄存器地址。
128位指令格式2010还可包括访问/地址模式字段2026,该访问/地址模式字段2026指定指令的地址模式和/或访问模式。访问模式可被用于定义指令的数据访问对齐。可支持包括16字节对齐的访问模式和1字节对齐的访问模式的访问模式,其中访问模式的字节对齐确定指令操作数的访问对齐。例如,当处于第一模式中时,指令可将字节对齐的寻址用于源操作数和目的地操作数,并且当处于第二模式中时,指令可将16字节对齐的寻址用于所有源操作数和目的地操作数。
访问/地址模式字段2026的地址模式部分可确定指令要使用直接寻址还是间接寻址。在使用直接寄存器寻址模式时,指令中的位直接提供一个或多个操作数的寄存器地址。在使用间接寄存器寻址模式时,可基于指令中的地址立即字段和地址寄存器值来计算一个或多个操作数的寄存器地址。
基于操作码2012位字段可对指令进行分组,以简化操作码解码2040。对于8位操作码,4、5和6位允许执行单元确定操作码的类型。所示出的精确操作码分组仅是示例。移动和逻辑操作码群组2042可包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。移动和逻辑群组2042可共享五个最高有效位(MSB),其中移动(mov)指令采用0000xxxxb的形式,并且逻辑指令采用0001xxxxb的形式。流控制指令群组2044(例如调用、跳(jmp))包括采用0010xxxxb(例如,0x20)形式的指令。杂项指令群组2046包括指令的混合,包括采用0011xxxxb(例如,0x30)形式的同步指令(例如等待、发送)。并行数学指令群组2048包括采用0100xxxxb(例如,0x40)的形式的逐组成部分的算术指令(例如,加、乘(mul))。并行数学群组2048跨数据通道并行执行算术运算。向量数学群组2050包括采用0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。向量数学群组对向量操作数执行诸如点积计算的算术。示出的操作码解码2040在一个实施例中可用于确定执行单元的哪个部分将被用于执行解码的指令。例如,一些指令可被指定为将由脉动阵列执行的脉动指令。诸如光线追踪指令(未示出)的其它指令可被路由到执行逻辑的切片或分区内的光线追踪核或光线追踪逻辑。
图形流水线
图21是根据另一实施例的图形处理器2100的框图。图21的与本文中任何其它图的元件具有相同或类似的名称的元件描述了与其它图中的元件相同的元件,可以以与其类似的方式操作或起作用,可包括相同的组件,并且可链接到其它实体,如本文中其它地方所述的那些那样,但不限于此。
图形处理器2100可包括不同类型的图形处理流水线,诸如几何流水线2120、媒体流水线2130、显示引擎2140、线程执行逻辑2150和渲染输出流水线2170。图形处理器2100可以是包括一个或多个通用处理核的多核处理系统内的图形处理器。可通过对一个或多个控制寄存器(未示出)的寄存器写入或者经由通过环形互连2102发布至图形处理器2100的命令来控制图形处理器。环形互连2102可将图形处理器2100耦合到其它处理组件,诸如其它图形处理器或通用处理器。来自环形互连2102的命令由命令流播器2103解译,该命令流播器2103将指令供应至几何流水线2120或媒体流水线2130的各个组件。
命令流播器2103可指导顶点提取器2105的操作,该顶点提取器2105从存储器读取顶点数据,并执行由命令流播器2103提供的顶点处理命令。顶点提取器2105可将顶点数据提供给顶点着色器2107,该顶点着色器2107对每个顶点执行坐标空间变换和照明操作。顶点提取器2105和顶点着色器2107可通过经由线程分派器2131向执行单元2152A-2152B分派执行线程来执行顶点处理指令。
执行单元2152A-2152B可以是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。执行单元2152A-2152B可具有附连的L1高速缓存2151,所述L1高速缓存2151对于每个阵列是特定的,或者在阵列之间被共享。高速缓存能被配置为数据高速缓存、指令高速缓存或被分区以在不同分区中包含数据和指令的单个高速缓存。
几何流水线2120可包括曲面细分组件以执行3D对象的硬件加速的曲面细分。可编程外壳着色器(programmable hull shader)2111可配置曲面细分操作。可编程域着色器2117可提供曲面细分输出的后端评估。曲面细分器2113可在外壳着色器2111的指导下进行操作,并且包含专用逻辑以基于作为到几何流水线2120的输入而提供的粗略几何模型来生成详细的几何对象的集合。此外,如果未使用曲面细分,则可绕过曲面细分组件(例如,外壳着色器2111、曲面细分器2113和域着色器2117)。
完整几何对象可由几何着色器2119经由分派给执行单元2152A-2152B的一个或多个线程来处理,或者可直接行进至裁剪器(clipper)2129。几何着色器可对整个几何对象进行操作,而不是如在图形流水线的先前阶段中对顶点或顶点的补片(patch)进行操作。如果曲面细分被禁用,则几何着色器2119接收来自顶点着色器2107的输入。几何着色器2119可由几何着色器程序可编程以在曲面细分单元被禁用时执行几何曲面细分。
在栅格化前,裁剪器2129处理顶点数据。裁剪器2129可以是具有裁剪和几何着色器功能的可编程裁剪器或固定功能裁剪器。渲染输出流水线2170中的栅格化器和深度测试组件2173可分派像素着色器以将几何对象转换成逐像素表示。像素着色器逻辑可被包括在线程执行逻辑2150中。可选地,应用可绕过栅格化器和深度测试组件2173,并且经由流出单元2123访问未栅格化的顶点数据。
图形处理器2100具有允许数据和消息在处理器的主要组件之间传递的互连总线、互连组构或某种其它互连机构。在一些实施例中,执行单元2152A-2152B和相关联的逻辑单元(例如,L1高速缓存2151、采样器2154、纹理高速缓存2158等)经由数据端口2156互连,以执行存储器访问并且与处理器的渲染输出流水线组件进行通信。采样器2154、高速缓存2151、2158和执行单元2152A-2152B可各自具有单独的存储器访问路径。可选地,纹理高速缓存2158还可被配置为采样器高速缓存。
渲染输出流水线2170可包含栅格化器和深度测试组件2173,该栅格化器和深度测试组件2173将基于顶点的对象转换成相关联的基于像素的表示。栅格化器逻辑可包括用于执行固定功能三角形和线栅格化的窗口化器(windower)/掩蔽器单元。相关联的渲染高速缓存2178和深度高速缓存2179在一些实施例中也是可用的。像素操作组件2177对数据执行基于像素的操作,尽管在一些实例中,与2D操作相关联的像素操作(例如,带有混合(blending)的位块图像传送)由2D引擎2141执行,或者在显示时由显示控制器2143使用覆盖显示平面代替。共享L3高速缓存2175可能对于全部图形组件是可用的,从而允许在不使用主系统存储器的情况下共享数据。
图形处理器媒体流水线2130可包括媒体引擎2137和视频前端2134。视频前端2134可接收来自命令流播器2103的流水线命令。媒体流水线2130可包括单独的命令流播器。视频前端2134可在将命令发送至媒体引擎2137之前处理媒体命令。媒体引擎2137可包括线程派生功能性来派生线程,以便经由线程分派器2131分派到线程执行逻辑2150。
图形处理器2100可包括显示引擎2140。显示引擎2140可在处理器2100的外部,并且可经由环形互连2102或某一其它互连总线或组构与图形处理器耦合。显示引擎2140可包括2D引擎2141和显示控制器2143。显示引擎2140可包含能独立于3D流水线操作的专用逻辑。显示控制器2143可与显示装置(未示出)耦合,该显示装置可以是系统集成的显示装置(如在膝上型计算机中),或者可以是经由显示装置连接器附连的外部显示装置。
几何流水线2120和媒体流水线2130可能可配置成基于多个图形和媒体编程接口执行操作,并且不特定于任何一个应用编程接口(API)。用于图形处理器的驱动器软件可将特定于特定图形或媒体库的API调用转化成可由图形处理器处理的命令。可为全部来自Khronos Group的开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API提供支持。还可为来自微软公司的Direct3D库提供支持。可支持这些库的组合。还可为开源计算机视觉库(OpenCV)提供支持。如果可进行从未来API的流水线到图形处理器的流水线的映射,则具有兼容3D流水线的未来API也将被支持。
图形流水线编程
图22A是示出用于对图形处理流水线进行编程的图形处理器命令格式2200的框图,所述图形处理流水线诸如例如本文中结合图16A、17、21描述的流水线。图22B是示出根据实施例的图形处理器命令序列2210的框图。图22A中的实线框示出了一般被包括在图形命令中的组成部分,而虚线包括可选的或者仅被包括在图形命令的子集中的组成部分。图22A的示例性图形处理器命令格式2200包括用于标识命令的客户端2202、命令操作代码(操作码)2204和数据2206的数据字段。一些命令中还包括子操作码2205和命令大小2208。
客户端2202可指定处理命令数据的图形装置的客户端单元。图形处理器命令解析器可检查每个命令的客户端字段以调节命令的进一步处理,并且将命令数据路由到适当的客户端单元。图形处理器客户端单元可包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户端单元可具有处理命令的对应处理流水线。一旦由客户端单元接收到命令,客户端单元便读取操作码2204和子操作码2205(如果子操作码2205存在的话),以确定要执行的操作。客户端单元使用数据字段2206中的信息来执行命令。对于一些命令,预期显式命令大小2208来指定命令的大小。命令解析器可基于命令操作码来自动确定至少一些命令的大小。可经由双字的倍数来对齐命令。还可使用其它命令格式。
图22B中的流程示出了示例性图形处理器命令序列2210。以示例性图形处理器为特征的数据处理系统的软件或固件可使用所示出的命令序列的版本来设定、执行和终止图形操作的集合。仅出于示例的目的示出并描述了样本命令序列,并且样本命令序列不限于这些特定命令或此命令序列。另外,命令可作为命令序列中的批量命令被发布,使得图形处理器将至少部分并发地处理命令的序列。
图形处理器命令序列2210可以以流水线转储清除命令2212开始,以促使任何活动的图形流水线完成该流水线的当前未决命令。可选地,3D流水线2222和媒体流水线2224可不并发地操作。执行流水线转储清除以促使活动的图形流水线完成任何未决命令。响应于流水线转储清除,图形处理器的命令解析器将暂停命令处理,直至活动的绘图引擎完成未决操作并且相关的读取高速缓存失效。可选地,可将渲染高速缓存中标记为“脏”的任何数据转储清除到存储器。流水线转储清除命令2212可被用于流水线同步,或者在将图形处理器置于低功率状态前被使用。
在命令序列要求图形处理器在流水线之间显式地切换时,可使用流水线选择命令2213。除非上下文要为两个流水线发布命令,否则在发布流水线命令前,可在执行上下文内仅要求一次流水线选择命令2213。紧接经由流水线选择命令2213的流水线切换之前,可要求流水线转储清除命令2212。
流水线控制命令2214可配置图形流水线以用于操作,并且可被用于对3D流水线2222和媒体流水线2224进行编程。流水线控制命令2214可配置活动的流水线的流水线状态。流水线控制命令2214可被用于流水线同步,并且在处理一批命令前从活动的流水线内的一个或多个高速缓冲存储器中清除数据。
返回缓冲器状态命令2216可被用于为相应流水线配置返回缓冲器的集合以写入数据。一些流水线操作要求分配、选择或配置一个或多个返回缓冲器,在处理期间这些操作将中间数据写入到所述一个或多个返回缓冲器。图形处理器还可使用一个或多个返回缓冲器来存储输出数据并且执行跨线程通信。返回缓冲器状态2216可包括选择要用于流水线操作的集合的返回缓冲器的大小和数量。
命令序列中的剩余命令基于用于操作的活动流水线而不同。基于流水线确定2220,将命令序列定制到以3D流水线状态2230开始的3D流水线2222或者从媒体流水线状态2240开始的媒体流水线2224。
用于配置3D流水线状态2230的命令包括3D状态设置命令,所述3D状态设置命令用于在处理3D图元命令之前要配置的顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态以及其它状态变量。至少部分基于使用中的特定3D API来确定这些命令的值。如果将不使用某些流水线元件,则3D流水线状态2230命令还可能能够选择性地禁用或绕过那些元件。
3D图元2232命令可被用于提交要由3D流水线处理的3D图元。经由3D图元2232命令传递到图形处理器的命令和相关联的参数被转发到图形流水线中的顶点提取功能。顶点提取功能使用3D图元2232命令数据来生成顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。3D图元2232命令可被用于经由顶点着色器对3D图元执行顶点操作。为处理顶点着色器,3D流水线2222将着色器执行线程分派到图形处理器执行单元。
可经由执行2234命令或事件来触发3D流水线2222。寄存器可写入触发命令执行。可经由命令序列中的“go”或“kick”命令来触发执行。可使用流水线同步命令来触发命令执行以转储清除通过图形流水线的命令序列。3D流水线将执行3D图元的几何处理。一旦操作完成,所得到的几何对象便被栅格化,并且像素引擎对所得到的像素进行上色。对于那些操作,还可包括用于控制像素着色和像素后端操作的另外的命令。
在执行媒体操作时,图形处理器命令序列2210可沿着媒体流水线2224路径。一般而言,用于媒体流水线2224的编程的特定使用和方式取决于要执行的媒体或计算操作。可在媒体解码期间将特定媒体解码操作卸载到媒体流水线。还可绕过媒体流水线,并且可使用由一个或多个通用处理核提供的资源来全部或部分地执行媒体解码。媒体流水线还可包括用于通用图形处理器单元(GPGPU)操作的元件,其中图形处理器被用于使用计算着色器程序来执行SIMD向量运算,所述计算着色器程序与图形图元的渲染不是显式相关的。
以与3D流水线2222类似的方式可对媒体流水线2224进行配置。将用于配置媒体流水线状态2240的命令的集合分派或放置到在媒体对象命令2242之前的命令队列中。用于媒体流水线状态2240的命令可包括用于配置媒体流水线元件的数据,所述媒体流水线元件将被用于处理媒体对象。这包括用于配置媒体流水线内的视频解码和视频编码逻辑的数据,诸如编码和解码格式。用于媒体流水线状态2240的命令还可支持使用到包含一批状态设置的“间接”状态元素的一个或多个指针。
媒体对象命令2242可将指针供应到媒体对象以便由媒体流水线处理。媒体对象包括存储器缓冲器,所述存储器缓冲器包含要处理的视频数据。可选地,在发布媒体对象命令2242之前,所有媒体流水线状态必须是有效的。一旦配置了流水线状态,并且将媒体对象命令2242排队,便经由执行命令2244或等效执行事件(例如,寄存器写入)来触发媒体流水线2224。然后可通过由3D流水线2222或媒体流水线2224提供的操作对来自媒体流水线2224的输出进行后处理。可以以与媒体操作类似的方式配置和执行GPGPU操作。
图形软件架构
图23示出了用于数据处理系统2300的示例性图形软件架构。这样的软件架构可包括3D图形应用2310、操作系统2320和至少一个处理器2330。处理器2330可包括图形处理器2332和一个或多个通用处理器核2334。处理器2330可以是处理器1402或本文中所述处理器中的任何其它处理器的变型。处理器2330可代替处理器1402或本文中所述处理器中的任何其它处理器使用。因此,任何特征与处理器1402或本文中所述处理器中的任何其它处理器的组合的公开也公开了与图形处理器2330的对应组合,但不限于此。此外,图23的与本文中任何其它图的元件具有相同或类似的名称的元件描述了与其它图中的元件相同的元件,可以以与其类似的方式操作或起作用,可包括相同的组件,并且可链接到其它实体,如本文中其它地方所述的那些那样,但不限于此。图形应用2310和操作系统2320各自在数据处理系统的系统存储器2350中执行。
3D图形应用2310可包含一个或多个着色器程序,该一个或多个着色器程序包括着色器指令2312。着色器语言指令可采用高级着色器语言,诸如Direct3D的高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)等等。应用还可包括采用适合由通用处理器核2334执行的机器语言的可执行指令2314。应用还可包括由顶点数据定义的图形对象2316。
操作系统2320可以是来自微软公司的Microsoft® Windows®操作系统、专有的类UNIX操作系统或使用Linux内核的变型的开源类UNIX操作系统。操作系统2320可支持图形API 2322,诸如Direct3D API、OpenGL API或Vulkan API。Direct3D API在使用中时,操作系统2320使用前端着色器编译器2324来将采用HLSL的任何着色器指令2312编译成更低级着色器语言。编译可以是即时(JIT)编译或者应用可执行着色器预编译。在3D图形应用2310的编译期间可将高级着色器编译成低级着色器。可以以中间形式(诸如,由Vulkan API使用的标准可移植中间表示(SPIR)的版本)提供着色器指令2312。
用户模式图形驱动器2326可包含用于将着色器指令2312转换成硬件特定表示的后端着色器编译器2327。OpenGL API在使用中时,将采用GLSL高级语言的着色器指令2312传递到用户模式图形驱动器2326以用于编译。用户模式图形驱动器2326可使用操作系统内核模式功能2328来与内核模式图形驱动器2329通信。内核模式图形驱动器2329可与图形处理器2332通信以分派命令和指令。
IP核实现
一个或多个方面可由存储在机器可读介质上的代表性代码来实现,该代表性代码表示和/或定义诸如处理器的集成电路内的逻辑。例如,机器可读介质可包括表示处理器内的各种逻辑的指令。在由机器读取时,指令可促使机器制作逻辑以执行本文描述的技术。称为“IP核”的此类表示是用于集成电路的逻辑的可重复使用单元,该可重复使用单元可作为对集成电路的结构进行描述的硬件模型而被存储在有形机器可读介质上。可将硬件模型供应至各种客户或制造设施,所述客户或制造设施将硬件模型加载在制造集成电路的制作机器上。可制作集成电路,使得电路执行与本文描述的实施例中的任何实施例相关联的所描述的操作。
图24A是示出根据实施例的可被用于制造集成电路以执行操作的IP核开发系统2400的框图。IP核开发系统2400可被用于生成可被并入到更大的设计中或被用于构造完整集成电路(例如,SOC集成电路)的模块化、可重复使用设计。设计设施2430可生成采用高级编程语言(例如,C/C++)的IP核设计的软件仿真2410。软件仿真2410可被用于使用仿真模型2412来设计、测试和验证IP核的行为。仿真模型2412可包括功能、行为和/或时序仿真。然后可从仿真模型2412创建或合成寄存器传送级(RTL)设计2415。RTL设计2415是对硬件寄存器之间的数字信号流进行建模的集成电路的行为的抽象,包括使用建模的数字信号执行的相关联的逻辑。除RTL设计2415外,还可创建、设计或合成处于逻辑级或晶体管级的较低级设计。因此,初始设计和仿真的特定细节可变化。
可由设计设施将RTL设计2415或等效物进一步合成为硬件模型2420,该硬件模型2420可采用硬件描述语言(HDL)或物理设计数据的某种其它表示。可进一步对HDL进行仿真或测试以验证IP核设计。可使用非易失性存储器2440(例如,硬盘、闪速存储器或任何非易失性存储介质)来存储IP核设计以用于递送到第三方制作设施2465。备选的是,可通过有线连接2450或无线连接2460(例如,经由因特网)来传送IP核设计。制作设施2465然后可制作至少部分基于IP核设计的集成电路。制作的集成电路可被配置成执行根据本文描述的至少一个实施例的操作。
图24B示出了集成电路封装组装件2470的截面侧视图。集成电路封装组装件2470示出了如本文描述的一个或多个处理器或加速器装置的实现。封装组装件2470包括连接到衬底2480的硬件逻辑2472、2474的多个单元。逻辑2472、2474可至少部分地以可配置逻辑或固定功能性逻辑硬件实现,并且可包括本文描述的(一个或多个)处理器核、(一个或多个)图形处理器或其它加速器装置中的任何装置的一个或多个部分。逻辑2472、2474的每个单元可在半导体管芯内被实现,并且经由互连结构2473与衬底2480耦合。互连结构2473可被配置成在逻辑2472、2474与衬底2480之间路由电信号,并且可包括互连,该互连诸如但不限于凸块(bump)或柱。互连结构2473可被配置成路由电信号,诸如,例如与逻辑2472、2474的操作相关联的输入/输出(I/O)信号和/或功率或接地信号。可选地,衬底2480可以是环氧基层压衬底(epoxy-based laminate substrate)。衬底2480还可包括其它合适类型的衬底。封装组装件2470可经由封装互连2483被连接到其它电气装置。封装互连2483可被耦合到衬底2480的表面,以将电信号路由到其它电气装置,诸如主板、其它芯片组或多芯片模块。
逻辑2472、2474的单元可与桥2482电耦合,该桥2482被配置成在逻辑2472、2474之间路由电信号。桥2482可以是为电信号提供路线(route)的密集互连结构。桥2482可包括由玻璃或合适的半导体材料构成的桥衬底。可在桥衬底上形成电路由部件(electricalrouting feature),以在逻辑2472、2474之间提供芯片到芯片连接。
虽然示出了逻辑2472、2474的两个单元和桥2482,但是本文描述的实施例可包括在一个或多个管芯上的更多或更少逻辑单元。由于当逻辑被包括在单个管芯上时可排除桥2482,因此可通过零个或多于零个桥来连接一个或多个管芯。备选的是,可通过一个或多个桥来连接多个管芯或逻辑单元。另外,在其它可能配置(包括三维配置)中可将多个逻辑单元、管芯和桥连接在一起。
图24C示出了包括连接到衬底2480(例如,基础管芯)的硬件逻辑小芯片的多个单元的封装组装件2490。如本文描述的图形处理单元、并行处理器和/或计算加速器可由单独制造的多样化的硅小芯片构成。在此上下文中,小芯片是至少部分封装的集成电路,其包括可与其它小芯片被组装到更大封装中的逻辑的不同单元。带有不同IP核逻辑的小芯片的多样化集合可被组装到单个装置中。另外,可使用有源中介层(interposer)技术将小芯片集成到基础管芯或基础小芯片中。本文描述的概念能够实现GPU内的不同形式的IP之间的互连和通信。可使用不同工艺技术来制造并且在制造期间构成IP核,这避免了将多个IP(特别是在带有若干特点(flavors)IP的大的SoC上)汇聚到相同制造工艺的复杂性。能够实现多个工艺技术的使用改进了推向市场的时间,并且提供了创建多个产品SKU的有成本效益的方式。另外,解聚的IP更易于独立地被功率选通,在给定工作负载上不在使用中的组件可被断电,从而降低总体功率消耗。
硬件逻辑小芯片可包括专用硬件逻辑小芯片2472、逻辑或I/O小芯片2474和/或存储器小芯片2475。硬件逻辑小芯片2472和逻辑或I/O小芯片2474可至少部分地用可配置逻辑或固定功能性逻辑硬件实现,并且可包括(一个或多个)处理器核、(一个或多个)图形处理器、并行处理器或本文描述的其它加速器装置中的任何的一个或多个部分。存储器小芯片2475可以是DRAM(例如,GDDR、HBM)存储器或高速缓冲(SRAM)存储器。
每个小芯片可被制作为单独的半导体管芯,并且经由互连结构2473与衬底2480耦合。互连结构2473可被配置成在各种小芯片与衬底2480内的逻辑之间路由电信号。互连结构2473可包括互连,诸如但不限于凸块或柱。在一些实施例中,互连结构2473可被配置成路由电信号,诸如,例如与逻辑、I/O和存储器小芯片的操作相关联的输入/输出(I/O)信号和/或功率或接地信号。
衬底2480可以是环氧基层压衬底,然而它不限于此,并且衬底2480还可包括其它合适类型的衬底。封装组装件2490可经由封装互连2483被连接到其它电气装置。封装互连2483可被耦合到衬底2480的表面,以将电信号路由到其它电气装置,诸如主板、其它芯片组或多芯片模块。
逻辑或I/O小芯片2474和存储器小芯片2475可经由桥2487被电耦合,该桥2487被配置成在逻辑或I/O小芯片2474与存储器小芯片2475之间路由电信号。桥2487可以是为电信号提供路由的密集互连结构。桥2487可包括由玻璃或合适的半导体材料构成的桥衬底。可在桥衬底上形成电路由部件,以在逻辑或I/O小芯片2474与存储器小芯片2475之间提供芯片到芯片连接。桥2487还可被称为硅桥或互连桥。例如,桥2487是嵌入式多管芯互连桥(EMIB)。备选地,桥2487可只是从一个小芯片到另一小芯片的直接连接。
衬底2480可包括用于I/O 2491、高速缓冲存储器2492和其它硬件逻辑2493的硬件组件。组构2485可被嵌入在衬底2480中以能够实现在各种逻辑小芯片与衬底2480内的逻辑2491、2493之间的通信。可选地,I/O 2491、组构2485、高速缓存、桥和其它硬件逻辑2493可被集成到基础管芯中,该基础管芯被层叠在衬底2480之上。组构2485可以是片上网络互连,或者是在封装组装件的组件之间交换数据分组的另一形式的分组交换组构。
此外,封装组装件2490还可包括由组构2485或一个或多个桥2487互连的更少或更多数量的组件和小芯片。封装组装件2490内的小芯片可按在3D或2.5D布置来进行布置。一般而言,桥结构2487可被用于促进在例如逻辑或I/O小芯片与存储器小芯片之间的点到点互连。组构2485可被用于将各种逻辑和/或I/O小芯片(例如,小芯片2472、2474、2491、2493)与其它逻辑和/或I/O小芯片互连。衬底内的高速缓冲存储器2492可充当用于封装组装件2490的全局高速缓存、分布式全局高速缓存的一部分或者充当用于组构2485的专用高速缓存。
图24D示出了根据实施例的包括可互换小芯片2495的封装组装件2494。可互换小芯片2495可被组装到一个或多个基础小芯片2496、2498上的标准化槽中。基础小芯片2496、2498可经由桥互连2497被耦合,该桥互连2497可类似于本文描述的其它桥互连,并且可例如是EMIB。存储器小芯片还可经由桥互连被连接到逻辑或I/O小芯片。I/O和逻辑小芯片可经由互连组构通信。基础小芯片可各自支持采用标准化格式的一个或多个槽以用于逻辑或I/O或存储器/高速缓存中的一个。
可将SRAM和功率递送电路制作到基础小芯片2496、2498中的一个或多个基础小芯片中,所述基础小芯片2496、2498可使用相对于堆叠在基础小芯片之上的可互换小芯片2495不同的工艺技术来被制作。例如,可使用更大的工艺技术来制作基础小芯片2496、2498,而可使用更小的工艺技术来制作可互换小芯片。可互换小芯片2495中的一个或多个可互换小芯片可以是存储器(例如,DRAM)小芯片。可基于针对使用封装组装件2494的产品的功率和/或性能,为封装组装件2494选择不同存储器密度。另外,可基于针对产品的功率和/或性能,在组装时选择带有不同数量的类型的功能单元的逻辑小芯片。另外,可将包含不同类型的IP逻辑核的小芯片插入到可互换小芯片槽中,能够实现可混合并匹配不同技术IP块的混合处理器设计。
示例性片上系统集成电路
图25-26示出了可使用一个或多个IP核来制作的示例性集成电路以及相关联的图形处理器。除了所示出的内容外,还可包括其它逻辑和电路,包括另外的图形处理器/核、外设接口控制器或通用处理器核。图25-26的与本文中的任何其它图的元件具有相同或类似的名称的元件描述了与其它图中的元件相同的元件,可以以与其类似的方式操作或起作用,可包括相同的组件,并且可链接到其它实体,如本文中其它地方所述的那些那样,但不限于此。
图25是示出了可使用一个或多个IP核来制作的示例性片上系统集成电路2500的框图。示例性集成电路2500包括一个或多个应用处理器2505(例如,CPU)、至少一个图形处理器2510,所述图形处理器2510可以是图形处理器1408、1508、2510或本文描述的任何图形处理器的变型,并且可用于代替所描述的任何图形处理器。因此,本文中任何特征与图形处理器的组合的公开也公开了与图形处理器2510的对应组合,但不限于此。集成电路2500可另外包括图像处理器2515和/或视频处理器2520,以上处理器中的任何处理器可以是来自相同或多个不同设计设施的模块化IP核。集成电路2500可包括外设或总线逻辑,所述外设或总线逻辑包括USB控制器2525、UART控制器2530、SPI/SDIO控制器2535和I2S/I2C控制器2540。另外,集成电路可包括耦合到高清晰度多媒体接口(HDMI)控制器2550和移动工业处理器接口(MIPI)显示接口2555中的一个或多个的显示装置2545。可通过包括闪速存储器和闪速存储器控制器的闪速存储器子系统2560来提供存储。可经由存储器控制器2565提供存储器接口以便访问SDRAM或SRAM存储器装置。一些集成电路另外包括嵌入式安全引擎2570。
图26A-26B是示出了根据本文描述的实施例的供SoC内使用的示例性图形处理器的框图。图形处理器可以是图形处理器1408、1508、2510或本文描述的任何其它图形处理器的变型。图形处理器可代替图形处理器1408、1508、2510或本文描述的形处理器中的任何其它图形处理器使用。因此,任何特征与图形处理器1408、1508、2510或本文描述的图形处理器中的任何其它图形处理器的组合的公开也公开了与图26A-26B的图形处理器的对应组合,但不限于此。图26A示出了根据实施例的可使用一个或多个IP核来制作的片上系统集成电路的示例性图形处理器2610。图26B示出了根据实施例的可使用一个或多个IP核来制作的片上系统集成电路的另外的示例性图形处理器2640。图26A的图形处理器2610是低功率图形处理器核的示例。图26B的图形处理器2640是更高性能图形处理器核的示例。例如,图形处理器2610、2640中的每个图形处理器可以是图25的图形处理器2510的变型,如本段开头所述的那样。
如图26A中所示出的,图形处理器2610包括顶点处理器2605和一个或多个片段处理器2615A-2615N(例如,2615A、2615B、2615C、2615D到2615N-1和2615N)。图形处理器2610可经由单独的逻辑执行不同着色器程序,使得顶点处理器2605被优化以执行用于顶点着色器程序的操作,而一个或多个片段处理器2615A-2615N执行用于片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器2605执行3D图形流水线的顶点处理阶段,并且生成图元和顶点数据。(一个或多个)片段处理器2615A-2615N使用由顶点处理器2605生成的图元和顶点数据来产生在显示装置上显示的帧缓冲(framebuffer)。(一个或多个)片段处理器2615A-2615N可被优化以执行如OpenGL API中提供的片段着色器程序,所述片段着色器程序可被用于执行与如针对在Direct 3D API中提供的像素着色器程序类似的操作。
图形处理器2610另外包括一个或多个存储器管理单元(MMU)2620A-2620B、(一个或多个)高速缓存2625A-2625B和(一个或多个)电路互连2630A-2630B。一个或多个MMU2620A-2620B为图形处理器2610(包括为顶点处理器2605和/或(一个或多个)片段处理器2615A-2615N)提供虚拟地址到物理地址映射,这些处理器除了引用在一个或多个高速缓存2625A-2625B中存储的顶点或图像/纹理数据之外还可引用在存储器中存储的顶点或图像/纹理数据。一个或多个MMU 2620A-2620B可与系统内的其它MMU同步,所述其它MMU包括与图25的一个或多个应用处理器2505、图像处理器2515和/或视频处理器2520相关联的一个或多个MMU,使得每个处理器2505-2520可参与到共享或统一的虚拟存储器系统中,其中系统内的处理器共享单个虚拟地址空间。图形处理器2610的组件可与本文描述的其它图形处理器的组件对应。一个或多个MMU 2620A-2620B可与图2C的MMU 245对应。顶点处理器2605和(一个或多个)片段处理器2615A-2615N可与图形多处理器234对应。根据实施例,一个或多个电路互连2630A-2630B使得图形处理器2610能够经由SoC的内部总线或者经由直接连接来与SoC内的其它IP核通过接口连接。一个或多个电路互连2630A-2630B可与图2C的数据交叉开关240对应。可在图形处理器2610的类似组件和本文描述的各种图形处理器架构之间找到进一步的对应关系。
如图26B所示出的,图形处理器2640包括图26A的图形处理器2610的一个或多个MMU 2620A-2620B、(一个或多个)高速缓存2625A-2625B和(一个或多个)电路互连2630A-2630B。图形处理器2640包括提供统一着色器核架构的一个或多个着色器核2655A-2655N(例如,2655A、2655B、2655C、2655D、2655E、2655F直到2655N-1和2655N),在该统一着色器核架构中单个核或类型或核可执行全部类型的可编程着色器代码,其包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核的确切数量可在实施例和实现之间变化。另外,图形处理器2640包括核间任务管理器2645,该核间任务管理器2645充当用于将执行线程分派给一个或多个着色器核2655A-2655N的线程分派器;以及用于为基于贴片的渲染加速拼贴操作(tiling operation)的拼贴单元2658,在该基于贴片的渲染中,用于场景的渲染操作在图像空间中被细分,例如以利用场景内的局部空间相干性或优化内部高速缓存的使用。着色器核2655A-2655N可与例如如图2D中的图形多处理器234、或分别是图3A和图3B的图形多处理器325、350、或图3C的多核群组365A对应。
上述图形处理技术可包括能够实现GPGPU上存储器的动态重新配置的技术、系统、方法和技术。本文描述的一个实施例基于硬件统计能够实现高速缓冲存储器存储体指派的动态重新配置。一个实施例在相同页表层级内且在相同页目录下使用混合的四千字节和64千字节页能够实现虚拟存储器地址转化。一个实施例提供了GPGPU和相关联的异质处理系统,其具有高速缓存层级的相同级别的近区域和远区域。
高速缓冲存储器存储体指派的动态重新配置
基于静态散列执行用于L1、L2和L3高速缓存的高速缓冲存储器存储体指派,这可能导致局部点受热(hot spotting),从而导致性能问题。检测存储体局部点受热的硬件监测器可用于重新计算新的散列,以使存储体指派能够改变。当在高速缓存内要发生散列改变时,首先转储清除高速缓存,接着改变用于确定存储体指派的散列。然后,可利用先前存储的数据重新加载高速缓存,或者可允许正常填充高速缓存。在一个实施例中,存储器存储体散列改变可捎带(piggyback)在现有的高速缓存转储清除上。
图27示出了包括存储体化的高速缓冲存储器2708的处理系统2700。处理系统2700包括处理资源2702、加载/存储单元2704、高速缓存控制器2706、高速缓冲存储器2708和存储器2720。处理系统2700示出了一种技术,其中基于散列逻辑2707将与对存储器2720的读取或写入结合地存储在高速缓冲存储器2708中的数据指派给一个或多个存储器存储体2710A-2710N。一个或多个存储器存储体2710A-2710N构成高速缓冲存储器2708的物理存储介质。散列逻辑2707可将一个或多个散列函数应用于与存储器访问相关联的地址,以确定在其中存储数据中的一个或多个高速缓存行的存储体2710A-2710N。
高速缓冲存储器2708可以是本文描述的任何高速缓存冲存储器,诸如但不限于L1高速缓存248、1554,L2高速缓存1553,高速缓冲存储器272、342、358A-358B、438、708、1404、1504A-1504N、1725、2492,数据高速缓存1812,L3高速缓存2175或本文描述的任何其它高速缓存。高速缓冲存储器2708还可以是组合高速缓冲/共享存储器,诸如但不限于L1高速缓冲/共享存储器373和/或共享存储器/高速缓冲存储器1536。
处理资源2702表示与如本文中所述的GPU中的图形处理器或图形处理器结构(例如,并行处理单元、图形处理引擎、多核群组、计算单元、接下来的图形核的计算单元)相关联的处理元件(例如,GPGPU核、光线追踪核、张量核、执行资源、执行单元(EU)、流处理器、流播多处理器(SM)、图形多处理器)。例如,处理资源2702可以是图形多处理器234的GPGPU核262或张量/光线追踪核263中的一个;图形多处理器325的光线追踪核338A-338B、张量核337A-337B或GPGPU核336A-336B;图形多处理器350的执行资源356A-356D;多核群组365A-365N的GFX核370、张量核371或光线追踪核372中的一个;计算单元1506A-1506N的向量逻辑单元1563或标量逻辑单元1564中的一个;具有EU阵列1522A-1522F或EU阵列1524A-1524F的执行单元;执行逻辑1800的执行单元1808A-1808N;和/或执行单元1900。处理资源2702还可以是例如图形处理引擎431-432、GPGPU硬件610、GPGPU 700、处理集群706A-706H、GPGPU806A-806D、GPGPU 1306、图形处理引擎1610、图形处理引擎集群1622和/或图形处理引擎1710内的执行资源。处理资源2702还可以是图形处理器2510、图形处理器2610和/或图形处理器2640内的处理资源。
加载/存储单元2704可以是本文中所述的任何加载/存储单元,诸如但不限于加载/存储单元266、加载/存储单元340A-340B。加载/存储单元2704促进对用于处理资源2702的存储器的访问。对存储器的访问可以是高速缓存的或未高速缓存的访问。高速缓存的存储器访问遍历高速缓冲存储器2708,而可直接对存储器2720进行未高速缓存的存储器访问,而不使用高速缓冲存储器2708来存储写入到存储器2720或从存储器2720读取的数据。
高速缓存控制器2706管理高速缓冲存储器2708中的高速缓存行,并且基于高速缓存的存储器访问向高速缓存复制数据以及从高速缓存复制数据。高速缓存控制器2706可在将读和写存储器请求传递到与存储器2720相关联的存储器控制器之前拦截所述请求。高速缓存控制器2706还可管理与其中高速缓冲存储器2708参与的高速缓存一致性协议相关联的操作。
在各种高速缓存配置中,并且取决于存储器存储体2710A-2710N的大小,高速缓存的数据的单元(例如,高速缓存行)可存储在存储器存储体2710A-2710N中的单个存储器存储体内或可跨越多个存储体。高速缓存控制器2706可包括应用地址散列函数的散列逻辑2707,所述地址散列函数可用于确定数据的给定片段要存储在高速缓存2708内的何处。例如,在一种配置中,基于要访问的对应存储器地址,与存储器访问相关联的数据可基于由散列逻辑2707使用的散列函数的输出而被存储在一个或多个存储器存储体2710A-2710N中。在与存储器访问相关联的数据可存储在单个存储体内的情况下,散列函数可输出0与N之间的值,其中0与N之间的每个潜在值可对应于存储器存储体2710A-2710N中的一个。在与存储器访问相关联的数据要跨越多个存储器存储体2710A-2710N的情况下,散列逻辑2707可选择多个存储器存储体2710A-2710N中的多个存储体以在其中存储数据。
在由处理资源2702执行的指令重复相同的存储器访问模式的情况下,相同的存储体或存储体集合可被这样的指令频繁地访问。这些频繁的访问可能导致在某些存储器存储体2710A-2710N内发展出局部点受热。局部点受热可能将负面热效应引入处理系统2700,降低与某些存储器访问相关联的吞吐量,和/或增加与那些存储器访问相关联的时延。
图28示出了包括具有动态散列单元2807的高速缓存控制器2806的处理系统2800。处理系统2800另外包括高速缓存监测器硬件2810。高速缓存监测器硬件2810可包括在高速缓存控制器2806内。高速缓存监测器硬件2810也可位于高速缓存控制器2806的外部。例如,高速缓存监测器硬件2810可驻留在高速缓缓冲存储器2708内。动态散列单元2807可以是高速缓存控制器2806内的硬件逻辑。动态散列单元2807还可以是包括由高速缓存控制器2806内的或与其相关的微控制器执行的指令的可更新固件。高速缓冲存储器2708可以是与处理系统2700中的存储器相同或类似的存储器,并且包括多个存储器存储体2710A-2710N。处理系统2800还包括附加高速缓存或存储器2816,其可以是附加高速缓冲存储器,其可以是更高级高速缓冲存储器或主系统存储器,诸如存储器2720。
在一个实施例中,在知道由处理资源2702执行的特定存储器访问模式的情况下对动态散列单元2807进行编程。例如,处理资源2702可被配置有具有预定义间距和步幅的拼贴存储器访问模式。由动态散列单元2807使用的散列算法可适用于由处理资源2707采用的特定类型的存储器访问模式。了解存储器访问模式使得动态散列单元2807能够在不同的散列算法之间进行选择,当使用相同的存储器访问模式时,将知道这些散列算法选择存储器存储体2710A-2710N的不同集合。
在执行期间,高速缓存监测器硬件2810可监测高速缓冲存储器2708的存储体访问模式。例如,高速缓存监测器硬件2810可包括计数器阵列2811,其在执行对每个存储器存储体2710A-2710N的访问时更新所述存储器存储体的计数。计数器阵列2811中的计数可以是在滑动时间窗口上的访问的计数。计数器阵列2811也可周期性地重置。例如,计数器阵列2811可响应于高速缓存转储清除而被重置。计数器阵列2811还可响应于处理资源2702处的上下文切换而被重置。经由计数器阵列2811,高速缓存监测器硬件2810可检测特定存储器存储体2710A-2710N是否相对于其它存储器存储体正在接收不成比例的访问数量。如果高速缓存监测器硬件2810检测到相对于其它存储器存储体对特定存储器存储体2710A-2710N的不成比例的访问数量,使得访问差别超过预确定的阈值,则高速缓存监测器硬件2810可指示高速缓存控制器2606执行对动态散列单元2807重新编程的操作2812。
在一种配置中,高速缓冲存储器2708中的每个存储器存储体2710A-2710N可配置有热传感器。热监测器2818可被配置成监测每个存储器存储体2710A-2710N的温度。在此类配置中,热监测器2818可在存储器存储体的温度超过阈值时发信号通知高速缓存监测器硬件2810。高速缓存监测器硬件2810然后可响应于来自热监测器2818的信号执行对动态散列单元2807重新编程的操作2812。
对动态散列单元2807重新编程的操作2812可包括请求动态散列单元2807切换到将导致不同的存储体访问模式的不同散列函数。动态散列单元2807然后可切换到在动态散列单元2807的硬件或固件内可用的多个散列函数中的不同的一个。在一个实施例中,动态散列单元2807可被配置成接受更新的散列函数,该更新的散列函数可覆盖动态散列单元2807的预先配置的散列函数之一。该更新的散列函数可被添加到可由操作2812选择的可用散列函数的集合。
当由动态散列单元2807执行散列函数的改变时,触发高速缓冲存储器2708的转储清除。在转储清除期间,高速缓存的数据的任何修改的(例如,脏的)单元(例如,缓存行)可被转储清除到附加的高速缓存或存储器2816。高速缓存的数据的未修改单元可被丢弃或无效。在一个实施例中,在改变用于存储体选择的散列函数之前,高速缓存中的所有高速缓存行可被设置成无效。在高速缓冲存储器2708被转储清除之后,动态散列单元2807可选择将导致不同存储体访问模式的不同散列函数。高速缓存控制器2806然后可恢复高速缓冲存储器2708的操作。动态散列单元2807还可在由处理资源2702请求的高速缓存转储清除上捎带散列函数改变。
图29示出了基于硬件统计能够实现存储器存储体散列的动态重新配置的方法2900。方法2900可由高速缓存监测器硬件2810基于用于高速缓冲存储器存储体访问和/或热状态的硬件统计来执行。方法2900包括由高速缓存监测器硬件执行操作(2902)以监测高速缓冲存储器的存储器存储体的访问模式和/或热状态。如果高速缓存监测器硬件检测到超过阈值的存储体访问差异性(2903)或超过阈值的存储体温度(2904),则方法2900指示高速缓存监测器硬件请求在动态散列单元处的散列函数改变(2906)。否则,高速缓存监测器硬件可继续执行操作(2902)以监测高速缓冲存储器的存储器存储体的访问模式和/或热状态。
在一种配置中,对散列函数改变的请求可请求轮换到不同的散列函数,或者可以是选择特定散列函数的请求。所选择的散列函数可基于改变是基于热状态还是基于访问模式差异而不同。
使用以上技术,本领域技术人员可实现(例如)包括存储器和与所述存储器耦合的通用图形处理器的数据处理。通用图形处理器包括包括多个存储器存储体的高速缓冲存储器以及与高速缓冲存储器耦合的高速缓存控制器。高速缓冲存储器可以是通用图形处理器的1级(L1)、2级(L2)或3级(L3)高速缓冲存储器。
高速缓存控制器可包括动态散列单元,以基于第一散列函数及与存储器访问相关联的地址而选择多个存储器存储体中的与存储器访问相关联的数据要存储到的一个或多个存储器存储体。该系统还包括高速缓存监测器硬件,以监测多个存储器存储体的访问模式。响应于检测到的访问模式,高速缓存监测器硬件可响应于检测到超过阈值的存储体访问模式差异性,请求动态散列单元选择第二散列函数。
在一个实施例中,高速缓冲存储器另外包括热监测硬件,以监测多个存储器存储体的热状态,并将热状态报告给高速缓存监测器硬件。高速缓存监测器硬件可从热监测硬件接收数据,并且响应于确定多个存储器存储体中的一个或多个存储器存储体的温度超过阈值,请求动态散列单元选择第二散列函数。高速缓存监测器可响应于确定多个存储器存储体中的一个或多个存储器存储体的温度超过阈值,请求动态散列单元选择第三散列函数。
在一个实施例中,动态散列单元是高速缓存控制器的硬件单元。高速缓存控制器包括由微控制器执行的固件、被包括在由微控制器执行的固件内或包括由微控制器执行的固件。动态散列单元可包括由这种微控制器执行的固件或被包括在由这种微控制器执行的固件内。
可实现系统和方法来管理上述特征或者可包括上述特征的方面。非暂时性机器可读介质可存储使处理器和/或微控制器提供上述特征的指令。
在相同页目录下的混合4K/64K页
一般常用的最先进计算系统的状态包括支持多达52位物理地址的64位处理器,并采用具有多达48位虚拟地址的分页虚拟存储器系统。由此类处理器使用的分页虚拟存储器系统可采用各种层级层页表结构来管理虚拟到物理地址映射。虚拟地址可指定虚拟页号。虚拟页号可由地址转化系统转化为标识物理存储器中的页的物理页号。虚拟地址还指定到页中的偏移,该偏移指定了距页基地址的距离,在该距离中可找到所指定的地址的数据。
能够实现多种类型的处理器(诸如通用处理器(例如CPU或应用处理器)和通用图形处理器单元(GPGPU))之间的协作处理的异质处理系统可在系统虚拟地址空间的单个视图中采用统一存储器,其由系统中的所有处理器共享。包括对统一存储器的支持的异质处理系统内的GPGPU包括能够实现供GPGPU使用而创建的虚拟存储器分配以及至少部分供系统内的CPU和/或其它处理器使用而创建的分配的使用的软件和硬件。CPU和GPGPU两者都可支持用于虚拟存储器分配的各种页大小,从四千字节(4K)和六十四千字节(64K)页,直到一千兆字节(1G)和/或十六千兆字节(16G)页。通常,4K是各种CPU架构的共同和/或默认页大小,其中4K和64K两者共同供GPGPU使用。
图30示出了包括统一存储器3040的异质处理系统3000。异质处理系统3000包括CPU 3002、系统存储器3004、GPGPU存储器3006和GPGPU 3008。CPU 3002可以是本文描述的任何CPU、通用处理器或应用处理器,诸如例如处理器102、处理器802、多核处理器1308、(一个或多个)处理器1402、处理器2330和/或应用处理器2505。系统存储器3004是随机存取存储器,并且可以是例如系统存储器104、存储器366、处理器存储器401-402、系统存储器441、存储器1571、存储器2350和/或包括存储器装置1420中的一个或多个。GPGPU存储器3006可以是专供GPGPU 3008使用的系统存储器3004的一部分。GPGPU存储器3006还可以是本地、专用或板存储器,诸如并行处理器存储器222、GPU存储器420-423、GFX存储器433-434、存储器714A-714B、存储器1572、存储器1626A-1626D和/或存储器2475。GPGPU可以是本文描述的任何图形或并行处理器,诸如但不限于(一个或多个)并行处理器112、GPU 380、GPU 410-413、图形加速模块446、GPGPU硬件610、GPGPU 700、GPGPU 806A-806D、GPGPU 1306、GPGPU 1570、图形处理器1620、图形处理器1630、图形处理器1710、图形处理器2100、图形处理器2510、图形处理器2610和/或图形处理器2640。本文描述的技术还可应用于图像处理器2515和视频处理器2520。系统存储器3004和GPGPU存储器3006可具有统一或非统一物理地址空间,并且被配置为具有统一虚拟地址空间的统一存储器3040,诸如例如图4F的统一存储器。
CPU 3002和GPGPU 3008各自包括MMU 3003、3028,其类似于本文描述的其它存储器管理单元,以促进对系统存储器3004和GPGPU存储器3006的访问。MMU 3028包括高速缓存虚拟到物理地址转化的TLB 3032和页表行走器3030,其包括用于在TLB未命中时行走GPU页表3016和/或CPU页表3024的硬件。CPU MMU 3003还可包括类似的组件。在CPU 3002是多核CPU的情况下,每个核可包括MMU 3003的单独实例。
在各种实现中,CPU页表3024和GPU页表3016可同步,或CPU 3002和GPGPU 3008可被配置成共享涵盖CPU页表3024和GPU页表3016的数据的页表的统一集合。在操作期间,基于经由图形或计算API接收的命令在CPU 3002上执行的图形驱动器(例如,GPGPU驱动器608、用户模式图形驱动器2326、内核模式图形驱动器2329)可将命令加载到系统存储器3004中的命令缓冲器3014中。系统存储器3004中存储命令缓冲器3014的地址可经由GPU页表3016映射到GPGPU 3008以使得GPGPU 3008的渲染引擎3018能够提取并执行那些命令。由渲染引擎3018生成的像素可由显示引擎3038输出到GPGPU存储器3006以便经由显示装置显示。
由于异质处理系统3000包括统一存储器3040,所以将有利的是使得用于4K虚拟存储器页的映射能够与用于64K页的映射一起存在。例如,与由GPGPU创建或供GPGPU使用的64K页一起,GPGPU 3008由CPU 3002或GPGPU 3008创建或供CPU 3002或GPGPU 3008使用。对于支持多个页大小的处理系统,这样的系统可取决于使用中的页大小采用不同的层级结构。如果不使用不同的层级结构,则基于与偏移和虚拟页号的标识相关联的数学,创建和使用这些结构的方式可取决于使用中的页大小而不同。
图31A-31B示出了4K和64K页的层级页表结构。支持4K页的系统可使用图31A的页表结构。支持64K页的系统可使用图31B的页表结构。在图31A和图31B的每个中,示出了四级层级页表结构。所示的页表结构是一个实施例的示范,并且可使用不同的技术能够实现支持使用4K或64K页大小的虚拟存储器系统。所示的页表结构供具有至少48位规范虚拟地址空间的64位处理器使用。所示的页表结构还可由具有49位虚拟地址空间的GPGPU使用,其中49位虚拟地址空间使得GPGPU能够寻址可用于具有48位地址空间的CPU的整个地址空间以及专供GPGPU使用的较高虚拟地址。
如图31A中所示,虚拟地址提供到层级页表结构中的索引,所述层级页表结构用于启用针对虚拟地址的虚拟到物理地址映射。当针对4K页创建虚拟到物理地址映射时,可使用9:9:9:9页表行走,其中使用虚拟地址的四个9位区域来标识存储针对虚拟地址的虚拟到物理映射的页表。虚拟地址的位[47:39]指定页映射级别4(PML4)索引3102。地址位[38:30]指定页目录指针(PDP)索引3104。地址位[29:21]指定页目录索引3106。地址位[20:12]指定页表索引3108。一旦执行了虚拟页到物理页的转化,就使用地址位[11:0]来确定与虚拟地址相关联的数据的页内偏移(offset-inside-page)3110。在一个实现中,例如,可具有支持PCI进程地址空间ID(PASID)扩展的PCI装置的PASID条目中找到指定PML4表3112的基地址的PML4指针3111。在其它实现中,类似的指针可存储在寄存器(例如CR3)、上下文描述符等中。
可标识使用由PML4索引3102指定的PML4条目(PML4E)的页表行走,所述PML4E指定多个可能的页目录指针(PDP)表内的PDP表3114的物理地址。PDP表3114包括页目录指针条目(PDPE)。PDPE标识页目录表3116的物理地址。虚拟地址的页目录索引3106指定包括页表3118的物理地址的PDE(页目录条目)。页表索引3108指定了页表条目(PTE),所述PTE指定了4K存储器页3120的物理地址,其中页内偏移3110指定了与虚拟地址相关联的数据被存储的偏移。9:9:9:9页表行走导致完全利用的页表,使得4K存储器页可用于存储29(512)页表条目的页表,其中每个页表是八个字节(64位),在条目之间没有任何存储器间隙。
然而,如图31B中所示,当图31A的页表层级用于64KB页时,用于存储页表的存储器未被完全利用,从而导致页表条目之间的未使用空间。图31B的页表层级类似于图31A的页表层级,除了虚拟地址的位[20:16]被用作页表索引3138,并且位[15:0]被用于页内偏移3140。十六位的偏移被用于覆盖64K页的64千字节。在页表3148内,使用每第十六个条目(PTE #0、PTE #16、PTE #32、……、PTE #496)来索引64K页,其可使用虚拟地址[20:16]和“0000”来计算。
图32A-32C示出了根据实施例的页目录和页表,以能够实现在相同的层级页表结构内的4K和64K页的混合。图32A示出可用于索引4K和64K页两者的页目录和页表。图32B示出了页目录条目的字段。图32C示出了页表条目的字段。
图32A-32C的所示页表层级经由向4K PTE添加64K TLB提示来增强TLB效率。在一个实施例中,PS64(页大小64)位可被添加到充当TLB合并提示的4K TLB。合并使得用于十六个连续4K PTE的地址转化数据能够作为64KB页被高速缓存在TLB中。存储器仲裁和页表行走逻辑可继续执行用于合并的4K页的地址转化,就好像该页是4K页一样。然而,合并的4K页被缓存为64K页。将合并的4K页高速缓存为64K通过使对十六个合并的PTE中的任何合并的PTE的访问能够实现导致对相同TLB条目的命中来改进TLB效率。
如图32A中所示,页表层级包括PDP表3114。PDP表3114的大小是4K,在4K地址边界上对齐,并且可存储多达512个PDPE。如果PDPE的页结构(PS)字段被设置为“1”,则PDPE可引用1G页3203(例如,PDPE 3201),或者如果PDPE(例如,PDPE 3202)的PS =1,则PDPE可引用PD表。页结构字段可以是单个位字段。
页表层级还包括PD表3116。PD表3116的大小是4K,4K对齐,并且可存储多达512个PDE。如果PDE(例如,PDE 3204)的PS =1,则PDE引用两兆字节(2M)页3207。除了PS字段之外,PDE还可包括页表大小(PTS)字段,其结合PS字段指示PDE是引用PT32页表3148还是PT512页表3118。例如,PDE 3205被设置为{PS =0,PTS =1},并且包括PT32页表3148的物理地址。PT32页表3148的大小为256字节(256B),使用对齐的256B来存储多达三十二个64K PTE(例如64K PTE 3208),其包括用于64K页3150的物理地址。作为另一示例,PDE 3206被设置为{PS =0,PTS =0},并且存储PT512页表3118的物理地址。PT512页表大小为4K,在4K地址边界上对齐,并且可存储多达512个PTE。
PT512页表3118中的PTE可包括PS64字段,其可以是单个位字段。当对应的64KB虚拟地址范围映射到连续64KB页(16×4K页3220)的对应4K组块(chunk)并且十六个PTE中的所有准许位都相同时,在十六个连续4K PTE 3209(例如,PTE 0-15、16-31、32-47等)中启用PS64字段(例如,PS64=1)。十六个连续的非合并的4K PTE将具有设置为零的PS64字段(例如,PS64=0),并且将存储单个4K存储器页3120的物理地址。
图32B示出了能够实现混合的4K和64K页的PDE 3250的示例性字段。PDE存储页表地址3251以及指示在系统上是否启用64K页的指示符字段(字段3252)和指示PDE是否用于引用包括64K页的条目的页表的PTS字段3254。如果根据字段3252不启用64K页,则PTS字段3254可被忽略。字段3252和PTS字段3254可各自是单个位字段,其中字段3252的设置位指示启用64K页,并且PTS字段3254的设置位指示PDE引用支持引用64K页的条目的页表。PDE3250还可包括PS字段3256,其在被设置时指示PDE引用单个2M存储器页。
图32C示出了PTE 3260的可用于引用4K或64K页的示例字段。PTE存储页地址3261,其是64K页的物理地址。对于4K页,附加地址字段3262可用于存储可用于4K页的物理地址的附加位。PS64字段3264指示由PTE 3260寻址的页是要在TLB中被高速缓存为单个4K页还是要被高速缓存为合并成64K页的十六个4K页。
下面表5指示叶条目中的页大小和TLB中允许的对应映射。X条目指示“无关(don'tcare)”位。
表5–页表层级叶条目映射
PS PTS PS64 映射的页大小 TLB页大小
1 X X 2M 2M
0 1 X 64K 64K
0 0 0 4K 4K
0 0 1 4K 64K
图33A-33C示出了能够实现层级页表结构内的4K和64K页的混合的方法3300、3310、3320。图33A示出创建包括4K和64K页的条目的页表层级中的页的映射的方法3300。图33B示出了在包括4K和64K页的条目的页表层级中执行页行走的方法3310。图33C示出将多个4K PTE作为单个64K PTE进行高速缓存的方法3320。所示的方法3300、3310适用于具有混合页大小的异质处理系统,例如,图30中的异质处理系统3000。
如图33A中所示,GPGPU上的逻辑或与GPGPU相关联的逻辑可接收映射到与CPU存储器分配相关联的4K页的请求(3302)。针对4K页,该逻辑可在与GPGPU相关联的页表层级中创建映射(3303)。该逻辑可另外在GPGPU上接收映射到与GPGPU存储器分配相关联的64K页的请求(3304)。针对64K页,逻辑然后可在与GPGPU相关联的页表层级中创建映射,其中页表层级并发地存储针对4K页和64K页的条目(3305)。
如图33B中所示,GPGPU上的逻辑或与GPGPU相关联的逻辑可接收转化4K页内的第一存储器分配的虚拟地址的请求(3312)。如果转化高速缓存在TLB内,则可经由TLB条目执行转化。响应于用于第一存储器分配的虚拟地址的转化的TLB未命中,该逻辑可发起进入页表层级的页行走,以确定第一存储器分配的物理地址(3313)。页行走可以是如上所述的9:9:9:9页表行走。然后,该逻辑可接收转化64K页内的第二存储器分配的虚拟地址的请求(3314)。如果转化被高速缓存在TLB内,则可经由TLB条目执行转化。响应于用于第二存储器分配的虚拟地址的转化的TLB未命中,逻辑可发起进入页表层级的页行走,以确定第二存储器分配的物理地址(3315)。页表层级存储针对4K页和64K页的页表条目。在一个实施例中,页表可存储4K页的条目和可作为64K PTE高速缓存在TLB中的十六个合并的4K PTE。
如图33C中所示,GPGPU上的逻辑或与GPGPU相关联的逻辑可接收映射到与CPU或GPGPU相关联的存储器分配的4K页的请求(3322)。该逻辑可使用512条目页表内的5K PTE来映射4K页(3323)。在映射之后或与4K页的映射并行地,逻辑可确定所映射的4K页是否在64K连续虚拟地址范围内(3324)。如果所映射的4K页在64K连续虚拟地址范围内,则逻辑可确定连续虚拟地址范围内的4K页中的每一个的PTE是否具有相同的准许(3325)。如果所映射的4K页在64K连续虚拟地址范围内,且连续虚拟地址范围内的4K页中的每一个的PTE具有相同准许(例如,读取、写入、执行等),则逻辑可在连续64K虚拟地址范围内的十六个PTE中的每一个中设置位(例如,PS64=1)(3326)。设置位指示逻辑可将十六个PTE作为单个64K PTE高速缓存(3328)。因此,对由十六个PTE中的任何PTE覆盖的虚拟地址的访问将导致对高速缓存的合并的64K PTE条目的TLB命中。
使用上述技术,本领域技术人员可实现例如包括GPGPU的电子装置,所述GPGPU包括存储器管理单元和TLB,所述TLB被配置成高速缓存与从虚拟地址到物理地址的转化相关联的数据。转化可从页表层级高速缓存,所述页表层级被配置成并发地映射4K页表的第一页表条目和与64K页表相关联的第二页表条目。第二页表条目可包括指示第二页表条目指向64K页的位。第二页表条目可与合并成64K页的十六个4K页相关联。
在一个实施例中,电子装置的GPGPU包括页表行走器,所述页表行走器用于在从虚拟地址转化到物理地址的TLB未命中时行走包括页表的页表层级。页表层级包括页目录表,所述页目录表包括页目录条目。页目录条目包括对页表的引用。页目录条目可另外包括位字段或多位字段,其指示由页表条目引用的页表包括64K页或4K页的条目。页目录条目也可直接引用2M页。由页目录条目的64K页引用可以是单一的64K页或作为单个64K页高速缓存的合并的4K页的集合。在一个实施例中,对经合并的4K页中的任何一个的访问将导致对相同、单个TLB条目的命中。
本领域技术人员将另外能够实现在电子装置上执行的方法,其中该方法包括:接收对GPGPU映射与第一分配相关联的4K页的请求;针对4K页,在与GPGPU相关联的页表层级中创建映射;接收对GPGPU映射到与第二分配相关联的六十四千字节(64K)页的请求;以及针对64K页,在与GPGPU相关联的页表层级中创建映射。页表可并发地存储针对4K页和64K页的条目。第一存储器分配可被分配以至少部分地供中央处理单元使用,并且与GPGPU共享。第二存储器分配可被分配以供GPGPU使用。方法另外包括在电子装置上确定4K页为连续64K虚拟地址范围的部分,并且设定连续64K虚拟地址范围的一组页表条目的每个页表条目中的位。设置位指示64K虚拟地址范围的该组页表条目可高速缓存为64K页表条目。该方法还包括将该组页表条目作为64K页表条目高速缓存在转化后备缓冲器中。
本领域技术人员将另外能够实现在电子装置上执行的方法,其中该方法包括:在GPGPU处接收转化四千字节(4K)页内的第一分配的虚拟地址的请求;并且响应于用于第一分配的虚拟地址的转化的TLB未命中,发起进入页表层级的页行走,以确定第一分配的物理地址。该方法另外包括:在所述GPGPU处接收转化六十四千字节(64K)页内的第二分配的虚拟地址的请求;并且响应于用于第二分配的虚拟地址的转化的TLB未命中,发起进入页表层级的页行走,以确定所述第二存储器分配的物理地址。电子装置被配置成包括存储针对4K页和64K页的页表条目的页表层级。在一个实施例中,第一存储器分配被分配以至少部分地供中央处理单元使用,并且与GPGPU共享,并且第二存储器分配被分配以供GPGPU使用。
高速缓存层级的单层内的近高速缓存和远高速缓存
随着处理器内处理资源的增加,增加由那些处理资源使用的高速缓存的大小可能是有益的。因此,高速缓冲存储器,特别是用于处理系统的3级(L3)、4级(L4)和/或末级高速缓存(LLC),对于相同性能层内的连续处理器设计,其大小倾向于增加。虽然随着高速缓存大小的增长,可保持或者甚至增加这些较大高速缓存的吞吐量,但是由于较大量高速缓存条目的管理开销,高速缓存的访问时延倾向于随着高速缓存大小的增加而增加。为了对抗较大高速缓存的时延的增加,高速缓冲存储器可被分区成较小的近区域和较大的远区域。较小的高速缓存区域可用于存储对时延更敏感和/或更频繁使用的数据。对时延较不敏感或较不频繁使用的数据可存储在远高速缓存区域中。
在一些系统中,由于处理器核和大型高速缓冲存储器之间的较长物理距离,或者处理器核和大型高速缓冲存储器之间的通信信道的性质,可能引入时延。在这样的系统中,可通过包括较小的高速缓存来减少时延,相对于较大的高速缓冲存储器,所述较小的高速缓存物理上更靠近处理器核或者经由较低时延的通信信道连接。例如,用于处理系统的L3/L4或LLC可被分区成近区域和远区域,其中近区域具有较低的访问时延。
高速缓存的近区域和远区域被视为相同高速缓存级的不同区域,使得用于高速缓存级的系统范围的高速缓存策略应用于近区域和远区域两者。例如,如果系统具有多区域L3高速缓存并且存储器分配被标记为非L3可高速缓存的,则用于存储器分配的数据将不被存储在L3高速缓存的任一区域中。
高速缓存逐出、替换和/或迁移策略可被置于适当的位置,以确定如何从多区域高速缓存的每个区域选择受害者以用于逐出和/或如何或是否在区域之间迁移数据。不同的算法可用于单独的高速缓存区域。高速缓存迁移策略可用于确定何时或是否应在高速缓存的较高时延与较低时延区域之间移动数据。由在处理器上执行的指令提供的提示还可用于确定哪个区域应当用于指令的初始数据存储以及数据应当对迁移或驱逐的耐受程度如何。例如,编译着色器内核以供处理系统执行的着色器编译器可针对编译指令基于所检测的存储器访问模式来输出编译器生成的提示。着色器的指令集也可被扩展以使程序员能够包括用于存储器分配的显式提示。可由高速缓存控制器使用这些显式提示来确定L3/L4/LLC中的区域,在该区域中应该高速缓存用于内核的数据或内核中的特定指令。
虽然近高速缓存区域和远高速缓存区域对于大型高级高速缓存是有利的,但是本文描述的技术不限于高速缓存层级的任何特定层,并且适用于高速缓存层级的任何级别。
图34示出了包括具有多个区域的高速缓存3408的处理系统3400。高速缓存3408可以是具有相对较小但较低时延近区域3418和相对较大但较高时延远区域3428的大型L3、L4或LLC高速缓存。处理系统3400包括处理资源3402、加载/存储单元3404、高速缓存控制器3406、高速缓存3408和存储器3420。处理系统3400的元件类似于图27的处理系统2700的那些元件,并且可具有类似于图27的处理系统2700的那些元件的特性。例如,处理资源3402和加载/存储单元3404可类似于处理资源2702和加载/存储单元2704。同样,存储器3420可类似于存储器2720。高速缓存3408也可以是存储体化的高速缓存,具有用于近区域3418和远区域3428的单独存储器存储体。
除了针对高速缓存3408的每个区域可存在的任何存储体选择逻辑之外,高速缓存控制器3406另外包括高速缓存管理逻辑,诸如区域选择逻辑3407、一个或多个计数器阵列3417和/或高速缓存替换/迁移逻辑3427。计数器阵列3417可用于对一段时间内每个区域的每个数据单元(例如,高速缓存行)的访问次数进行计数。当出现从区域逐出数据的需要时,高速缓存替换/迁移逻辑3427可应用一个或多个迁移策略来确定给定高速缓存行是否应被无效,或者如果是脏的,则写回到存储器或更高级高速缓存。可由高速缓存替换/迁移逻辑3427使用各种高速缓存替换算法来基于与数据相关联的使用度量而确定替换或迁移数据。高速缓存替换/迁移逻辑3427可采用诸如但不限于最近最少使用(LRU)、最不频繁使用(LFU)、最近最不频繁使用(LFRU)等的算法。不同的替换算法可用于近区域3418和远区域3428。在一个实施例中,可使用分段的最近最少使用(SLRU)算法来管理近区域3418和远区域3428两者,其中SLRU算法的不同分段被映射到高速缓存3408的不同区域。高速缓存替换/迁移逻辑3427可在确定是替换还是迁移高速缓存行时知道并考虑(factor)由处理资源3402使用的特定存储器访问模式。例如,如果处理资源3402被配置用于拼贴存储器访问,则此访问模式可用于基于先前访问的高速缓存行来预测可能访问的高速缓存行。
使用SLRU算法或专用高速缓存迁移算法,可在区域之间迁移数据。在远区域3428中定期访问的数据可迁移到近区域3418。从近区域3418逐出的数据可存储在远区域3428中,而不是从高速缓存中丢弃。
在一个实施例中,高速缓存管理逻辑可存储元数据以追踪存储在高速缓存3408的近区域3418和远区域3428中的标签的集合。备选地,高速缓存管理逻辑可并行地检查每个区域中的标签。
图35示出了具有近高速缓存区域和远高速缓存区域的异质处理系统。异质处理系统示出了图4C的多核处理器407和图形加速模块446的版本,其中多核处理器407和图形加速模块446两者都包括多区域高速缓存。在一个实施例中,高速缓存(例如,由多核处理器407使用的462A、462B、462C、462D)被分区有用于特定高速缓存的近区域和远区域。例如,高速缓存462A包括远区域462A-F和近区域462A-N。高速缓存462B包括远区域462B-F和近区域462B-N。高速缓存462B包括远区域462B-F和近区域462B-N。高速缓存462C包括远区域462C-F和近区域462C-N。高速缓存462D包括远区域462D-F和近区域462D-N。在一个实施例中,加速器集成电路436的高速缓存438包括远区域438-F和近区域438-N。更频繁访问的数据可被存储在高速缓存的近区域中,其中显式或编译器生成的提示被用于指示在数据被初始插入到高速缓存中时应该用于高速缓存数据的区域。提示还可用于确定数据在区域之间应该多么容易地被迁移。
图36示出了包括多区域L3高速缓存的并行处理器的封装组装件。计算系统3600的封装组装件可包括并行处理器3620,其中并行处理器SOC的各种组件跨多个小芯片分布。每个小芯片可以是独立设计并配置成经由一个或多个公共接口与其它小芯片通信的不同的IP核。小芯片可各自是不同的并且是至少部分封装的集成电路,其使得并行处理器能够在组装期间而不是在设计阶段期间被定制。小芯片包括但不限于计算小芯片3605、媒体小芯片3604和包括近高速缓存小芯片3606的存储器小芯片。计算系统3600还可包括DRAM存储器小芯片(未示出)。可使用不同的工艺技术来单独地制造每个小芯片。例如,可使用在制作时可用的最小或最先进的工艺技术来制造计算小芯片3605,而可使用更大或不那么先进的工艺技术来制造高速缓存小芯片3606或其它小芯片(例如,I/O、联网等)。
各种小芯片可被接合到基础管芯3610并且被配置成彼此通信和经由互连层3612与基础管芯3610内的逻辑通信。在一个实施例中,基础管芯3610可包括全局逻辑3601,其可包括调度器3611和功率管理3621逻辑单元、接口3602、分派单元3603,它们经由互连组构模块3608互连。互连组构模块3608还可以能够实现全局逻辑3601与计算小芯片3605、媒体小芯片3604和近高速缓存小芯片3606之间的通信。互连组构3608可以是集成到基础管芯3610中的小芯片间组构。逻辑小芯片可使用互连组构3608来在各个小芯片之间中继消息。
近高速缓存小芯片3606和嵌入式远高速缓存3609可协同操作以向媒体小芯片3604和计算小芯片3605提供L3高速缓存。互连组构模块3608还可用于能够实现嵌入式远高速缓存3609和近高速缓存小芯片3606之间的通信。备选地,近高速缓存小芯片3606可经由硅桥或互连结构与嵌入式远高速缓存3609直接耦合。近/远L3高速缓存可用于对从主机的系统存储器和/或可包括在并行处理器3620中的任何DRAM小芯片读取的数据进行高速缓存以及向其传送的数据进行高速缓存。
在一个实施例中,全局逻辑3601是微控制器,其可执行固件以执行并行处理器3620的调度器3611和功率管理3621功能性。执行全局逻辑的微控制器可针对并行处理器3620的目标用例来定制。调度器3611可为并行处理器3620执行全局调度操作。当并行处理器内的各个小芯片不在使用中时,功率管理3621功能性可用于启用或禁用那些小芯片。
并行处理器3620的各种小芯片可被设计成执行特定功能性,在现有设计中,所述特定功能性将被集成到单个管芯中。一组计算小芯片3605可包括计算单元(例如,执行单元、流播处理器等)的集群,其包括执行计算或图形着色器指令的可编程逻辑。媒体小芯片3604可包括用于加速媒体编码和解码操作的硬件逻辑。还可包括存储器小芯片,其充当用于并行处理器3620的本地存储器。
图37示出了管理具有多个高速缓存区域的高速缓存的方法3700。方法3700可由如图34中的高速缓存控制器3406中的高速缓存管理逻辑来执行。高速缓存管理逻辑可利用一个或多个计数器阵列3417和/或高速缓存替换/迁移逻辑3427。
方法3700包括使高速缓存管理逻辑接收与对存储器地址处的数据的访问相关联的请求,其中存储器地址与可高速缓存的存储器分配相关联(3702)。高速缓存管理逻辑然后可检查多区域高速缓存的区域内的数据的高速缓存命中(3703)。高速缓存管理逻辑可包括元数据,以追踪哪些标签被存储在多区域高速缓存的哪些区域(例如,近区域、远区域)中,或者可并行地检查每个区域。
在高速缓存命中(3704,否)时,高速缓存管理逻辑可从与高速缓存命中相关联的区域读取数据(3707)。在高速缓存未命中(3704,是)时,高速缓存管理逻辑可从存储器或更高级高速缓存读取数据(3706)。例如,如果多区域高速缓存是L3高速缓存,则可从LLC高速缓存读取数据。否则,可从存储器读取数据。
高速缓存管理逻辑然后可确定数据要被存储到的区域是否已满(3708)。可使用新添加的数据的默认区域(例如,近区域)。数据被存储到的区域也可例如基于着色器内核提示来确定。着色器内核提示可以是由着色器内核的开发者提供的显式提示或编译器生成的提示。着色器内核提示可指示所讨论的数据将被频繁访问或不频繁访问。被提示为不频繁访问的数据可被存储到远区域,而被提示为频繁访问的数据可被存储到近区域。
如果数据要被存储到的区域未满(3708,否),则高速缓存管理逻辑可将数据存储到多区域高速缓存的区域中(3712),其中可基于提示来确定数据要存储到的区域,或者可选择默认区域。如果数据要存储到的区域已满,则高速缓存管理逻辑可在将数据存储到高速缓存的区域之前根据高速缓存替换策略从该区域中逐出数据(3710)。
在高速缓存管理逻辑从与高速缓存命中相关联的区域读取数据(3707)或根据高速缓存替换策略从该区域中逐出数据(3710)之后,高速缓存管理逻辑可根据高速缓存迁移策略在区域之间迁移数据(3709)。例如,在远区域中频繁访问的数据可与在近区域中不太频繁访问的数据交换。例如,如果SLRU替换策略在使用中,则迁移也可作为高速缓存替换策略的结果而发生。
使用上述技术,本领域技术人员可实现例如包括通用图形处理器的数据处理系统,该通用图形处理器包括单级高速缓冲存储器,该单级高速缓冲存储器包括近区域和远区域。相对于远区域,远区域具有较低的容量和较低的时延。数据处理系统还包括与高速缓冲存储器耦合的高速缓存控制器。高速缓存控制器包括区域选择逻辑,用于从近区域和远区域之一中进行选择以存储高速缓存的数据单元。在一个实施例中,区域选择逻辑被配置成基于与高速缓存的数据单元相关联的使用度量,从近区域和远区域之一中进行选择来存储高速缓存的数据单元。区域选择逻辑还可基于与数据单元相关联的提示从近区域和远区域之一中进行选择以存储高速缓存的数据单元。与数据单元相关联的提示可在要由通用处理器执行的着色器内核的编译期间生成。提示可响应于着色器内核内的指令而生成。该指令可指示高速缓存的数据单元的使用频率。
附加的示例性数据处理系统和计算装置
图38是根据实施例的数据处理系统3800的框图。数据处理系统3800是具有处理器3802、统一存储器3810和包括机器学习加速逻辑的GPGPU 3820的异质处理系统。处理器3802和GPGPU 3820可以是如本文中所述的处理器和GPGPU/并行处理器中的任何。处理器3802可执行存储在系统存储器3812中的编译器3815的指令。编译器3815在处理器3802上执行以将源代码3814A编译成编译的代码3814B。编译的代码3814B可包括可由处理器3802执行的指令和/或可由GPGPU 3820执行的指令。在编译期间,编译器3815可执行操作以插入元数据,其包括关于编译的代码3814B中存在的数据并行性的级别的提示和/或关于与基于编译的代码3814B要分派的线程相关联的数据局域性的提示。元数据还可包括与线程数据将优选地存储到的近高速缓存区域或远高速缓存区域相关的提示。编译器3815可包括执行这样的操作所必需的信息,或者操作可在运行时库3816的帮助下执行。运行时库3816还可辅助编译器3815编译源代码3814A,并且还可包括在运行时与编译的代码3814B链接以促进编译的指令在GPGPU 3820上的执行的指令。
统一存储器3810表示可由处理器3802和GPGPU 3820访问的统一地址空间。统一存储器可包括系统存储器3812以及GPGPU存储器3818。GPGPU存储器3818是GPGPU 3820的地址空间内的存储器,并且可包括系统存储器3812的一些或全部。在一个实施例中,GPGPU存储器3818还可包括专供GPGPU 3820排他地使用的任何存储器的至少一部分。在一个实施例中,储存于系统存储器3812中的编译的代码3814B可被映射到GPGPU存储器3818中以供GPGPU 3820访问。
GPGPU 3820包括多个计算块3824A-3824N,其可包括本文描述的各种处理资源中的一个或多个。处理资源可以是或包括各种不同的计算资源,诸如例如执行单元、计算单元、流播多处理器、图形多处理器或多核群组。在一个实施例中,GPGPU 3820另外包括张量加速器3823,其可包括被设计成加速矩阵运算(例如,点积等)的子集的一个或多个特殊功能计算单元。张量加速器3823也可称为张量加速器或张量核。在一个实施例中,张量加速器3823内的逻辑组件可跨多个计算块3824A-3824N的处理资源分布。
GPGPU 3820还可包括可由计算块3824A-3824N和张量加速器3823共享的资源集,包括但不限于一组寄存器3825、功率和性能模块3826以及高速缓存3827。在一个实施例中,寄存器3825包括直接和间接可访问的寄存器,其中间接可访问的寄存器被优化以供张量加速器3823使用。功率和性能模块3826可被配置成调整计算块3824A-3824N的功率递送和时钟频率,以对计算块3824A-3824N内的空闲组件进行功率门控。在各种实施例中,高速缓存3827可包括指令高速缓存和/或较低级数据高速缓存。
GPGPU 3820可另外包括L3数据高速缓存3830,其可用于高速缓存由张量加速器3823和/或计算块3824A-3824N内的计算元件从统一存储器3810访问的数据。在一个实施例中,L3数据高速缓存3830包括共享本地存储器3832,其可由计算块3824A-3824N内的计算元件和张量加速器3823共享。
在一个实施例中,GPGPU 3820包括指令处置逻辑,诸如提取和解码单元3821和调度器控制器3822。提取和解码单元3821包括提取单元和解码单元,用于提取和解码指令,以便由张量加速器3823或计算块3824A-3824N中的一个或多个执行。指令可经由调度器控制器3822被调度到计算块3824A-3824N内的适当的功能单元或张量加速器。在一个实施例中,调度器控制器3822为可配置以执行高级调度操作的ASIC。在一个实施例中,调度器控制器3822是能够执行从固件模块加载的调度器指令的微控制器或低每指令能量处理核。
在一个实施例中,要由计算模块3824A-3824N执行的一些功能可被直接调度到或卸载到张量加速器3823。在各种实施例中,张量加速器3823包括被配置成高效地执行矩阵计算运算的处理元件逻辑,所述矩阵计算运算诸如由3D图形或计算着色器程序使用的乘法和加法运算以及点积运算。在一个实施例中,张量加速器3823能够被配置成加速由机器学习框架所使用的操作。在一个实施例中,张量加速器3823是专用集成电路,其被明确地配置成执行并行矩阵相乘和/或加法运算的特定集合。在一个实施例中,张量加速器3823是提供可在工作负载之间更新的固定功能逻辑的现场可编程门阵列(FPGA)。可由张量加速器3823执行的一组矩阵运算可相对于可由计算块3824A-3824N执行的运算受到限制。然而,张量加速器3823能够以相对于计算块3824A-3824N显著更高的吞吐量来执行那些操作。
图39是根据实施例的包括图形处理器3904的计算装置3900的框图。计算装置3900可以是包括上述实施例中每个实施例的功能性的计算装置。计算装置3900可以是通信装置或被包括在通信装置内,所述通信装置诸如机顶盒(例如,基于因特网的有线电视机顶盒等)、基于全球定位系统(GPS)的装置等。计算装置3900还可以是移动计算装置或者被包括在移动计算装置内,所述移动计算装置诸如蜂窝电话、智能电话、个人数字助理(PDA)、平板计算机、膝上型计算机、电子阅读器、智能电视、电视平台、可穿戴装置(例如,眼镜、手表、手环(bracelet)、智能卡、珠宝、服装物品等)、媒体播放器等。例如,在一个实施例中,计算装置3900包括移动计算装置,所述移动计算装置采用在单个芯片上集成计算装置3900的各种硬件和/或软件组件的集成电路(“IC”)(诸如片上系统(“SoC”或“SOC”))。
计算装置3900包括图形处理器3904。图形处理器3904表示本文描述的任何图形处理器。图形处理器包括一个或多个图形引擎、图形处理器核以及其它图形执行资源,如本文描述的那样。这样的图形执行资源可以以包括但不限于执行单元、着色器引擎、片段处理器、顶点处理器、流播多处理器、图形处理器集群、或者适合于图形资源或图像资源的处理或者在异质处理器中执行通用计算操作的计算资源的任何集合的形式来呈现。
在一个实施例中,图形处理器3904包括高速缓存3914,其可以是单个高速缓存或者被划分成多段高速缓冲存储器,其包括但不限于任何数量的L1、L2、L3或L4高速缓存、渲染高速缓存、深度高速缓存、采样器高速缓存和/或着色器单元高速缓存。高速缓存3914可具有如本文描述的近区和远区。高速缓存3914还可包括支持存储体散列算法的动态重新配置的动态散列逻辑。在一些实施例中,图形处理器3904包括GPGPU引擎3944,其包括共享本地存储器(SLM 3934)以及包括包括供GPGPU引擎3944使用的寄存器的寄存器堆3924。寄存器堆3924可包括通用寄存器、架构寄存器、配置寄存器和其它类型的寄存器。通用寄存器堆(GRF)和/或架构寄存器堆(ARF)也可驻留在GPGPU引擎3944内的计算单元(例如,计算3950、计算3955)的一个或多个块内的处理资源内。还可存在共享组构3942,其能够实现GPGPU引擎3944的各个组件之间的快速通信。
如图所示,在一个实施例中,并且除了图形处理器3904之外,计算装置3900还可包括任何数量和类型的硬件组件和/或软件组件,其包括但不限于应用处理器3906、存储器3908和输入/输出(I/O)源3910。应用处理器3906可与硬件图形流水线交互以共享图形流水线功能性。经处理的数据被存储在硬件图形流水线中的缓冲器中,并且状态信息被存储在存储器3908中。所得到的数据可被转移到显示控制器以便经由显示装置输出,诸如图3A的显示装置318。显示装置可具有各种类型,诸如阴极射线管(CRT)、薄膜晶体管(TFT)、液晶显示器(LCD)、有机发光二极管(OLED)阵列等,并且可被配置成经由图形用户界面向用户显示信息。
应用处理器3906可包括一个或多个处理器,并且可以是至少部分地用于执行计算装置3900的操作系统(OS)3902的中央处理单元(CPU)。例如,应用处理器3906可以是图30中的CPU 3002。OS 3902可充当计算装置3900的硬件和/或物理资源与一个或多个用户之间的接口。OS 3902可包括用于计算装置3900中的各种硬件装置的驱动器逻辑,其包括图形驱动器逻辑3922,诸如图10的用户模式图形驱动器1026和/或内核模式图形驱动1029。
要设想,在一些实施例中,图形处理器3904可作为应用处理器3906的部分(诸如,物理CPU封装的部分)存在,在这种情况下,存储器3908的至少一部分可由应用处理器3906和图形处理器3904共享,尽管存储器3908的至少一部分可专用于图形处理器3904,或者图形处理器3904可具有存储器的单独存储。存储器3908可包括缓冲器(例如,帧缓冲器)的预分配的区域;然而,本领域的普通技术人员应理解,实施例不限于此,并且可使用下部图形流水线可访问的任何存储器。存储器3908可包括各种形式的随机存取存储器(RAM)(例如,SDRAM、SRAM等),其包括利用图形处理器3904来渲染桌面或3D图形场景的应用。存储器控制器集线器(诸如例如,图1的存储器集线器105)可访问存储器3908中的数据并且将其转发到图形处理器3904以用于图形流水线处理。可使存储器3908对计算装置3900内的其它组件可用。例如,在软件程序或应用的实现中,从计算装置3900的各种I/O源3910接收的任何数据(例如,输入图形数据)可在它们被一个或多个处理器(例如,应用处理器3906)操作之前被临时排队到存储器3908中。类似地,软件程序确定应该通过计算系统接口之一从计算装置3900发送到外部实体或者存储到内部存储元件中的数据在其被传送或存储之前通常在存储器3908中临时排队。
I/O源可包括诸如触摸屏、触摸面板、触摸板、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器、网络装置等的装置,并且可经由如图1中的I/O集线器107、如图3中的输入/输出(I/O)电路系统363、如图14中的平台控制器集线器1430等附连。另外,I/O源3910可包括被实现用于向计算装置3900(例如,联网适配器)和/或从计算装置3900(例如,联网适配器)转移数据的一个或多个I/O装置;或者用于计算装置3900内的大规模非易失性存储装置(例如,硬盘驱动器)。包括字母数字键和其它键的用户输入装置可用于将信息和命令选择传递到图形处理器3904。另一种类型的用户输入装置是光标控件,诸如鼠标、轨迹球、触摸屏、触摸板或光标方向键,以将方向信息和命令选择传递到GPU并控制显示装置上的光标移动。计算装置3900的相机和麦克风阵列可被用于观察姿势、记录音频和视频以及接收和传送视觉和音频命令。
被配置为网络接口的I/O源3910可提供对网络的接入,所述网络诸如LAN、广域网(WAN)、城域网(MAN)、个域网(PAN)、蓝牙、云网络、蜂窝或移动网络(例如,第3代(3G)、第4代(4G)、第5代(5G)等)、卫星网络、内联网、因特网等。(一个或多个)网络接口可包括例如具有一个或多个天线(e)的无线网络接口。(一个或多个)网络接口还可包括例如有线网络接口,以经由网络缆线与远程装置通信,所述网络缆线可以是例如以太网缆线、同轴缆线、光纤缆线、串行缆线或并行缆线。
(一个或多个)网络接口可例如通过符合IEEE 802.11标准提供对LAN的接入,和/或无线网络接口可例如通过符合蓝牙标准提供对个域网的接入。也可支持其它无线网络接口和/或协议,其包括标准的先前和后续版本。除了经由无线LAN标准的通信之外,或者代替经由无线LAN标准的通信,(一个或多个)网络接口可使用例如时分多址(TDMA)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议和/或任何其它类型的无线通信协议来提供无线通信。
要领会的是,对于某些实现,与上述示例相比,更少或更多装备的系统可能是优选的。因此,计算装置3900的配置可取决于许多因素(诸如价格限制、性能要求、技术改进或其它情况)从实现到实现变化。示例包括(但不限于)移动装置、个人数字助理、移动计算装置、智能电话、蜂窝电话、手机、单向寻呼机、双向寻呼机、消息收发(messaging)装置、计算机、个人计算机(PC)、台式计算机、膝上型计算机、笔记本计算机、手持计算机、平板计算机、服务器、服务器阵列或服务器场、web服务器、网络服务器、因特网服务器、工作站、小型计算机、大型计算机、超级计算机、网络设备、web设备、分布式计算系统、多处理器系统、基于处理器的系统、消费电子产品、可编程消费电子产品、电视、数字电视、机顶盒、无线接入点、基站、订户站、移动订户中心、无线电网络控制器、路由器、集线器、网关、桥、交换机、机器或它们的组合。
实施例可被实现为使用母板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器装置存储并由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)中的任何一个或其组合。作为示例,术语“逻辑”可包括软件或硬件和/或软件和硬件的组合。
实施例可被提供为例如计算机程序产品,其可包括其上存储有机器可执行指令的一个或多个机器可读介质,所述机器可执行指令当由诸如计算机、计算机网络或者其它电子装置之类的一个或多个机器执行时,可导致一个或多个机器运行根据本文描述的实施例的操作。机器可读介质可包括但不限于软盘、光盘、CD-ROM(致密盘只读存储器)和磁光盘、ROM、RAM、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦可编程只读存储器)、磁卡或光卡、闪速存储器或适于存储机器可执行指令的其它类型的非暂时性机器可读介质。
此外,实施例可作为计算机程序产品被下载,其中程序可经由通信链路(例如,调制解调器和/或网络连接)通过体现在载波或其它传播介质中或由载波或其它传播介质调制的一个或多个数据信号从远程计算机(例如,服务器)转移到请求计算机(例如,客户端)。
本文中对“一个实施例”或“一实施例”的引用意味着结合实施例描述的特定特征、结构或特性可包括在本发明的至少一个实施例中。说明书中各个地方出现的短语“在一个实施例中”不一定全部指相同实施例。下面的图中描绘的过程可由包括硬件(例如电路系统、专用逻辑等)、软件(作为非暂时性机器可读存储介质上的指令)或硬件和软件两者的组合的处理逻辑来执行。将对各种实施例进行详细参考,其示例在附图中示出。在以下详细描述中,阐述了许多特定细节以便提供对本发明的透彻理解。然而,对本领域普通技术人员来说将清楚的是,可在没有这些特定细节的情况下实践本发明。在其它情况下,尚未详细描述公知的方法、过程、组件、电路和网络,以免不必要地模糊实施例的方面。
还将理解的是,尽管术语第一、第二等在本文中可用于描述各种元素,但是这些元素不应受这些术语限制。这些术语仅用于区分一种元素与另一种元素。例如,在不脱离本发明的范围的情况下,第一接触件可被术语化为第二接触件,并且类似地,第二接触件可被术语化为第一接触件。第一接触件和第二接触件两者都是接触件,但不是相同接触件。
本文中使用的术语仅出于描述特定实施例而不旨在限制所有实施例的目的。如在本发明的描述和所附权利要求书中使用的,除非上下文另有明确指示,否则单数形式“一”“一个””和“该”也旨在包括复数形式。还将理解的是,如本文中所使用的术语“和/或”是指并涵盖相关联的所列项目中的一个或多个的任何和所有可能的组合。将进一步理解,术语“包括(comprise和/或comprising)”,当在本说明书中使用时,指定所述特征、整体、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整体、步骤、操作、元件、组件和/或它们的群组的存在或添加。
如本文中所使用的,取决于上下文,术语“如果”可被解释成意味着“当……时”或“在……时”或“响应于确定”或“响应于检测”。类似地,取决于上下文,短语“如果要确定”或“如果检测到[陈述的条件或事件]”可解释成“在确定……时”或“响应于确定”或“在检测到[陈述的条件或事件]时”或“响应于检测到[所述条件或事件]”。
本文描述的实施例提供了能够实现通用图形处理单元上的存储器的动态重新配置的技术。本文描述的一个实施例基于硬件统计能够实现高速缓冲存储器存储体指派的动态重新配置。一个实施例在相同页表层级内和相同页目录下使用混合的四千字节和64千字节页能够实现虚拟存储器地址转化。一个实施例规定了一种图形处理器和相关联的异质处理系统,所述图形处理器和相关联的异质处理系统具有相同级别的缓存层级的近区域和远区域。
一个实施例规定了一种通用图形处理器,所述通用图形处理器包括包括多个存储器存储体的高速缓冲存储器和与高速缓冲存储器耦合的高速缓存控制器。高速缓存控制器包括动态散列单元,以基于第一散列函数和与存储器访问相关联的地址来选择多个存储器存储体中的一个或多个存储器存储体以存储与存储器访问相关联的数据。通用图形处理器还包括监测多个存储器存储体的访问模式的高速缓存监测器硬件。高速缓存监测器硬件可请求动态散列单元选择第二散列函数供选择多个存储器存储体中的一个或多个使用。高速缓存监测器硬件可响应于检测到超过阈值的存储体访问模式差异性,请求对第二散列函数的选择。
一个实施例规定一种方法,其包括在包括具有多个存储器存储体的高速缓冲存储器和与高速缓冲存储器耦合的高速缓存控制器的通用图形处理器上,响应于对第一地址的第一存储器访问请求而经由高速缓存控制器选择要访问的高速缓冲存储器的一个或多个存储器存储体的第一集合。基于与存储器访问请求相关联的地址和经由第一散列函数生成的存储器地址的散列来选择一个或多个存储器存储体的第一集合。该方法另外包括监测对高速缓冲存储器的多个存储器存储体的访问模式,并且响应于检测到存储体访问差异性,请求高速缓存控制器从第一散列函数改变到第二散列函数。方法另外包括响应于对第一地址的第二存储器访问请求而经由高速缓存控制器选择要访问的高速缓冲存储器的一个或多个存储器存储体的第二集合。
在一个实施例中,该方法另外包括在高速缓存控制器处接收从第一散列函数改变到第二散列函数的请求,转储清除高速缓冲存储器,以及从第一散列函数改变到第二散列函数。转储清除高速缓冲存储器包括将修改的高速缓存行写入到与通用图形处理器耦合的附加存储器,并且使高速缓冲存储器中的所有高速缓存行无效。
在一个实施例中,该方法另外包括监测多个存储器存储体的热状态,并且响应于检测到多个存储器存储体中的一个或多个存储器存储体的温度超过阈值,请求高速缓存控制器改变到与第二散列函数不同的第三散列函数。
在一个实施例中,该方法另外包括在高速缓存控制器处接收转储清除高速缓冲存储器的请求,转储清除高速缓冲存储器,以及在转储清除高速缓冲存储器之后,改变到第二散列函数。该方法另外包括改变在响应于转储清除请求而转储清除高速缓冲存储器之后,以改变到第三散列函数。
附加实施例提供了执行上面指示的方法的图形处理逻辑。附加实施例还包括数据处理系统,该数据处理系统包括上面指示的图形处理逻辑。上述技术可集成在本文中所述的图形或并行处理器架构中的任何图形或并行处理器架构内或适用于本文中所述的图形或并行处理器架构中的任何图形或并行处理器架构。
本领域技术人员将根据前述描述理解,可以以各种形式实现实施例的广泛技术。因此,虽然已经结合其特定示例描述了实施例,但是实施例的真实范围不应如此限制,因为根据研究附图、说明书和以下权利要求书,其它修改对于技术实践者将变得清楚。

Claims (20)

1.一种通用图形处理器,包括:
高速缓冲存储器,所述高速缓冲存储器包括多个存储器存储体;
高速缓存控制器,所述高速缓存控制器与所述高速缓冲存储器耦合,所述高速缓存控制器包括动态散列单元,以基于第一散列函数和与存储器访问相关联的地址而选择所述多个存储器存储体中的一个或多个来存储与所述存储器访问相关联的数据;以及
高速缓存监测器硬件,所述高速缓存监测器硬件用于监测所述多个存储器存储体的访问模式,所述高速缓存监测器硬件进一步用于请求所述动态散列单元选择第二散列函数供选择所述多个存储器存储体中的一个或多个使用,所述高速缓存监测器硬件用于响应于检测到超过阈值的存储体访问模式差异性,请求对所述第二散列函数的选择。
2.如权利要求1所述的通用图形处理器,其中,所述高速缓冲存储器是所述通用图形处理器的1级(L1)、2级(L2)或3级(L3)高速缓冲存储器。
3.如权利要求1所述的通用图形处理器,其中,所述高速缓冲存储器另外包括监测所述多个存储器存储体的热状态并向所述高速缓存监测器硬件报告所述热状态的硬件。
4.如权利要求3所述的通用图形处理器,其中,响应于确定所述多个存储器存储体中的一个或多个存储器存储体的温度超过阈值,所述高速缓存监测器硬件要请求所述动态散列单元选择所述第二散列函数。
5.如权利要求3所述的通用图形处理器,其中,响应于确定所述多个存储器存储体中的一个或多个存储器存储体的温度超过阈值,所述高速缓存监测器硬件要请求所述动态散列单元选择第三散列函数。
6.如权利要求1所述的通用图形处理器,其中,所述动态散列单元是所述高速缓存控制器的硬件单元。
7.如权利要求1所述的通用图形处理器,其中,所述动态散列单元包括由与所述高速缓存控制器相关联的微控制器执行的固件。
8.一种系统,包括:
存储器装置;以及
通用图形处理器,所述通用图形处理器耦合到所述存储器装置,其中所述通用图形处理器包括:
高速缓冲存储器,所述高速缓冲存储器包括多个存储器存储体;
高速缓存控制器,所述高速缓存控制器与所述高速缓冲存储器耦合,所述高速缓存控制器包括动态散列单元,以基于第一散列函数和与存储器访问相关联的地址而选择所述多个存储器存储体中的一个或多个来存储与所述存储器访问相关联的数据;以及
高速缓存监测器硬件,所述高速缓存监测器硬件用于监测所述多个存储器存储体的访问模式,并且响应于检测到超过阈值的存储体访问模式差异性,请求所述动态散列单元选择第二散列函数。
9.如权利要求8所述的系统,其中,所述高速缓冲存储器是所述通用图形处理器的1级(L1)、2级(L2)或3级(L3)高速缓冲存储器。
10.如权利要求8所述的系统,所述高速缓冲存储器另外包括监测所述多个存储器存储体的热状态并向所述高速缓存监测器硬件报告所述热状态的硬件。
11.如权利要求10所述的系统,其中,响应于确定所述多个存储器存储体中的一个或多个存储器存储体的温度超过阈值,所述高速缓存监测器硬件要请求所述动态散列单元选择所述第二散列函数。
12.如权利要求10所述的系统,其中,响应于确定所述多个存储器存储体中的一个或多个存储器存储体的温度超过阈值,所述高速缓存监测器硬件要请求所述动态散列单元选择第三散列函数。
13.如权利要求8所述的系统,其中,所述动态散列单元是所述高速缓存控制器的硬件单元。
14.如权利要求8所述的系统,其中,所述动态散列单元包括由与所述高速缓存控制器相关联的微控制器执行的固件。
15.一种方法,包括:
在包括具有多个存储器存储体的高速缓冲存储器和与所述高速缓冲存储器耦合的高速缓存控制器的通用图形处理器上:
响应于对第一存储器地址的第一存储器访问请求而经由所述高速缓存控制器选择要访问的所述高速缓冲存储器的一个或多个存储器存储体的第一集合,其中基于与所述第一存储器访问请求相关联的地址以及所述第一存储器地址的散列来选择一个或多个存储器存储体的所述第一集合,所述散列经由第一散列函数生成;
监测对所述高速缓冲存储器的所述多个存储器存储体的访问模式;
响应于检测到存储体访问差异性,请求所述高速缓存控制器从所述第一散列函数改变到第二散列函数;以及
响应于对所述第一存储器地址的第二存储器访问请求,经由所述高速缓存控制器选择要访问的所述高速缓冲存储器的一个或多个存储器存储体的第二集合。
16.如权利要求15所述的方法,还包括:
在所述高速缓存控制器处接收从所述第一散列函数改变到所述第二散列函数的所述请求;
转储清除所述高速缓冲存储器;以及
从所述第一散列函数改变到所述第二散列函数。
17.如权利要求16所述的方法,其中,转储清除所述高速缓冲存储器包括:
将修改的高速缓存行写入到与所述通用图形处理器耦合的额外存储器;以及
使所述高速缓冲存储器中的所有高速缓存行无效。
18.如权利要求15所述的方法,还包括:
监测所述多个存储器存储体的热状态;以及
响应于检测到所述多个存储器存储体中的一个或多个存储器存储体的温度超过阈值,请求所述高速缓存控制器改变到与所述第二散列函数不同的第三散列函数。
19.如权利要求18所述的方法,还包括:
在所述高速缓存控制器处接收转储清除所述高速缓冲存储器的请求;
转储清除所述高速缓冲存储器;以及
在转储清除所述高速缓冲存储器之后,改变到所述第二散列函数。
20.如权利要求18所述的方法,还包括:
在所述高速缓存控制器处接收转储清除所述高速缓冲存储器的请求;
转储清除所述高速缓冲存储器;以及
在转储清除所述高速缓冲存储器之后,改变到所述第三散列函数。
CN202080014341.8A 2019-03-15 2020-03-14 动态存储器重新配置 Pending CN113424162A (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201962819361P 2019-03-15 2019-03-15
US201962819337P 2019-03-15 2019-03-15
US201962819435P 2019-03-15 2019-03-15
US62/819435 2019-03-15
US62/819337 2019-03-15
US62/819361 2019-03-15
PCT/US2020/022838 WO2020190800A1 (en) 2019-03-15 2020-03-14 Dynamic memory reconfiguration

Publications (1)

Publication Number Publication Date
CN113424162A true CN113424162A (zh) 2021-09-21

Family

ID=70277485

Family Applications (15)

Application Number Title Priority Date Filing Date
CN202080014341.8A Pending CN113424162A (zh) 2019-03-15 2020-03-14 动态存储器重新配置
CN202311777921.4A Pending CN117689531A (zh) 2019-03-15 2020-03-14 用于更新多gpu配置中的存储器侧高速缓存的系统和方法
CN202080014566.3A Pending CN113454587A (zh) 2019-03-15 2020-03-14 具有用于混合浮点格式的点积累加指令的图形处理器和图形处理单元
CN202080011554.5A Pending CN113366447A (zh) 2019-03-15 2020-03-14 图形处理中的计算优化
CN202080014235.XA Pending CN113396400A (zh) 2019-03-15 2020-03-14 用于针对高速缓存操作提供层级开放划分扇区和可变扇区大小的系统和方法
CN202080011587.XA Pending CN113366437A (zh) 2019-03-15 2020-03-14 用于提高高速缓存效率和利用率的系统和方法
CN202080012584.8A Pending CN113396390A (zh) 2019-03-15 2020-03-14 图形处理器数据访问和共享
CN202080014355.XA Pending CN113383304A (zh) 2019-03-15 2020-03-14 数据初始化技术
CN202080014501.9A Pending CN113424148A (zh) 2019-03-15 2020-03-14 用于检测跨分片访问、提供多分片推理缩放和提供最佳页迁移的多分片存储器管理
CN202080011341.2A Pending CN113366435A (zh) 2019-03-15 2020-03-14 压缩技术
CN202080014347.5A Pending CN113396401A (zh) 2019-03-15 2020-03-14 多贴片存储器管理
CN202210586709.9A Pending CN114968366A (zh) 2019-03-15 2020-03-14 用于提高高速缓存效率和利用率的系统和方法
CN202080014422.8A Pending CN113508362A (zh) 2019-03-15 2020-03-14 确定性延迟的图形处理器操作调度
CN202080011597.3A Pending CN113366454A (zh) 2019-03-15 2020-03-14 用于图形操作的多片架构
CN202080011299.4A Pending CN113439265A (zh) 2019-03-15 2020-03-14 用于更新多gpu配置中的存储器侧高速缓存的系统和方法

Family Applications After (14)

Application Number Title Priority Date Filing Date
CN202311777921.4A Pending CN117689531A (zh) 2019-03-15 2020-03-14 用于更新多gpu配置中的存储器侧高速缓存的系统和方法
CN202080014566.3A Pending CN113454587A (zh) 2019-03-15 2020-03-14 具有用于混合浮点格式的点积累加指令的图形处理器和图形处理单元
CN202080011554.5A Pending CN113366447A (zh) 2019-03-15 2020-03-14 图形处理中的计算优化
CN202080014235.XA Pending CN113396400A (zh) 2019-03-15 2020-03-14 用于针对高速缓存操作提供层级开放划分扇区和可变扇区大小的系统和方法
CN202080011587.XA Pending CN113366437A (zh) 2019-03-15 2020-03-14 用于提高高速缓存效率和利用率的系统和方法
CN202080012584.8A Pending CN113396390A (zh) 2019-03-15 2020-03-14 图形处理器数据访问和共享
CN202080014355.XA Pending CN113383304A (zh) 2019-03-15 2020-03-14 数据初始化技术
CN202080014501.9A Pending CN113424148A (zh) 2019-03-15 2020-03-14 用于检测跨分片访问、提供多分片推理缩放和提供最佳页迁移的多分片存储器管理
CN202080011341.2A Pending CN113366435A (zh) 2019-03-15 2020-03-14 压缩技术
CN202080014347.5A Pending CN113396401A (zh) 2019-03-15 2020-03-14 多贴片存储器管理
CN202210586709.9A Pending CN114968366A (zh) 2019-03-15 2020-03-14 用于提高高速缓存效率和利用率的系统和方法
CN202080014422.8A Pending CN113508362A (zh) 2019-03-15 2020-03-14 确定性延迟的图形处理器操作调度
CN202080011597.3A Pending CN113366454A (zh) 2019-03-15 2020-03-14 用于图形操作的多片架构
CN202080011299.4A Pending CN113439265A (zh) 2019-03-15 2020-03-14 用于更新多gpu配置中的存储器侧高速缓存的系统和方法

Country Status (10)

Country Link
US (36) US11954062B2 (zh)
EP (9) EP3938914B1 (zh)
JP (6) JP7513354B2 (zh)
KR (2) KR102596790B1 (zh)
CN (15) CN113424162A (zh)
BR (1) BR112021016111A2 (zh)
DE (4) DE112020001256T5 (zh)
ES (4) ES2964969T3 (zh)
PL (3) PL3938912T3 (zh)
WO (15) WO2020190812A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11709793B2 (en) 2019-03-15 2023-07-25 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
US12056059B2 (en) 2019-03-15 2024-08-06 Intel Corporation Systems and methods for cache optimization

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017049594A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Efficient memory activation at runtime
US10390114B2 (en) 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
EP3549350A4 (en) 2016-11-29 2021-03-24 Intel Corporation MILLIMETRIC WAVE CHASSIS INTERCONNECTION TECHNOLOGIES
US20180150256A1 (en) 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10409614B2 (en) 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US20190044809A1 (en) 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
AU2020241262B2 (en) 2019-03-15 2025-01-09 Intel Corporation Sparse optimizations for a matrix accelerator architecture
GB2582782A (en) * 2019-04-02 2020-10-07 Graphcore Ltd Graph conversion method
US11321511B2 (en) * 2019-07-09 2022-05-03 SiFive, Inc. Reset crossing and clock crossing interface for integrated circuit generation
US20210048806A1 (en) * 2019-08-16 2021-02-18 Arizona Board Of Regents On Behalf Of Arizona State University System and methods for gray-box adversarial testing for control systems with machine learning components
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11663746B2 (en) 2019-11-15 2023-05-30 Intel Corporation Systolic arithmetic on sparse data
US11442631B2 (en) * 2019-12-26 2022-09-13 Micron Technology, Inc. Memory operations with consideration for wear leveling
US11599376B1 (en) * 2020-02-20 2023-03-07 Amazon Technologies, Inc. Deep learning architecture for edge computing system
US11907855B2 (en) * 2020-03-30 2024-02-20 Arm Limited Data transfers in neural processing
CN111523642B (zh) * 2020-04-10 2023-03-28 星宸科技股份有限公司 用于卷积运算的数据重用方法、运算方法及装置、芯片
LU101767B1 (en) * 2020-05-05 2021-11-05 Microsoft Technology Licensing Llc Recording a memory value trace for use with a separate cache coherency protocol trace
LU101770B1 (en) 2020-05-05 2021-11-05 Microsoft Technology Licensing Llc Memory page markings as logging cues for processor-based execution tracing
US11640443B2 (en) 2020-05-28 2023-05-02 Hewlett Packard Enterprise Development Lp Distributing matrix multiplication processing among processing nodes
US11847501B2 (en) 2020-06-12 2023-12-19 Baidu Usa Llc Method for data protection in a data processing cluster with partition
US11563745B2 (en) 2020-06-12 2023-01-24 Baidu Usa Llc Method for data protection in a data processing cluster with policy-based partition
US11687376B2 (en) 2020-06-12 2023-06-27 Baidu Usa Llc Method for data protection in a data processing cluster with dynamic partition
US11687629B2 (en) * 2020-06-12 2023-06-27 Baidu Usa Llc Method for data protection in a data processing cluster with authentication
US11393250B2 (en) * 2020-06-21 2022-07-19 Actimize Ltd. Sentiment analysis of content using expression recognition
KR20210157624A (ko) * 2020-06-22 2021-12-29 삼성전자주식회사 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
US11687831B1 (en) 2020-06-30 2023-06-27 Cadence Design Systems, Inc. Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference
US11651283B1 (en) * 2020-06-30 2023-05-16 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process using dynamic rearrangement of sparse data and corresponding weights
US11676068B1 (en) 2020-06-30 2023-06-13 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process leveraging input sparsity on a pixel by pixel basis
US11615320B1 (en) 2020-06-30 2023-03-28 Cadence Design Systems, Inc. Method, product, and apparatus for variable precision weight management for neural networks
US11823018B1 (en) * 2020-06-30 2023-11-21 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process using weight sharing within a systolic array having reduced memory bandwidth
GB2596864A (en) * 2020-07-10 2022-01-12 Graphcore Ltd Machine learning computer
JP2022016795A (ja) * 2020-07-13 2022-01-25 富士通株式会社 情報処理装置、情報処理プログラムおよび情報処理方法
US11392527B2 (en) * 2020-08-31 2022-07-19 Micron Technology, Inc. Ordered delivery of data packets based on type of path information in each packet
US11658922B2 (en) 2020-08-31 2023-05-23 Micron Technology, Inc. Optional path ordering in packet-based network
JP7536574B2 (ja) * 2020-09-16 2024-08-20 キオクシア株式会社 演算デバイス、計算機システム、及び演算方法
US11636041B2 (en) * 2020-10-12 2023-04-25 Seagate Technology Llc Object storage data storage systems and methods
CN112395062A (zh) * 2020-11-17 2021-02-23 深圳前海微众银行股份有限公司 任务处理方法、装置、设备及计算机可读存储介质
US20220164663A1 (en) * 2020-11-24 2022-05-26 Arm Limited Activation Compression Method for Deep Learning Acceleration
CN112506567B (zh) * 2020-11-27 2022-11-04 海光信息技术股份有限公司 数据读取方法和数据读取电路
US20220188492A1 (en) * 2020-12-10 2022-06-16 Memryx Incorporated Chiplet based artificial intelligence accelerators and configuration methods
US12130738B2 (en) * 2020-12-22 2024-10-29 Intel Corporation Compressed cache memory with decompress on fault
US12028094B2 (en) 2020-12-23 2024-07-02 Intel Corporation Application programming interface for fine grained low latency decompression within processor core
US12106104B2 (en) 2020-12-23 2024-10-01 Intel Corporation Processor instructions for data compression and decompression
US12182018B2 (en) * 2020-12-23 2024-12-31 Intel Corporation Instruction and micro-architecture support for decompression on core
US12111775B2 (en) * 2020-12-26 2024-10-08 Intel Corporation Memory hub providing cache coherency protocol system method for multiple processor sockets comprising multiple XPUs
US12056374B2 (en) 2021-02-03 2024-08-06 Alibaba Group Holding Limited Dynamic memory coherency biasing techniques
US20220318013A1 (en) * 2021-03-25 2022-10-06 Intel Corporation Supporting 8-bit floating point format operands in a computing architecture
GB2605375B (en) * 2021-03-29 2023-11-29 Advanced Risc Mach Ltd Data processors
US20220320042A1 (en) * 2021-03-30 2022-10-06 Advanced Micro Devices, Inc. Die stacking for modular parallel processors
KR20220153330A (ko) * 2021-05-11 2022-11-18 한국전자통신연구원 메모리 접근 방법 및 장치
US20220414967A1 (en) * 2021-06-24 2022-12-29 Intel Corporation Out-of-order pixel shading and rasterization
US20220414815A1 (en) * 2021-06-24 2022-12-29 Intel Corporation Sort middle architecture for multiple graphics processing units
US20230004385A1 (en) * 2021-06-30 2023-01-05 Advanced Micro Devices, Inc. Accelerated processing device and method of sharing data for machine learning
US12050800B2 (en) 2021-07-01 2024-07-30 Samsung Electronics Co., Ltd. Systems and methods for reordering data in a storage device based on data access patterns
US12190405B2 (en) 2021-07-06 2025-01-07 Intel Corporation Direct memory writes by network interface of a graphics processing unit
US12147528B2 (en) * 2021-07-22 2024-11-19 VMware LLC Coherence-based attack detection
US12045474B2 (en) * 2021-08-02 2024-07-23 Red Hat, Inc. Efficient dirty page expiration
US12229554B2 (en) 2021-08-31 2025-02-18 Intel Corporation BFLOAT16 fused multiply instructions
US12242851B2 (en) 2021-09-09 2025-03-04 Intel Corporation Verifying compressed stream fused with copy or transform operations
CN115841415A (zh) * 2021-09-18 2023-03-24 平头哥(上海)半导体技术有限公司 处理系统、操作处理系统的方法和计算机可读存储介质
US12093155B2 (en) * 2021-09-24 2024-09-17 Qualcomm Incorporated Allocation of data sub-tensors onto hardware sub-arrays
US11775307B2 (en) 2021-09-24 2023-10-03 Apple Inc. Systems and methods for synchronizing data processing in a cellular modem
US11705091B2 (en) 2021-09-30 2023-07-18 Qualcomm Incorporated Parallelization of GPU composition with DPU topology selection
US20230109990A1 (en) * 2021-10-07 2023-04-13 Intel Corporation Modular gpu architecture for clients and servers
US20230119235A1 (en) * 2021-10-19 2023-04-20 Google Llc Large-Scale Accelerator System Energy Performance Optimization
US20230148225A1 (en) * 2021-11-05 2023-05-11 Intel Corporation Joint denoising and supersampling of graphics data
CN114071222B (zh) * 2021-11-15 2023-07-25 深圳Tcl新技术有限公司 音视频数据共享装置及电子设备
CN114037807B (zh) * 2021-11-24 2023-03-28 深圳市云鼠科技开发有限公司 低内存占用的链式栅格地图构建方法、装置及计算机设备
US11762560B2 (en) * 2021-12-06 2023-09-19 Meta Platforms, Inc. Optimizing NOC performance using crossbars
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution
US12197350B2 (en) 2021-12-10 2025-01-14 Samsung Electronics Co., Ltd. Low-latency input data staging to execute kernels
US20230195626A1 (en) * 2021-12-21 2023-06-22 Advanced Micro Devices, Inc. Variable dispatch walk for successive cache accesses
CN116303134A (zh) 2021-12-21 2023-06-23 Arm有限公司 高速缓存系统
US20230229599A1 (en) * 2022-01-18 2023-07-20 Nvidia Corporation Multicast and reflective memory behavior for memory model consistency
CN114331806A (zh) * 2022-03-17 2022-04-12 南京砺算科技有限公司 图形处理器及图形处理方法
US20230315328A1 (en) * 2022-03-18 2023-10-05 Nvidia Corporation High bandwidth extended memory in a parallel processing system
US11940909B2 (en) 2022-04-26 2024-03-26 Texas Instruments Incorporated Dynamic mapping of data to lower latency memory based on data access
CN114896058B (zh) * 2022-04-27 2023-09-22 南京鼎华智能系统有限公司 基于内存运算的派工系统以及派工方法
CN114742691B (zh) * 2022-05-19 2023-08-18 支付宝(杭州)信息技术有限公司 一种图数据采样方法和系统
US11941742B2 (en) * 2022-06-23 2024-03-26 Apple Inc. Tiled processor communication fabric
US12026380B2 (en) * 2022-06-30 2024-07-02 Advanced Micro Devices, Inc. Dynamic memory reconfiguration
TWI806747B (zh) * 2022-08-22 2023-06-21 創鑫智慧股份有限公司 計算裝置及其資料存取方法
US11863641B1 (en) * 2022-09-01 2024-01-02 ZenPayroll, Inc. Predictive web navigation
GB2622074B (en) * 2022-09-01 2025-02-26 Advanced Risc Mach Ltd Cache systems
US11941066B1 (en) 2022-09-01 2024-03-26 ZenPayroll, Inc. Navigation goal identification using clustering
US12050780B2 (en) * 2022-09-06 2024-07-30 Micron Technology, Inc. Adaptive temperature protection for a memory controller
TWI818732B (zh) * 2022-09-16 2023-10-11 新唐科技股份有限公司 記憶體裝置及其操作方法
CN117915018A (zh) * 2022-10-12 2024-04-19 瑞昱半导体股份有限公司 应用于多通道视频播放的内存管理方法与视频播放系统
CN115391124B (zh) * 2022-10-27 2023-03-21 瀚博半导体(上海)有限公司 一种面向图形芯片功耗测试的方法及装置
US12224774B2 (en) 2022-11-16 2025-02-11 Samsung Electronics Co., Ltd. Runtime reconfigurable compression format conversion
CN115756384B (zh) * 2022-11-22 2024-05-17 海光信息技术股份有限公司 张量计算单元及使用方法、数据处理装置及操作方法
US20240192855A1 (en) * 2022-12-13 2024-06-13 Groq, Inc. Method to manage periodic dram refresh and maintenance scheduling for predictable dram data access
US20240289713A1 (en) * 2023-02-27 2024-08-29 Tracelink, Inc. Extensible state-based workflows
US20230221994A1 (en) * 2023-03-16 2023-07-13 Arnab Raha Dynamic uncompression for channel-separable operation in neural network
US12259833B2 (en) 2023-03-28 2025-03-25 Xilinx, Inc. Descriptor fetching for a multi-queue direct memory access system
US20240338317A1 (en) * 2023-04-05 2024-10-10 Samsung Electronics Co., Ltd. System and method for page mirroring for storage
CN116382593A (zh) * 2023-04-28 2023-07-04 昆仑芯(北京)科技有限公司 数据处理装置、方法、电子设备和存储介质
US20240386259A1 (en) * 2023-05-16 2024-11-21 Microsoft Technology Licensing, Llc In-place tensor format change
US20240420274A1 (en) * 2023-06-16 2024-12-19 Intel Corporation Coarse and fine filtering for gpu hardware-based performance monitoring
US20250004961A1 (en) * 2023-06-29 2025-01-02 Xilinx, Inc. Multi-host and multi-client direct memory access system having a read scheduler
US20250045224A1 (en) * 2023-07-31 2025-02-06 Rain Neuromorphics Inc. Tiled in-memory computing architecture
CN116755779B (zh) * 2023-08-18 2023-12-05 腾讯科技(深圳)有限公司 循环间隔的确定方法、装置、设备、存储介质及芯片
CN117130663B (zh) * 2023-09-19 2024-06-11 摩尔线程智能科技(北京)有限责任公司 一种指令读取方法及l2指令缓存、电子设备和存储介质
TWI867814B (zh) * 2023-10-25 2024-12-21 大陸商星宸科技股份有限公司 人工智慧模型的建立方法及執行方法
US20240078180A1 (en) * 2023-11-15 2024-03-07 Intel Corporation Evenly distributing hierarchical binary hashes for strided workloads
CN118312465B (zh) * 2024-04-12 2025-01-03 清华大学 广域网大模型训练的方法、装置、电子设备及存储介质
CN118505492B (zh) * 2024-07-17 2024-10-22 武汉凌久微电子有限公司 一种基于多级Cache高速缓存的GPU存储结构

Family Cites Families (468)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3872442A (en) 1972-12-14 1975-03-18 Sperry Rand Corp System for conversion between coded byte and floating point format
US4476523A (en) 1981-06-11 1984-10-09 Data General Corporation Fixed point and floating point computation units using commonly shared control fields
US4823252A (en) 1986-03-28 1989-04-18 Tandem Computers Incorporated Overlapped control store
US4823260A (en) 1987-11-12 1989-04-18 Intel Corporation Mixed-precision floating point operations from a single instruction opcode
US5182801A (en) 1989-06-09 1993-01-26 Digital Equipment Corporation Apparatus and method for providing fast data transfer between multiple devices through dynamic reconfiguration of the memory space of the devices
JP2581236B2 (ja) 1989-11-16 1997-02-12 三菱電機株式会社 データ処理装置
JP2682232B2 (ja) 1990-11-21 1997-11-26 松下電器産業株式会社 浮動小数点演算処理装置
US5381539A (en) 1992-06-04 1995-01-10 Emc Corporation System and method for dynamically controlling cache management
GB9307359D0 (en) 1993-04-08 1993-06-02 Int Computers Ltd Cache replacement mechanism
US5450607A (en) 1993-05-17 1995-09-12 Mips Technologies Inc. Unified floating point and integer datapath for a RISC processor
US5574928A (en) 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
US5623636A (en) 1993-11-09 1997-04-22 Motorola Inc. Data processing system and method for providing memory access protection using transparent translation registers and default attribute bits
US5627985A (en) 1994-01-04 1997-05-06 Intel Corporation Speculative and committed resource files in an out-of-order processor
CN1107597A (zh) 1994-02-24 1995-08-30 吴乾弥 管线式与心跳式及单指令多数据流的阵列处理架构及方法
US5673407A (en) 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
US5512921A (en) * 1994-06-22 1996-04-30 Microsoft Corporation Visual display system having low energy data storage subsystem with date compression capabilities, and method for operating same
GB2296155B (en) 1994-06-22 1997-04-23 Microsoft Corp Data decompression circuit
US5805475A (en) 1995-02-10 1998-09-08 International Business Machines Corporation Load-store unit and method of loading and storing single-precision floating-point registers in a double-precision architecture
US5777629A (en) 1995-03-24 1998-07-07 3Dlabs Inc. Ltd. Graphics subsystem with smart direct-memory-access operation
US5651137A (en) 1995-04-12 1997-07-22 Intel Corporation Scalable cache attributes for an input/output bus
US5983257A (en) 1995-12-26 1999-11-09 Intel Corporation System for signal processing using multiply-add operations
US5940311A (en) 1996-04-30 1999-08-17 Texas Instruments Incorporated Immediate floating-point operand reformatting in a microprocessor
US5917741A (en) 1996-08-29 1999-06-29 Intel Corporation Method and apparatus for performing floating-point rounding operations for multiple precisions using incrementers
JP3790307B2 (ja) 1996-10-16 2006-06-28 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
US5887160A (en) 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US6078940A (en) 1997-01-24 2000-06-20 Texas Instruments Incorporated Microprocessor with an instruction for multiply and left shift with saturate
US5943687A (en) 1997-03-14 1999-08-24 Telefonakiebolaget Lm Ericsson Penalty-based cache storage and replacement techniques
US5926406A (en) 1997-04-30 1999-07-20 Hewlett-Packard, Co. System and method for calculating floating point exponential values in a geometry accelerator
US6092149A (en) 1997-05-28 2000-07-18 Western Digital Corporation Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses
US6856320B1 (en) 1997-11-25 2005-02-15 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US7102646B1 (en) 1997-11-25 2006-09-05 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US6253311B1 (en) 1997-11-29 2001-06-26 Jp First Llc Instruction set for bi-directional conversion and transfer of integer and floating point data
US6049865A (en) 1997-12-18 2000-04-11 Motorola, Inc. Method and apparatus for implementing floating point projection instructions
US6260008B1 (en) 1998-01-08 2001-07-10 Sharp Kabushiki Kaisha Method of and system for disambiguating syntactic word multiples
US6513099B1 (en) 1998-12-22 2003-01-28 Silicon Graphics Incorporated Enhanced graphics cache memory
US6480872B1 (en) 1999-01-21 2002-11-12 Sandcraft, Inc. Floating-point and integer multiply-add and multiply-accumulate
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6529928B1 (en) 1999-03-23 2003-03-04 Silicon Graphics, Inc. Floating-point adder performing floating-point and integer operations
US6788738B1 (en) 1999-05-07 2004-09-07 Xilinx, Inc. Filter accelerator for a digital signal processor
US6631437B1 (en) 2000-04-06 2003-10-07 Hewlett-Packard Development Company, L.P. Method and apparatus for promoting memory read commands
US6578102B1 (en) 2000-04-18 2003-06-10 International Business Machines Corporation Tracking and control of prefetch data in a PCI bus system
US6412046B1 (en) * 2000-05-01 2002-06-25 Hewlett Packard Company Verification of cache prefetch mechanism
US8188997B2 (en) 2000-06-19 2012-05-29 Mental Images Gmbh Accelerated ray tracing using shallow bounding volume hierarchies
US7499053B2 (en) 2000-06-19 2009-03-03 Mental Images Gmbh Real-time precision ray tracing
US6678806B1 (en) 2000-08-23 2004-01-13 Chipwrights Design, Inc. Apparatus and method for using tagged pointers for extract, insert and format operations
US20020152361A1 (en) 2001-02-05 2002-10-17 International Business Machines Corporation Directed least recently used cache replacement method
US6792509B2 (en) 2001-04-19 2004-09-14 International Business Machines Corporation Partitioned cache of multiple logical levels with adaptive reconfiguration based on multiple criteria
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US6947049B2 (en) 2001-06-01 2005-09-20 Nvidia Corporation Method and system for synchronizing updates of vertex data with a graphics processor that is fetching vertex data
US6963954B1 (en) 2001-09-19 2005-11-08 Cisco Technology, Inc. Method and apparatus for optimizing prefetching based on memory addresses
US7127482B2 (en) 2001-11-19 2006-10-24 Intel Corporation Performance optimized approach for efficient downsampling operations
US6598120B1 (en) 2002-03-08 2003-07-22 International Business Machines Corporation Assignment of building block collector agent to receive acknowledgments from other building block agents
US20030204840A1 (en) 2002-04-30 2003-10-30 Youfeng Wu Apparatus and method for one-pass profiling to concurrently generate a frequency profile and a stride profile to enable data prefetching in irregular programs
US7197605B2 (en) 2002-12-30 2007-03-27 Intel Corporation Allocating cache lines
JP2004312584A (ja) * 2003-04-10 2004-11-04 Matsushita Electric Ind Co Ltd 画像処理方法および画像表示システム
US7483031B2 (en) 2003-04-17 2009-01-27 Nvidia Corporation Method for synchronizing graphics processing units
US7373369B2 (en) 2003-06-05 2008-05-13 International Business Machines Corporation Advanced execution of extended floating-point add operations in a narrow dataflow
US7272624B2 (en) 2003-09-30 2007-09-18 International Business Machines Corporation Fused booth encoder multiplexer
JP3807400B2 (ja) 2003-10-30 2006-08-09 ソニー株式会社 記録制御装置および記録制御方法
US7567252B2 (en) * 2003-12-09 2009-07-28 Microsoft Corporation Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
GB2409068A (en) 2003-12-09 2005-06-15 Advanced Risc Mach Ltd Data element size control within parallel lanes of processing
KR100800468B1 (ko) 2004-01-29 2008-02-01 삼성전자주식회사 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
US8253750B1 (en) 2004-02-14 2012-08-28 Nvidia Corporation Digital media processor
US7719540B2 (en) 2004-03-31 2010-05-18 Intel Corporation Render-cache controller for multithreading, multi-core graphics processor
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US7548892B2 (en) 2004-04-30 2009-06-16 Microsoft Corporation Processing machine learning techniques using a graphics processing unit
US7428566B2 (en) 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
US20060101244A1 (en) 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US20060143396A1 (en) 2004-12-29 2006-06-29 Mason Cabot Method for programmer-controlled cache line eviction policy
US20060179092A1 (en) 2005-02-10 2006-08-10 Schmookler Martin S System and method for executing fixed point divide operations using a floating point multiply-add pipeline
US20060248279A1 (en) 2005-05-02 2006-11-02 Al-Sukhni Hassan F Prefetching across a page boundary
US7346741B1 (en) 2005-05-10 2008-03-18 Sun Microsystems, Inc. Memory latency of processors with configurable stride based pre-fetching technique
EP1889178A2 (en) 2005-05-13 2008-02-20 Provost, Fellows and Scholars of the College of the Holy and Undivided Trinity of Queen Elizabeth near Dublin A data processing system and method
US8250348B2 (en) 2005-05-19 2012-08-21 International Business Machines Corporation Methods and apparatus for dynamically switching processor mode
US7861055B2 (en) 2005-06-07 2010-12-28 Broadcom Corporation Method and system for on-chip configurable data ram for fast memory and pseudo associative caches
US20060282620A1 (en) 2005-06-14 2006-12-14 Sujatha Kashyap Weighted LRU for associative caches
US7659899B2 (en) 2005-08-08 2010-02-09 Via Technologies, Inc. System and method to manage data processing stages of a logical graphics pipeline
US20070030277A1 (en) 2005-08-08 2007-02-08 Via Technologies, Inc. Method for processing vertex, triangle, and pixel graphics data packets
US20070198815A1 (en) 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit
US20070074008A1 (en) 2005-09-28 2007-03-29 Donofrio David D Mixed mode floating-point pipeline with extended functions
US7490224B2 (en) 2005-10-07 2009-02-10 International Business Machines Corporation Time-of-life counter design for handling instruction flushes from a queue
TWI366151B (en) 2005-10-14 2012-06-11 Via Tech Inc Multiple graphics processor system and methods
CN101449256B (zh) 2006-04-12 2013-12-25 索夫特机械公司 对载明并行和依赖运算的指令矩阵进行处理的装置和方法
US8510827B1 (en) 2006-05-18 2013-08-13 Vmware, Inc. Taint tracking mechanism for computer security
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US7616206B1 (en) 2006-06-16 2009-11-10 Nvidia Corporation Efficient multi-chip GPU
US8146066B2 (en) 2006-06-20 2012-03-27 Google Inc. Systems and methods for caching compute kernels for an application running on a parallel-processing computer system
US7467280B2 (en) 2006-07-05 2008-12-16 International Business Machines Corporation Method for reconfiguring cache memory based on at least analysis of heat generated during runtime, at least by associating an access bit with a cache line and associating a granularity bit with a cache line in level-2 cache
US8035650B2 (en) 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs
US20080030510A1 (en) 2006-08-02 2008-02-07 Xgi Technology Inc. Multi-GPU rendering system
US8606998B2 (en) 2006-08-24 2013-12-10 Advanced Micro Devices, Inc. System and method for instruction-based cache allocation policies
US7620793B1 (en) 2006-08-28 2009-11-17 Nvidia Corporation Mapping memory partitions to virtual memory pages
US7327289B1 (en) 2006-09-20 2008-02-05 Intel Corporation Data-modifying run length encoder to avoid data expansion
US20080071851A1 (en) 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US8122078B2 (en) 2006-10-06 2012-02-21 Calos Fund, LLC Processor with enhanced combined-arithmetic capability
US20080086598A1 (en) 2006-10-10 2008-04-10 Maron William A System and method for establishing cache priority for critical data structures of an application
US8269727B2 (en) 2007-01-03 2012-09-18 Apple Inc. Irregular input identification
US20080189487A1 (en) 2007-02-06 2008-08-07 Arm Limited Control of cache transactions
GB2447428A (en) 2007-03-15 2008-09-17 Linear Algebra Technologies Lt Processor having a trivial operand register
US7979674B2 (en) * 2007-05-16 2011-07-12 International Business Machines Corporation Re-executing launcher program upon termination of launched programs in MIMD mode booted SIMD partitions
US8781110B2 (en) 2007-06-30 2014-07-15 Intel Corporation Unified system architecture for elliptic-curve cryptography
US7783859B2 (en) 2007-07-12 2010-08-24 Qnx Software Systems Gmbh & Co. Kg Processing system implementing variable page size memory organization
US8990505B1 (en) 2007-09-21 2015-03-24 Marvell International Ltd. Cache memory bank selection
US20100281235A1 (en) 2007-11-17 2010-11-04 Martin Vorbach Reconfigurable floating-point and bit-level data processing unit
US8106914B2 (en) 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US7941633B2 (en) 2007-12-18 2011-05-10 International Business Machines Corporation Hash optimization system and method
US7870339B2 (en) 2008-01-11 2011-01-11 International Business Machines Corporation Extract cache attribute facility and instruction therefore
US20090190432A1 (en) 2008-01-28 2009-07-30 Christoph Bilger DRAM with Page Access
US8429351B1 (en) 2008-03-28 2013-04-23 Emc Corporation Techniques for determining an amount of data to prefetch
US8146064B2 (en) 2008-04-04 2012-03-27 International Business Machines Corporation Dynamically controlling a prefetching range of a software controlled cache
US8633936B2 (en) 2008-04-21 2014-01-21 Qualcomm Incorporated Programmable streaming processor with mixed precision instruction execution
US8078833B2 (en) 2008-05-29 2011-12-13 Axis Semiconductor, Inc. Microprocessor with highly configurable pipeline and executional unit internal hierarchal structures, optimizable for different types of computational functions
US7945768B2 (en) 2008-06-05 2011-05-17 Motorola Mobility, Inc. Method and apparatus for nested instruction looping using implicit predicates
US8340280B2 (en) 2008-06-13 2012-12-25 Intel Corporation Using a single instruction multiple data (SIMD) instruction to speed up galois counter mode (GCM) computations
US8108361B2 (en) 2008-07-31 2012-01-31 Microsoft Corporation Efficient column based data encoding for large-scale data storage
US8041856B2 (en) 2008-09-30 2011-10-18 Lsi Corporation Skip based control logic for first in first out buffer
US8219757B2 (en) 2008-09-30 2012-07-10 Intel Corporation Apparatus and method for low touch cache management
US20100162247A1 (en) 2008-12-19 2010-06-24 Adam Welc Methods and systems for transactional nested parallelism
US8645634B1 (en) 2009-01-16 2014-02-04 Nvidia Corporation Zero-copy data sharing by cooperating asymmetric coprocessors
US20100185816A1 (en) 2009-01-21 2010-07-22 Sauber William F Multiple Cache Line Size
US8266409B2 (en) 2009-03-03 2012-09-11 Qualcomm Incorporated Configurable cache and method to configure same
US8108612B2 (en) 2009-05-15 2012-01-31 Microsoft Corporation Location updates for a distributed data store
US8566801B2 (en) 2009-05-22 2013-10-22 International Business Machines Corporation Concurrent static single assignment for general barrier synchronized parallel programs
US8819359B2 (en) 2009-06-29 2014-08-26 Oracle America, Inc. Hybrid interleaving in memory modules by interleaving physical addresses for a page across ranks in a memory module
US8352945B2 (en) 2009-08-11 2013-01-08 International Business Machines Corporation System, method, and apparatus for scan-sharing for business intelligence queries in an in-memory database
US8615637B2 (en) 2009-09-10 2013-12-24 Advanced Micro Devices, Inc. Systems and methods for processing memory requests in a multi-processor system using a probe engine
US8364739B2 (en) 2009-09-30 2013-01-29 International Business Machines Corporation Sparse matrix-vector multiplication on graphics processor units
US8103910B2 (en) 2009-11-13 2012-01-24 International Business Machines Corporation Local rollback for fault-tolerance in parallel computing systems
US8984043B2 (en) 2009-12-23 2015-03-17 Intel Corporation Multiplying and adding matrices
US8669990B2 (en) 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
GB2476800A (en) 2010-01-07 2011-07-13 Linear Algebra Technologies Ltd Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations
US20110208505A1 (en) 2010-02-24 2011-08-25 Advanced Micro Devices, Inc. Assigning floating-point operations to a floating-point unit and an arithmetic logic unit
US8572322B2 (en) 2010-03-29 2013-10-29 Freescale Semiconductor, Inc. Asynchronously scheduling memory access requests
US20110249744A1 (en) 2010-04-12 2011-10-13 Neil Bailey Method and System for Video Processing Utilizing N Scalar Cores and a Single Vector Core
US8677613B2 (en) 2010-05-20 2014-03-25 International Business Machines Corporation Enhanced modularity in heterogeneous 3D stacks
US8812575B2 (en) 2010-07-06 2014-08-19 Silminds, Llc, Egypt Decimal floating-point square-root unit using Newton-Raphson iterations
CN201927837U (zh) 2010-08-10 2011-08-10 富士康(昆山)电脑接插件有限公司 连接器模组
US20120059983A1 (en) 2010-09-03 2012-03-08 David Wilkins Nellans Predictor-based management of dram row-buffers
US8682639B2 (en) 2010-09-21 2014-03-25 Texas Instruments Incorporated Dedicated memory window for emulation address
US8982140B2 (en) 2010-09-24 2015-03-17 Nvidia Corporation Hierarchical memory addressing
US8667042B2 (en) 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US9965395B2 (en) 2010-09-28 2018-05-08 Texas Instruments Incorporated Memory attribute sharing between differing cache levels of multilevel cache
US8488055B2 (en) 2010-09-30 2013-07-16 Apple Inc. Flash synchronization using image sensor interface timing signal
US8745111B2 (en) 2010-11-16 2014-06-03 Apple Inc. Methods and apparatuses for converting floating point representations
US8847965B2 (en) 2010-12-03 2014-09-30 The University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for fast geometric sound propagation using visibility computations
GB2488985A (en) 2011-03-08 2012-09-19 Advanced Risc Mach Ltd Mixed size data processing operation with integrated operand conversion instructions
US8862653B2 (en) 2011-04-26 2014-10-14 University Of South Carolina System and method for sparse matrix vector multiplication processing
FR2974645A1 (fr) 2011-04-28 2012-11-02 Kalray Operateur de multiplication et addition fusionnees a precision mixte
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
JP5813380B2 (ja) 2011-06-03 2015-11-17 株式会社東芝 半導体記憶装置
US9032156B2 (en) 2011-07-06 2015-05-12 Advanced Micro Devices, Inc. Memory access monitor
CN102214160B (zh) 2011-07-08 2013-04-17 中国科学技术大学 一种基于龙芯3a的单精度矩阵乘法优化方法
US9529712B2 (en) 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types
US9727336B2 (en) 2011-09-16 2017-08-08 International Business Machines Corporation Fine-grained instruction enablement at sub-function granularity based on an indicated subrange of registers
US20130099946A1 (en) 2011-10-21 2013-04-25 International Business Machines Corporation Data Compression Utilizing Variable and Limited Length Codes
US8935478B2 (en) 2011-11-01 2015-01-13 International Business Machines Corporation Variable cache line size management
US20130141442A1 (en) 2011-12-06 2013-06-06 John W. Brothers Method and apparatus for multi-chip processing
US20130148947A1 (en) 2011-12-13 2013-06-13 Ati Technologies Ulc Video player with multiple grpahics processors
US9021237B2 (en) 2011-12-20 2015-04-28 International Business Machines Corporation Low latency variable transfer network communicating variable written to source processing core variable register allocated to destination thread to destination processing core variable register allocated to source thread
CN103975302B (zh) 2011-12-22 2017-10-27 英特尔公司 矩阵乘法累加指令
US20130254491A1 (en) 2011-12-22 2013-09-26 James A. Coleman Controlling a processor cache using a real-time attribute
CN104011664B (zh) 2011-12-23 2016-12-28 英特尔公司 使用三个标量项的超级乘加(超级madd)指令
EP2798457B1 (en) 2011-12-29 2019-03-06 Intel Corporation Dot product processors, methods, systems, and instructions
US20130185515A1 (en) 2012-01-16 2013-07-18 Qualcomm Incorporated Utilizing Negative Feedback from Unexpected Miss Addresses in a Hardware Prefetcher
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
CN104106053B (zh) 2012-02-08 2018-12-11 英特尔公司 使用功率的动态cpu gpu负载平衡
US20130218938A1 (en) 2012-02-17 2013-08-22 Qualcomm Incorporated Floating-point adder with operand shifting based on a predicted exponent difference
US20130219088A1 (en) 2012-02-22 2013-08-22 Lsi Corporation Configurable prioritization of data transmission in a data storage topology
US9036710B2 (en) 2012-03-08 2015-05-19 Blackberry Limited Unified transform coefficient encoding and decoding
US9183664B2 (en) 2012-05-03 2015-11-10 Apple Inc. Tiled forward shading with improved depth filtering
US8775762B2 (en) 2012-05-07 2014-07-08 Advanced Micro Devices, Inc. Method and apparatus for batching memory requests
JP5826114B2 (ja) 2012-05-25 2015-12-02 クラリオン株式会社 データ解凍装置、データ圧縮装置、データの解凍プログラム、データの圧縮プログラム、及び、圧縮データ配信システム
CN104583942B (zh) 2012-06-15 2018-02-13 英特尔公司 乱序加载的基于锁的和基于同步的方法
US9213523B2 (en) 2012-06-29 2015-12-15 Intel Corporation Double rounded combined floating-point multiply and add
US8892619B2 (en) 2012-07-24 2014-11-18 The Board Of Trustees Of The Leland Stanford Junior University Floating-point multiply-add unit using cascade design
US9128845B2 (en) 2012-07-30 2015-09-08 Hewlett-Packard Development Company, L.P. Dynamically partition a volatile memory for a cache and a memory partition
CN103581052B (zh) 2012-08-02 2017-07-21 华为技术有限公司 一种数据处理方法、路由器及ndn系统
JP6007667B2 (ja) 2012-08-17 2016-10-12 富士通株式会社 情報処理装置、情報処理方法、及び情報処理プログラム
US9298456B2 (en) 2012-08-21 2016-03-29 Apple Inc. Mechanism for performing speculative predicated instructions
US10346095B2 (en) 2012-08-31 2019-07-09 Sandisk Technologies, Llc Systems, methods, and interfaces for adaptive cache persistence
US9292428B2 (en) * 2012-09-05 2016-03-22 Kabushiki Kaisha Toshiba Memory system
US20140075163A1 (en) 2012-09-07 2014-03-13 Paul N. Loewenstein Load-monitor mwait
US9134954B2 (en) 2012-09-10 2015-09-15 Qualcomm Incorporated GPU memory buffer pre-fetch and pre-back signaling to avoid page-fault
US9146846B2 (en) * 2012-09-14 2015-09-29 Advanced Micro Devices, Inc. Programmable physical address mapping for memory
US10742475B2 (en) 2012-12-05 2020-08-11 Origin Wireless, Inc. Method, apparatus, and system for object tracking sensing using broadcasting
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US9305045B1 (en) * 2012-10-02 2016-04-05 Teradata Us, Inc. Data-temperature-based compression in a database system
US9626294B2 (en) 2012-10-03 2017-04-18 International Business Machines Corporation Performance-driven cache line memory access
US9317482B2 (en) 2012-10-14 2016-04-19 Microsoft Technology Licensing, Llc Universal FPGA/ASIC matrix-vector multiplication architecture
US9152382B2 (en) 2012-10-31 2015-10-06 Intel Corporation Reducing power consumption in a fused multiply-add (FMA) unit responsive to input data values
US11150721B2 (en) 2012-11-07 2021-10-19 Nvidia Corporation Providing hints to an execution unit to prepare for predicted subsequent arithmetic operations
US9170955B2 (en) 2012-11-27 2015-10-27 Intel Corporation Providing extended cache replacement state information
US9183144B2 (en) 2012-12-14 2015-11-10 Intel Corporation Power gating a portion of a cache memory
US20140173203A1 (en) 2012-12-18 2014-06-19 Andrew T. Forsyth Block Memory Engine
US9558006B2 (en) 2012-12-20 2017-01-31 Intel Corporation Continuous automatic tuning of code regions
US10289418B2 (en) 2012-12-27 2019-05-14 Nvidia Corporation Cooperative thread array granularity context switch during trap handling
US9384368B2 (en) 2012-12-28 2016-07-05 Intel Corporation Instruction and logic for mid-level caching of random numbers distributed to multiple units
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9298457B2 (en) 2013-01-22 2016-03-29 Altera Corporation SIMD instructions for data compression and decompression
US9971710B2 (en) 2013-02-07 2018-05-15 Microsoft Technology Licensing, Llc Optimizing data transfers between heterogeneous memory arenas
US9329870B2 (en) 2013-02-13 2016-05-03 International Business Machines Corporation Extensible execution unit interface architecture with multiple decode logic and multiple execution units
US9122613B2 (en) 2013-03-07 2015-09-01 Arm Limited Prefetching of data and instructions in a data processing apparatus
US9940286B2 (en) 2013-03-14 2018-04-10 Nvidia Corporation PCIE traffic tracking hardware in a unified virtual memory system
US10133677B2 (en) 2013-03-14 2018-11-20 Nvidia Corporation Opportunistic migration of memory pages in a unified virtual memory system
US9478066B2 (en) 2013-03-14 2016-10-25 Nvidia Corporation Consistent vertex snapping for variable resolution rendering
US9525586B2 (en) 2013-03-15 2016-12-20 Intel Corporation QoS based binary translation and application streaming
US9153539B2 (en) 2013-03-15 2015-10-06 Nvidia Corporation Ground-referenced single-ended signaling connected graphics processing unit multi-chip module
US9176895B2 (en) 2013-03-16 2015-11-03 Intel Corporation Increased error correction for cache memories through adaptive replacement policies
US9311721B1 (en) * 2013-04-04 2016-04-12 Sandia Corporation Graphics processing unit-assisted lossless decompression
KR20140126189A (ko) 2013-04-22 2014-10-30 삼성전자주식회사 프로세서의 멀티 실행 모드 지원 장치 및 방법
US9594595B2 (en) 2013-05-17 2017-03-14 Advanced Micro Devices, Inc. Efficient processor load balancing using predication flags
GB2514397B (en) 2013-05-23 2017-10-11 Linear Algebra Tech Ltd Corner detection
WO2014190263A2 (en) 2013-05-24 2014-11-27 Coherent Logix, Incorporated Memory-network processor with programmable optimizations
US9436600B2 (en) 2013-06-11 2016-09-06 Svic No. 28 New Technology Business Investment L.L.P. Non-volatile memory storage for multi-channel memory system
US9378127B2 (en) 2013-06-21 2016-06-28 Intel Corporation Dynamic memory page policy
US10963255B2 (en) 2013-07-15 2021-03-30 Texas Instruments Incorporated Implied fence on stream open
US9264066B2 (en) 2013-07-30 2016-02-16 Apple Inc. Type conversion using floating-point unit
US9946666B2 (en) 2013-08-06 2018-04-17 Nvidia Corporation Coalescing texture access and load/store operations
US9092345B2 (en) 2013-08-08 2015-07-28 Arm Limited Data processing systems
US9710380B2 (en) 2013-08-29 2017-07-18 Intel Corporation Managing shared cache by multi-core processor
JP2015103077A (ja) * 2013-11-26 2015-06-04 富士通株式会社 演算処理装置、情報処理装置、及び、情報処理装置の制御方法
TWI676898B (zh) 2013-12-09 2019-11-11 安然國際科技有限公司 分散式記憶體磁碟群集儲存系統運作方法
US9461667B2 (en) 2013-12-30 2016-10-04 Samsung Electronics Co., Ltd. Rounding injection scheme for floating-point to integer conversion
US20150193358A1 (en) 2014-01-06 2015-07-09 Nvidia Corporation Prioritized Memory Reads
US10528357B2 (en) 2014-01-17 2020-01-07 L3 Technologies, Inc. Web-based recorder configuration utility
US20150205724A1 (en) 2014-01-20 2015-07-23 Honeywell International Inc. System and method of cache partitioning for processors with limited cached memory pools
US9471497B2 (en) * 2014-01-24 2016-10-18 Netapp, Inc. Methods for combining access history and sequentiality for intelligent prefetching and devices thereof
KR102100161B1 (ko) 2014-02-04 2020-04-14 삼성전자주식회사 Gpu 데이터 캐싱 방법 및 그에 따른 데이터 프로세싱 시스템
US9391771B2 (en) 2014-02-06 2016-07-12 Empire Technology Development Llc Server-client secret generation with cached data
US9275429B2 (en) 2014-02-17 2016-03-01 Qualcomm Incorporated Device hang detection and recovery
KR20150106132A (ko) 2014-03-11 2015-09-21 삼성전자주식회사 전자 장치의 캐시 메모리 제어 방법 및 장치
US9720667B2 (en) 2014-03-21 2017-08-01 Intel Corporation Automatic loop vectorization using hardware transactional memory
US20150268963A1 (en) 2014-03-23 2015-09-24 Technion Research & Development Foundation Ltd. Execution of data-parallel programs on coarse-grained reconfigurable architecture hardware
US9436972B2 (en) 2014-03-27 2016-09-06 Intel Corporation System coherency in a distributed graphics processor hierarchy
EP2937794B1 (en) 2014-04-22 2016-08-17 DataVard GmbH Method and system for archiving digital data
US9690696B1 (en) 2014-05-14 2017-06-27 Western Digital Technologies, Inc. Lifetime extension of memory for data storage system
US9673998B2 (en) 2014-05-15 2017-06-06 Futurewei Technologies, Inc. Differential cache for representational state transfer (REST) API
JP6248808B2 (ja) 2014-05-22 2017-12-20 富士通株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム
KR102192956B1 (ko) 2014-06-23 2020-12-18 삼성전자주식회사 디스플레이 장치 및 그 제어 방법
US10061592B2 (en) 2014-06-27 2018-08-28 Samsung Electronics Co., Ltd. Architecture and execution for efficient mixed precision computations in single instruction multiple data/thread (SIMD/T) devices
US9520192B2 (en) 2014-06-30 2016-12-13 Intel Corporation Resistive memory write operation with merged reset
US20150378920A1 (en) 2014-06-30 2015-12-31 John G. Gierach Graphics data pre-fetcher for last level caches
US10032244B2 (en) 2014-08-21 2018-07-24 Intel Corporation Method and apparatus for implementing a nearest neighbor search on a graphics processing unit (GPU)
US10223333B2 (en) 2014-08-29 2019-03-05 Nvidia Corporation Performing multi-convolution operations in a parallel processing system
JP2016057831A (ja) 2014-09-09 2016-04-21 株式会社東芝 浮動小数点演算装置、及び情報処理システム
US10096086B2 (en) 2014-09-10 2018-10-09 Nvidia Corporation Enhanced anti-aliasing by varying sample patterns spatially and/or temporally
KR102263326B1 (ko) 2014-09-18 2021-06-09 삼성전자주식회사 그래픽 프로세싱 유닛 및 이를 이용한 그래픽 데이터 처리 방법
US9928076B2 (en) 2014-09-26 2018-03-27 Intel Corporation Method and apparatus for unstructured control flow for SIMD execution engine
US9983884B2 (en) 2014-09-26 2018-05-29 Intel Corporation Method and apparatus for SIMD structured branching
US20160092118A1 (en) 2014-09-26 2016-03-31 Intel Corporation Memory write management in a computer system
CN104407836B (zh) 2014-10-14 2017-05-31 中国航天科技集团公司第九研究院第七七一研究所 利用定点乘法器进行级联乘累加运算的装置和方法
JP2016091242A (ja) 2014-10-31 2016-05-23 富士通株式会社 キャッシュメモリ、キャッシュメモリへのアクセス方法及び制御プログラム
US20160124709A1 (en) 2014-11-04 2016-05-05 International Business Machines Corporation Fast, energy-efficient exponential computations in simd architectures
US10282227B2 (en) 2014-11-18 2019-05-07 Intel Corporation Efficient preemption for graphics processors
US9491112B1 (en) 2014-12-10 2016-11-08 Amazon Technologies, Inc. Allocating processor resources based on a task identifier
US10956617B2 (en) * 2014-12-12 2021-03-23 Coresecure Technologies, Llc Systems and methods for random fill caching and prefetching for secure cache memories
US9811468B2 (en) 2014-12-14 2017-11-07 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
US9910785B2 (en) 2014-12-14 2018-03-06 Via Alliance Semiconductor Co., Ltd Cache memory budgeted by ways based on memory access type
US9898411B2 (en) 2014-12-14 2018-02-20 Via Alliance Semiconductor Co., Ltd. Cache memory budgeted by chunks based on memory access type
US9928034B2 (en) 2014-12-17 2018-03-27 Nvidia Corporation Work-efficient, load-balanced, merge-based parallelized consumption of sequences of sequences
US9766892B2 (en) 2014-12-23 2017-09-19 Intel Corporation Method and apparatus for efficient execution of nested branches on a graphics processor unit
FR3030846B1 (fr) 2014-12-23 2017-12-29 Commissariat Energie Atomique Representation semantique du contenu d'une image
US9710228B2 (en) 2014-12-29 2017-07-18 Imagination Technologies Limited Unified multiply unit
US9304835B1 (en) 2014-12-31 2016-04-05 International Business Machines Corporation Optimized system for analytics (graphs and sparse matrices) operations
US20170061279A1 (en) 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
US9971686B2 (en) 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
US20160255169A1 (en) 2015-02-27 2016-09-01 Futurewei Technologies, Inc. Method and system for smart object eviction for proxy cache
US10002455B2 (en) 2015-04-20 2018-06-19 Intel Corporation Optimized depth buffer cache apparatus and method
US9626299B2 (en) 2015-05-01 2017-04-18 Intel Corporation Changing a hash function based on a conflict ratio associated with cache sets
US10262259B2 (en) 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
US10379865B1 (en) 2015-05-20 2019-08-13 Marvell International Ltd. Selection of instructions to be issued
US10049322B2 (en) 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US9804666B2 (en) 2015-05-26 2017-10-31 Samsung Electronics Co., Ltd. Warp clustering
US20160378465A1 (en) 2015-06-23 2016-12-29 Intel Corporation Efficient sparse array handling in a processor
GB2540761B (en) 2015-07-23 2017-12-06 Advanced Risc Mach Ltd Cache usage estimation
KR20170014109A (ko) 2015-07-29 2017-02-08 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US20170039144A1 (en) 2015-08-07 2017-02-09 Intel Corporation Loading data using sub-thread information in a processor
WO2017049496A1 (en) 2015-09-23 2017-03-30 Intel Corporation Apparatus and method for local quantization for convolutional neural networks (cnns)
US10423354B2 (en) 2015-09-23 2019-09-24 Advanced Micro Devices, Inc. Selective data copying between memory modules
US11068401B2 (en) 2015-09-25 2021-07-20 Intel Corporation Method and apparatus to improve shared memory efficiency
US10423411B2 (en) 2015-09-26 2019-09-24 Intel Corporation Data element comparison processors, methods, systems, and instructions
US10042749B2 (en) 2015-11-10 2018-08-07 International Business Machines Corporation Prefetch insensitive transactional memory
US10387309B2 (en) 2015-10-14 2019-08-20 Elastifile Ltd. High-performance distributed caching
KR101843243B1 (ko) 2015-10-30 2018-03-29 세종대학교산학협력단 제로값을 피연산자로 갖는 연산자에 대한 연산을 스킵하는 연산 방법 및 연산 장치
US9558156B1 (en) 2015-11-24 2017-01-31 International Business Machines Corporation Sparse matrix multiplication using a single field programmable gate array module
CN106886429B (zh) 2015-12-16 2020-11-06 华为技术有限公司 一种加载驱动程序的方法和服务器
US20170177336A1 (en) 2015-12-22 2017-06-22 Intel Corporation Hardware cancellation monitor for floating point operations
US9996320B2 (en) 2015-12-23 2018-06-12 Intel Corporation Fused multiply-add (FMA) low functional unit
KR102604737B1 (ko) 2016-01-11 2023-11-22 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
US10762164B2 (en) 2016-01-20 2020-09-01 Cambricon Technologies Corporation Limited Vector and matrix computing device
US20170214930A1 (en) 2016-01-26 2017-07-27 Sandia Corporation Gpu-assisted lossless data compression
US11017022B2 (en) * 2016-01-28 2021-05-25 Subply Solutions Ltd. Method and system for providing audio content
KR20180114114A (ko) * 2016-02-12 2018-10-17 도요보 가부시키가이샤 의복형 전자 기기, 및 의복형 전자 기기의 제조방법
US20170323042A1 (en) 2016-05-04 2017-11-09 Chengdu Haicun Ip Technology Llc Simulation Processor with Backside Look-Up Table
US9778871B1 (en) 2016-03-27 2017-10-03 Qualcomm Incorporated Power-reducing memory subsystem having a system cache and local resource management
US20170308800A1 (en) 2016-04-26 2017-10-26 Smokescreen Intelligence, LLC Interchangeable Artificial Intelligence Perception Systems and Methods
CN111651205B (zh) 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
US10509732B2 (en) 2016-04-27 2019-12-17 Advanced Micro Devices, Inc. Selecting cache aging policy for prefetches based on cache test regions
US9846579B1 (en) 2016-06-13 2017-12-19 Apple Inc. Unified integer and floating-point compare circuitry
US10176099B2 (en) 2016-07-11 2019-01-08 Intel Corporation Using data pattern to mark cache lines as invalid
JP6665720B2 (ja) 2016-07-14 2020-03-13 富士通株式会社 情報処理装置、コンパイルプログラム、コンパイル方法、およびキャッシュ制御方法
US20180018266A1 (en) 2016-07-18 2018-01-18 Advanced Micro Devices, Inc. Stride prefetcher for inconsistent strides
US10390114B2 (en) 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
CN107689828B (zh) 2016-08-04 2019-12-24 柯莉娟 以无人机复原飞行器内通信传输功能的方法
US10229470B2 (en) 2016-08-05 2019-03-12 Intel IP Corporation Mechanism to accelerate graphics workloads in a multi-core computing architecture
US10528864B2 (en) 2016-08-11 2020-01-07 Nvidia Corporation Sparse convolutional neural network accelerator
US10242311B2 (en) 2016-08-11 2019-03-26 Vivante Corporation Zero coefficient skipping convolution neural network engine
US10891538B2 (en) 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US10467195B2 (en) 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
US20180107602A1 (en) 2016-10-13 2018-04-19 Intel Corporation Latency and Bandwidth Efficiency Improvement for Read Modify Write When a Read Operation is Requested to a Partially Modified Write Only Cacheline
US11315018B2 (en) 2016-10-21 2022-04-26 Nvidia Corporation Systems and methods for pruning neural networks for resource efficient inference
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
KR20180050124A (ko) * 2016-11-04 2018-05-14 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
US10216479B2 (en) 2016-12-06 2019-02-26 Arm Limited Apparatus and method for performing arithmetic operations to accumulate floating-point numbers
US10452551B2 (en) 2016-12-12 2019-10-22 Intel Corporation Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register
CN106683036A (zh) 2016-12-12 2017-05-17 中国航空工业集团公司西安航空计算技术研究所 一种面向gpu高效绘制的帧缓冲区存储编码方法
KR102712155B1 (ko) 2016-12-15 2024-09-30 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
US20180173623A1 (en) 2016-12-21 2018-06-21 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compressed memory system to avoid stalling write operations
US10521389B2 (en) 2016-12-23 2019-12-31 Ati Technologies Ulc Method and apparatus for accessing non-volatile memory as byte addressable memory
US20180183577A1 (en) 2016-12-28 2018-06-28 Intel Corporation Techniques for secure message authentication with unified hardware acceleration
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
BR112019010679A2 (pt) 2016-12-31 2019-09-17 Intel Corp sistemas, métodos e aparelhos para computação heterogênea
US10146738B2 (en) 2016-12-31 2018-12-04 Intel Corporation Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data
KR102637736B1 (ko) * 2017-01-04 2024-02-19 삼성전자주식회사 그래픽스 처리 방법 및 시스템
US20180210836A1 (en) * 2017-01-24 2018-07-26 Microsoft Technology Licensing, Llc Thermal and reliability based cache slice migration
US10394719B2 (en) 2017-01-25 2019-08-27 Samsung Electronics Co., Ltd. Refresh aware replacement policy for volatile memory cache
US11397687B2 (en) 2017-01-25 2022-07-26 Samsung Electronics Co., Ltd. Flash-integrated high bandwidth memory appliance
US10430912B2 (en) 2017-02-14 2019-10-01 Qualcomm Incorporated Dynamic shader instruction nullification for graphics processing
GB2560159B (en) 2017-02-23 2019-12-25 Advanced Risc Mach Ltd Widening arithmetic in a data processing apparatus
US10409887B1 (en) 2017-02-28 2019-09-10 Ambarella, Inc. Generalized dot product for computer vision applications
KR102499396B1 (ko) 2017-03-03 2023-02-13 삼성전자 주식회사 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치의 동작 방법
US10198369B2 (en) 2017-03-24 2019-02-05 Advanced Micro Devices, Inc. Dynamic memory remapping to reduce row-buffer conflicts
US10209890B2 (en) 2017-03-28 2019-02-19 International Business Machines Corporation Near memory accelerator
US10303602B2 (en) 2017-03-31 2019-05-28 Advanced Micro Devices, Inc. Preemptive cache management policies for processing units
US10229059B2 (en) 2017-03-31 2019-03-12 Intel Corporation Dynamic fill policy for a shared cache
US10595039B2 (en) * 2017-03-31 2020-03-17 Nvidia Corporation System and method for content and motion controlled action video generation
US10423415B2 (en) * 2017-04-01 2019-09-24 Intel Corporation Hierarchical general register file (GRF) for execution block
US10503652B2 (en) 2017-04-01 2019-12-10 Intel Corporation Sector cache for compression
US10304421B2 (en) 2017-04-07 2019-05-28 Intel Corporation Apparatus and method for remote display and content protection in a virtualized graphics processing environment
US10861216B2 (en) 2017-04-07 2020-12-08 Intel Corporation Ray tracing apparatus and method for memory access and register operations
US20180300258A1 (en) 2017-04-13 2018-10-18 Futurewei Technologies, Inc. Access rank aware cache replacement policy
US10417731B2 (en) * 2017-04-24 2019-09-17 Intel Corporation Compute optimization mechanism for deep neural networks
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10409614B2 (en) 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
US10186011B2 (en) 2017-04-28 2019-01-22 Intel Corporation Programmable coarse grained and sparse matrix compute hardware with advanced scheduling
US10776699B2 (en) 2017-05-05 2020-09-15 Intel Corporation Optimized compute hardware for machine learning operations
US11488008B2 (en) 2017-05-05 2022-11-01 Intel Corporation Hardware implemented point to point communication primitives for machine learning
US10338919B2 (en) 2017-05-08 2019-07-02 Nvidia Corporation Generalized acceleration of matrix multiply accumulate operations
WO2018213635A1 (en) 2017-05-17 2018-11-22 Google Llc Low latency matrix multiply unit
TWI807539B (zh) 2017-05-17 2023-07-01 美商谷歌有限責任公司 用於執行矩陣乘法之方法、硬體電路、運算系統及電腦儲存媒體
US20180336136A1 (en) 2017-05-17 2018-11-22 Qualcomm Incorporated Input/output-coherent Look-ahead Cache Access
US10102015B1 (en) 2017-06-22 2018-10-16 Microsoft Technology Licensing, Llc Just in time GPU executed program cross compilation
US10282299B2 (en) 2017-06-23 2019-05-07 Cavium, Llc Managing cache partitions based on cache usage information
US10984049B2 (en) 2017-06-27 2021-04-20 Nvidia Corporation Performing traversal stack compression
US10969740B2 (en) 2017-06-27 2021-04-06 Nvidia Corporation System and method for near-eye light field rendering for wide field of view interactive three-dimensional computer graphics
US10331558B2 (en) 2017-07-28 2019-06-25 Apple Inc. Systems and methods for performing memory compression
US10614613B2 (en) 2017-07-28 2020-04-07 Nvidia Corporation Reducing noise during rendering by performing parallel path space filtering utilizing hashing
US10990648B2 (en) 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
US10545860B2 (en) 2017-08-10 2020-01-28 Samsung Electronics Co., Ltd. Intelligent high bandwidth memory appliance
US10394456B2 (en) 2017-08-23 2019-08-27 Micron Technology, Inc. On demand memory page size
US11232531B2 (en) 2017-08-29 2022-01-25 Intel Corporation Method and apparatus for efficient loop processing in a graphics hardware front end
US10691572B2 (en) * 2017-08-30 2020-06-23 Nvidia Corporation Liveness as a factor to evaluate memory vulnerability to soft errors
US10725740B2 (en) 2017-08-31 2020-07-28 Qualcomm Incorporated Providing efficient multiplication of sparse matrices in matrix-processor-based devices
US10503507B2 (en) 2017-08-31 2019-12-10 Nvidia Corporation Inline data inspection for workload simplification
US10943171B2 (en) 2017-09-01 2021-03-09 Facebook, Inc. Sparse neural network training optimization
US10503520B2 (en) 2017-09-26 2019-12-10 Intel Corporation Automatic waking of power domains for graphics configuration requests
US10782904B2 (en) 2017-09-28 2020-09-22 Intel Corporation Host computing arrangement, remote server arrangement, storage system and methods thereof
US10692244B2 (en) 2017-10-06 2020-06-23 Nvidia Corporation Learning based camera pose estimation from images of an environment
KR20190042193A (ko) * 2017-10-16 2019-04-24 현대건설주식회사 피씨 더블월을 이용한 벽체 구조물의 시공방법
US11222256B2 (en) 2017-10-17 2022-01-11 Xilinx, Inc. Neural network processing system having multiple processors and a neural network accelerator
GB2569844B (en) 2017-10-20 2021-01-06 Graphcore Ltd Sending data off-chip
GB2569098B (en) 2017-10-20 2020-01-08 Graphcore Ltd Combining states of multiple threads in a multi-threaded processor
GB2569274B (en) 2017-10-20 2020-07-15 Graphcore Ltd Synchronization amongst processor tiles
GB2569271B (en) 2017-10-20 2020-05-13 Graphcore Ltd Synchronization with a host processor
US11651223B2 (en) 2017-10-27 2023-05-16 Baidu Usa Llc Systems and methods for block-sparse recurrent neural networks
KR102414047B1 (ko) 2017-10-30 2022-06-29 에스케이하이닉스 주식회사 통합 메모리 디바이스 및 그의 동작 방법
US10762137B1 (en) 2017-11-15 2020-09-01 Amazon Technologies, Inc. Page table search engine
US10762620B2 (en) 2017-11-27 2020-09-01 Nvidia Corporation Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene
US11977974B2 (en) 2017-11-30 2024-05-07 International Business Machines Corporation Compression of fully connected / recurrent layers of deep network(s) through enforcing spatial locality to weight matrices and effecting frequency compression
US11294810B2 (en) 2017-12-12 2022-04-05 Advanced Micro Devices, Inc. Memory request throttling to constrain memory bandwidth utilization
US10579535B2 (en) 2017-12-15 2020-03-03 Intel Corporation Defragmented and efficient micro-operation cache
EP3789871B1 (en) 2017-12-27 2023-06-07 Cambricon Technologies Corporation Limited Integrated circuit chip device
US10482156B2 (en) 2017-12-29 2019-11-19 Facebook, Inc. Sparsity-aware hardware accelerators
KR102533241B1 (ko) 2018-01-25 2023-05-16 삼성전자주식회사 적응적으로 캐시 일관성을 제어하도록 구성된 이종 컴퓨팅 시스템
US10970080B2 (en) 2018-02-08 2021-04-06 Marvell Asia Pte, Ltd. Systems and methods for programmable hardware architecture for machine learning
WO2019157442A1 (en) 2018-02-09 2019-08-15 Google Llc Contiguous sparsity pattern neural networks
US10755201B2 (en) 2018-02-14 2020-08-25 Lucid Circuit, Inc. Systems and methods for data collection and analysis at the edge
JP2019148969A (ja) 2018-02-27 2019-09-05 富士通株式会社 行列演算装置、行列演算方法および行列演算プログラム
US20190278593A1 (en) 2018-03-09 2019-09-12 Nvidia Corporation Accelerating linear algebra kernels for any processor architecture
US20190278600A1 (en) 2018-03-09 2019-09-12 Nvidia Corporation Tiled compressed sparse matrix format
US10678508B2 (en) 2018-03-23 2020-06-09 Amazon Technologies, Inc. Accelerated quantized multiply-and-add operations
US10572568B2 (en) 2018-03-28 2020-02-25 Intel Corporation Accelerator for sparse-dense matrix multiplication
WO2019197661A1 (en) 2018-04-13 2019-10-17 Koninklijke Kpn N.V. Frame-level super-resolution-based video coding
US11010092B2 (en) 2018-05-09 2021-05-18 Micron Technology, Inc. Prefetch signaling in memory system or sub-system
US10572409B1 (en) 2018-05-10 2020-02-25 Xilinx, Inc. Sparse matrix processing circuitry
US11269805B2 (en) 2018-05-15 2022-03-08 Intel Corporation Signal pathways in multi-tile processors
GB2574060B (en) 2018-05-25 2022-11-23 Myrtle Software Ltd Processing matrix vector multiplication
US10838864B2 (en) 2018-05-30 2020-11-17 Advanced Micro Devices, Inc. Prioritizing local and remote memory access in a non-uniform memory access architecture
US10699468B2 (en) 2018-06-09 2020-06-30 Adshir Ltd. Method for non-planar specular reflections in hybrid ray tracing
US10620951B2 (en) 2018-06-22 2020-04-14 Intel Corporation Matrix multiplication acceleration of sparse matrices using column folding and squeezing
US12099912B2 (en) 2018-06-22 2024-09-24 Samsung Electronics Co., Ltd. Neural processor
CN110795228B (zh) 2018-08-03 2023-08-25 伊姆西Ip控股有限责任公司 用于训练深度学习模型的方法和制品、以及计算系统
CN113190791A (zh) 2018-08-06 2021-07-30 华为技术有限公司 矩阵的处理方法、装置及逻辑电路
EP3608828A1 (de) 2018-08-09 2020-02-12 Olympus Soft Imaging Solutions GmbH Verfahren zur bereitstellung eines auswertungsmittels für wenigstens ein optisches anwendungssystem einer mikroskopischen anwendungstechnologie
KR20200022118A (ko) 2018-08-22 2020-03-03 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US20190042457A1 (en) 2018-08-22 2019-02-07 Intel Corporation Cache (partition) size determination method and apparatus
US11833681B2 (en) 2018-08-24 2023-12-05 Nvidia Corporation Robotic control system
US10846241B2 (en) 2018-08-29 2020-11-24 Vmware, Inc. Score-based cache admission and eviction
US11093248B2 (en) * 2018-09-10 2021-08-17 International Business Machines Corporation Prefetch queue allocation protection bubble in a processor
US10817426B2 (en) 2018-09-24 2020-10-27 Arm Limited Prefetching techniques
US10769070B2 (en) 2018-09-25 2020-09-08 Arm Limited Multiple stride prefetching
US20200098725A1 (en) 2018-09-26 2020-03-26 Intel Corporation Semiconductor package or semiconductor package structure with dual-sided interposer and memory
US11294626B2 (en) 2018-09-27 2022-04-05 Intel Corporation Floating-point dynamic range expansion
US10853067B2 (en) 2018-09-27 2020-12-01 Intel Corporation Computer processor for higher precision computations using a mixed-precision decomposition of operations
WO2020061992A1 (en) 2018-09-28 2020-04-02 Intel Corporation Translation lookaside buffer to implement adapative page size
US11307863B1 (en) 2018-10-08 2022-04-19 Nvidia Corporation Graphics processing unit systems for performing data analytics operations in data science
WO2020073211A1 (zh) 2018-10-09 2020-04-16 华为技术有限公司 运算加速器、处理方法及相关设备
US11263529B2 (en) 2018-10-10 2022-03-01 Google Llc Modifying machine learning models to improve locality
GB2578097B (en) 2018-10-15 2021-02-17 Advanced Risc Mach Ltd Cache control circuitry and methods
US10768895B2 (en) 2018-11-08 2020-09-08 Movidius Limited Dot product calculators and methods of operating the same
US11366663B2 (en) * 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
US10963246B2 (en) 2018-11-09 2021-03-30 Intel Corporation Systems and methods for performing 16-bit floating-point matrix dot product instructions
GB2579590B (en) 2018-12-04 2021-10-13 Imagination Tech Ltd Workload repetition redundancy
US20200175074A1 (en) 2018-12-04 2020-06-04 Vmware, Inc. Tree structure aware cache eviction policy
US11615307B2 (en) 2018-12-06 2023-03-28 MIPS Tech, LLC Neural network data computation using mixed-precision
US20200202195A1 (en) 2018-12-06 2020-06-25 MIPS Tech, LLC Neural network processing using mixed-precision data representation
US11893470B2 (en) 2018-12-06 2024-02-06 MIPS Tech, LLC Neural network processing using specialized data representation
GB2580151B (en) 2018-12-21 2021-02-24 Graphcore Ltd Identifying processing units in a processor
GB2580316B (en) 2018-12-27 2021-02-24 Graphcore Ltd Instruction cache in a multi-threaded processor
US10937225B2 (en) 2018-12-28 2021-03-02 Intel Corporation Cell primitive for unstructured volume rendering
US10909741B2 (en) 2018-12-28 2021-02-02 Intel Corporation Speculative execution of hit and intersection shaders on programmable ray tracing architectures
US10832371B2 (en) 2018-12-28 2020-11-10 Intel Corporation Unified architecture for BVH construction based on hardware pre-sorting and a parallel, reconfigurable clustering array
US11210100B2 (en) 2019-01-08 2021-12-28 Apple Inc. Coprocessor operation bundling
US11550971B1 (en) * 2019-01-18 2023-01-10 X Development Llc Physics simulation on machine-learning accelerated hardware platforms
KR20200091623A (ko) 2019-01-23 2020-07-31 삼성전자주식회사 위노그라드 변환에 기반한 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
US11106600B2 (en) 2019-01-24 2021-08-31 Advanced Micro Devices, Inc. Cache replacement based on translation lookaside buffer evictions
US10725923B1 (en) 2019-02-05 2020-07-28 Arm Limited Cache access detection and prediction
US11805109B1 (en) * 2019-02-25 2023-10-31 Amazon Technologies, Inc. Data transfer encryption offloading using session pairs
US10915461B2 (en) 2019-03-05 2021-02-09 International Business Machines Corporation Multilevel cache eviction management
EP4130988A1 (en) 2019-03-15 2023-02-08 INTEL Corporation Systems and methods for cache optimization
CN113424162A (zh) 2019-03-15 2021-09-21 英特尔公司 动态存储器重新配置
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
AU2020241262B2 (en) 2019-03-15 2025-01-09 Intel Corporation Sparse optimizations for a matrix accelerator architecture
US10630606B1 (en) 2019-03-18 2020-04-21 Brightways Corporation System, method and architecture for data center network switching
KR102151444B1 (ko) 2019-04-11 2020-09-03 주식회사 실리콘아츠 Mimd 기반의 t&i 스케줄링을 이용한 레이 트레이싱 장치
US11036642B2 (en) 2019-04-26 2021-06-15 Intel Corporation Architectural enhancements for computing systems having artificial intelligence logic disposed locally to memory
US11126404B2 (en) 2019-05-20 2021-09-21 Nxp B.V. Random number generator using multiple entropy sources and a method for generating random numbers
US11675998B2 (en) 2019-07-15 2023-06-13 Meta Platforms Technologies, Llc System and method for performing small channel count convolutions in energy-efficient input operand stationary accelerator
US11201838B2 (en) 2019-09-25 2021-12-14 Intel Corporation System, apparatus and method for increasing efficiency of link communications
CN110666066B (zh) 2019-10-21 2023-12-29 福建申利卡铝业发展有限公司 一种汽车轮毂旋压模具及工艺
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11663746B2 (en) 2019-11-15 2023-05-30 Intel Corporation Systolic arithmetic on sparse data
US11275561B2 (en) 2019-12-12 2022-03-15 International Business Machines Corporation Mixed precision floating-point multiply-add operation
US11645145B2 (en) 2019-12-16 2023-05-09 Qualcomm Incorporated Methods and apparatus to facilitate speculative page fault handling in a graphics processing unit
US11658922B2 (en) 2020-08-31 2023-05-23 Micron Technology, Inc. Optional path ordering in packet-based network
US11392527B2 (en) 2020-08-31 2022-07-19 Micron Technology, Inc. Ordered delivery of data packets based on type of path information in each packet
US12164924B2 (en) 2020-09-25 2024-12-10 Advanced Micro Devices, Inc. Compression metadata assisted computation
CN112506567B (zh) 2020-11-27 2022-11-04 海光信息技术股份有限公司 数据读取方法和数据读取电路
US12216734B2 (en) 2020-12-23 2025-02-04 Intel Corporation Apparatus and method for conjugate transpose and multiply
US12190405B2 (en) * 2021-07-06 2025-01-07 Intel Corporation Direct memory writes by network interface of a graphics processing unit
US11775307B2 (en) 2021-09-24 2023-10-03 Apple Inc. Systems and methods for synchronizing data processing in a cellular modem
US20230119235A1 (en) 2021-10-19 2023-04-20 Google Llc Large-Scale Accelerator System Energy Performance Optimization
CN114050884B (zh) * 2021-11-08 2023-05-12 重庆邮电大学 一种面向工业无线与tsn融合的跨网时间同步方法
US11941742B2 (en) 2022-06-23 2024-03-26 Apple Inc. Tiled processor communication fabric
US20240111609A1 (en) 2022-09-30 2024-04-04 Intel Corporation Synchronization utilizing local team barriers for thread team processing
CN115756384B (zh) 2022-11-22 2024-05-17 海光信息技术股份有限公司 张量计算单元及使用方法、数据处理装置及操作方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11709793B2 (en) 2019-03-15 2023-07-25 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
US11954062B2 (en) 2019-03-15 2024-04-09 Intel Corporation Dynamic memory reconfiguration
US11954063B2 (en) 2019-03-15 2024-04-09 Intel Corporation Graphics processors and graphics processing units having dot product accumulate instruction for hybrid floating point format
US11995029B2 (en) 2019-03-15 2024-05-28 Intel Corporation Multi-tile memory management for detecting cross tile access providing multi-tile inference scaling and providing page migration
US12056059B2 (en) 2019-03-15 2024-08-06 Intel Corporation Systems and methods for cache optimization
US12079155B2 (en) 2019-03-15 2024-09-03 Intel Corporation Graphics processor operation scheduling for deterministic latency
US12124383B2 (en) 2019-03-15 2024-10-22 Intel Corporation Systems and methods for cache optimization
US12182035B2 (en) 2019-03-15 2024-12-31 Intel Corporation Systems and methods for cache optimization
US12210477B2 (en) 2019-03-15 2025-01-28 Intel Corporation Systems and methods for improving cache efficiency and utilization

Also Published As

Publication number Publication date
US20220129265A1 (en) 2022-04-28
CN113424148A (zh) 2021-09-21
JP7107482B2 (ja) 2022-07-27
US12079155B2 (en) 2024-09-03
US20220197800A1 (en) 2022-06-23
US20250028675A1 (en) 2025-01-23
JP2022519510A (ja) 2022-03-24
US12242414B2 (en) 2025-03-04
CN113454587A (zh) 2021-09-28
US20220121421A1 (en) 2022-04-21
CN113366437A (zh) 2021-09-07
EP3974968A1 (en) 2022-03-30
EP3938914B1 (en) 2024-10-09
US20250004981A1 (en) 2025-01-02
US12099461B2 (en) 2024-09-24
EP3974968C0 (en) 2024-09-04
DE112020001256T5 (de) 2022-01-05
EP3938891A1 (en) 2022-01-19
DE112020001258T5 (de) 2021-12-23
JP2024041826A (ja) 2024-03-27
WO2020190814A1 (en) 2020-09-24
WO2020190799A3 (en) 2020-10-29
US20220129521A1 (en) 2022-04-28
US11954062B2 (en) 2024-04-09
EP3938895A1 (en) 2022-01-19
JP7513354B2 (ja) 2024-07-09
EP4270201A3 (en) 2024-01-31
CN113383304A (zh) 2021-09-10
CN113396400A (zh) 2021-09-14
PL3974968T3 (pl) 2025-01-13
CN113508362A (zh) 2021-10-15
US20240403259A1 (en) 2024-12-05
US11899614B2 (en) 2024-02-13
EP3938894B1 (en) 2023-08-30
US12013808B2 (en) 2024-06-18
US12093210B2 (en) 2024-09-17
JP2022523909A (ja) 2022-04-27
US20240411717A1 (en) 2024-12-12
CN113366435A (zh) 2021-09-07
WO2020190810A1 (en) 2020-09-24
US20220171710A1 (en) 2022-06-02
US20250103547A1 (en) 2025-03-27
US11954063B2 (en) 2024-04-09
CN117689531A (zh) 2024-03-12
US20240256483A1 (en) 2024-08-01
US20220114096A1 (en) 2022-04-14
JP7420440B2 (ja) 2024-01-23
WO2020190813A1 (en) 2020-09-24
PL3938894T3 (pl) 2024-02-19
CN113366447A (zh) 2021-09-07
US11709793B2 (en) 2023-07-25
JP2022183406A (ja) 2022-12-09
WO2020190811A1 (en) 2020-09-24
US20250103546A1 (en) 2025-03-27
US20220129271A1 (en) 2022-04-28
US20220107914A1 (en) 2022-04-07
US11995029B2 (en) 2024-05-28
ES2965299T3 (es) 2024-04-12
CN113439265A (zh) 2021-09-24
US12182062B1 (en) 2024-12-31
US11361496B2 (en) 2022-06-14
US20220138101A1 (en) 2022-05-05
WO2020190799A2 (en) 2020-09-24
EP4270201A2 (en) 2023-11-01
WO2020190802A1 (en) 2020-09-24
ES2964969T3 (es) 2024-04-10
US12204487B2 (en) 2025-01-21
KR102596790B1 (ko) 2023-11-01
US20220261347A1 (en) 2022-08-18
BR112021016111A2 (pt) 2021-11-09
US20220129266A1 (en) 2022-04-28
KR20230155596A (ko) 2023-11-10
CN113396390A (zh) 2021-09-14
US12153541B2 (en) 2024-11-26
WO2020190804A1 (en) 2020-09-24
DE112020000874T5 (de) 2021-11-11
WO2020190801A1 (en) 2020-09-24
CN113366454A (zh) 2021-09-07
ES2996958T3 (en) 2025-02-13
ES3003288T3 (en) 2025-03-10
US20220180467A1 (en) 2022-06-09
WO2020190803A1 (en) 2020-09-24
US12141094B2 (en) 2024-11-12
EP3938914A1 (en) 2022-01-19
US20220122215A1 (en) 2022-04-21
PL3938912T3 (pl) 2024-03-18
EP3938915A1 (en) 2022-01-19
US20210312697A1 (en) 2021-10-07
US20240362180A1 (en) 2024-10-31
EP3938894A1 (en) 2022-01-19
CN113396401A (zh) 2021-09-14
WO2020190805A1 (en) 2020-09-24
WO2020190798A1 (en) 2020-09-24
US20240086356A1 (en) 2024-03-14
US20220138895A1 (en) 2022-05-05
WO2020190800A1 (en) 2020-09-24
JP7414894B2 (ja) 2024-01-16
US20250103548A1 (en) 2025-03-27
JP7631649B2 (ja) 2025-02-19
US20230014565A1 (en) 2023-01-19
JP2024138299A (ja) 2024-10-08
DE112020000850T5 (de) 2022-01-20
WO2020190812A1 (en) 2020-09-24
US20220066931A1 (en) 2022-03-03
US20220138104A1 (en) 2022-05-05
US12210477B2 (en) 2025-01-28
US20240345990A1 (en) 2024-10-17
US12066975B2 (en) 2024-08-20
EP3938912A1 (en) 2022-01-19
EP3974968B1 (en) 2024-09-04
US11620256B2 (en) 2023-04-04
EP3938912B1 (en) 2023-09-20
US20220179787A1 (en) 2022-06-09
WO2020190806A1 (en) 2020-09-24
EP3938913A1 (en) 2022-01-19
CN114968366A (zh) 2022-08-30
JP2022523912A (ja) 2022-04-27
US20220365901A1 (en) 2022-11-17
US20240086357A1 (en) 2024-03-14
KR20210114495A (ko) 2021-09-23
US20240320184A1 (en) 2024-09-26
WO2020190797A1 (en) 2020-09-24
US12007935B2 (en) 2024-06-11
US20230195685A1 (en) 2023-06-22
US20240184739A1 (en) 2024-06-06

Similar Documents

Publication Publication Date Title
EP3938914B1 (en) Dynamic memory reconfiguration
US11145105B2 (en) Multi-tile graphics processor rendering
EP4024223A1 (en) Systems and methods for cache optimization
CN113383310A (zh) 矩阵加速器架构内的脉动分解
EP3938916B1 (en) Memory prefetching in multiple gpu environment
CN112785486A (zh) 用于图像去噪声的自适应可变形核预测网络
CN113383313A (zh) 用于图形处理的线程组调度
CN113424219A (zh) 用于多线程通道的同步的系统和方法
CN114693850A (zh) 用于图像和视频处理的条件核预测网络和自适应深度预测
CN111694601A (zh) 使用细粒度依赖性检查加速同步并基于可用共享存储器空间调度优化的图形系统和方法
CN113454609A (zh) 用于图形数据处理的数据预取
CN113711185A (zh) 抢占式页故障处理
CN112785481A (zh) 动态分割激活和核以提高存储器效率
CN113454596A (zh) 标量核集成
CN112785482A (zh) 用于将可执行对象适配到处理单元的系统和方法
EP4359920A1 (en) Systolic array of arbitrary physical and logical depth
CN113424156A (zh) 用于利用队列和过渡存储以实现改善的低等待时间高带宽管芯上数据检取的系统和方法
WO2022271228A1 (en) Register file for systolic array
CN113412475A (zh) 事务页错误处置
EP4123569A1 (en) Performing global memory atomics in a private cache of a sub-core of a graphics processing unit

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