CN114968847A - 数据处理器 - Google Patents
数据处理器 Download PDFInfo
- Publication number
- CN114968847A CN114968847A CN202210191779.4A CN202210191779A CN114968847A CN 114968847 A CN114968847 A CN 114968847A CN 202210191779 A CN202210191779 A CN 202210191779A CN 114968847 A CN114968847 A CN 114968847A
- Authority
- CN
- China
- Prior art keywords
- memory
- addresses
- address
- access
- mapping
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 999
- 238000012545 processing Methods 0.000 claims abstract description 248
- 238000013507 mapping Methods 0.000 claims abstract description 216
- 238000004891 communication Methods 0.000 claims abstract description 101
- 238000005192 partition Methods 0.000 claims description 120
- 239000013598 vector Substances 0.000 claims description 39
- 238000000034 method Methods 0.000 claims description 36
- 238000012432 intermediate storage Methods 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 6
- 238000013519 translation Methods 0.000 description 14
- 230000014616 translation Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 239000000872 buffer Substances 0.000 description 9
- 239000011159 matrix material Substances 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 238000003860 storage Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000002301 combined effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0653—Configuration or reconfiguration with centralised address assignment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0669—Configuration or reconfiguration with decentralised address assignment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0851—Cache with interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Eye Examination Apparatus (AREA)
- Holo Graphy (AREA)
Abstract
本发明题为“数据处理器”。在其中能够配置用于访问存储器的通道的变化的数量的数据处理系统中,用于对该存储器的访问的该通信通道通过以下操作来确定:将与该存储器访问相关联的存储器地址映射451到中间地址空间内的中间地址;基于被配置用于访问该存储器的通道的该数量,选择452映射操作用于根据该中间地址确定哪个通道要用于该存储器访问;以及使用452所选择的映射操作根据该中间地址来确定哪个通道要用于该存储器访问。
Description
技术领域
本发明涉及数据处理器和数据处理系统,并且具体地涉及支持使用用于访问存储器的多个通道的数据处理器和数据处理系统。
背景技术
数据处理系统通常将包括将在其中存储数据的存储器。数据处理系统的功能单元将经由适当的通信通道直接地(在这种情况下,存储器通道将通向(物理)存储器装置本身)或经由(在逻辑上)在功能单元和存储器之间的中间存储元件(诸如高速缓存或高速缓存层级结构)(在这种情况下,通向存储器的通道将通向高速缓存并包括高速缓存(并且高速缓存将实际上充当“存储器通道”)访问存储器(并且因此从存储器读取数据或将数据写入存储器)。
一些数据处理系统支持使用多个独立的此类存储器通道。例如,可以存在可以经由其直接访问存储器的多个总线,以及/或者可以经由其将数据传送到存储器并从存储器传送数据的多个高速缓存。
在此类布置中,通常期望跨多个存储器通道分配存储器业务,因为这样将趋于提供更好的整体系统性能。可以通过例如将存储器的整体地址空间内的不同存储器地址分派给不同存储器通道来跨多个通道分配存储器业务。
申请人认为,仍然存在改进支持使用通向存储器的多个通道的数据处理器和数据处理系统的操作的空间。
发明内容
根据本发明的第一方面,提供了一种确定在访问其中能够配置用于访问存储器的通信通道的变化的数量的数据处理系统中的存储器时使用多个通信通道中的哪个通信通道的方法,该方法包括:
通过以下操作来确定已经被配置用于访问存储器的多个通信通道中的哪个通信通道要用于对存储器的访问:
将与存储器访问相关联的存储器地址映射到中间地址空间内的中间地址;
基于被配置用于访问存储器的通道的数量,选择映射操作用于根据中间地址确定被配置用于访问存储器的该多个通道中的哪个通道要用于该存储器访问;以及
使用所选择的映射操作根据中间地址来确定被配置用于访问存储器的该多个通道中的哪个通道要用于该存储器访问;
所述方法还包括:
将所确定的通信通道用于该存储器访问。
根据本发明的第二方面,提供了一种用于确定在访问其中能够配置用于访问存储器的通信通道的变化的数量的数据处理系统中的存储器时使用多个通信通道中的哪个通信通道的设备,该设备包括:
存储器通道确定电路,该存储器通道确定电路被配置为确定已经被配置用于访问存储器的多个通信通道中的哪个通信通道要用于对存储器的访问,该存储器通道确定电路包括:
地址映射电路,该地址映射电路被配置为将与存储器访问相关联的存储器地址映射到中间地址空间内的中间地址;以及
存储器通道映射电路,该存储器通道映射电路被配置为:
基于被配置用于访问存储器的通道的数量,选择映射操作用于根据中间地址确定被配置用于访问存储器的该多个通道中的哪个通道要用于存储器访问;以及
使用所选择的映射操作根据中间地址来确定被配置用于访问存储器的该多个通道中的哪个通道要用于该存储器访问。
本发明涉及在多个通道可用于访问存储器的情况下的数据处理器和数据处理系统的操作,并且更具体地,在可以例如通过在“启动”时和/或在“运行时间”设置不同的存储器通道配置改变可用的“存储器通道”的数量的情况下的数据处理器和数据处理系统的操作。
在这方面,申请人已经认识到,在可以在使用中改变存储器通道的数量的情况下,可能难以提供存储器地址到不同通道的单个固定的映射,该单个固定的映射能够针对可以使用的多个存储器通道的所有可能组合以合适的方式跨通道分配存储器业务。此外,虽然可以针对可以使用的多个通道的每个可能组合确定存储器地址到存储器通道的“定制”映射,但是可能需要不期望的大量分析。
本发明改为首先将用于存储器访问的存储器地址映射到中间地址空间,然后将那些中间地址映射到不同的存储器通道。此外,基于所使用的存储器通道的数量来选择中间地址到不同存储器通道的映射。
如下文将进一步讨论的,申请人已经认识到并发现,这种布置可以提供相对简单但有效且高效的机制用于在多个不同存储器通道之间分配存储器业务,特别是在可以改变所使用的通道的数量的情况下,例如,在“瓶颈”产生的风险上升的情况下。
具体地,并且如下文将进一步讨论的,存储器地址到中间地址空间的初始映射可以并且优选地用于提供中间地址空间中的存储器访问的与存储器地址空间中的存储器访问相比有所修改的分配,该初始映射被配置为随后与接着将中间地址映射到不同的存储器通道的操作一起(更)高效地发挥作用。
例如,并且如下文将进一步讨论的,申请人已经认识到,虽然对于可能使用的多个存储器通道的每个组合,存储器地址空间中存储器访问的预期分配可能真的不适合于并且也不适用于随后以高效方式直接映射到变化数量的存储器通道,但是可能并且可以将存储器地址空间中的预期存储器访问模式映射到随后适合与映射一起使用的中间地址空间中存储器访问的修改分配,该映射可以高效的方式并且以将例如并且优选地降低在任何给定存储器通道中发生“瓶颈”的风险的方式相对简单且直接地将中间地址空间映射到不同数量的存储器通道。
此外,本发明的两个阶段过程意味着可以基于(预期)存储器业务并且完全不依据通道的数量(因为过程的第二阶段才考虑实际使用的存储器通道的数量)来完成存储器地址到中间地址空间的映射,从而允许例如并且优选地使用到中间地址的相同映射操作,而不管在该时间所使用的存储器通道的数量如何。
被访问的存储器(存储器系统)可以包括所讨论的数据处理系统的任何合适且期望的存储器和存储器系统,诸如专用于数据处理系统的特定数据处理器的存储器,或者由数据处理系统的多个处理器(和/或其他元件)共享的数据处理系统的存储器。当然,其他布置将是可能的。
存储器将具有存储器访问可以寻址的给定的限定的(物理)地址空间(地址集合)。通常,存储器将支持与可以使用特定大小(宽度)的地址(诸如,64、40或32位地址)指示的地址集合对应的地址空间。然后,每个存储器访问将指示其涉及的(例如,40位)地址(存储器位置)。
(在这方面,应当注意,虽然存储器寻址配置将限定对应的存储器地址空间,并且通常优选的是,该地址空间内的所有地址是有效可用的(作为可以存储数据的存储器位置),但是可能的情况是,存储器地址空间内的某些地址无效(不可用),因此将不用于任何存储器访问。这在本发明的方式中不会影响操作,因为本发明将操作为映射用于对应的中间地址的任何存储器地址。)
被用于并被配置用于访问存储器的通信通道可以呈任何合适的且期望的形式。此处应当注意,通信(存储器)通道是通向存储器的直接或间接地访问存储器存储元件本身并且因此可能经历关于对存储器存储元件的访问的瓶颈的那些通道。
因此,它们可以例如是直接访问物理存储器本身中的存储元件(不存在任何中间存储元件)的通信通道(例如,通信总线)。例如,可能的情况是,存储器(及其对应的地址空间)被配置为多个单独的物理(例如,DDR)存储器装置,其中存在用于每个单独的物理存储器装置的单独的通信总线。
因此,通向存储器的通信通道可以例如被提供作为物理存储器装置和将需要访问存储器的单元之间的相应通信总线。
另选地,存储器通道可以呈通向某种形式的中间存储装置的通信通道的形式,由此可以将数据传送到(物理)存储器本身(诸如,(在逻辑上)插置在可能需要来自存储器和存储器本身的数据的功能单元之间的高速缓存层级结构中的一个或多个高速缓存)并从(物理)存储器本身传送数据。因此,在后一种情况下,在访问存储器时使用的通信通道将实际上并且优选地包括用于访问存储器的中间存储装置(例如,高速缓存),并且在这种情况下,确定在访问存储器时使用的通信通道将并且优选地的确包括确定在访问存储器时使用(用于给定存储器访问)的中间存储元件(例如,高速缓存)。
在后一种情况下,有效地用作和为通向存储器的通信通道的中间存储元件优选地包括高速缓存,优选地“最后一级高速缓存”和/或系统高速缓存(例如,其(在逻辑上)位于用于存储器本身的存储器控制器前面),以及/或者最高级高速缓存(其由高速缓存所用于的数据处理器的功能单元共享)。在一个优选的此类实施方案中,高速缓存是2级(L2)高速缓存,例如,在2级高速缓存是例如片外存储器系统前面的最后一级高速缓存的情况下。当然,其他布置将是可能的。
因此,在特别优选的实施方案中,用于存储器访问的通信通道包括被布置在存储器和需要访问存储器的单元之间的相应中间存储元件,诸如并且优选地,高速缓存。因此,优选地存在多个中间存储元件,例如高速缓存,其中可以存储来自存储器或用于存储在存储器中的数据,每个中间存储元件提供通向存储器的相应通道。在这方面,中间存储元件可以是接合在存储器和将需要访问存储器的单元之间的任何合适且期望的存储元件。
因此,在优选实施方案中,存储器通道包括提供到存储器的接口的中间存储元件,优选地高速缓存,并且本发明的方法包括(并且本发明的设备被对应地配置为执行以下操作并且包括被配置为执行以下操作的电路):
通过以下操作来确定已经被配置用于访问存储器的多个中间存储元件(例如,高速缓存)中的哪个中间存储元件(例如,高速缓存(并且优选地,哪个最后一级高速缓存和/或L2高速缓存))要用于对存储器的访问:
将与存储器访问相关联的存储器地址映射到中间地址空间内的中间地址;
基于被配置用于访问存储器的中间存储元件(例如,高速缓存)的数量,选择映射操作用于根据中间地址确定被配置用于访问存储器的该多个中间存储元件中的哪个中间存储元件(例如,高速缓存)要用于该存储器访问;以及
使用所选择的映射操作根据中间地址来确定被配置用于访问存储器的该多个中间存储元件(例如,高速缓存)中的哪个中间存储元件(例如,高速缓存)要用于该存储器访问;
以及
将所确定的中间存储元件(例如,高速缓存)用于该存储器访问。
以本发明的方式进行的操作所用于的存储器访问可以是对存储器的任何合适且期望的访问。因此,它们可能是用于从存储器读取数据的访问或者是用于将数据写入存储器的访问。
对应地,存储器访问涉及的数据可以是例如处理单元需要用于其操作的输入数据(在这种情况下,处理单元将经由所确定的存储器通道获取数据以供使用)或处理单元例如已经生成并且需要被存储的数据(在这种情况下,处理单元将经由所确定的存储器通道写入数据)。
类似地,在这方面,从存储器读取或存储在存储器中的数据可以是可以存储在存储器中的任何合适且期望的数据。因此,该数据可以是待处理的输入数据值阵列中的数据,例如,或者是所生成的输出数据值阵列中的数据。因此,该数据可以是处理操作所需的数据,诸如就图形处理而言,输入缓冲器(诸如顶点缓冲器)和输出缓冲器(诸如帧缓冲器),并且/或者可以是控制数据,诸如用于图形处理中的存储器管理、着色器描述符的页面表等。通常,该数据可以是所讨论的数据和/或数据处理系统中所需或所使用的任何数据对象(但本发明将特别适用于可能具有高存储器带宽需求(导致高存储器带宽业务)的数据)。
存储器访问可能涉及的存储器中可能存在多于一个数据集,但是可以并且优选地针对每个存储器访问(其可以经由相同的存储器通道集合进行)执行以本发明的方式进行的操作,而不管存储器访问涉及的数据或数据集如何。
存储器访问(无论是从存储器读取数据,还是在存储器中存储数据)将与存储器地址相关联,该存储器地址指示存储器中要被访问的位置(读取数据或写入数据的位置)。
本发明涉及存在可用于访问存储器的多个存储器通道(例如,多个高速缓存)的情况。因此,存储器访问可以经由多个不同的存储器通道中的任一个存储器通道进行(尽管对于任何给定存储器通道配置,给定存储器地址(优选地)可以仅经由存储器通道中的一个存储器通道(即,给定存储器地址将根据本发明的操作被映射到的通道)前往)。
在本发明中,为了跨可用存储器通道(例如,高速缓存)分配存储器访问,基于与存储器访问相关联的存储器地址在多个存储器通道中的不同存储器通道之间分配存储器访问,但是不是直接使用与存储器访问相关联的存储器地址来确定哪个存储器通道要用于所讨论的访问,而是首先将用于存储器访问的存储器地址映射到中间地址空间内的对应中间地址,然后将如此确定的中间地址用于确定该多个存储器通道中的哪个通道要用于所讨论的存储器访问。
换句话说,存储器访问到不同通道的分配基于存储器地址被映射到的中间地址而不是存储器地址本身(是使用存储器地址被映射到的中间地址而不是存储器地址本身来确定的)。
因此,在本发明中,首先将与存储器访问相关联的存储器地址映射到中间地址,然后使用该中间地址来确定该多个可用存储器通道中的哪个通道应该用于该存储器访问。
在这方面,申请人已经认识到,给定存储器访问可能实际上在其进程期间具有与其相关联的多于一个存储器地址,例如,在使用存储器虚拟化技术的情况下。在这种情况下,存储器访问最初可以使用虚拟存储器地址,但是该虚拟存储器地址将随后作为存储器访问过程的一部分转换为“物理”存储器地址。在转换为最终物理地址之前,也可能存在多于一“层”虚拟地址。
在本发明中映射到中间地址的存储器地址可以是与存储器访问相关联的虚拟存储器地址(例如,与存储器访问相关联的初始虚拟地址,以及/或者与存储器访问相关联的中间虚拟地址)。
然而,由于所使用的虚拟地址空间可以针对任何给定处理操作(例如)而变化,但是由存储器支持的物理地址空间通常将是固定(预定义的)和已知的,因此在优选实施方案中,映射到中间地址的存储器地址是与存储器访问相关联的“物理”存储器地址(而不是可以与存储器访问相关联的任何虚拟地址)。
因此,优选地在从虚拟存储器地址到物理存储器地址的任何转译之后发生存储器地址到中间地址的映射。对应地,地址映射电路优选地与任何虚拟存储器地址到物理存储器地址转译电路(例如,转译后援缓冲器(TLB))相关联并且/或者(在逻辑上)在任何虚拟存储器地址到物理存储器地址转译电路之后。
存储器地址映射操作将(存储器的存储器地址空间内的)存储器地址映射到对应的中间地址。将存在并且优选地存在对应的中间地址空间,其包括存储器地址可以被映射到的优选地相连的中间地址集合。因此,映射操作将并且优选地的确将存储器的存储器地址空间映射到对应的中间地址空间(其中存储器地址空间中的每个存储器地址被映射到中间地址空间中的给定中间地址)。
在这方面,将可能的是,中间地址空间的大小与存储器地址空间的大小相同,即,使得对于每个不同的存储器地址将存在不同的中间地址(存在存储器地址到中间地址的一对一映射)。
然而,在特别优选的实施方案中,存储器地址到中间地址的映射减小了其内表示地址的空间(范围),即,中间地址空间(可用中间地址的数量)小于存储器地址空间(可能的存储器地址的数量)。这降低了映射和存储器通道确定操作(和所需电路)的复杂性,但申请人已经发现,这仍然允许实现存储器访问在多个通道之间的合适分配。
因此,在优选实施方案中,存储器地址被映射到的中间地址空间小于存储器地址空间。例如,中间地址空间可以使用比用于存储器地址空间的地址小5到12倍(就位的数量而言)的地址来表示。
通常,中间地址空间的大小将设置最小粒度(以及因此,例如,可以实现的到存储器通道的任何分配中的相对误差(和不均匀性)),可以该最小粒度在不同的存储器通道之间分配中间地址空间(以及因此存储器访问)。因此,中间地址空间优选地被设置为应实现存储器地址到不同存储器通道的合适分配的大小(即,中间地址位的数量)。
在优选实施方案中,中间地址使用8个位或更少位来表示。在优选实施方案中,中间地址使用6个位来表示。(与此相比,存储器地址可以是例如64、40或32位地址,如上所述。)
在中间地址空间小于存储器地址空间的情况下,映射操作将实际上操作为压缩存储器地址空间,并且多个存储器地址将因此被映射到相同中间地址(并且因此优选地,映射操作具有该效果)。因此,在优选实施方案中,映射操作使得存储器的存储器地址空间将实际上被划分为与映射操作将存储器地址映射到的中间地址空间中的中间地址一样多的存储器地址的集合,即,使得对于每个中间地址存在一个(优选地,多个)存储器地址的集合(其将被映射到该中间地址)。
在这种情况下,在一个实施方案中,将相同数量的多个存储器地址映射到每个中间地址。在另一个实施方案中,映射使得至少一些中间地址具有映射到其的不同数量的存储器地址。
在这种情况下,每个中间地址可以简单地具有映射到其的连续(相连)存储器地址的块。例如,在中间地址空间的大小是存储器地址空间的大小的一半的情况下,可以将前两个(最低的两个)存储器地址映射到第一(最低的)中间地址,可以将第三和第四(最低的)存储器地址映射到第二(最低的)中间地址,依此类推。
然而,在特别优选的实施方案中,每个中间地址具有映射到其的至少一些不连续(不相连)的存储器地址。在一个实施方案中,被映射到(并且优选地多个,并且优选地每个)中间地址的存储器地址的集合包括完全不相连的存储器地址。在另一个实施方案中,被映射到(并且优选地多个,并且优选地每个)中间地址的存储器地址的集合包括多个连续的存储器地址的多个块,但是其中那些块中一些或全部在存储器地址空间中彼此不相连(间隔开)。
对应地,在一个实施方案中,映射使得存储器地址空间实际上被划分为多个相连存储器地址的多个(优选地相等)块,其中给定块的所有存储器地址被映射到相同中间地址。在另一个实施方案中,映射使得存储器地址空间实际上被划分为多个相连存储器地址的多个(优选地相等)块,但是其中给定块的所有存储器地址被映射到不同的中间地址。在这两种情况下,在优选实施方案中,存储器地址空间(实际上)被划分为的相连存储器地址的块中的一些和优选地全部包括与在中间地址空间中存在的中间地址一样多的存储器地址。
在特别优选的实施方案中,存储器地址到中间地址空间的映射基于使用中的存储器地址的预期访问模式,即当从所讨论的数据处理器和/或数据处理系统中的存储器获取数据或将数据写入该存储器时存储器地址访问的预期分配。
这可以基于例如并且优选地存储器地址可能被访问的顺序(例如,其可能是线性顺序,或是基于块,或是随机顺序等)和/或将访问不同存储器地址的可能总量和/或速率(例如,特定存储器地址将是否具有更高总量和/或访问速率)。在这方面,申请人已经认识到,可以确定用于给定数据处理器/数据处理系统的可能存储器地址访问模式,使得可以基于其确定预期存储器地址访问模式到中间地址空间的适当映射。
在特别优选的实施方案中,映射操作还是或替代地是并且优选地还是、基于并且被配置用于随后用于根据中间地址确定要使用用于访问存储器的该多个通道中的哪个通道的映射操作。在这方面,申请人已经认识到,依据中间地址到不同存储器通道的映射操作,中间地址空间中存储器地址的给定分配可以优选地例如更好地允许从中间地址到存储器通道的映射,以在该多个存储器通道之间更均匀地分配存储器访问。
例如,并且如下文将进一步讨论的,在使用取模运算(Modulo operation)将中间地址映射到存储器通道的情况下,如果跨中间地址空间一致地(均匀地)分配存储器访问,则将实现存储器访问到通道的均匀分配。因此,在这种情况下,将期望用于存储器访问的存储器地址到中间地址的映射使得在中间地址空间内均匀地分配被访问的(预期)存储器地址(即使它们在原始存储器地址空间中未被均匀地分配)。
因此,在特别优选的实施方案中,存储器地址到中间地址的映射是为了跨中间地址空间(基本上)均匀地分配存储器地址。
来自存储器地址空间的存储器地址到中间地址空间中的中间地址的映射可以是为了保持存储器地址空间中的地址在映射到中间地址空间时的相对顺序(即,使得在存储器地址序列中比另一个存储器地址更早的存储器地址将被映射到中间地址空间中比该另一个存储器地址更早的中间地址)。
在特别优选的实施方案中,来自存储器地址空间的存储器地址到中间地址空间中的中间地址的映射跨中间地址空间以与存储器地址在存储器地址空间中的顺序不同的顺序分配存储器地址。换句话说,存储器地址在由中间地址空间中的其映射的中间地址表示时的顺序优选地不同于存储器地址在存储器地址空间本身中的顺序。
例如,并且优选地,映射可以操作为反转存储器地址中的至少一些的相对顺序(即,使得如果存储器地址A在存储器地址的序列中在存储器地址B之前,则针对存储器地址A的中间地址在中间地址的序列中在针对存储器地址B的中间地址之后)。
在这种情况下,存储器地址到中间地址的映射优选地操作为改变存储器地址空间中的存储器地址中的一些或全部当在中间地址空间中被表示时的相对顺序。因此,在优选实施方案中,在存储器地址空间中具有特定相对顺序的至少一些存储器地址被映射到中间地址空间中的中间地址,这些中间地址在中间地址空间中相对于彼此的顺序不同于存储器地址在存储器地址空间中相对于彼此的相对顺序。相对顺序可以不同,例如,就与在存储器地址空间中的顺序相比,在中间地址空间中存储器地址出现在另一个存储器地址之前的情况而言。
映射还可以或替代地(并且优选地还)改变在存储器地址被映射到中间地址空间中时存储器地址之间的相对间距。例如,映射可以操作为减小(压缩)存储器地址之间的间距(例如,使得隔开多于一个存储器地址的存储器地址被映射到隔开更少(例如,仅一个)中间地址的中间地址)。
在优选实施方案中,映射将存储器地址有效地随机地映射到中间地址空间中(即,使得存储器地址的序列将被映射到中间地址空间中随机定位的中间地址)。
在特别优选的实施方案中,映射操作为将存储器地址空间中的规则模式的存储器地址映射到中间地址空间中的不同的、规则或非规则模式的地址。
最优选地,存储器地址到中间地址的映射是为了跨中间地址空间均匀地分配一个或多个特定的、优选地选择的、优选地预定义的、优选地规则的序列(模式)的存储器地址,诸如每隔N-1个存储器地址的存储器地址。
在这方面,申请人已经认识到,存储器访问可以倾向于遵循特定的规则模式,例如基于正在被访问的数据的存储器步长(例如,特定数据元素的存储器地址间距和/或可能倾向于读取或写入的数据的集合/组)。在这种情况下,将期望向不同存储器通道发送例如数据元素(例如,其可以被一起或连续地读取)存储器访问。将处于“步长”间距的存储器地址映射到不同的中间地址和/或跨中间地址空间均匀地映射将有助于实现这一点并且跨多个存储器通道平衡此类存储器访问的序列。
因此,在优选实施方案中,映射操作考虑并且基于预期使用的任何存储器步长(例如,步长的粒度),即,存储器访问将使用或可能使用特定步长的情况。这是优选地完成的,以便(尝试)跨中间地址空间均匀地分配具有步长间距的存储器地址,例如,并且优选地,通过将处于步长间距的相邻存储器地址映射到不同的中间地址。
在优选的这种实施方案中,映射还减小了中间地址空间中来自存储器地址空间的“步长”,即,将存储器地址空间中的存储器地址之间的间距映射到在中间地址空间中具有更小间距的中间地址。例如,该映射可以将在存储器地址空间中大于一的步长转换为在中间地址空间中为一的步长。
在一个优选的此类实施方案中,映射是为了(至少)跨中间地址空间均匀地分配一个(规则)序列(模式)的存储器地址,诸如,并且优选地(至少)跨中间地址空间均匀地分配每隔N-1个存储器地址的存储器地址(其中N是大于一整数,并且优选地对应于预期存储器步长)。
这优选地通过将每隔N-1个存储器地址的存储器地址的序列中的每个存储器地址映射到与该序列中的先前地址的中间地址不同的中间地址来完成。因此,针对该序列中的给定存储器地址的中间地址将至少与针对其相邻存储器地址的中间地址不同。
在特别优选的实施方案中,这通过以下操作来完成:将每隔N-1个存储器地址的存储器地址的序列中的每个存储器地址映射到不同的中间地址,直到所有中间地址已经被使用,并且然后,如有必要,将每隔N-1个存储器地址的存储器地址的下一个序列的每个存储器地址映射到不同的中间地址,直到所有中间地址已经被使用(依此类推)。换句话说,当中间地址空间包括M个中间地址时,那么对于包括M个存储器地址的每隔N-1个存储器地址的存储器地址的序列(并且每个序列),M个每隔N-1个存储器地址的存储器地址的序列中的每个存储器地址将被映射到M个中间地址中的不同中间地址。
在这些布置中,在一个实施方案中,对于每隔N-1个存储器地址的存储器地址的每个序列,每隔N-1个存储器地址的存储器地址的序列到中间地址的映射是相同的(遵循相同的模式/顺序)(例如,每隔N-1个存储器地址的存储器地址将被映射到中间地址的序列中的下一个中间地址(其中一旦所有中间地址已经被使用,中间地址序列就重复(返回到开头)(环绕)))。
在另一个实施方案中,对于每隔N-1个存储器地址的存储器地址的不同序列,每隔N-1个存储器地址的存储器地址的序列到中间地址的映射是不同的。最优选地,(至少)对于每隔N-1个存储器地址的存储器地址的相邻序列,存储器地址到中间地址的映射是不同的(使用不同的模式/顺序)(针对每隔N-1个存储器地址的存储器地址的每个新序列而改变)。因此,每隔N-1个存储器地址的存储器地址的第一序列中的存储器地址将被依次映射到中间地址的第一序列(顺序)中的中间地址,并且每隔N-1个存储器地址的存储器地址的另一个序列(并且优选地,下一个序列)中的存储器地址将被依次映射到中间地址的不同序列(顺序)中的中间地址(依此类推)。
映射可以操作为跨中间地址空间均匀地分配一个规则序列的存储器地址,但是在特别优选的实施方案中,映射是为了跨中间地址空间均匀地分配多于一个规则序列的存储器地址。因此,在这种情况下,映射将不但跨中间地址空间均匀地分配每隔N-1个存储器地址的存储器地址,而且还跨中间地址空间均匀地分配每隔L-1个存储器地址的存储器地址(其中N和L均为大于一的整数并且彼此不相等)(如果需要,依此类推)。
同样,这优选地通过以下操作来完成:以上文所讨论的方式将每隔N-1个存储器地址的存储器地址映射到中间地址,并且对应地,以上文所讨论的方式将每隔L-1个存储器地址的存储器地址映射到中间地址(如果需要,对于存储器地址的另外的序列,依次类推)。在这种情况下,每隔N-1个(并且每隔L-1个等)存储器地址的存储器地址的序列到中间地址的映射优选地针对每隔N-1个存储器地址的存储器地址的不同序列而改变(如上文所讨论的)。
在特别优选的这种实施方案中,特定数量(优选地对应于中间地址空间中的中间地址的数量)的(相连)存储器地址的每个块中的存储器地址被映射到相应的不同中间地址,但是其中特定数量的存储器地址的连续(相邻)块被映射到中间地址的不同序列(模式/顺序)中的中间地址。
因此,例如,在中间地址空间包括M个中间地址的情况下,在优选实施方案中,存储器地址空间被划分为M个存储器地址的相应块,并且M个存储器地址的给定块中的每个存储器地址被映射到与该块中的其他存储器地址不同的中间地址,其中M个存储器地址的相邻块被映射到处于彼此不同的顺序(模式)的M个中间地址(即,使得对于M个存储器地址的相邻块,中间地址被映射到这些块中的存储器地址的顺序是不同的)。
在映射跨中间地址空间均匀分配多个规则序列的存储器地址的情况下,那么在一个实施方案中,存储器地址的多个规则序列包括以2的幂间隔开的存储器地址的序列(因此,例如,每隔1个存储器地址的存储器地址的序列,每隔3个存储器地址的存储器地址的序列,每隔7个存储器地址的存储器地址的序列(如果需要),依此类推(如果需要))。在这种情况下,映射优选地使用包括对角矩阵的散列,以将存储器地址映射到中间地址。
在一个特别优选的实施方案中,映射是为了在中间地址空间中均匀地分配为2的幂和为非2的幂的序列两者的存储器地址。在这种情况下,映射优选地使用形式为x^2+×+1的多项式散列来将存储器地址映射到中间地址。
在优选实施方案中,映射还或替代地将存储器地址空间中的多个相连存储器地址的相应块中的所有存储器地址映射到相同中间地址。然后,这将具有以下效果:块中的所有存储器地址将经由相同的存储器通道前往。这可能是有用的,例如,在预期存储器地址的特定块将可能或始终被一起访问,以及/或者在给定存储器通道更有效地访问和/或被配置为一起访问多个相邻存储器地址的集合的情况下,因为在这些情况下,可能更高效的是,多个存储器地址的期望块(始终)经由相同的存储器通道前往。
因此,例如,在存储器系统和/或存储器访问模式是为了一起访问N个存储器地址(其中N是大于1的整数)的情况下,N个相邻存储器地址的集合中的每个存储器地址可以优选地被映射到相同中间地址,从而触发将相同的存储器通道用于N个相邻存储器地址中的每个相邻存储器地址。
将优选地针对存储器空间可以被划分为(并且被划分为)的存储器地址的多个此类块中的每个块进行该操作,即,使得存储器空间将被划分为多个(N个)地址的多个块,其中给定块中的所有(N个)地址被映射到相同中间地址。
在这种情况下,不同的块应该并且优选地被映射到不同的中间地址。最优选地,映射操作为将存储器地址的相邻块的存储器地址映射到不同的中间地址,使得对存储器地址的那些相邻块的存储器访问将(倾向于)经由不同的存储器通道进行。例如,N个相邻存储器地址可以被映射到一个中间地址,但是其中相邻的N个存储器地址然后被映射到不同的中间地址(这将触发将不同的存储器通道用于那些N个存储器地址)。这可能有助于跨存储器通道更均匀地分配存储器访问。
在这种情况下,N个存储器地址的相应块优选地被以上文所讨论的关于将(单独的)存储器地址映射到中间地址的方式中的一种方式映射到中间地址。因此,N个存储器地址的每个块可以被有效地认为对应于上述映射布置中的“一个”存储器地址,因此映射以对应方式应用于这些块(以将多个存储器地址的块映射到中间地址空间)。
因此,例如,在中间地址空间包括M个中间地址的情况下,对于M个块(各自具有N个(相连)存储器地址)的序列,N个存储器地址的给定块中的每个存储器地址被映射到相同中间地址(即,使得该块中的所有N个存储器地址被映射到相同中间地址),并且该序列中的N个存储器地址的M个块各自被映射到M个中间地址中的不同中间地址(如果存在,对于块的另外的序列,依此类推)。
在这种情况下,同样地,N个存储器地址的块的连续序列可以M个中间地址的相同顺序(模式)映射到中间地址,或者中间地址被映射到块的顺序可以因块序列而异(例如,以(尝试)针对多于一个步长值提供均匀分配)。例如,多项式散列可以用于将中间地址映射到存储器地址的块(如上文所讨论的),例如,在期望支持使用不同步长来访问存储器的情况下。
映射操作优选地还考虑可以在单独的存储器通道内发生的存储器访问的任何(重新)分配,例如,在经由通道进行的存储器访问可以被进一步划分到总体“通道”内的相应“子通道”中的情况下。例如,可能的情况是,存储器通道包括高速缓存,并且该高速缓存被划分为多个集合,使得某些存储器地址仅去往特定集合。
申请人已经认识到,在这种情况下,将期望到所讨论的通道的存储器访问仍然被(尽可能地)跨相应的子通道(例如,高速缓存集合)均匀地分配(并且相反地,将期望到中间地址的映射不会导致使用所讨论的通道的所有存储器访问被分配到该存储器通道的相同子通道(例如,高速缓存的集合))。
因此,在优选实施方案中,存储器地址到中间地址的映射使得将跨由单独的存储器通道支持的任何子通道更均匀地并且尽可能均匀地分配存储器访问(并且存储器访问将不会被(例如,或优选地)唯独地或主要地分配到仅一个子通道,例如,所讨论的高速缓存的集合)。这优选地通过将存储器地址到中间地址映射配置为不与可以应用于在存储器通道中分配访问的任何其他映射(分配函数)相容并且优选地与其正交来实现。
根据上文将理解,申请人已经发现,通常存储器地址到中间地址的以下不同映射是特别有益的,并且因此在特别优选的实施方案中,存储器地址到中间地址的映射进行以下操作中的一个或多个操作:
其操作为使存储器空间中的存储器地址跨中间地址空间(在中间地址空间中)的分配随机化(例如,将存储器地址随机地映射到中间地址);
其将特定的、优选地选择的、优选地预先确定的多个相邻存储器地址的序列的所有存储器地址映射到相同中间地址;
其将特定的、优选地选择的、优选地预先确定的多个相邻存储器地址的相邻序列映射到不同的中间地址;
其操作为跨中间地址空间均匀地分配一个或多个规则序列的存储器地址;
其将每隔N-1个存储器地址的存储器地址的序列中的每个存储器地址映射到不同的中间地址,直到所有中间地址已经被使用,并且然后,如有必要,将每隔N-1个存储器地址的存储器地址的下一个序列的每个存储器地址映射到不同的中间地址,直到所有中间地址已经被使用(依此类推);将多个相邻存储器地址的块映射到相同中间地址;
其将多个相邻存储器地址的块中的每个存储器地址映射到不同中间地址;
其将多个存储器地址的相邻块中的存储器地址映射到多个不同中间地址的同一个集合,但是其中不同块的存储器地址被映射到中间地址的不同模式中的中间地址;并且
其将特定数量(优选地对应于中间地址空间中的中间地址的数量)的(相连)存储器地址的每个块中的存储器地址映射到相应的不同中间地址,但是其中特定数量的存储器地址的连续(相邻)块被映射到中间地址的不同序列(模式/顺序)中的中间地址。
可以任何合适且期望的方式来确定和选择要使用的映射操作以及映射操作修改存储器地址在映射到中间地址时的分配的方式。例如,并且优选地,这可以基于对所讨论的数据处理器/数据处理系统的预期的和/或观察到的存储器事务的分析。在特别优选的实施方案中,对所讨论的数据处理器/数据处理系统的存储器访问的合适分析(诸如基准化分析)用于确定要使用的映射操作。
例如,并且优选地,对多个数据集和/或处理操作的适当分析可以用于识别例如预期的“平均”存储器地址访问分配和模式,例如,对于可以使用的多个数据集和/或多个处理操作,然后基于例如在所考虑的多个数据集和/或处理操作中的适当“平均”预期存储器地址访问模式和分配来选择映射操作。例如,为此,可以使用/分析来自常用基准和/或典型的(例如,图形)应用程序(诸如,游戏、用户界面、虚拟现实和计算应用程序)的存储器访问跟踪/模式。
在一个实施方案中,单个存储器地址到中间地址映射操作被用于所有数据集和处理操作,对于所有数据集和处理操作,以本发明的方式进行的从存储器地址到中间地址的映射将被执行。然后,这将简化本发明的任何具体实施,因为当所需的时候,给定数据处理器/数据处理系统将仅需要被配置为支持并执行一个(和相同)的单个存储器地址到中间地址映射操作。
在另一个实施方案中,支持多个不同的映射操作,其中例如并且优选地,通过相应地对存储器通道确定电路进行编程(例如,通过设置用于该电路的适当控制寄存器),能够在使用中设置要使用的映射操作。
在这种情况下,可以例如并且优选地通过用于所讨论的数据处理器的驱动器和/或通过需要由数据处理器处理的应用程序来完成对要使用的映射操作的选择和设置。对不同的映射操作的选择和设置可以基于例如所讨论的特定工作负荷和/或内容。例如,就至少图形处理器而言,与计算工作负荷(计算着色工作负荷)相比,针对渲染工作负荷可以使用不同的映射操作。当然,其他布置将是可能的。
此处应当注意,虽然存储器地址到中间地址映射操作优选地基于预期“存储器业务”,但是其不需要基于并且优选地不基于可以使用的存储器通道的数量。因此,映射优选地与存储器通道的数量无关(并且,在选择时,在不参考所使用的存储器通道的数量的情况下进行选择)(并且使用该映射或所选择的映射,而不管所使用的存储器通道的数量如何)。
将存储器地址映射到中间地址的映射操作可以任何合适且期望的方式来执行。在特别优选的实施方案中,这作为散列运算(使用散列函数)将存储器地址映射到中间地址来完成。
在特别优选的这种实施方案中,将多个散列向量的集合应用于存储器地址,从而生成对应的中间地址。在特别优选的实施方案中,中间地址中的每个位一个散列向量,其中该散列向量被应用于并用于存储器地址,以导出散列向量对应于的中间地址的位。因此,例如,在中间地址为6位值的情况下,将存在六个散列向量,每个中间地址位一个散列向量,这六个散列向量分别被应用于所讨论的存储器地址以导出对应的中间地址位值。
在这方面,所使用的散列向量优选地被设置为以便实现存储器地址在中间地址空间内的期望重新分配,并且例如,优先地并且如上文所讨论的,可以基于对所讨论的数据处理器和/或数据处理系统的观察到的和/或预期的存储器地址访问模式和分配的分析(基准化分析)来导出。
在这种情况下,可能存在例如总是使用的单个散列向量集合,或者可能存在多个不同的散列向量集合(例如,每个散列向量集合向中间地址空间提供不同“重新分配”),其中在使用中(例如,并且优选地,基于上文所讨论的内容)选择并设置要使用的散列向量集合。
散列向量可以任何合适且期望的方式应用于存储器地址。在特别优选的实施方案中,使用逻辑AND运算和逻辑XOR(异或)运算的组合。最优选地,将散列向量与存储器地址进行AND运算,然后将所得位一起进行XOR运算,以提供针对对应的中间地址位位置的对应输出位值。这将针对中间地址中的每个位位置而进行,以随后提供所讨论的存储器地址将被映射到的中间地址。
以这种方式使用AND运算和XOR运算的组合执行散列运算是用于执行该操作的特别有效且高效的机制,该机制在硬件中实现起来可能相对简单且便宜。
当然,其他布置将是可能的。
如上所述,在一个实施方案中,在这方面,优选地存在所使用的单个散列向量集合,这些散列向量用于需要映射到中间地址的任何和所有存储器地址。如果需要,将另选地可以具有不同的散列向量集合(例如,用于与不同的数据集一起使用和/或用于不同的处理操作)。在这种情况下,优选地仅散列向量改变,其中散列运算(例如,AND紧接在XOR之前)在所有情况下保持相同。
一旦与存储器访问相关联的存储器地址已被映射到中间地址,那么就将中间地址用于确定该多个存储器通道中的哪个存储器通道应该用于所讨论的存储器访问。为此,首先,基于被分配用于访问存储器的通道的数量来选择要用于根据中间地址确定要用于存储器访问的通道的映射操作。然后使用如此选择的映射操作根据中间地址来确定哪个通道要用于存储器访问。
因此,在这方面,应当注意,与存储器地址到中间地址的映射相比,中间地址到存储器通道的映射取决于所使用的通道的数量(而存储器地址到中间地址的映射与使用中的通道的数量无关,并且不取决于使用中的通道的数量)。
为了允许中间地址到通道的映射取决于所使用的通道的数量,在优选实施方案中,存在可用并且可能使用的多个不同的中间地址到存储器通道映射操作,其中每个这种映射操作旨在用于给定数量的存储器通道。
在这种情况下,例如,对于可能可用的可能数量的通道的不同子集,可能存在相应映射操作,诸如,在存在偶数数量的通道的情况下,使用一个映射操作,并且在存在奇数数量的通道的情况下,使用不同映射。
在特别优选的实施方案中,对于可以被提供用于访问存储器的每种不同数量的通道,存在不同的中间地址到存储器通道映射操作。因此,在至多八个通道能够被配置用于访问存储器的情况下,将优选地存在八种不同的中间地址到通道映射操作,这些中间地址到通道映射操作中要使用的一个中间地址到通道映射操作将根据所使用的通道的数量来选择。
在这方面,将可能的是,每种不同的中间地址到通道映射操作是明显不同的操作,但是在特别优选的实施方案中,所有中间地址到存储器通道映射操作使用相同类型的映射操作来将中间地址映射到通道,但是其中依据所使用的通道的数量(例如,并且优选地,通过依据并根据所使用的通道的数量设置适当的(控制)参数)来修改该映射操作。
在特别优选的实施方案中,中间地址到存储器通道映射操作使用取模运算(即,通过确定并基于当中间地址除以(选择的)除数时产生的余数来确定要使用的通道),其中取模运算的除数值基于所使用的通道的数量来设置,并且优选地等于所使用的通道的数量。因此,如果存在所使用的N个存储器通道(其被编号为1至N),将采用中间地址的取模N运算并将该取模N运算用于确定要使用N个通道中的哪个通道。
使用取模运算来在不同存储器通道之间分配中间地址是实施起来特别高效且简单的操作,并且可以例如容易地用于偶数和奇数数量的通道两者。此外,如上所述,在存储器地址到中间地址的映射是为了在中间地址范围内均匀地分配(预期的)存储器访问的情况下,那么使用取模运算将中间地址映射到存储器通道(例如,高速缓存)将对应地具有无论所使用的存储器通道的数量如何均(更)均匀地分配存储器访问的效果。
因此,在特别优选的实施方案中,将存储器地址映射到中间地址的映射操作是为了:与存储器地址在存储器地址空间内的分配相比,跨中间地址空间更均匀地分配被访问的(预期的)存储器地址,并且中间地址到存储器通道的映射使用取模N运算,其中N是所使用的存储器通道的数量。
当然,其他布置将是可能的。例如,如果需要,可以使用其他形式的散列运算代替取模运算来在不同的存储器通道之间分配中间地址。
对应地,为了实现中间地址到通道映射操作,存储器通道映射电路优选地包括多个中间地址到存储器通道映射电路,诸如并且优选地多个取模电路,其中要用于映射操作的中间地址到通道映射电路然后基于通道的数量来选择。在这方面,选择可以操作为仅激活并使用所选择的中间地址到通道映射电路,或者中间地址可以例如被输入到中间地址到通道映射电路中的每个(全部)中间地址到通道映射电路并且由其并行地执行,但是随后(仅)将期望的中间地址到通道映射电路的输出选择作为要使用的映射。
可以任何合适且期望的方式确定并指示所使用的存储器通道的数量(从而选择要使用的中间地址到通道映射操作)。在优选实施方案中,这优选地被作为适当的控制参数提供给存储器通道映射电路(例如,通过设置配置寄存器(例如,通过所讨论的数据处理器的驱动器)、设置用于电路的配置引脚),或者作为存储器通道映射电路/操作可以提取的元数据(例如,其在描述符中提供)提供。当然,其他布置将是可能的。
一旦已经根据中间地址确定了要用于存储器访问的存储器通道,那么就将如此确定的存储器通道用于存储器访问。如所讨论的,这可以包括经由所确定的存储器通道在存储器地址处读取数据,并且/或者经由所确定的存储器通道在存储器地址处写入数据。依据存储器通道的配置,这可以包括如上文所讨论的直接从存储器读取数据或直接将数据写入存储器,以及/或者从某种形式的中间存储装置(诸如,并且优选地,高速缓存)读取数据或将数据写入某种形式的中间存储装置。这将针对以本发明的方式进行的操作将被用于的每个存储器访问而进行。
可以使存储器访问以任何合适且期望的方式使用所确定的通道。这优选地通过配置操作使得访问被路由到所确定的通道(例如,高速缓存)(并经由所确定的通道进行路由)来完成。这可以并且优选地根据所讨论的数据处理器和数据处理系统的路由机制(协议)来完成。例如,可以将所确定的通道(索引)馈送到路由表中,然后为访问(消息)设置例如适当的标题,使得其将经由期望的存储器通道进行路由。
如上文所讨论的,存储器访问可以涉及可以对存储器进行的任何和所有访问。同样,存储器访问可以由可能需要访问存储器的数据处理器和数据处理系统的任何合适且期望的单元、元件、部件等发起,诸如执行数据处理操作的执行单元(诸如,处理内核(诸如,图形处理器中的着色器))、需要存储器地址转译数据的存储器管理单元、图形处理器中的切片器等。通常,以本发明的方式进行的操作可以用于任何DMA代理。
就至少图形处理器而言,存储器访问可以并且优选地的确包括:例如,在片段处理中读取输入纹理并将像素写入帧缓冲器,以及/或者在顶点处理中读取并写入顶点和属性。
如上文所讨论的,本发明涉及可以改变所使用的存储器通道的数量的情况。
因此,本发明的方法优选地还包括配置用于访问存储器的一个或多个通信通道的集合,并且优选地,设备还包括存储器通道配置电路,该存储器通道配置电路可操作为配置用于访问存储器的多个通信通道中的一个或多个通信通道的集合。优选地,随后将所配置的存储器通道的数量提供给存储器通道确定过程/电路,其中随后当进行存储器访问时,以本发明的方式进行操作。
可以任何合适且期望的方式提供能够被分配用于访问存储器的存储器通道的变化的数量。
在优选实施方案中,实际上,存在可能可用于访问存储器的多个通信通道(例如,L2高速缓存)的池,并且那些通道中的一些或全部被配置用于访问存储器(这些通道的分配可以随时间而变化)。
“池”中可能存在任何合适且期望数量的通道。在优选实施方案中,存在可以被分配用于访问存储器的4至64个通道,例如8、16或32个通道。优选地,可以分配来自“池”的不同数量的通道用于在不同时间访问存储器。可以分配任何数量的通道,或者仅允许某些数量(组合)的通道。
可以任何合适且期望的方式设置可用于在给定时间访问存储器的(来自池的)存储器通道的数量。这优选地通过将(能够配置的)通信网络配置为将期望数量的存储器通道启用为能够被用于访问存储器(例如,设置功能单元可以用于访问存储器的(适当)高速缓存的数量)来完成。当然,其他布置将是可能的。
在优选实施方案中,可用存储器通道的数量的任何配置能够在启动时和/或在运行时间中的一者或两者时完成(并且在启动时和/或在运行时间完成),其中该配置然后优选地被使用直到该配置被适当地重置。
本发明优选地在数据处理系统中实现,该数据处理系统包括至少一个数据处理器,该至少一个数据处理器包括将需要访问存储器的一个或多个功能单元,以及供功能单元使用的存储器通道的相关“池”。
因此,根据本发明的另外的方面,提供了一种数据处理系统,该数据处理系统包括(并且本发明对应地扩展到操作这种数据处理系统的对应方法):
一个或多个数据处理器;
用于访问存储器的多个通信通道(例如,并且优选地,高速缓存);
存储器通道配置电路,该存储器通道配置电路可操作为配置用于访问存储器的多个通信通道中的一个或多个通信通道的集合;和
一个或多个存储器通道确定电路,每个存储器通道确定电路:
被配置为确定已经被配置用于访问存储器的该多个通信通道中的一个或多个通信通道的集合中的哪个通信通道要用于对存储器的访问;
并且包括:
地址映射电路,该地址映射电路被配置为将与存储器访问相关联的存储器地址映射到中间地址空间内的中间地址;和
存储器通道映射电路,该存储器通道映射电路被配置为:
基于被配置用于访问存储器的通信通道的数量,选择映射操作用于根据中间地址确定被配置用于访问存储器的一个或多个通道的集合中的哪个通道要用于存储器访问;以及
使用所选择的映射操作根据中间地址来确定被配置用于访问存储器的一个或多个通道的集合中的哪个通道要用于存储器访问。
对应地,根据本发明的另外的方面,提供了一种数据处理器,该数据处理器包括(并且本发明对应地扩展到操作这种数据处理器的方法):
用于访问存储器的一个或多个通信通道(例如,并且优选地,高速缓存);和
一个或多个存储器通道确定电路,每个存储器通道确定电路:
被配置为确定已经被配置用于访问存储器的多个通信通道中的一个或多个通信通道的集合中的哪个通信通道要用于对存储器的访问;
并且包括:
地址映射电路,该地址映射电路被配置为将与存储器访问相关联的存储器地址映射到中间地址空间内的中间地址;和
存储器通道映射电路,该存储器通道映射电路被配置为:
基于被配置用于访问存储器的通信通道的数量,选择映射操作用于根据中间地址确定被配置用于访问存储器的一个或多个通道的集合中的哪个通道要用于存储器访问;以及
使用所选择的映射操作根据中间地址来确定被配置用于访问存储器的一个或多个通道的集合中的哪个通道要用于存储器访问。
本领域技术人员将会理解,本发明的这些方面视情况而定可以并且优选地的确包括本文所述的发明的优选的和任选的特征中的任何一个或多个或所有特征。
数据处理器和/或数据处理系统还将(优选地)包括一个或多个处理电路,该一个或多个处理电路可操作为使存储器访问经由所确定的存储器通道进行。
可能仅存在单个数据处理器(在这种情况下,存储器通道(通道的池)例如高速缓存将全部是同一单个数据处理器的一部分)(并且在一个实施方案中,就是这样)。
在特别优选的实施方案中,存在多个数据处理器,其中数据处理器中的一些、优选地多个并且优选地全部然后可以本发明的方式进行操作。在这种情况下,用于访问存储器的通信通道(例如,高速缓存)的“池”优选地包括在多个数据处理器中的不同数据处理器上的通信通道,即,使得可用于给定数据处理器的功能单元的存储器通道(可以)包括经由另一个数据处理器或除数据处理器本身之外的处理器提供的通道。在优选的这种实施方案中,可用于给定数据处理器的存储器通道包括数据处理器本身的一个或多个通道以及在另一个数据处理器或除数据处理器本身之外的处理器上(经由另一个数据处理器或除数据处理器本身之外的处理器提供)的一个或多个通道两者。
例如,并且优选地,多个处理器中的每个处理器可以包括(例如,L2)高速缓存,该高速缓存(当需要时)能够被配置为充当用于该处理器和系统的其他处理器两者的存储器通道。
数据处理器可以是任何合适且期望的数据处理器。通常,本发明可以用于利用多个存储器通道(例如,存储器的高速缓存或访问通道)的任何数据处理器并与其一起使用。因此,它或它们可以例如是中央处理单元(CPU)或神经(网络)处理器(神经处理单元(NPU))。在优选实施方案中,数据处理器是图形处理器(图形处理单元(GPU))。
在存在多个数据处理器的情况下,在优选实施方案中,每个数据处理器是相同类型的处理器(例如,所有处理器都是GPU),但是处理器的功能和资源可以彼此不同。
处理器(每个处理器)将包括一个或多个功能单元并且优选地多个功能单元,这些功能单元中的一些或全部将需要访问(并且访问)存储器。
数据处理器的功能单元优选地包括以下类型的功能单元中的一种或多种功能单元,优选地多种功能单元,并且优选地全部功能单元:一个或多个执行单元(执行内核)(就图形处理器而言,着色器内核),该一个或多个执行单元优选地是或包括可编程处理电路,该可编程处理电路可操作为执行程序以执行数据处理操作;管理单元(例如,作业管理器),该管理单元为数据处理器提供了主机处理器(或虚拟机)(软件)接口(并且优选地还可操作为将分派给数据处理器的数据处理任务划分为子任务,并将用于执行的子任务分配给处理单元的一个或多个执行单元);高速缓存(例如,L2高速缓存),该高速缓存向(数据处理系统的)外部(主)系统存储器提供通信通道(接口)。
数据处理器还可以包括其他功能单元,这取决于处理单元的目的。例如,基于片的图形处理器还可以包括片化单元(切片器)。
优选地,功能单元中的至少一些功能单元包括地址转译高速缓存(诸如转译后援缓冲器)。处理单元在那种情况下优选地还包括存储器管理单元(MMU)(然而,如果需要,适当的存储器管理单元也可以或替代地位于数据处理器的外部)。在优选实施方案中,每个地址转译高速缓存与本发明的存储器通道确定电路相关联,使得一旦地址转译高速缓存已经确定与存储器访问相关联的物理地址,就可以确定(并且确定)用于访问的对应存储器通道。
在优选实施方案中,将需要存储器访问的功能单元中的一些或全部并且优选地每个功能单元包括本发明的对应存储器通道确定电路,使得可以确定(并且确定)用于针对所讨论的功能单元的存储器访问的对应存储器通道。因此,在优选实施方案中,每个执行单元(处理内核(例如,就图形处理器而言,着色器内核))包括本发明的存储器通道确定电路和/或与其相关联,每个存储器管理单元也是如此。其他功能单元也可以视情况而定具有存储器通道确定电路。例如,就基于片的图形处理器而言,图形处理器的切片器还可以并且优选地的确还包括存储器通道确定电路或与其相关联。
如果需要,也可以在(多个)不同功能单元之间共享存储器通道确定电路。通常,存储器通道确定(和电路)应该并且优选地被配置为在存储器交易被安排在通道上之前发生,但是可以根据需要确定其他发生位置。
每个数据处理器优选地包括内部通信网络,以用于在数据处理器的功能单元之间路由通信。这些内部通信网络可以根据需要提供,但是在优选实施方案中,作为使用开关的优选地基于消息的互连提供。内部通信网络(互连)的路由可以优选地在使用中重新配置,例如,以便启用和禁用用于数据处理器的相应存储器通道。这优选地通过适当地配置内部通信网络中的开关来完成。
当然,数据处理器的其他配置也是可能的。
在特别优选的实施方案中,存在能够被配置为数据处理器的不同的相应分区的多个数据处理器(数据处理系统包括多个数据处理器),其中每个分区包括多个数据处理器中的一个或多个数据处理器的集合(并且优选地,能够独立地(并且分别地)被分配给例如(不同的)虚拟机(在任何给定时间),并且/或者可操作为独立于多个数据处理器中的一个或多个数据处理器的任何其他集合(分区)生成数据处理输出)。
在这种情况下,数据处理器的给定分区可以优选地包括仅单个数据处理器(在这种情况下,数据处理器将在“独立”模式下靠自己进行操作)或可以一起操作以例如向使用数据处理器的分区的虚拟机提供处理的多个数据处理器。在后一种情况下,集合(分区)中的多个数据处理器优选地以“主从”类型布置进行操作,其中该集合(分区)中的一个数据处理器作为主(主要)数据处理器进行操作,该主数据处理器控制在该集合(分区)中各自充当从(次要)数据处理器的一个或多个其他数据处理器上的处理操作。
在这种情况下,数据处理系统可以包括任何期望且合适的多个数据处理器。在实施方案中,存在四个或八个数据处理器,但是数据处理系统可以根据需要包括更多或更少的数据处理器。
在这种情况下,该多个数据处理器中的至少一些并且优选地全部包括一个或多个存储器通信通道(例如,并且优选地,呈一个或多个高速缓存的形式),其中数据处理器的分区中的数据处理器随后优选地能够被配置为使用该分区中的数据处理器的存储器通道。
因此,多个数据处理器的相应分区因此可以并且通常将包括多个存储器通道(例如,高速缓存)的对应集合,其中多个存储器通道的集合中的存储器通道(例如,高速缓存)中的至少一些位于该分区内的不同数据处理器上。通常,多个数据处理器中的每个相应分区可以具有由来自该分区内的数据处理器(例如,高速缓存)的存储器通道组成的多个存储器通道的不同集合,其中不同的分区因此可能包括不同数量的存储器通道(例如,高速缓存),例如,这由该分区内的数据处理器来确定。
例如,并且优选地,两个数据处理器的分区将具有可用于数据处理器的功能单元的两个存储器通道(例如,高速缓存),三个数据处理器的分区将具有可用于数据处理器的功能单元的三个存储器通道(高速缓存),依此类推。
因此,在这种情况下,将数据处理器配置为相应的分区(集合)将对应地配置并且优选地的确对应地配置了可用于该分区中的数据处理器的存储器通道(例如,并且优选地,高速缓存)的数量(并且因此改变分区的配置将对应地改变由给定数据处理器使用的存储器通道的数量)。
对应地,本发明的方法优选地包括(并且本发明的设备、数据处理器和数据处理系统优选地包括适当的一个或多个电路,该适当的一个或多个电路被配置为):通过将多个数据处理器中的一个或多个处理器配置为数据处理器的分区来配置用于访问存储器的一个或多个通信通道的集合,该分区可独立于该多个数据处理器中的其他数据处理器进行操作。
为了允许数据处理器被配置到数据处理器的相应分区中,数据处理器优选地经由相应的通信桥彼此连接,优选地(以菊花链)串联连接(使得通过通信桥连接的数据处理器可以彼此通信),这些通信桥可以在使用中被选择性地启用和禁用,从而允许数据处理器被配置到数据处理器的相应分区中。
在本实施方案中,能够以任何合适且期望的方式将数据处理器配置为数据处理器的期望子集(分区)(链接集合)。在优选实施方案中,这通过适当地设置数据处理器的内部通信网络以及数据处理器经由通信桥与其他数据处理器通信(以便允许与所讨论的一个或多个数据处理器或子集(分区)的所需操作模式相关的通信(并且阻止将不适用于所讨论的操作模式和/或适用于另一个操作模式的通信))的能力(或其他方面)来完成。
这可以例如并且优选地通过适当地设置控制数据处理器的内部通信网络和/或到该多个数据处理器中的其他数据处理器的通信桥的一个或多个开关来完成。
不但配置用于数据处理器的适当通信以形成数据处理器的期望子集(分区),而且将数据处理器配置到期望子集(分区)中也可以并且优选地的确也包括同样适当地配置数据处理器的操作(例如,视情况而定,独立、主或从操作)。
数据处理器优选地被数据处理系统的控制器配置到数据处理器的期望集合(分区)中。该控制器可以采取任何合适且期望的形式。该控制器优选地是数据处理系统的适当软件控制器,例如并且优选地,在数据处理系统的适当处理器(诸如CPU)上执行(并且与数据处理器本身分开)的软件控制器。
在优选实施方案中,该控制器是也可操作为控制例如由需要由数据处理器进行处理操作的虚拟机对数据处理器(的分区)的访问的控制器。
该控制器可以操作为以任何合适且期望的方式将数据处理器配置到数据处理器的相应分区(集合)中。
在特别优选的实施方案中,数据处理器具有相关联的管理电路,该相关联的管理电路可操作为(在控制器的控制下)将数据处理器配置到不同的分区(集合)中(例如,并且优选地,通过适当地设置数据处理器的内部通信网络以及数据处理器通信经由通信桥与其他数据处理器通信的能力(或其他方面)),并且控制器对应地控制数据处理器管理电路以将数据处理器分配和配置到数据处理器的期望分区(集合)中。
控制器可以任何合适且期望的方式控制管理电路来执行数据处理器的分区(集合)等的期望配置。在特别优选的实施方案中,管理电路包括独立的,例如并且优选地,仅可由合适的软件访问的配置接口,该配置接口可由用于此目的控制器访问(并且优选地仅可由其访问)。该接口可以包括例如用于设置控制管理电路的参数以配置数据处理器的配置寄存器集合。
在优选实施方案中,例如,响应于可以被检测到并传送到数据处理系统和控制器的某个事件,可以在使用中重新配置数据处理器的分区(集合)。在这种情况下,给定数据处理器和/或数据处理器的分区(集合)在被重新配置时优选地被重置和/或断电(然后重启)。
除了以这些实施方案的方式进行的操作所必需的数据处理器、通信桥等之外,数据处理系统还可以其他方式包括数据处理系统可能包括的任何其他合适且期望的部件、元素、单元等。
因此,在优选实施方案中,数据处理系统包括数据处理器和一个或多个主机数据处理器(例如,中央处理单元),优选地以及用于数据处理器的一个或多个驱动器,要使用数据处理器的一个或多个虚拟机和/或应用程序在该一个或多个主机数据处理器上执行。如上文所讨论的,主机处理器中的一个或多个主机处理器优选地还执行控制器,该控制器可操作为将数据处理器分为数据处理器的子集,并且/或者可操作为控制由相应虚拟机/应用程序对数据处理器(并且优选地对数据处理器的分区)的访问。
在一个实施方案中,数据处理系统和/或数据处理器包括以本发明的方式访问的并且例如存储本文所述的数据和/或存储用于执行本文所述的过程的软件的一个或多个存储器和/或存储器装置,并且/或者与该一个或多个存储器和/或存储器装置通信。
数据处理系统还可以包括一个或多个外围装置,诸如一个或多个输出装置(例如,显示屏、车辆控制器等)和/或一个或多个输入装置(例如,人机接口、车辆传感器等)。
本发明可以用于可以使用数据处理器(和数据处理系统)来生成的所有形式的输出。例如,就图形处理而言,图形处理器可以生成用于显示、渲染到纹理输出等的帧。在一个实施方案中,来自处理的输出数据值优选地被导出到存储器以用于存储和使用,诸如导出到用于显示器的帧缓冲器。
本发明适用于数据处理器数据处理系统的任何合适的形式或配置。在特别优选的实施方案中,本发明的各种功能在生成和输出数据的单个数据处理平台上执行。在一个实施方案中,本发明的各种功能在单个片上系统(SOC)数据处理系统上执行。
本发明可以在任何合适的系统诸如可合适地配置的基于微处理器的系统中实现。在优选实施方案中,本发明在基于计算机和/或微处理器的系统中实现。
可以任何期望且合适的方式来执行本发明的各种功能。例如,本发明的功能可以根据需要以硬件或软件来实现。因此,例如,除非另外指明,否则本发明的各种功能元件、阶段和“装置”可包括合适的一个或多个处理器、一个或多个控制器、功能单元、电路、电路系统、处理逻辑部件、微处理器布置等,这些部件可操作为执行各种功能等,诸如适当专用硬件元件(处理电路)和/或可编程硬件元件(处理电路),这些部件可被编程用于以期望的方式操作。
在这里还应注意,如本领域技术人员将了解,可在给定的处理器上并行地重复和/或执行本发明的各种功能等。同样,如果需要,各种处理阶段可共享处理电路等。
在执行上文所讨论的特定功能所需的任何硬件的条件下,数据处理系统和处理器可以另外包括数据处理系统和处理器所包括的任何一个或多个或所有通常的功能单元等。
本领域技术人员还将会理解,本发明的所有所述方面和实施方案可以并且优选地的确视情况而定包括本文所述的优选和任选特征中的任何一个或多个或所有特征。
根据本发明的方法可以至少部分地使用软件例如计算机程序来实现。因此,可以看出,当从其他方面考虑时,本发明提供了:计算机软件,该计算机软件在安装在数据处理装置上时特别适于执行本文描述的方法;计算机程序元素,该计算机程序元素包括在该程序元素在数据处理装置上运行时用于执行本文描述的方法的计算机软件代码部分;和计算机程序,该计算机程序包括在该程序在数据处理系统上运行时适于执行本文描述的方法的所有步骤的代码装置。该数据处理器可以是微处理器系统、可编程FPGA(现场可编程门阵列)等。
本发明还扩展到包括此类软件的计算机软件载体,该软件在用于操作处理器、渲染器或包括数据处理器的微处理器系统时,使所述处理器、渲染器或微处理器系统结合所述数据处理器执行本发明的方法的步骤。此类计算机软件载体可以是物理存储介质,诸如ROM芯片、CD ROM、RAM、闪存存储器或磁盘,或者可以是信号,诸如通过导线的电子信号、光信号或无线电信号,诸如到卫星的信号等。
还应当理解,不是本发明的方法的所有步骤都需要由计算机软件执行,并且因此根据更广的方面,本发明提供安装在计算机软件载体上的用于执行本文陈述的方法的步骤中的至少一个步骤的计算机软件和此类软件。
本发明因此可合适地体现为用于与计算机系统一起使用的计算机程序产品。此类具体实施可包括固定在有形非暂时性介质上的一系列计算机可读指令,诸如计算机可读介质,例如磁盘、CD ROM、ROM、RAM、闪存存储器或硬盘。其还可包括一系列计算机可读指令,这些计算机可读指令能够经由调制解调器或其他接口设备通过有形介质(包括但不限于光通信线路或模拟通信线路)或者无源地使用无线技术(包括但不限于微波、红外或其他传输技术)传输到计算机系统。该系列计算机可读指令体现了本文先前所述的功能的全部或部分。
本领域的技术人员将会理解,此类计算机可读指令可以多种编程语言编写,以与许多计算机架构或操作系统一起使用。此外,此类指令可使用目前或将来的任何存储器技术(包括但不限于半导体、磁性或光学技术)来存储,或者使用目前或将来的任何通信技术(包括但不限于光学、红外或微波技术)来传输。可设想的是,此类计算机程序产品可作为带有附随的印刷或电子文档(例如收缩包装软件)的可移动介质分发,可(例如在系统ROM或固定磁盘上)预加载计算机系统,或者可通过网络(例如互联网或万维网)从服务器或电子公告板分发。
附图说明
现在将仅以举例的方式并参考附图来描述本发明的实施方案,其中:
图1示意性地示出了根据一个实施方案的数据处理系统;
图2和图3示意性地示出了图1的数据处理系统的另外的细节;
图4示意性地示出了图1、图2和图3的数据处理系统的某些方面;
图5示出了本发明的实施方案中的操作;
图6更加详细地示出了图5所示的操作的某些方面;
图7、图8、图9和图10示出了在本发明的实施方案中使用的存储器地址到中间地址映射;
图11示意性地示出了其中可以实现本实施方案的示例性数据处理系统;
图12示意性地示出了图11的数据处理系统的另外的细节;
图13示意性地且更详细地示出了图11和图12的数据处理系统的图形处理单元的部件;并且
图14示意性地示出了图11和图12的数据处理系统的另外的细节。
在适当的情况下,类似的附图标记用于所有附图中的类似特征。
具体实施方式
现在将描述本发明的许多优选实施方案。
如上文所讨论的,本发明涉及数据处理系统的操作,在数据处理系统中,可以存在可由功能单元诸如执行内核用于访问存储器的多个独立存储器通道,并且可以在使用中改变可由功能单元诸如处理内核使用的存储器通道的数量。
图1至图10示意性地示出了在这方面的本发明的实施方案的操作。图11至图14更详细地示出了其中可实现并使用本发明的实施方案的示例性数据处理系统。
图1示意性地示出了示例性数据处理系统100,该示例性数据处理系统尤其包括多个处理内核101(在本示例中,存在16个处理内核),每个处理内核都可以与可能可由处理内核101使用的相应组的高速缓存库102(在这种情况下,8个高速缓存库)中的高速缓存库102通信。如图1所示,每个高速缓存库有效地提供通向外部存储器103的相应且独立的通信通道(存储器通道)。
在该系统中,假设每个处理内核101可以访问每个高速缓存库102,其中每个高速缓存库用作通向外部存储器103的通道,并且提供了具有高速缓存容量和存储器带宽资源的内核101。
在这方面,应当理解,图1仅示意性地示出了用于说明本发明的实施方案的操作所必需的数据处理系统的部件和元件等。数据处理系统中将存在图1中未示出的另外的部件、元件等。
本实施方案具体地涉及可以将不同数量的高速缓存库102分派给相应处理内核101以从而充当用于那些处理内核的通向外部存储器103的通道的情况。具体地,处理内核和高速缓存库可以被组织为数据处理系统内的相应分区,其中每个分区包括处理内核的相应子集,该相应子集然后共享高速缓存库的相应子集。
图2和图3示出了将图1中所示的数据处理系统的处理内核和高速缓存库分成此类相应分区的示例性细分。图2示出了分成两个分区的细分,即,包含7个处理内核和2个高速缓存库的第一分区200和包含9个处理内核和6个高速缓存库的第二分区201。图3示出了将数据处理系统分成两个分区300、301的细分,其中每个分区包含8个内核和4个高速缓存库。
应当注意,尽管图2和图3示出了仅将处理内核101和高速缓存库102分成两个分区的细分,但是如果需要,分区的其他配置将是可能的,诸如存在三个或更多个分区。
在这些布置中,每个分区将被配置为对称多处理(SMP)系统,即,使得分区中的高速缓存库(存储器通道)对于分区中的所有处理内核是对称的,并且分区中的每个内核具有对分区中的所有高速缓存库的访问权限并且有效地将所有高速缓存库视为“单个”高速缓存。
由于每个分区是对称多处理系统,因此每个内核可以被认为能够被配置为具有变化数量的N个存储器通道(高速缓存库),其中N从1变化到N,其中N是可能可由内核使用的高速缓存库的最大数量(因此,在图1、图2和图3中所示的示例中,为8)。图4示出了这一点并且示出了能够被分派至多N个高速缓存库401(这取决于内核所位于的分区的配置)的示例性内核400。
在本实施方案中,为了通过分区中的(每个)处理内核在可由该分区使用的高速缓存库之间分配对外部存储器103的存储器访问,基于与存储器访问相关联的存储器地址将存储器访问分配给高速缓存库(存储器通道)。然而,不是直接根据存储器地址来确定要使用的高速缓存库(存储器通道),而是首先将存储器地址映射到(转换为)中间地址空间中的中间地址,然后将中间地址用于确定使用哪个高速缓存库(存储器通道)。这提供了基于地址的且静态的地址分配方案(从而有助于保持高速缓存相干性和存储器一致性),但是申请人已经发现的方案将在其中可用于处理内核的存储器通道(在该实施方案中,高速缓存库)的数量可以改变并且以实现起来相对简单且高效的方式改变的数据处理系统中提供更好的性能。
图5示出了当将存储器地址映射到相应的高速缓存库(存储器通道)时在本实施方案中的操作。
如图5所示,处理内核将发起存储器访问(步骤450)。在这方面,存储器访问可以例如是从存储器读取数据,或者可以是将数据写入存储器。
存储器访问将具有与其相关联的存储器地址,该存储器地址指示访问所应用于的存储器位置。
该存储器地址将是存储器地址空间内由存储器支持并且可以由用于存储器访问的地址的地址大小(地址宽度)表示的存储器地址。例如,存储器访问可以与64位、40位或32位地址相关联。
如图5所示,在本实施方案中,首先将与存储器访问相关联的存储器地址映射到中间地址空间内的中间地址(步骤451)。该映射与可用于已经进行了存储器访问的处理内核的存储器通道(高速缓存库)的数量无关,因此将相同的存储器地址到中间地址映射用于所有存储器访问,而不管可能在使用中的存储器通道(高速缓存库)的数量如何。
在本实施方案中,映射到中间地址的存储器地址是与存储器访问相关联的物理存储器地址。因此,在已经执行了与存储器访问相关联的地址的任何虚拟地址到物理地址转译之后,将用于存储器访问的存储器地址映射到适当的中间地址。如果需要,其他布置诸如将与存储器访问相关联的虚拟地址映射到中间地址是可能的。
在本实施方案中,用于存储器访问的存储器地址被映射到的中间地址包括比存储器地址空间更小的中间地址空间内的中间地址。因此,中间地址将具有比存储器地址更小的大小(宽度)。例如,中间地址可以是6位地址。
在本实施方案中,配置存储器地址到中间地址的映射,以便与在存储器地址空间内分配访问相比,在中间地址空间内更均匀地分配在数据处理系统中被访问的(预期)存储器地址。如将在下文更详细地讨论,这样做是为了有利于使用取模运算来接着跨不同的高速缓存库(存储器通道)分配中间地址。
在本实施方案中,这通过以为了使存储器地址在中间地址空间中的分配随机化的方式将存储器地址映射到中间地址的映射操作来实现。如下文将进一步讨论的,这通过使用具有跨中间地址空间随机分配存储器地址的效果的散列向量对存储器地址执行散列运算来实现。这些散列向量基于对所讨论的数据处理系统的观察到的和/或预期的存储器访问业务的分析来确定,以便导出合适的散列向量和散列运算,这些合适的散列向量和散列运算将在中间地址空间内更均匀地分配预期的和/或观察到的存储器访问模式。
如果需要,可以使用其他布置和其他形式的存储器地址到中间地址的映射。
一旦与存储器访问相关联的存储器地址已经被映射到中间地址,则将使用中间地址确定要使用的存储器通道。为此,首先基于使用中的存储器通道(在这种情况下,高速缓存库)的数量选择(设置)要使用的中间地址到存储器通道映射,其中所选择的映射然后用于确定要用于存储器访问的存储器通道(高速缓存库)(步骤452)。
在本实施方案中,中间地址到存储器通道映射使用取模运算,其中取模运算的除数被设置为等于存储器通道(高速缓存库)的数量。因此,中间地址将经受取模N运算,其中N是可用于所讨论的处理内核的存储器通道的数量,其中来自取模运算的余数然后指示要用于存储器访问的存储器通道(其中存储器通道被假设为被从1到N编号)。
因此,要用于确定使用哪个存储器通道的取模运算是基于用于处理内核的存储器通道的数量来选择并设置的,然后对中间地址执行该取模运算以确定哪个存储器通道要用于存储器访问。
一旦已经确定了要用于存储器访问的存储器通道(在这种情况下,高速缓存库),则经由所确定的存储器通道进行存储器访问(步骤453)。这在本实施方案中通过配置操作使得使用并根据所讨论的数据处理器和数据处理系统的路由机制(协议)将访问路由到所确定的通道(并经由所确定的通道进行路由)来实现。具体地,将所确定的通道(索引)馈送到路由表中,然后为访问(消息)设置适当的标题,使得其将经由期望的存储器通道进行路由。当然,其他布置将是可能的。
图6更详细地示出了在本实施方案中将存储器地址映射到中间地址并根据中间地址确定要使用的存储器通道的操作。
如图6所示,对于A位存储器地址a 460,该地址首先通过地址映射电路461(呈散列电路的形式)经受散列运算,以根据存储器地址460生成对应映射的中间地址b 462,该中间地址在本示例中被假设为B位地址(例如,6位地址)。
如图6所示,运行散列运算以将散列向量463的相应集合应用于存储器地址460,中间地址462中的每个位一个散列向量。具体地,如图6所示,对于中间地址的每个位存在相应散列向量,并且首先将该散列向量与存储器地址460进行AND运算464,然后将AND运算的结果进行XOR运算465,从而提供输出位,该输出位是中间地址462中所讨论的位的值。因此,就6位中间地址462而言,将存在6个散列向量463,这些散列向量将被应用于存储器地址460以生成中间地址462的对应6个位。
实际上,该运算将线性变换矩阵(矩阵乘法)应用于存储器地址460,以从而生成对应映射的中间地址462。
用于存储器地址到中间地址映射的散列向量可以例如根据对所讨论的数据处理系统中的预期的和/或观察到的存储器访问模式和业务的分析来确定,并且应该被设置为以致基于该分析来实现存储器地址到中间地址空间中的期望映射。
如图6所示,然后将如此确定的中间地址462输入到存储器通道映射电路466的中间地址集合,这些存储器通道映射电路在本实施方案中呈取模电路467的集合的形式,该组取模电路分别在中间地址除以所讨论的取模电路的除数(即,执行中间地址462的取模运算)时确定余数。如图6所示,存在M取模电路,其中M是可能可由处理内核使用的存储器通道(高速缓存库)的最大数量。
如图6所示,然后将当前使用的存储器通道(在这种情况下,高速缓存库)的数量N的取模结果选择468为指示要用于存储器地址460的存储器通道(高速缓存库)。
如上所述,本实施方案使用存储器地址到中间地址映射,该存储器地址到中间地址映射实际上使存储器地址在中间地址空间中的分配随机化,因为这样然后会在中间地址空间中提供存储器访问的更均匀分配,该存储器地址到中间地址映射将与用于将中间地址分配给存储器通道的取模运算一起更高效地且更好地发挥作用。
存储器地址到中间地址映射和取模运算的组合效果是在分区的高速缓存库(存储器通道)之间(更)均匀地分配来自用于该分区的内核的存储器业务,从而实现更好的存储器通道利用,并且因此实现更好地总体系统性能。
图7至图10示出了存储器地址从存储器地址空间到中间地址空间中的示例性映射,这些示例性映射具有在可以在本发明的实施方案中使用的中间地址空间中均匀地分配存储器地址的效果。这些示例性映射为了清除起见示出了32地址存储器地址空间到4地址中间地址空间的映射。当然,大得多的存储器地址和中间地址空间将是可能的,并且图7至图10所示的映射将在其他大小的地址空间中以对应方式进行操作。
图7示出了(32)存储器地址700到(4)中间地址701的第一示例性映射。在这种情况下,特定数量的存储器地址的每个块702(在这种情况下,每个块4个存储器地址)被映射到相同中间地址703(因此存储器地址0-3全部映射到例如中间地址0),其中(4)存储器地址的连续块被映射到中间地址序列中的连续中间地址(并且当达到最高中间地址时,中间地址序列重复(返回到开头)(环绕))。
图7还示出了当映射应用于存储器地址时以本实施方案的方式实现该映射的对应散列向量(矩阵)704。
该映射将在以下情况下特别有用:存储器访问模式倾向于使用与存储器地址“块”大小对应的步长读取存储器地址(即,倾向于读取被与存储器地址“块”大小对应的步长间隔开的连续地址),以及/或者存储器系统支持并行读取特定数量的存储器地址(在同一周期中)。
由于图7中的存储器地址“块”大小是四个存储器地址,因此图7所示的映射特别适合于将(倾向于)使用4个存储器地址的步长和/或并行读取4个存储器地址的布置。具体地,如从图7可以看出,当读取每隔三个存储器地址的存储器地址(步长为4)时,将跨中间地址空间均匀地分配存储器访问。对应地,四个连续存储器地址的块将映射到相同中间地址(并且因此使用相同的存储器通道)。
类似的布置可以用于其他存储器地址“块”大小,例如,在预期使用不同的步长的情况下。
图8示出了存储器地址700到中间地址701的第二示例性映射。在这种情况下,特定数量的存储器地址的每个块710中的存储器地址(优选地对应于中间地址空间中的中间地址的数量—因此,在这种情况下,每个块4个存储器地址)被映射到相应的不同中间地址(因此,存储器地址0-3分别映射到例如中间地址0-3),但是其中(4)存储器地址的连续(相邻)块被映射到处于中间地址的不同序列的中间地址(因此,存储器地址4-7分别映射到例如中间地址1、0、3、2)。
因此,在这种情况下,特定数量的连续存储器地址的至少一些(并且大多数)块将被映射到中间地址,使得这些连续存储器地址在中间地址空间中的顺序不同于地址在存储器地址空间中的顺序(并且其中存储器地址的不同块以不同的顺序映射到中间地址空间)。因此,对于至少一些存储器地址,其在映射到中间地址时的顺序将不同于其在存储器地址空间中的顺序。
图8还示出了当映射应用于存储器地址时以本实施方案的方式实现该映射的对应散列向量(矩阵)711(在这种情况下,其将为对角矩阵)。
已经发现该映射在以下情况下特别有用:存储器访问模式倾向于使用为2的幂的步长(例如,为2、4或8的步长)读取存储器地址,因为该存储器访问模式将跨中间地址空间均匀地分配以此类序列读取的存储器地址。
图9示出了存储器地址700到中间地址701的另外的示例性映射,该示例性映射类似于图8所示的映射,因为特定数量的存储器地址的每个块中的存储器地址(同样地,优选地对应于中间地址空间中的中间地址的数量—因此,在这种情况下,每个块4个存储器地址)被映射到相应的不同中间地址(因此,存储器地址0-3分别映射到例如中间地址0-3),并且其中(4)存储器地址的连续(相邻)块被映射到处于中间地址的不同序列的中间地址,但是其中中间地址的序列以与图8所示的方式不同的方式变化(因此,在图9中,存储器地址4-7分别映射到例如中间地址3、2、1、0)。
该映射使用与图9所示的散列向量712对应的形式为x^2+×+1的多项式散列,并且已经发现该映射在以下两种情况下都特别有用:存储器访问模式倾向于使用为2的幂的步长(例如,为2、4或8的步长)读取存储器地址,以及使用为非2的幂的步长(例如,为3、5、6或7的步长)的情况(因为该存储器访问模式将跨中间地址空间均匀地分配在所有此类情况下读取的存储器地址)。
图10示出了使用图9的映射模式(因此使用多项式散列)但被应用于多个(在这种情况下,4个)存储器地址的相应块(使得多个(4)连续存储器地址全部映射到相同中间地址,但多个(4)存储器地址的连续块以与图9中的各个地址的模式相同的模式映射到中间地址)的映射。因此,在这种情况下,多个(4)存储器地址的块的序列将以与在图9的映射中各个存储器地址被映射到中间地址的模式相同的模式映射到中间地址。
从图10所示的该映射的对应散列向量(矩阵)715可以看出,该映射基本上使用来自图9的但向左移位了两个位置的散列向量(矩阵)。
该映射在以下情况下可能是有用的:存储器系统一起读取多个(在这种情况下,四个)连续地址,如上所述(并且期望支持使用不同步长来访问存储器)。
图11至图14示出了其中可以实现本发明的实施方案的数据处理系统的实施方案,在这种情况下,该数据处理系统呈汽车片上系统(SoC)的形式。
图11示出了呈汽车片上系统(SoC)的形式的数据处理系统的实施方案。
如图11所示,该实施方案的数据处理系统1包括三个CPU(中央处理单元)集群:第一“质量管理”(QM)集群2,包括运行“质量管理”软件的CPU 3(因此CPU 3不具有汽车安全特征);其次,“ASIL”(汽车安全完整性等级)(功能安全,FuSa)集群4,包括CPU 5,但这次运行经过适当安全认证的软件;以及“安全岛”集群6,包括运行用于配置系统和故障处理的经过安全认证的软件的CPU 7。
如图11所示,每个CPU集群还包括其自己的通用中断控制器(GIC)8、9、21。
除了CPU集群之外,系统还包括“图形处理”集群10,其包括图形处理单元(图形处理器)(“切片”)的集合11,如下文将进一步讨论的,这些图形处理单元能够向在QM集群2和ASIL集群4上执行的虚拟机提供处理功能。
在此示例中,图形处理单元的集合11包括八个图形处理单元(切片0-7,其中每个切片是该集合中的图形处理单元),但是当然其他数量的图形处理单元也是可能的。如下文将进一步讨论的,在此实施方案中,图形处理单元(GPU)能够以各种模式操作,即作为“独立”GPU或者作为主要(主)和一个或多个次要(从)GPU的一个或多个链接的组。
图形处理单元11还具有与其相关联的管理电路(分区管理器)12(作为图形处理集群10的一部分)。
如图11所示,系统支持用于图形处理集群10的三个独立的通信总线连接:第一通信总线18,其可以例如用于非安全关键业务并且因此由QM集群2使用;第二总线19,其可以是安全关键/安全总线,并且例如用于安全关键业务并且因此由ASIL集群4使用;以及第三总线20,其可以是安全关键/安全总线,但也具有特权限制(即,仅可由具有适当特权的总线主设备访问),并且用于仅由安全岛6进行配置通信。
该系统还包括适当的系统高速缓存13、DRAM控制器14、互连15、16、外部存储器103以及用于图形处理集群10的系统存储器管理单元(sMMU)17(例如,提供了分离安全和非安全地址空间的二级地址转译,并且基于每个访问窗口流ID隔离了对每个虚拟机的存储器访问)。
当然,可以存在未在图10中示出的功能单元、处理器、系统元件和部件等。
用于图形处理单元11的管理电路(分区管理器)12能够操作以配置和设置能够配置的通信网络,该能够配置的通信网络设置了不同图形处理单元(切片)11之间的通信路径,并且还设置了(以及哪些)图形处理单元如何与QM集群2和ASIL集群4通信(并且具体地,总线18、19中的哪一者可以用于与相应图形处理单元通信)。具体地,在此实施方案中,可以设置通信网络以将图形处理单元(切片)11配置为图形处理单元的两个不同的组,一组用于QM集群2(并且耦合到该集群的总线18),并且一组用于ASIL集群4(并且耦合到该集群的总线19)。
除了能够设置能够配置的通信网络以将图形处理单元细分为不同的组之外,管理电路(分区管理器)还支持并且能够将组的图形处理单元的组织配置为该组的图形处理单元(切片)的一个或多个能够独立分配的分区(子集)。
管理电路(分区管理器)12还以通信接口形式提供了“访问窗口”的集合,由此虚拟机可以访问并控制图形处理单元的给定分区。在本实施方案中,每个此类访问窗口包括(通信)寄存器的集合,其具有可用于寻址那些寄存器的对应物理地址的集合。
这些访问窗口还提供了虚拟机可借以与仲裁器通信的机制(其中仲裁器用于虚拟机将使用的图形处理单元的组),并且具体地提供了一种机制,用于虚拟机和仲裁器交换消息,例如相对于请求处理资源的虚拟机以及控制虚拟机对处理单元(的分区)的访问的仲裁器,例如当访问窗口被启用以使用分区时和/或当虚拟机将放弃其对分区的使用时发信号,例如以便允许不同的虚拟机访问分区。虚拟机-仲裁器接口独立于虚拟机-图形处理单元分区接口。
因此,图形处理集群10有效地提供了图形处理资源的集合,包括图形处理单元(切片)11和受管理电路12支持的分区和访问窗口,这些资源可以被细分为多个(在本实施方案中为两个)图形处理资源“组”,每个组包含这些图形处理单元(切片)中的一个或多个图形处理单元,并且具有与它们相关联的图形处理单元的独立能够分配的分区中的一者或多者以及一个或多个“访问窗口”。
在本实施方案中,管理电路(分区管理器)12支持将图形处理单元11细分为最多四个分区的两个不同的组(一个用于QM集群2,并且另一个用于ASIL集群4),并且提供了16个访问窗口的集合以供虚拟机与图形处理单元的分区通信。当然,其他布置将是可能的。
在本实施方案中,这些图形处理资源到相应组中的配置是由管理电路(分区管理器)12在安全岛6上执行的(特权)控制器30以及QM集群2和ASIL集群4上执行的相应仲裁器31、32的控制下完成的。
为了支持该操作,管理电路(分区管理器)12还包括适当的配置接口,例如,并且在一个实施方案中,呈适当的配置寄存器集合的形式,这些配置寄存器集合可以分别由安全岛6上的控制器30和CPU集群上的仲裁器31、32访问并设置。这些控制器和仲裁器对应地可以相应地设置其配置寄存器,从而控制管理电路(分区管理器)12,以相应地配置图形处理资源(以及具体地配置图形处理资源的能够配置的通信网络)。管理电路(分区管理器)12还可包括用于此目的的一个或多个状态机。
仲裁器31、32能够操作以控制在相应集群上执行的虚拟机到已经被分配给该集群的对应图形处理资源组的访问。每个仲裁器可以与对应管理程序相关联地操作,以用于管理在所讨论的集群上执行的虚拟机的操作(但是独立于该管理程序)。
控制器30能够向其配置的每个“资源组”分配图形处理单元的集合10的一个或多个图形处理单元、分区管理器11支持的分区中的一个或多个分区,以及分区管理器支持的访问窗口中的一个或多个访问窗口。每个组还被分配给“集群”通信总线18和19中的相应一者,取决于该组将由QM集群2使用(在这种情况下,其将被分配给对应QM集群总线18)还是由ASIL集群4使用(在这种情况下,其将被分配给ASIL总线19)。
为了配置将可用于QM集群2和ASIL集群4的图形处理资源的相应组,安全岛6上的控制器30在管理电路(分区管理器)12的(特权-限制)配置寄存器中设置适当的配置参数,响应于此,管理电路12相应地配置用于图形处理单元(切片)11的通信网络。控制器30经由限制配置总线20与管理电路(分区管理器)12直接通信。
为了有利于该操作,管理电路(分区管理器)12尤其包括控制接口(通信接口)的集合,其可以用于控制管理电路来配置图形处理资源组,并且然后使用这些组中的资源。这些控制(通信)接口包括相应地址空间和寄存器的集合,它们可以由在处理器(处理器集群)上执行的适当软件来寻址。
图12更详细地示出了图11中所示的系统的某些方面。具体地,图12更详细地示出了该实施方案中的每个图形处理单元(图形处理器)(切片)11的部件。
如图12中所示,在此实施方案中,每个图形处理单元(切片)包括一个或多个执行单元,诸如可编程处理(着色器)内核500(SC)和切片器502。在此实施方案中,每个图形处理单元是基于图块的。不同的图形处理单元11可以具有不同的执行单元集合,并且具有比图12中所示的那些更多的执行单元类型。
每个图形处理单元还包括2级(L2)高速缓存504,该2级高速缓存充当通向存储器的存储器通道,输入要在数据处理任务中使用的数据,并且通过经由合适的存储器互连(未示出)连接到外部系统存储器103的高速缓存接口510输出所得输出数据。尽管图12仅示出了每个图形处理单元中的单个2级高速缓存,但是一些或全部图形处理单元可以根据需要包括多个2级高速缓存(和/或其他形式的存储器通道)。
图形处理单元还可以包括存储器管理单元(MMU)508,但是其也可以或替代地位于图形处理单元的外部。
每个图形处理单元还包括呈作业管理器(JM)514的形式的管理单元。这为图形处理单元11提供了软件接口,并且因此经由任务接口从在所讨论的CPU集群上运行的驱动器接收用于虚拟机的任务(命令和数据),并将由驱动器给出的任务划分为子任务,并将用于执行的子任务分配到图形处理单元的各个执行单元(着色器内核500、切片器502)。在图形处理单元11能够作为主设备操作的情况下,作业管理器514被配置为也能够控制链接的从图形处理单元的执行单元。对应地,对于能够作为从设备操作的图形处理单元11,当图形处理单元在从模式下操作时,作业管理器514能够被禁用。
如图12示意性地示出,每个图形处理单元的各个功能单元等经由异步内部通信网络518彼此连接,该异步内部通信网络承载了各种业务,诸如执行单元与2级(L2)高速缓存504之间的存储器事务、作业管理器514与执行单元之间的子任务控制业务等。
内部通信网络518被配置为使用开关的基于消息的互连。图形处理单元的每个功能单元与网络的对应(开关)节点相关联,该节点可操作为将消息引导到其相关联的功能单元,或者将消息传递到下一个节点(下一个功能单元),视情况而定。内部通信网络518上的消息路由和寻址基于图形处理单元的节点(功能单元)的网络拓扑(序列)。
如图12所示,内部通信网络518还具有到图形处理单元的“外部”的相应“外部”连接(通信桥)524,并且包括可被激活以启用或禁用跨这些连接的通信的适当开关(未示出)。这些通信桥允许相邻的图形处理单元在充当多个图形处理单元的分区时相互连接并相互通信。在本实施方案中,通信桥524被实现为支持图形处理单元之间的异步接口,因为这允许图形处理单元的更容易的物理具体实施,因为当图形处理单元被链接时时钟可以是独立的。
图形处理单元的不同操作模式(独立模式、主模式和从模式)通过适当地配置内部通信网络518的路由来设置(启用和禁用)。因此,例如,当图形处理单元将在独立模式下操作时,禁用外部连接524以阻止经由通信桥进行通信。对应地,当图形处理单元将充当主设备或从设备时,启用外部连接524的一个或两个集合,以允许与连接的图形处理单元进行通信。
在本实施方案中,由管理电路(分区管理器)12通过图形处理单元11的配置接口重新配置内部通信网络518。在一个实施方案中,任何路由配置(或重新配置)仅在图形处理单元的重置期间发生。
图12还示出了管理电路的能够配置的通信网络59,如上所述,其可以在安全岛6上的控制器的控制下被设置,以将图形处理单元配置到相应组中,并且耦接到通信总线18、19等中的适当的一者。
图13示出了本实施方案中的图形处理单元(切片)11的配置的某些方面。具体地,如图13所示,为了允许例如根据本实施方案、以本实施方案的方式并且具体地如上文参考图5和图6所述在分区的2级高速缓存之间分配来自该分区中的相应图形处理单元的不同功能单元的存储器访问,将发布对外部存储器的存储器访问的图形处理单元11的每个功能单元在本实施方案中具有图6所示的形式的相关联存储器通道确定电路,以用于确定从该功能单元将给定存储器访问发送给哪个2级高速缓存(即,存储器通道)。
更具体地,可以发布对外部存储器的存储器访问的每个功能单元包括地址转译高速缓存(例如,TLB(转译后援缓冲器))534(该地址转译高速缓存可以用于存储最近的虚拟存储器到物理存储器地址转译,以供功能单元使用),并且与如图6所示的对应存储器通道确定电路536相关联,该对应存储器通道确定电路操作为将由TLB生成的用于存储器访问的物理存储器地址映射到对应中间地址,并且根据中间地址确定分区中存储器访问要被发送给的2级高速缓存。
如图13所示,在该实施方案中,着色器内核(SC)500、切片器502、存储器管理单元(MU)508和作业管理器(JM)514各自具有与它们相关联的相应TLB 534,并且每个TLB 534还与存储器通道确定电路536相关联,该存储器通道确定电路可操作为以本实施方案的方式根据由TLB 534确定的用于由所讨论的功能单元进行的存储器访问的物理存储器地址确定使用分区中的哪个2级高速缓存。然后,存储器访问将从功能单元适当地路由到如此确定的2级高速缓存(存储器通道)。
图13还示出了经由(从)2级(L2)高速缓存504(其由此充当通向用于图形处理单元的存储器的存储器通道)到外部存储器的接口510。
此处应当注意,图12和图13示出了在该实施方案中的图形处理单元的概述,并且仅示意性地并且为了清楚起见,仅示出了与所描述的本实施方案的特定操作相关的图形处理单元等的元件、部件、链接等。
同样,本实施方案的数据处理系统和/或图形处理单元可以根据需要包括在以下申请中所述的特征中的一个或多个特征:US 2017/0236244,其全部内容以引用方式并入本文;和/或US 2019/0056955,其全部内容以引用方式并入本文。
如上所述,这些实施方案中的通信桥524允许图形处理单元(图形处理器)11在一个或多个图形处理单元的分区中连接在一起。
图14示出了在这方面的一些示例性分区配置。(在该图中,不同分区之间的连接被示出为被“阻挡”,因为分区将彼此隔离。图形处理单元之间的通信桥(和其他连接)包括用于此目的的适当的隔离逻辑,以确保在使用中的不同分区之间没有串扰。)
图14示出了具有第一四个图形处理单元分区600、第二三个图形处理单元分区601和第三单个图形处理单元分区602的示例性配置。其他分区配置是可能的并且支持的。
如图14所示,在本实施方案中,当两个或更多个图形处理单元操作为主图形处理单元和一个或多个从图形处理单元的链接分区(集合)时,禁用从图形处理单元的切片器、MMU和作业管理器。
对应地,当两个或更多个图形处理单元操作为主图形处理单元和一个或多个从图形处理单元的链接分区(集合)时,链接的多个图形处理单元将包含多个2级高速缓存(在该分区中每个图形处理单元包括一个2级高速缓存)。因此,在分区中存在图形处理单元时,每个分区实际上将具有通向外部存储器的呈2级高速缓存的形式的许多存储器通道(并且对应地重新配置分区以包含不同数量的图形处理单元将改变可用于该分区的处理单元的存储器通道(L2高速缓存)的数量)。
如上文关于图1至图4所讨论的,分区被对应地配置为相应对称多处理系统,使得每个图形处理单元(和每个图形处理单元的相关功能单元)具有对该分区中的所有2级高速缓存的访问权限,并且有效地将该分区中的所有2级高速缓存视为“单个”高速缓存。
因此,例如根据本实施方案、以本实施方案的方式并且具体地如上文参考图5和图6所述在分区的2级高速缓存之间分配来自该分区中的相应图形处理单元的不同功能单元的存储器访问。(因此,如上所述并且如图13所示,可以发布对外部存储器的存储器访问的图形处理单元的每个功能单元与如图6所示的对应存储器通道确定电路相关联,该对应存储器通道确定电路操作为转变由TLB生成的用于存储器访问的物理存储器地址,以确定分区中存储器访问要被发送给的2级高速缓存。)
根据上文将理解,本发明至少在其优选实施方案中可以提供将有利于具体地在使用中的存储器通道的数量可以变化的情况下跨多个存储器通道适当分配存储器访问的改进的系统。这至少通过以下操作在本发明的优选实施方案中实现:映射与中间地址空间中的中间地址相关联的存储器地址,然后根据中间地址确定要使用的存储器通道。
Claims (20)
1.一种确定在访问其中能够配置用于访问存储器的通信通道的变化的数量的数据处理系统中的所述存储器时使用多个通信通道中的哪个通信通道的方法,所述方法包括:
通过以下操作来确定已经被配置用于访问存储器的多个通信通道中的哪个通信通道要用于对所述存储器的访问:
将与所述存储器访问相关联的存储器地址映射到中间地址空间内的中间地址;
基于被配置用于访问所述存储器的所述通道的数量,选择映射操作用于根据所述中间地址确定被配置用于访问所述存储器的所述多个通道中的哪个通道要用于所述存储器访问;以及
使用所选择的映射操作根据所述中间地址来确定被配置用于访问所述存储器的所述多个通道中的哪个通道要用于所述存储器访问;
所述方法还包括:
将所确定的通信通道用于所述存储器访问。
2.根据权利要求1所述的方法,其中所述存储器通道包括提供到所述存储器的接口的中间存储元件,并且所述方法包括:
通过以下操作来确定已经被配置用于访问存储器的多个中间存储元件中的哪个中间存储元件要用于对所述存储器的访问:
将与所述存储器访问相关联的存储器地址映射到中间地址空间内的中间地址;
基于被配置用于访问所述存储器的中间存储元件的数量,选择映射操作用于根据所述中间地址确定被配置用于访问所述存储器的所述多个中间存储元件中的哪个中间存储元件要用于所述存储器访问;以及
使用所选择的映射操作根据所述中间地址来确定被配置用于访问所述存储器的所述多个中间存储元件中的哪个中间存储元件要用于所述存储器访问;
以及
将所确定的中间存储元件用于所述存储器访问。
3.根据权利要求1所述的方法,其中所述中间地址空间小于所述存储器地址空间。
4.根据权利要求1所述的方法,其中所述存储器地址到所述中间地址的所述映射是为了跨所述中间地址空间均匀地分配一个或多个规则序列的存储器地址。
5.根据权利要求1所述的方法,其中所述存储器地址到所述中间地址的所述映射是为了将所述存储器地址基本上随机地映射到所述中间地址。
6.根据权利要求1所述的方法,其中所述存储器地址到所述中间地址的所述映射是为了以下项中的至少一项:
将多个相邻存储器地址的块映射到相同中间地址;
将多个相邻存储器地址的相邻块映射到不同中间地址;
将多个相邻存储器地址的块中的每个存储器地址映射到不同中间地址;以及
将多个存储器地址的相邻块中的所述存储器地址映射到多个不同中间地址的同一个集合,但是其中所述不同块的所述存储器地址被映射到所述中间地址的不同模式中的所述中间地址。
7.根据权利要求1所述的方法,其中使用散列运算执行所述存储器地址到所述中间地址的所述映射,所述散列运算包括:
对于多个散列向量中的每个散列向量,每个散列向量对应于所述中间地址中的位位置:
执行所述散列向量与所述存储器地址的逻辑AND,然后执行所述结果的逻辑XOR,从而提供针对与所述散列向量对应的所述中间地址位位置的所述输出位值。
8.根据权利要求1所述的方法,其中所述中间地址到存储器通道映射操作使用取模运算,其中所述取模运算的除数值被设置为等于已经被配置用于访问所述存储器的所述通道的数量。
9.一种用于确定在访问其中能够配置用于访问存储器的通信通道的变化的数量的数据处理系统中的所述存储器时使用多个通信通道中的哪个通信通道的设备,所述设备包括:
存储器通道确定电路,所述存储器通道确定电路被配置为确定已经被配置用于访问存储器的多个通信通道中的哪个通信通道要用于对所述存储器的访问,所述存储器通道确定电路包括:
地址映射电路,所述地址映射电路被配置为将与存储器访问相关联的存储器地址映射到中间地址空间内的中间地址;和
存储器通道映射电路,所述存储器通道映射电路被配置为:
基于被配置用于访问所述存储器的通道的数量,选择映射操作用于根据所述中间地址确定被配置用于访问所述存储器的所述多个通道中的哪个通道要用于所述存储器访问;以及
使用所选择的映射操作根据所述中间地址来确定被配置用于访问所述存储器的所述多个通道中的哪个通道要用于所述存储器访问。
10.根据权利要求9所述的设备,其中:
所述存储器通道包括提供到所述存储器的接口的中间存储元件;
所述存储器通道确定电路被配置为确定已经被配置用于访问存储器的多个中间存储元件中的哪个中间存储元件要用于对所述存储器的访问;并且
所述存储器通道映射电路被配置为:
基于被配置用于访问所述存储器的中间存储元件的数量,选择映射操作用于根据所述中间地址确定被配置用于访问所述存储器的所述多个中间存储元件中的哪个中间存储元件要用于所述存储器访问;以及
使用所选择的映射操作根据所述中间地址来确定被配置用于访问所述存储器的所述多个中间存储元件中的哪个中间存储元件要用于所述存储器访问。
11.根据权利要求9所述的设备,其中所述中间地址空间小于所述存储器地址空间。
12.根据权利要求9所述的设备,其中所述存储器地址到所述中间地址的所述映射是为了跨所述中间地址空间均匀地分配一个或多个规则序列的存储器地址。
13.根据权利要求9所述的设备,其中所述存储器地址到所述中间地址的所述映射是为了将所述存储器地址基本上随机地映射到所述中间地址。
14.根据权利要求9所述的设备,其中所述存储器地址到所述中间地址的所述映射是为了以下项中的至少一项:
将多个相邻存储器地址的块映射到相同中间地址;
将多个相邻存储器地址的相邻块映射到不同中间地址;
将多个相邻存储器地址的块中的每个存储器地址映射到不同中间地址;以及
将多个存储器地址的相邻块中的所述存储器地址映射到多个不同中间地址的同一个集合,但是其中所述不同块的所述存储器地址被映射到所述中间地址的不同模式中的所述中间地址。
15.根据权利要求9所述的设备,其中所述地址映射电路被配置为使用散列运算将所述存储器地址映射到所述中间地址,所述散列运算包括:
对于多个散列向量中的每个散列向量,每个散列向量对应于所述中间地址中的位位置:
执行所述散列向量与所述存储器地址的逻辑AND,然后执行所述结果的逻辑XOR,从而提供针对与所述散列向量对应的所述中间地址位位置的所述输出位值。
16.根据权利要求9所述的设备,其中所述存储器通道映射电路被配置为将取模运算用于所述中间地址到存储器通道映射操作,其中所述取模运算的除数值被设置为等于已经被配置用于访问所述存储器的所述通道的数量。
17.一种数据处理器,所述数据处理器包括:
用于访问存储器的一个或多个通信通道;和
一个或多个功能单元;
其中所述一个或多个功能单元中的一个或多个功能单元与权利要求9至16中任一项所述的存储器通道确定设备相关联。
18.一种数据处理系统,所述数据处理系统包括:
多个数据处理器,所述多个数据处理器能够被配置为所述数据处理器的不同相应分区,其中每个分区包括所述多个数据处理器中的一个或多个所述数据处理器的集合;
其中:
所述数据处理器中的每个数据处理器包括:
用于访问存储器的一个或多个通信通道,其中所述数据处理器的分区中的所述数据处理器能够被配置为使用所述分区中的所述数据处理器的所述存储器通道来访问存储器;和
根据权利要求9至16中任一项所述的一个或多个存储器通道确定设备;
并且
所述数据处理系统还包括:
分区配置电路,所述分区配置电路能够操作为将所述多个数据处理器中的所述数据处理器配置为所述数据处理器的相应一个或多个分区,并且由此配置可用于所述一个或多个分区中的所述数据处理器的存储器通道的数量。
19.根据权利要求18所述的方法,其中所述数据处理器全部是图形处理器,并且所述存储器通道包括所述图形处理器的提供到存储器的接口的2级高速缓存。
20.一种包括计算机软件代码的计算机程序,所述计算机软件代码用于当所述程序在数据处理装置上运行时执行根据权利要求1至8中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2102764.4 | 2021-02-26 | ||
GB2102764.4A GB2604153A (en) | 2021-02-26 | 2021-02-26 | Data Processors |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114968847A true CN114968847A (zh) | 2022-08-30 |
Family
ID=75377362
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210191779.4A Pending CN114968847A (zh) | 2021-02-26 | 2022-02-28 | 数据处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220276966A1 (zh) |
KR (1) | KR20220122521A (zh) |
CN (1) | CN114968847A (zh) |
GB (1) | GB2604153A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11785018B2 (en) * | 2021-07-29 | 2023-10-10 | Bank Of America Corporation | Mobile device management system for securely managing device communication |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9213639B2 (en) * | 2012-09-25 | 2015-12-15 | Teradata Us, Inc. | Division of numerical values based on summations and memory mapping in computing systems |
US20140122807A1 (en) * | 2012-10-31 | 2014-05-01 | Hewlett-Packard Development Company, Lp. | Memory address translations |
CN104461727A (zh) * | 2013-09-16 | 2015-03-25 | 华为技术有限公司 | 内存模组访问方法及装置 |
US10162750B2 (en) * | 2015-12-17 | 2018-12-25 | Intel Corporation | System address reconstruction |
GB2547252B (en) | 2016-02-12 | 2019-12-11 | Advanced Risc Mach Ltd | Graphics processing systems |
GB2565770B (en) | 2017-08-15 | 2019-09-18 | Advanced Risc Mach Ltd | Data processing systems |
JP2019057178A (ja) * | 2017-09-21 | 2019-04-11 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10877693B2 (en) * | 2018-06-29 | 2020-12-29 | Intel Corporation | Architecture for dynamic transformation of memory configuration |
US10642734B1 (en) * | 2018-12-03 | 2020-05-05 | Advanced Micro Devices, Inc. | Non-power of two memory configuration |
US12007909B2 (en) * | 2020-12-15 | 2024-06-11 | Xsight Labs Ltd. | Elastic resource management in a network switch |
-
2021
- 2021-02-26 GB GB2102764.4A patent/GB2604153A/en active Pending
-
2022
- 2022-02-22 US US17/652,013 patent/US20220276966A1/en active Pending
- 2022-02-23 KR KR1020220023520A patent/KR20220122521A/ko unknown
- 2022-02-28 CN CN202210191779.4A patent/CN114968847A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
GB202102764D0 (en) | 2021-04-14 |
KR20220122521A (ko) | 2022-09-02 |
US20220276966A1 (en) | 2022-09-01 |
GB2604153A (en) | 2022-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822491B2 (en) | Techniques for an efficient fabric attached memory | |
US10732982B2 (en) | Data processing systems | |
EP2480975B1 (en) | Configurable cache for multiple clients | |
JP5170782B2 (ja) | ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ | |
TWI588653B (zh) | 針對記憶體存取的動態記憶列模式定址 | |
EP2202643B1 (en) | Methods and apparatus for providing user level DMA and memory access management | |
US8982140B2 (en) | Hierarchical memory addressing | |
US11604752B2 (en) | System for cross-routed communication between functional units of multiple processing units | |
US5652853A (en) | Multi-zone relocation facility computer memory system | |
US10430327B2 (en) | Virtual machine based huge page balloon support | |
US9348751B2 (en) | System and methods for distributing a power-of-two virtual memory page across a non-power-of two number of DRAM partitions | |
WO2022096890A1 (en) | Data processing systems | |
US9164903B2 (en) | Memory manager | |
US20220276966A1 (en) | Data processors | |
US7389398B2 (en) | Methods and apparatus for data transfer between partitions in a computer system | |
EP4241168A1 (en) | Data processing systems | |
US20230410246A1 (en) | Data processing systems | |
JPH01316870A (ja) | ベクトルレジスタ分割制御方式 |
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 |