CN107995978B - 一种可编程内存传输请求处理装置 - Google Patents
一种可编程内存传输请求处理装置 Download PDFInfo
- Publication number
- CN107995978B CN107995978B CN201680033047.5A CN201680033047A CN107995978B CN 107995978 B CN107995978 B CN 107995978B CN 201680033047 A CN201680033047 A CN 201680033047A CN 107995978 B CN107995978 B CN 107995978B
- Authority
- CN
- China
- Prior art keywords
- port
- memory
- transfer request
- memory transfer
- address space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 93
- 230000005540 biological transmission Effects 0.000 title claims description 50
- 238000012546 transfer Methods 0.000 claims abstract description 487
- 238000000034 method Methods 0.000 claims abstract description 19
- 230000008569 process Effects 0.000 claims abstract description 15
- 238000013519 translation Methods 0.000 claims description 126
- 238000005192 partition Methods 0.000 claims description 86
- 230000004044 response Effects 0.000 claims description 83
- 230000002093 peripheral effect Effects 0.000 claims description 22
- 238000013507 mapping Methods 0.000 claims description 20
- 239000000872 buffer Substances 0.000 claims description 19
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 53
- 230000005055 memory storage Effects 0.000 description 28
- 238000006073 displacement reaction Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 14
- 230000002776 aggregation Effects 0.000 description 12
- 238000004220 aggregation Methods 0.000 description 12
- 230000008520 organization Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000008672 reprogramming Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000008521 reorganization Effects 0.000 description 4
- 239000002356 single layer Substances 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000011960 computer-aided design Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 101100400452 Caenorhabditis elegans map-2 gene Proteins 0.000 description 1
- 241000102542 Kara Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- WFGFAPPOWRDEGZ-UHFFFAOYSA-M tributyl(pyren-4-ylmethyl)phosphanium;bromide Chemical group [Br-].C1=CC=C2C(C[P+](CCCC)(CCCC)CCCC)=CC3=CC=CC4=CC=C1C2=C34 WFGFAPPOWRDEGZ-UHFFFAOYSA-M 0.000 description 1
Images
Classifications
-
- 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
-
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data 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
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- 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/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- 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/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
一种包括可编程内存传输请求处理(PMTRP)单元(120)和可编程直接内存访问(PDMA)单元(140)的装置(100)。该PMTRP单元(120)包括至少一个可编程区域说明符(123),该PDMA单元(140)包括至少一个可编程的内存到内存传输控制说明符(148、149、150)。该PDMA单元(140)可向PMTRP单元(120)发送(143)内存传输请求。该PMTRP单元(120)可接收(134)并成功处理通过PDMA单元(120)发出的、寻址到与该PMTRP单元(120)的至少一个区域说明符(123)中至少一个的一部分相关的内存位置的内存传输请求。
Description
技术领域
本发明涉及但不限于所谓的内存保护单元、内存管理单元、指令缓存、数据缓存和以转换后备缓冲器形式用于内存管理单元的缓存的实施和使用。本发明的各实施例可适用于很多32位和64位处理器环境,包括但不限于对实时、安全性和安全关键性网络物理计算环境以及资源高度受限的计算环境。
背景技术
本说明书中对公开文件的引用不应视为将该文件的内容作为本说明书中技术人员公知常识的一部分。[1]、[2]和[3]中公开了内存管理架构的示例。用于说明各种内存保护单元(MPU)和内存管理单元(MMU)技术架构的技术术语定义有时会相互矛盾。整个说明书(包括权利要求书)中:
·“包括”和“包含”用于说明存在该特征、整体、步骤或部件,但不排除存在或增加一个或多个其他特征、整体、步骤或部件。
·与内存控制器(例如,图1中的115)耦合的内存存储器(例如,图1中的118)可视为较高抽象层面上的内存存储器。
·外围设备(例如,图1中的网络控制器105)可以或可以不(例如,密码加速器模块)具有外部I/O引脚。外围设备包括至少一个互连接口,其中每个互连接口是互连主机或互连目标端口。
·总线是互连形式;交叉开关是互连形式。
·内存到内存直接内存访问(M2MDMA)单元(例如,图1中的140)是专门优化的可编程硬件电路,用于通过一个或多个互连主端口(例如,图1中的143和144)发出内存传输请求,以便读取存储于一个内存单元中的内存值并将该值写入不同的内存单元。M2MDMA是受不同主设备(例如,图1中的110或194)控制的从属设备。众所周知,此类M2MDMA单元的一个示例有Intel8237A。M2MDMA单元还具有与内存移动相关的其他功能,例如,从内存存储器中读取连续的内存单元,并将每个数据字写入内存映射的外围设备的相同地址中。M2MDMA单元可视为可编程的直接内存访问(PDMA)单元。
·内存保护单元(MPU)可接收与输入地址空间相关联的内存传输请求,且响应地生成与输出地址空间相关联的内存传输请求。MPU的特征在于:(a)访问控制可应用于输入地址空间的一个或多个区域;(b)MPU总是在输入地址空间中的内存传输请求地址与输出地址空间中对应的内存传输请求地址之间进行标识转换。显然,一些MPU架构可支持在运行时,将两个或多个区域说明符映射到输入地址空间的相同连续区域。
·内存管理单元(MMU)可接收与输入地址空间相关联的内存传输请求,且响应地生成与输出地址空间相关联的相应内存传输请求。MMU的特征在于:(a)可将访问控制应用于输入地址空间的一个或多个区域;(b)MMU适用于将与输入地址空间相关联的内存传输请求地址和输出地址空间中对应的内存传输请求地址进行转换。
·格式正确的内存传输请求是指针对内存传输请求,可正确满足相关互连协议要求的任何内存传输请求。接收到格式正确的内存传输请求意味着请求未出现问题,且请求在传输过程中未受到破坏。
说明内存管理技术的众多出版物中,“虚拟地址空间”可映射到“物理地址空间”。若通用处理器上运行的软件具有单级地址转换装置(该装置用于给定计算机构架中),则该术语具有明确定义。本说明书所使用的术语是“输入地址空间”映射到“转换地址空间”。若计算机构架具有两层或多层地址转换装置,则第二个术语可统一用于每一级内存地址转换装置;也可统一用于可接收通用处理器、图形处理器和其他类型的互连主设备外围设备中内存传输请求的内存地址转换装置。
整个说明书(包括权利要求书)中,页、页说明符、帧、段、段说明符和范围说明符的定义如下:
·长度为N字节的“帧”定义了转换地址空间中的连续内存区域,该转换地址空间的长度为N字节,始于N字节边界;
·长度为N字节的“页”定义了输入地址空间中的连续内存区域,该地址空间的长度为N字节,始于N字节边界。“页说明符”可说明与输入地址空间相关联的一页内存。输入地址空间中的一页内存可映射到转换地址空间中的一帧内存。
·长度为N字节的“段”定义了输入地址空间中的连续内存区域,该地址空间的长度为N字节,始于O字节边界。段的分配部分长度可小于N字节,也可始于该段内的地址偏移。术语“可变长度段”是指段的分配端口长度可变。段的分配部分可映射到转换地址空间中P字节边界上的连续内存区域。O和P值也可不同;N、O和P值之间的关系可根据分段方案实施细节而变化。实际上,一些计算机构架可采用硬件中的装置,以防止两个可编程段的分配部分在输入地址空间中重叠。正确操作其他计算机构架可能需要执行软件,以确保运行时两个可编程段的分配部分在输入地址空间中不重叠。“段说明符”说明了与输入地址空间相关联的一段内存。
·长度为N字节的“范围说明符”定义了输入地址空间中的连续内存区域,该区域长度为N字节。范围可通过下限地址和上限地址,或下限地址和范围长度来定义。若给定范围说明符中未启用可编程地址转换,则可使用标识转换将输入地址空间范围映射到输出地址空间中的连续内存区域。范围说明符可始于和止于输入地址空间中的精细粒度边界(例如,64字节粒度)。或者,范围说明符可始于和止于输入地址空间中的粗粒度边界(例如,千字节粒度)。市场上现成MPU的实施通常明确允许两个或多个范围说明符(其中此类范围说明符不具有可编程地址转换能力)与输入地址空间中的重叠内存区域相关联。
整个说明书(包括权利要求书)中,缓存行、缓存块、缓存子块和缓存标签的定义如下:
·“缓存行”是连续内存区域。习惯上,通用计算机构架中,缓存行的长度范围为8字节到32字节。原则上,缓存行的长度可等于页或段的最大长度。每个缓存行均与一个缓存标签相关;缓存行中,“缓存标签”可存储关于缓存行的元数据。该元数据可包括但不限于其在输入地址空间中的地址和/或在转换地址空间中的地址以及缓存状态。
·“缓存块”是细分为缓存子块的连续内存区域。习惯上,通用计算机构架中,缓存块由2到4个缓存子块组成;习惯上,通用计算机构架中,缓存子块的长度范围为8字节到32字节。每个缓存块均与一个缓存标签相关;缓存块中,缓存标签可存储关于缓存块的元数据。该元数据可包括但不限于其在输入地址空间中的地址和/或在转换地址空间中的地址以及缓存子块的状态。
整个说明书(包括权利要求书)中,“可编程内存传输请求处理”(PMTRP)单元和“区域说明符”的定义如下:
·PMTRP单元可根据各策略来接收和处理内存传输请求,其中每个内存传输请求与特定地址空间相关联,且每个地址空间与该PMTRP单元执行的特定策略相关联。“区域说明符”可用于将各策略与特定地址空间的特定区域关联,该特定区域与特定PMTRP单元示例相关。例如:
о区域说明符可以或可以不适用于一个或多个访问控制字段;
о区域说明符可以或可以不适用于一个或多个地址转换字段;且
о区域说明符可以或可以不适用于修改内存子系统默认行为的字段,该内存子系统可接收通过PMTRP单元发出的内存传输请求(例如,通过调整缓存写入策略和/或内存时序策略)。
·与区域说明符关联的地址空间区域:
о关于地址空间中所有潜在基础地址偏移的特定子集,可以或可以不受限制;且
о关于所有潜在区域长度的特定子集,可以或可以不受限制。
因此,“区域说明符”的字段可执行各说明符,包括但不限于:页说明符、段说明符、转换后备缓冲器说明符、范围说明符、不带编程地址转换的范围说明符、带编程地址转换的范围说明符和缓存标签。
显然,给定区域说明符的特定字段是专门为该区域说明符示例定义的。
PMTRP单元可独立于一个或多个互连主设备,该互连主设备可向该PMTRP单元的一个或多个互连目标端口发出内存传输请求。通过非限制性示例,执行MMU功能的PMTRP单元可用作一台互连主外围设备的专用IOMMU,同时具有通用性。此外,执行MMU功能的PMTRP单元可适用于多个互连主设备外围设备之间所共享的共享IOMMU,同时具有通用性。
整个说明书(包括权利要求书)中,“可编程区域说明符”应定义为区域说明符,其中可以编程方式调整该区域说明符的一个或多个字段。
用于管理计算机构架中主内存的早期MMU方案通常适用于具有小存储容量的主内存。
随着物理内存的存储容量的增加,基于不同原理的MMU方案可用来克服那些为小存储容量而设计的MMU方案中各种设想或实际限制[1]、[2]。
据作者所知,所有已公布的可支持具有精细粒度内存分配能力的大输入地址空间的MMU方案均采用(受控于软件或硬件控制)转换后备缓冲器(TLB)。此类TLB可用于缓存与输入地址空间相关、潜在的数量极大的区域说明符中较少的区域说明符。参考VAX-11/780架构[3],VAX-11/780MMU方案需8388608个区域说明符来分配整个32位输入地址空间[2]。VAX-11/780中的一些实施方式采用了统一的TLB来缓存高速内存中多达8388608个区域说明符[2]中的多达128个,并将启用的区域说明符存储于一个或多个表中以及较慢的主内存中。接着,据作者所知,行业惯例特别重点强调在搜索区域说明符时,可采用两个(或多个)间接级别(索引方案、散列方案、链表方案)来改进潜在的大量启用区域说明符的管理。显然,业界倾向于使用两种或两种以上的间接级别,是为了克服VAX-11/780架构[2]等单级转换架构中存在的各种技术难题。据作者所知,支持两个或多个级别间接访问32位或64位地址空间中叶区域说明符的MMU方案的所有公开实施方式均采用(受控于软件或硬件的)TLB来加速其性能。众所周知,结合数据缓存使用TLB来缓存区域说明符明显增加了执行处理器内核上所运行软件的静态时序分析的复杂性,该处理器内核具有可启用的数据缓存以及TLB功能。
对于操作延迟短、处理量高、时间恒定的MMU构架存在长期的需求,该MMU构架可支持32位和64位输入地址空间中的相对精细粒度内存分配。微控制器市场中,还需提供PMTRP单元,该PMTRP单元可作为内存保护单元(MPU)工作,也可作为MMU工作以运行商用高可信安全关键性实时操作系统(RTOS),原因是很多高可信RTOS依赖于使用具有地址转换功能的硬件MMU。
长期以来,人们仍需一种装置,在实时环境中以时间分析的方式,经济有效地加快区域说明符的重新编程,缩短延迟,从而支持更快速的任务交换并改进系统性能;
还需支持两个级别的地址转换,其中每个级别的地址转换均受控于不同的软件(例如,管理程序可控制MMU方案的第一级别,托管在管理程序上的操作系统可控制该MMU方案的第二级别),适用于静态时间分析的实时系统。
须运行基于页的MMU方案来支持通用操作系统(例如,Linux)的资源受限环境(例如,物联网)中,对于创新MMU架构也有迫切的市场需求,该MMU架构需减少硬件电路区域来实施常规基于页的MMU,且还可支持在用户地址空间线程交换之后更快速地执行软件。
本发明的优选实施例为上述市场需求提供了新颖和创新的解决方案。
本发明优选实施例的说明
长期以来,人们需要一种装置,在实时环境中以时间分析的方式,经济有效地加快区域说明符的重新编程,缩短延迟,从而支持更快速的任务交换并改进系统性能。
图1是根据本发明优选实施例,用于处理数据的设备(100)各部分的示意框图。该装置(100)包括处理器单元(110)。该处理器单元(110)具有连接到互连(190)的互连主端口(111)。处理器单元的示例包括但不限于:通用的16位、32位或64位处理器内核;图形处理器单元;或应用型专用处理器内核。原则上,可采用互连主外围设备来代替处理器单元(110)。
该装置(100)还包括非易失性内存存储器(112)。该非易失性内存存储器(112)通过其互连目标端口(113)连接到互连(190)。
该设备(100)还包括可编程的内存传输请求处理(PMTRP)单元(120)。PMTRP单元可执行的功能示例包括但不限于:基于页的内存管理单元(MMU);具有转换后备缓冲器以缓存最近访问页说明符、基于页的MMU;基于段的MMU;具有转换后备缓冲器以缓存最近访问段说明符、基于段的MMU;内存保护单元(MPU);以及缓存,其中缓存标签和缓存数据可存储于PMTRP单元(120)内存存储器(123)的可编程配置数据中。
缓存标签可包括但不限于以下各字段:单比特缓存行存在字段;(32位/64位)输入地址字段;(32位/64位)转换地址字段;针对用户软件任务可对访问控制策略的多位字段进行编码;针对系统软件任务可对访问控制策略的多位字段进行编码;针对互连主外围设备可对访问控制策略的多位字段进行编码;单比特“缓存行存在”标志;具有8、16和/或32比特粒度的当前掩码字段;“最近访问读取的缓存行”标志;单比特“缓存行脏”标志;具有8、16和/或32位粒度的脏掩码字段;多位缓存模式字段(例如,通写、回写等);用于指示多总线主设备环境中内存一致性要求的多位内存时序字段。
该装置(100)还包括:
·可编程的直接内存访问(PDMA)单元(140);
·可选的单向互连桥接器(160):该桥接器(160)的互连主端口(161)连接到互连(191),而其互连目标端口(162)连接到互连(192);
·同步动态随机存储器(SDRAM)控制器(115):该SDRAM控制器(115)的互连目标端口(116)连接到互连(192);
·SDRAM(118):该SDRAM(118)的目标端口(119)连接到SDRAM控制器(115)的主端口;
·具有互连目标端口(171)和存储装置(172)的片上静态随机存储器(SRAM)(170);
·网络接口外围设备(105):该网络接口外围设备(105)的互连目标端口(106)和互连主控端口(107)均连接到互连(192);
·高清晰度多媒体接口(HDMI)外围设备(180):该HDMI外围设备(180)的互连目标端口(181)和互连主端口(182)均连接到互连(192);
·双端口(188、189)通用串行总线(USB)外围设备(185):该USB外围设备(185)的互连目标端口(186)和互连主端口(187)均连接到互连(192);
·具有集成内核(199)、MMU子系统(197)和缓存子系统(199)的通用处理器(194):该通用处理器(194)通过互连主端口(195)和互连目标端口(196)连接到互连(292)。
可将可编程的内存传输请求处理(PMTRP)单元(120)、可编程的直接内存访问(PDMA)单元、可选的桥接器(160)和互连(191)统一称为复合可编程的内存传输请求处理单位(165)。
本指导说明书中,处理器单元(110)可从互连主设备(111)向互连(190)发出数据内存传输请求和/或代码内存传输请求。
可编程的内存传输请求处理(PMTRP)单元(120)具有控制单元(121),可通过写入端口(126)和读取端口(127)来访问运行时间控制单元(122)。该运行时间控制单元(122)具有一个或多个控制寄存器(未示出)库。该PMTRP单元(120)可访问内存存储器(123)。该内存存储器(123)可存储用于PMTRP单元(120)的可编程配置数据。该可编程配置数据可存储至少两个可编程区域说明符元素。该控制单元(121)还可在连接到互连(190)的互连目标设备(128)上接收内存传输请求;还可在连接到互连(192)的互连主设备(129)上发送内存传输请求。该控制单元(121)还可根据与第一地址空间相关的至少一个策略,来处理与互连目标端口(128)上接收到的第一地址空间相关的内存传输请求,处理过程中,该内存传输请求可在存储于内存存储器(123)的可编程配置数据中的至少两个或多个可编程区域说明符元素中进行编码。
可编程的内存传输请求处理(PMTRP)单元(120)具有互连目标端口(134),可接收内存传输请求,以访问存储于内存存储器(123)中可编程配置数据内的一部分区域说明符元素。该PMTRP单元(120)包括读取装置(132)和写入装置(133),可允许并处理格式正确的内存传输请求,该内存传输请求可通过PDMA单元(140)的互连主设备(143)寻址到内存存储器(123)内的有效存储器位置。
本发明的优选实施例中,可编程的内存传输请求处理(PMTRP)单元(120)的互连目标端口(134)也可接收内存传输请求,以访问存储于内存存储器(123)中的一部分可编程配置数据(非区域说明符)。
该PMTRP单元(120)具有互连目标端口(124),可将读取和写入内存传输请求接收到运行时间控制单元(122),该互连目标端口(124)连接到互连(190);或者,该PMTRP单元(120)具有互连目标端口(136),可将读取和写入内存传输请求接收到运行时间控制单元(122),该互连目标端口(136)连接到互连(192)。
该可编程的直接内存访问(PDMA)单元(140)具有连接到互连(191)的第一互连主端口(143)、连接到互连(192)的第二互连主端口(144)和连接到互连(192)的互连目标端口(142)。该PDMA单元(140)可采用双向FIFO模块(147)。该FIFO单元(147)的第一端口连接到第一子控制电路(145);第二端口连接到第二子控制单元(146)。该第一子控制电路(145)可向互连主机(143)发出内存传输请求,并使用计数器(151)和当前内存地址索引(152);该第二子控制电路(146)可向互连主机(144)发出内存传输请求,并使用计数器(153)和当前地址索引(154)。
该PDMA单元(140)可通过互连目标端口(142)上接收到的一个或多个内存传输请求来进行编程。本指导说明书中,该PDMA单元(140)具有一个可编程的内存到内存传输说明符(148、149、150)。该内存到内存的传输说明符(148、149、150)具有三个字段:源内存地址字段(148)、目标内存地址字段(149)和内存传输长度字段(150)。该内存到内存的传输说明符可通过写入字段(148),再次(149)并再次(150)按顺序写入。
内存到内存传输说明符的三个字段(148、149、150)全部写入之后,PDMA单元(140)的内存到内存传输开始工作。该操作过程如下:源地址(148)的值加载到两个子控制电路(145、146)其中一个的当前地址指针(151、153)中;目标地址(149)加载到两个子控制电路(145、146)中另一个的当前地址指针(151、153)中。例如,源地址(148)的高位可用于指示源地址与哪个PDMA单元(140)的主端口(143、144)相连。或者,该PDMA单元(140)可将源地址与每个主端口(143、144)相连的不同内存地址范围进行比较,以确定该源地址与哪个主端口相连。再将内存传输长度字段(150)的值复制到两个计数器字段(151、153)中。该FIFO单元(147)复位,以确保该FIFO单元的队列中不存在数据元素。接着,控制单元(141)指示两个子控制电路(145、156),根据需要开始读写,以便成功地执行所请求的内存到内存传输操作。从源地址读取的内存字符可推入FIFO单元(147),而待写入目标地址的内存字符可弹出FIFO单元(147)。计数器(251)和(253)的值分别根据读取或写入的数据量递减:当计数器字段(151)的值为零时,子控制单元(145)的处理结束;当计数器字段(153)的值为零时,子控制单元(146)的处理结束。
图2是根据本发明优选实施例,说明划分用于访问存储于PMTRP单元(120)内存(123)(图1)中可编程配置数据的地址空间(201)的框图。该内存地址空间(201)分成12个字段(210至221),每个字段(210到221)的长度是32位。该地址空间(201)在逻辑上划分为:
·与PMTRP单元(120)目标端口(128)的地址空间系统部分配置相关的6个字段(210至215)的第一连续组(202);和
·与PMTRP单元(120)目标端口(128)的地址空间用户部分配置相关的6个字段(216至221)的第二连续组(203)。
字段(210)可存储与系统地址空间(202)相关的配置和/或状态信息;字段(211)至(214)可存储与系统地址空间相关的至少一个区域说明符。该PMTRP单元(120)可允许任何值写入字段(210)至(214),以便通知PMTRP控制单元(121):用于地址空间系统部分(202)的配置数据当前正在重新编程;该PMTRP单元可允许任何值写入字段(215),以便通知PMTRP控制单元(121):用于地址空间系统部分的配置数据已完成重新编程。
字段(216)可存储与用户地址空间(203)相关的配置和/或状态信息;字段(216)至(221)可存储与用户地址空间相关的至少一个区域说明符。该PMTRP单元(120)可允许任何值写入字段(216)至(221),以便通知PMTRP控制单元(121):用于地址空间用户部分(203)的配置数据当前正在重新编程;该PMTRP单元(120)可允许任何值写入字段(221),以便通知PMTRP控制单元(121):用于地址空间用户部分的配置数据已完成重新编程。
存储于PMTRP单元(120)内存存储器(123)中可编程配置数据地址空间(201)的新型配置可允许:使用连续的内存到内存传输操作(字段210到215)来更新所有系统数据;使用连续的内存到内存传输操作(字段216到221)来更新所有用户数据;使用连续的内存到内存传输操作(字段210到221)来更新所有系统数据和用户数据。
有利地,通过PDMA单元(140),可以新颖的方式对PMTRP单元(120)的可配置数据进行极快速的重新编程。
本发明的另一优选实施例中,设备(100)重置时,该PMTRP单元(120)可重置其运行时间控制单元(122)以及可编程配置数据(123)的状态。此外,该PMTRP单元(120)的默认操作模式是中继目标端口(128)上接收到的内存传输请求而无需修改主端口(129),并中继主端口(129)上接收到的内存传输响应而无需修改目标端口(128)。接着,该PMTRP单元将预备接收端口(124)、(136)和(134)上的内存传输请求以配置操作。
图3是在一次内存到内存传输操作(图1中的148、149、150)中,通过该PDMA单元(图1中的140)执行的内存到内存传输操作,以对存储于PMTRP单元(图1中的120)内存存储器(图1中的123)中所有可编程配置数据进行编程的流程图(300)。该示例中,处理器模块(图1中的110)是处理器内核。该PMTRP单元(图1中的120)可执行内存管理单元的功能。该流程图中,PMTRP单元(120)和处理器内核(110)已初始化。
标签(301)可表示通过处理器内核(110)执行的一系列步骤(301、305、308、311、314、330,331、334);标签(302)可表示通过PMTRP单元(110)执行的一系列步骤(302、306、309、312、315、321、323、327、328、329、332、335);标签(303)可表示通过PDMA单元(140)执行的一系列步骤(303、307、310、313、316、317、320、322、326、336);标签(304)可表示通过SDRAM存储器(115、118)执行的一系列步骤(304、318、319、324、325、337)。
流程图(300)始于步骤(301)、(302)、(303)和(304)。
步骤(305)中,处理器内核(110)发出寻址到PDMA单元(140)“源内存地址”字段(148)的32位写入内存传输请求。步骤(306)中,该内存传输请求可在PMTRP单元(120)的目标端口(128)上接收。该PMTRP单元(120)根据与目标端口(1f12328)相关且存储于内存存储器(123)中可编程配置数据中的内存转换地址策略来处理该内存传输请求。该PMTRP单元(120)通过主端口(129)再通过互连(192),将已处理的内存传输请求转发到PDMA单元(140)。步骤(307)中,该PDMA单元(140)再在目标端口(142)上接收该内存传输请求。该PDMA单元(140)将该内存传输请求的数据字段写入其“源内存地址”字段(148)中。
步骤(308)中,处理器内核(110)发出寻址到PDMA单元(140)目标端口(142)“目标内存地址”字段(149)的32位写入内存传输请求。步骤(309)中,该内存传输请求通过该PMTRP单元(120)处理并转发到PDMA单元(140)。步骤(310)中,该PDMA单元(140)接收该内存传输请求并将该内存传输请求的数据写入其“目标内存地址”字段(149)中。
步骤(311)中,处理器内核(110)发出寻址到PDMA单元(140)“内存传输长度”字段(150)的32位写入内存传输请求。步骤(312)中,该内存传输请求通过该PMTRP单元(120)处理并转发到PDMA单元(140)。步骤(313)中,该PDMA单元(140)接收该内存传输请求,并将该内存传输请求的数据写入其“长度内存地址”字段(150)中。写入内存传输长度字段(250)时,可启动内存到内存传输操作。
步骤(314)中,处理器内核(110)发出寻址到PMTRP单元(120)目标端口(124)地址空间中内存位置的读取内存传输请求,可使PMTRP单元(120)在该PMTRP单元中系统和用户部分的可编程配置数据均完全更新之后,发出读取响应。步骤(315)中,可接收和处理该内存传输请求。下列步骤(329)中,将发出相应的内存传输响应:
步骤(316)中,“源内存地址”(148)的值可加载为当前地址指针(153)的值。“目标内存地址”(149)的值可加载为当前地址指针(151)的值。“内存传输长度”(150)的值可作为计数器字段(151)的值和计数器字段(153)的值加载。该FIFO单元(147)复位,以确保该FIFO单元的队列中不存在数据元素。指示子控制电路(145),开始读取源内存中数据的过程;指示子控制电路(146),开始将数据写入目标内存的过程。
步骤(317)中,子控制电路(146)通过端口(144)发出突发内存读取内存传输请求,以读取所请求消息长度(150)的前半部分。该突发内存传输请求是可对两个或多个数据字符进行操作的内存传输请求。该突发读取内存传输请求可使用“当前地址指针”(151)的值。步骤(318)中,该读取突发内存传输请求可通过SDRAM存储器接收和处理。步骤(319)中,所请求的数据可通过SDRAM存储器以突发内存传输响应形式发回到PDMA单元(140)的主端口(144)。
步骤(320)中,PDMA单元(140)在主端口(144)上接收包含所请求数据的读取突发内存传输响应。该数据可推入FIFO单元(147)。“当前地址指针”(154)的值增加,且计数器(153)的值根据所接收的数据量而减小。
步骤(320)中,子控制单元(145)将该数据从FIFO单元(147)中弹出,并使用“当前地址指针”(152)的值发出可寻址到PMTRP单元(120)目标端口(134)的写入突发内存传输请求。“当前地址指针”(151)的值增加,且计数器(152)的值根据写入的数据量而减小。
步骤(321)中,PMTRP单元(120)在目标端口(134)上接收突发写入内存传输请求,并将接收到的数据写入存储于内存存储器(123)的可编程配置数据中。该PMTRP控制单元(121)可主动跟踪存储于内存存储器(123)中系统和用户部分的可编程配置数据何时更新,以及该系统和用户部分的可编程配置数据配置何时完成(如图2所示)。
步骤(322)中,PDMA单元(140)已接收到步骤(317)中发出的其突发内存读取内存传输请求所请求的全部数据。子控制电路(146)通过端口(144)发出突发内存读取内存传输请求,以读取所请求内存长度(150)的后半部分。该突发读取内存传输请求可使用“当前地址指针”(151)的值。
步骤(322)中,PDMA单元(140)的子控制单元(145)继续将存储于FIFO单元(147)中的任何未完成数据转发到PMTRP单元(120),可能涉及也可能不涉及根据需要发出其他写入内存传输请求。
步骤(324)中,步骤(322)发出的读取突发内存传输请求可通过SDRAM存储器接收和处理。步骤(325)中,所请求的数据可通过SDRAM存储器发回到PDMA单元(140)的主端口(144),作为突发内存传输响应。
步骤(326)中,PDMA单元(140)继续将数据转发到PMTRP单元(120)。当计数器(153)的值为零时,PDMA单元(140)的子控制电路(146)停止。当计数器(151)的值为零时,PDMA单元(140)的子控制电路(145)停止。当两个子控制电路(146)和(145)均停止时,PDMA单元(140)的内存到内存传输操作已完成(至少针对该PDMA单元而言)。
步骤(327)中,PMTRP单元(120)继续接收和处理通过PDMA单元(140)的主端口(143)发出的写入内存传输数据。
步骤(328)中,PMTRP单元(120)已成功地重新编程。现在,PMTRP单元(120)将根据该PMTRP单元内存存储器(123)中可编程配置数据正在编码的策略,来服务该PMTRP单元(120)目标端口(128)上接收到的内存传输请求。
步骤(329)中,PMTRP单元(120)的运行时间控制单元(122)将读取数据字段中数值为1的读取内存传输响应发送回处理器内核(110),可通知处理器内核PMTRP单元(120)已完全重新编程。步骤(330)中,处理器内核(110)接收该内存传输响应。
步骤(331)中,处理器内核(110)发出寻址到PMTRP单元(120)目标端口(128)输入地址空间的写入内存传输请求。步骤(332)中,根据当前存储于该PMTRP单元内存存储器(123)内可编程配置数据中的策略,在PMTRP单元(120)的目标端口(128)上接收写入内存传输请求并通过控制单元(121)进行处理。
流程图止于标签(334)、(335)、(336)和(337)。
本发明的另一个优选实施例中:图1中的PMTRP单元(120)与图1中的处理器内核(110)紧密耦合;图1中的内存存储器(112)与图1中的互连(190)分离并耦合到图1中的互连(192);未采用图1中的PMTRP单元(120)的总线目标(124);可采用图1中的PMTRP单元(120)的总线目标(136)。
对于操作延迟短、处理量高、时间恒定的MMU构架存在长期的需求,该MMU构架可支持32位和64位输入地址空间中的相对精细粒度内存分配。
图4是部分展示本发明优选实施例的混合框示意图和数据流程图,其中图1中的PMTRP单元(120)可执行内存管理单元(MMU)的功能。
该MMU(120)采用基于创新单级直接索引段的内存地址转换方案,该方案适用于大输入地址空间(例如,这种情况下,31位输入地址空间(414)),其中存在与输入地址空间(414)相关的少量段说明符,且每个段说明符可支持该段内精细粒度内存分配(533)。该创新内存地址转换方案旨在与一定范围内的内存组织方案一起使用,包括但不限于如图6和图8所示的内存组织方案。具体而言,图8展示了创新内存组织方案可协同利用以下组合:(a)大输入地址空间;(b)提供精细粒度内存分配装置的少量区域说明符,以便地址空间大小缩放问题以及其他单层直接索引内存地址转换方案[1]、[2]提供意想不到的解决方案。有利地,PMTRP单元(120)的一个硬件实施方式可支持图6和图8中的两种内存组织方案。
该方案可简单适用于大于、等于或小于输出地址空间的大输入地址空间。
PMTRP单元(120)的区域说明符可利用段说明符(430)所示的字段对段说明符进行编码。
标签(410)可表示在PMTRP单元(120)的互连目标端口(128)上接收到的内存传输请求字段。该内存传输请求(410)用字段(411)、(412)和(414)进行说明。字段(411)可对该内存传输请求的3位控制字段(410)进行编码。该3位分别对“数据读取”、“写入”和“执行读取”进行编码操作。字段(412)可对指示该内存传输请求(410)的系统级特权或用户级特权的1位特权值进行编码;字段(414)可对输入地址空间中的31位输入地址的值进行编码。可采用31位输入地址(414)的5个最高有效位(415)作为段索引选择器。该31位输入地址(414)的其余26位(416)可用作该段(415)内的位移偏移量。
单级直接索引段说明符查找模块(420)可存储运行时进行编程的32个段说明符的表。该表的段说明符可在运行时通过PMTRP单元(120)的互连目标端口(128)上接收到的内存传输请求的输入地址(614)前5位(615)进行索引。
如段说明符(430)所示,每个段说明符由5个字段(431)、(432)、(434)、(435)和(436)组成。段说明符(430)的总长度为64位。本发明的该实施例中,该段说明符(430)支持可寻址2^31字节存储的31位输入地址空间;还支持可寻址2^31字节存储的31位输出地址空间。该段说明符(430)的字段(431至436)如下:字段(431)可对与该段说明符相关的6位元数据进行编码。字段(432)可对转换地址空间内长度为29位的位移偏移量进行编码。减少字段(432)的位数可减少输入地址空间映射到的物理地址空间大小,还可减少用于存储段说明符所需的硬件资源。字段(434)可对8字节粒度、长度为24位的分配段进行编码。字段(433)可按逻辑将长度为24位的分配段扩展到长度值(437)为29位的分配段。具体地说,二进制值零可存储于长度值(437)为29位的分配段前5位(433)中的每一位。字段(435)可对用户特许访问的3位许可字段进行编码。该3位分别对“数据读取”、“写入”和“执行读取”权限进行编码。字段(436)可对系统特权访问的3位许可字段进行编码。该3位分别对“数据读取”、“写入”和“执行读取”权限进行编码。
段说明符查找模块(420)的输出可作为输入提供给内存传输请求重新组装和许可检查模块(440)。该模块(440)包括宽度为29位的算术加法运算:可接收内存传输请求(410)的31位位移字段(416)中29个最高有效位(417)作为输入;可在该段说明符(430)已转换的地址空间内接收29位移位偏移量(432)作为输入;并可生成29位值作为输出,用于转换内存传输请求(413)的31位地址(454、454)中最高有效29位(454)。
该内存传输请求重新组装和许可检查模块(440)还包括许可检查模块(442),其中:
·用于检查内存传输请求(410)的位移偏移量(416)的值是否小于或等于与该内存传输请求(410)相关的长度(437)为29位的段说明符(430);
·用于检查内存传输请求(410)的3位控制字段(411)和1位特权字段(412)是否得到许可策略的允许,该许可策略可在与内存传输请求(410)相关的段说明符(430)的字段(435)和(436)中进行编码。若该许可检查失败,则发出故障信号(443)。本发明的优选实施例中,该故障信号可能导致向处理器内核(110)的发送中断。
该段说明符(430)元数据字段(431)的值可用作转换内存传输请求(413)的元数据字段(453)。本发明的优选实施例中,元数据字段(431)可编码:
·单位级联字段,用于通过其他内存地址转换装置有条件地启用其他级别的内存地址转换;
·可控制内存子系统的4位,包括:选择缓存模式(例如,通写、回写);和保持内存一致性的内存时序要求。
可分别提供内存传输请求(410)的3位操作(411)和1位特权字段(412)的值(413),作为转换内存传输请求(413)的3位操作(451)和1位特权字段(452)的值。
可提供输入内存传输请求(410)地址(416)低2位(418)的值作为转换内存请求(450)低2位(454)的值。
图5是根据本发明优选实施例,通过PMTRP单元(120)的控制单元(121)执行的内存地址转换操作步骤的流程图(500)。
该流程图始于步骤(501)。
步骤(502)中,内存传输请求可通过端口(128)上PMTRP单元(120)的控制单元(121)接收。
步骤(503)中,该内存传输请求(410)地址(414)的5个最高有效位(415)可作为索引提供给段说明符查找模块(420)。该段说明符查找模块(420)可释放与该索引值相关的段说明符(430)的值作为输出。段说明符查找模块(420)的输出可通过重组和许可检查模块(440)接收。
步骤(504)中,许可检查模块(442)可执行步骤(502)中接收到的内存传输请求(414)与步骤(503)中发出的相应段说明符之间的一致性检查。
步骤(505)中,若步骤(504)的一致性检查失败,则转到步骤(506),否则转到步骤(509)。
步骤(506)中,可在端口(443)上生成许可检查故障信号。
步骤(507)中,若步骤(502)中接收的内存传输请求(410)是写入内存传输请求,则转到步骤(515),否则转到步骤(508)。
步骤(508)中,可发出读取内存传输响应。值零可存储于该内存传输响应的数据字段中。若互连协议提供该功能,则返回该内存传输请求的故障状态,转到步骤(515)。
步骤(509)中,可执行宽度为29位的加法操作(441),并按图4的文字说明,来组合转换内存传输请求(450)的字段。
步骤(510)中,若步骤(502)中接收到的内存传输请求是写入内存传输请求,则转到步骤(511),否则转到步骤(512)。
步骤(511)中,可在PMTRP单元(120)的主端口(129)上发出写入内存传输请求。转到步骤(515)。
步骤(512)中,可在PMTRP单元(120)的主端口(129)上发出读取内存传输请求。
步骤(513)中,可在PMTRP单元(120)的主端口(129)上接收相应的读取内存传输响应。
步骤(514)中,可转发步骤(513)中在PMTRP单元(120)的目标端口(128)上接收到的读取内存传输响应结果。
流程图止于步骤(515)。
图6是根据本发明的优选实施例,输入地址空间(610)和转换地址空间(630)之间,基于段的地址转换方案的示例映射框图(600)。该图(600)中,输入地址空间(610)始于矩形(610)左上角的零,并止于该矩形(610)右下角;该图(600)中,目标地址空间(630)始于矩形(630)左上角的零,并止于该矩形(630)右下角。线性输入地址空间(610)细分为N=8个等长的分区(611至618)。该图示中,输入地址空间分区中的段偏移量可映射到粒度为8字节的输出地址空间的任何位置(例如,标签632)。段的分配长度的粒度也为8字节(例如,标签634、837、838)。
分区(611)的段说明符可表示为分配该分区(611)的整个长度,并将其基本偏移量转换成目标地址空间(630)中的较高地址(631)。分区(612)的段说明符可分配该分区(612)的顶部,并将其基本偏移转换成目标地址空间(630)中的较高地址(632)。第一段(611)和第二段(612)的分配部分在输入地址空间中是连续的。分区段说明符(613)不分配该分区的任何部分。(614)的段说明符可分配该分区(614)的顶部,并将其基本偏移转换成目标地址空间(630)中的相同地址(634)。
分区(615)的段说明符不分配该分区的内存;分区(616)的段说明符不分配该分区的内存。
(617)的段说明符可分配该分区(617)顶部的小区域,并将其基本偏移转换成目标地址空间(630)中的较低地址(637)。(618)的段说明符可分配该分区(618)顶部的更大区域,并将其基本偏移转换成目标地址空间中的较低地址(638)。该图示中,分区(617)的段说明符适用许可访问策略,允许用户写入内存的分配区域;分区(618)的段说明符适用许可访问策略,允许非缓存用户读取转换地址空间的相同部分。
以这种方式,可看到输入地址空间中所有可变长度段均始于分区边界,允许该段说明符执行低延迟、硬件有效性的索引(与采用范围说明符表相比,如图21中标签123所示)。段的分配长度为8字节粒度,位移偏移量为8字节粒度,可将输入地址空间打包到转换内存地址空间,这可能比很多常规MMU使用长度为4千字节的页更高效。人们特别期望在内存存储容量高度受限的嵌入式微应用中,具有映射到转换地址空间中的该精细粒度。
图7是用于DECVAX-11/760架构,基于单级直接映射页方案的输入地址空间(701)组织的框图(670),如[3]中图6-1所示。每个页说明符可映射到32位输入地址空间中512个字节的连续区域。输入地址空间(701)可平均划分成处理空间(702)和系统空间(702)。用户空间(702)可动态地划分成称为“P0”的第一区域(710)和称为“P1”的第二区域(711)。区域P0始于用户空间的顶部并向下延伸;区域P1始于用户空间的底部并向上延伸。系统空间(703)可动态地划分成被称为“系统区域”和“保留区域”的第一区域(712)。系统区域(712)始于系统空间的顶部并向下延伸。可通过DEC选择该内存组织,来限制用于存储支持内存地址转换[3]的三个区域(P0、P1、系统区域)页说明符的单层直接索引表的大小。
图8是根据本发明的优选实施例,基于单级直接映射段方案的输入地址空间(701)的创新组织框图(670)。该示例中,考虑将M位输入地址空间(801)平均划分成N=8个段(811到818)。顶部4段(811、812、813、814)与系统空间(803)相关,底部4段(815、816、817、818)与用户空间(802)相关。
若输入地址空间为M=32位,则单个区域说明符可映射512兆字节的转换地址空间。绝大多数实时嵌入式系统的物理内存少于512兆字节。这种情况下,此类嵌入式系统可将物理内存的全部存储容量映射到一个区域说明符,因而无需映射2个或多个段说明符来访问物理内存的任何连续区域。很多安全重要性实时操作系统在启动时,可静态分配该RTOS上运行的每个应用程序的内存。这意味着系统空间的很多区域说明符和该RTOS示例的每个应用程序空间均可在设备启动之前静态地创建。例如:RTOS的可执行代码可通过系统特权只读权限访问映射到分区(811)。该RTOS的BSS、堆栈和堆可映射到具有系统特权读取/写入权限访问的分区(812)。该段(813)可将整个主内存映射到输入地址空间中的连续内存区域,以支持通过处理器内核执行的内存到内存复制功能。该段(814)可在启动时保持非映射状态。第一应用程序的可执行代码可通过用户特权只读权限访问映射到分区(815)。该第一应用程序的BSS、堆栈和堆可映射到具有用户特权读取/写入权限访问的分区(816)。第一应用程序和第二应用程序之间共享的第一内存区域可通过段(817)中的用户特许读/写许可访问映射。第一应用程序和第二应用程序之间共享的第二内存区域可通过段(818)中的用户特权只读权限访问映射。该静态映射并不排除运行时也可执行动态映射。
将区域说明符的数量从N=8增加到N=16可支持更精细的内存组织,同时极小区域说明符表仍可用于系统空间(802)和用户空间(803)。该区域说明符表的全部内容可容易地存储于片上SRAM中,用于低延迟高处理量的访问。将输入地址空间的大小从32位增加到64位,同时保持目标地址空间的大小恒定不会增加区域说明符表的存储需求。
该创新的内存组织(800)已与该PMTRP单元共同设计,该PMTRP单元采用了针对大输入地址空间的创新分段方案,可在电路面积极小的条件下进行恒定时间的内存地址转换,非常适合资源受限的安全关键性网络物理应用。
本发明的优选实施例中,基于4千字节固定页的MMU方案可用作第二级有条件启动的内存地址转换装置。
长期以来,人们需要支持两个级别的地址转换,其中每个级别的地址转换均受控于不同的软件(例如,管理程序可控制MMU方案的第一级别,托管在管理程序上的操作系统可控制该MMU方案的第二级别),适用于静态时间分析的实时系统。
图9是根据本发明的优选实施例,两个级别内存管理装置的框图(900)。图(900)说明了PMTRP单元(910)和MMU(920)。
本发明的优选实施例中,PMTRP单元(910)的可编程配置数据内容可通过处理器内核上运行的软件管理程序来控制。该处理器内核可向PMTRP单元(910)的目标端口(911)发出一个或多个内存传输请求,以配置该PMTRP单元(910)的可编程配置数据。
该MMU单元(920)的可编程配置数据内容可通过托管在虚拟机中管理程序上操作系统和该管理程序的执行软件共同控制。该软件虚拟机管理程序上运行的操作系统可定义操作系统自身内部操作所需的策略。可将该策略编码并写入PMTRP单元(910)的目标端口(912)。接着,该策略可通过PMTRP单元(910)中由管理程序的执行软件控制的策略进行转换。那些转换的策略然后由PMTRP单元(910)写入该MMU单元(920)的可编程配置数据中。
具体而言,PMTRP单元(910)可根据PMTRP单元(910)的可编程配置数据中编码的策略来接收和处理其目标端口(912)上接收到的内存传输请求。该PMTRP单元(910)可编程配置数据中的该策略可对如何执行目标端口(912)上接收到的且待写入其目标端口(921)上MMU(910)的可编程配置数据中一个或多个区域说明符的内存地址转换进行编码。转换后的策略再利用目标端口(921),通过PMTRP单元(910)写入该MMU单元(920)的可编程配置数据中。
例如,该PMTRP单元(910)中编码的策略可指定目标端口(922)输入地址空间的连续区域,该连续区域可与相对位移一起通过目标端口(922)上接收到的内存传输请求接受访问,以将所有该地址转换成主端口的转换地址空间(923)。
该MMU(920)可接收其目标端口(922)上的内存传输请求,并根据该MMU单元(920)可编程配置数据中编码的策略来转换其地址。
以这种方式,写入MMU(920)可编程配置数据的内存地址转换方案可在逻辑上等效于串行地执行两个级别的内存地址转换(先操作系统级内存地址转换,接着操作软件管理程序级内存地址转换)。有利地,两个级别的地址空间转换在运行时可受到MMU(920)的影响,执行单级地址空间转换会产生延迟。
图10是根据本发明优选实施例,内存传输请求(1010)和内存传输响应(1040)中可能存在的各字段框图(1000)。
关于内存传输请求(1010),可选字段(1011)可对识别一组互连主设备的设备组标识符进行编码。可选字段(1012)可对设备类型(例如,网络接口、图形处理器单元等)进行编码。可选字段(1013)可对设备标识符进行编码。可选字段(1014)可指示该内存传输请求的一致性策略(例如,未缓存、缺省缓存策略、只写缓存、回写缓存等)。可选字段(1015)可对内存时序策略(总存储时序、宽松存储时序、部分存储时序等)进行编码。可选字段(1016)可对互连锁定请求标志进行编码。可选字段(1017)可对“数据读取”操作进行编码。可选字段(1018)可对“写入”操作进行编码。可选字段(1019)可对“执行读取”操作进行编码。可选字段(1020)可对该内存传输请求的长度进行编码。可选字段(1021)可对与该内存传输请求相关的地址空间标识符进行编码。字段(1022)可对待访问的内存地址进行编码。可选字段(1023)可将待写入的数据编码成写入内存传输请求的一部分。可选字段(1024)可对写入内存传输请求的字节使能掩码进行编码。可选字段(1025)可对该内存传输请求的特权级别进行编码。
关于内存传输响应(1040),可选字段(1041)可对相关内存传输请求(1010)的结果代码进行编码。可选字段(1042)可对指示与该响应相关的读取数据是否有效的1位值进行编码。可选字段(1043)可存储与读取内存传输请求(1010)相关的读取数据。可选字段(1044)可对读取字节使能掩码进行编码。
本发明的优选实施例中,该PMTRP单元(120)可具有使用一个或多个内存传输请求(1010)字段(1012)来识别始发互连主设备的装置,该装置可发出其目标端口(128)上接收到的内存传输请求。本发明的优选实施例中,该PMTRP单元(120)可具有使用一个或多个内存传输请求(1010)字段(1011)来识别始发互连主设备的设备组的装置,该装置可发出其目标端口(128)上接收到的内存传输请求。本发明的优选实施例中,该PMTRP单元(120)可具有使用一个或多个内存传输请求(1010)字段(1012)来识别始发互连主设备的类型的装置,该装置可发出其目标端口(128)上接收到的内存传输请求。本发明的优选实施例中,该PMTRP单元(120)可具有使用一个或多个内存传输请求字段(1011、1012、1013、1021)来将地址空间标识符与其目标端口(128)上接收到的内存传输请求相连的装置(1021)。本发明的优选实施例中,该PMTRP单元(120)可编程配置数据中至少一个区域说明符中编码的策略可与其目标端口(128)上接收到的内存传输请求的一个或多个字段(1011、1012、1013、1016、1021)相连。
对于操作延迟短、处理量高、时间恒定的MMU构架存在长期的需求,该MMU构架可支持32位和64位输入地址空间中的相对精细粒度内存分配。长期以来,人们仍需一种装置,在实时环境中以时间分析的方式,经济有效地加快区域说明符的重新编程,缩短延迟,从而支持更快速的任务交换并改进系统性能;现对图1中的优选实施例进行说明,其中该PMTPR单元(120)适用基于页的MMU方案。
图11是部分展示本发明优选实施例(1100)的混合框示意图和数据流程图,其中图1中的PMTRP单元(120)可执行分区单级直接索引基于页的内存管理单元(MMU)功能。该图示中,该PMTRP单元(120)可使用8个分区(1151至1158)。该8个分区(1151至1158)可视为8个独立的内存传输请求处理区域。每个分区都可通过64个区域说明符的单级直接索引表支持。该512个区域说明符中的每一个均为长度可变的页说明符,具有精细粒度的内存分配。该512个区域说明符中的每一个均可存储于一个物理内存中。
标签1101可表示该PMTRP单元(120)的互连目标端口(128)上接收到的内存传输请求字段。
该内存传输请求(410)可用字段(1106)、(1107)、(1102)和(1105)表示。字段(1106)可使用以下3个权限对2位特权字段进行编码:用于软件的用户特权、用于软件的超级用户特权以及用于互连主设备外围设备的访问特权。
字段(1107)可选择3位中5个空间中一个进行编码。
字段(1102)可对32位输入地址进行编码。该32位输入地址(1102)的2个最高有效位(1110)可将该地址空间(1120)划分为四个空间:互连主专用空间(1211)、系统空间(1122)、高用户空间(1123)和低用户空间(1124)。该32位输入地址(1102)的后6个最高有效位(1111)可将每个空间(1121、1122、1123、1124)分成64个空间。该32位输入地址(1102)的其余24位(1112)可在32位输入地址(1102)的前8位(1103)内提供偏移。
该字段(1105)可对该内存传输请求的3位控制字段(410)进行编码。该3位分别可对“数据读取”、“写入”和“执行读取”操作进行编码。
该分区选择模块(1130)可接收字段(1106)、(1107)、(1110)和(1111)的值作为输入。该分区选择模块(1130)可:
·释放指示分区选择中故障的输出(1140);
·释放指示是否无需内存地址转换的输出(1131),该输出(1131)可作为输入提供给重组和许可检查模块(1170);
·释放指示8个分区(1151到1158)中的哪个分区用于转换32位地址(1102)内存传输请求(1101)的输出,该输出可作为输入提供给分区一级直接索引页说明符查找模块(1150),
该分区一级直接页说明符查找模块(1150)具有8个分区(8个独立的内存传输请求处理区域)。该8个分区中的每一个均具有64页说明符表,可在运行时进行编程。执行内存地址转换时使用的分区选项可在运行时通过目标端口(128)上接收到的每个内存传输请求(1101)的分区选择模块(1130)进行选择。
本发明的优选实施例中,将内存传输请求(1101)的5个空间(1107)映射到分区一级直接映射页说明符查找(1150)的8个分区(1151、1152、1153、1154、1155、1156、1157、1158)可通过施用分区选择模块(1130)静态地映射。该简单的静态映射可使用组合逻辑和极低的硬件电路资源,在运行时以极高的速度轻易地实施。
图11中的分区选择模块(1130)内绘制的箭头可表示输入空间和分区的以下示例性映射:
·互连主设备专用空间(1121)未映射到8个分区(1151到1158)中的任何分区;
·系统级空间(1122)总是映射到分区(1158)。本发明的优选实施例中,若该内存传输请求(1101)的特权等级(1106)不具有系统级特权,则发出故障(1140)。
·若内存传输请求(1101)空间选择字段(1107)的值是0,则低用户空间(1124)可映射到分区(1151),高用户空间(1123)可映射到分区(1152)。以这种方式,可分配整个用户空间(1123、1124)。
·若内存传输请求(1101)空间选择字段(1107)的值是1,则低用户空间(1124)可映射到分区(1153),高用户空间(1123)可映射到分区(1154)。以这种方式,可分配整个用户空间。
·若内存传输请求(1101)空间选择字段(1107)的值是2,则低用户空间(1124)可映射到分区(1155),高用户空间(1123)未映射到任何分区。
·若内存传输请求(1101)空间选择字段(1107)的值是3,则低用户空间(1124)可映射到分区(1156),高用户空间(1123)未映射到任何分区。
·若内存传输请求(1101)空间选择字段(1107)的值是4,则低用户空间(1124)可映射到分区(1157),高用户空间(1123)未映射到任何分区。
处理器内核上运行的软件用于:
·将通过执行系统管理的地址空间映射到通过分区选择模块(1130)管理的内存传输请求(1107)的5个空间(1107);
·对分区一级直接映射页说明符查找模块(1150)的页说明符进行编程;和
·在该执行系统的地址空间线程交换时,更改提供给内存传输请求(1107)的空间选择字段(1107)的值。
执行系统上运行的低内存存储需求的5个最近调度的用户应用可映射到分区选择模块(1130)5个空间中的任何一个。
通过简单地改变提供给内存传输请求(1107)的空间选择字段(1107)的值,该5个空间之间极低延迟的任务交换可通过执行系统执行。例如,处理器内核(110)可与配置寄存器相匹配,该配置寄存器可确定当该处理器内核发出内存传输请求时,该处理器内核使用的空间选择字段(1107)的值。
执行系统上运行的高内存存储需求的2个最近调度的用户应用可映射到分区选择模块(1130)的2个空间,该2个空间可映射到页说明符查找模块(1150)的两个分区。
该页说明符查找模块(1150)可释放所选页说明符的值作为重组和许可检查模块(1170)的输入。
该重组和许可检查模块(1170)还可接收输入内存传输请求(1101)的2位特权字段(1106)、3位空间选择器字段(1107)、32位输入地址的8个最高有效位(1103)、32位输入地址的24个最低有效位(1112)和3位控制字段(1105)的值作为输入。重组和权限检查模块可:
·释放指示处理内存传输请求中故障的单比特输出(1172);
·释放转换内存传输请求的值作为输出(1173);
·释放指示转换内存传输请求需其他级别内存地址转换的单比特级联输出(1171)。
该转换地址空间(1190)可表示:
·转换地址空间(1190)顶部的四分之一(1191)与输入地址空间(1120)的互连主设备专用空间(1211)一一对应;
·转换地址空间(1190)底部的四分之三(1192)与输入地址空间(1120)的系统空间(1122)、高用户空间(1123)和低用户空间(1124)对应。
图12是部分展示本发明优选实施例的混合框示意图和数据流程图,其中图1中的PMTRP单元(120)可执行内存管理单元(MMU)的功能。该MMU采用具有大输入地址空间和较少页说明符的单级直接索引基于页的内存地址转换方案。
该方案可简单适用于大于、等于或小于输出地址空间的大输入地址空间。
此时,该PMTRP单元(120)的区域说明符可根据页说明符(1210)所示,对页说明符进行编码。图12采用了如图11文字中所述的内存传输请求(1101)及其字段(1102)、(1103)、(1104)、(1105)、(1106)、(1107)和(1129)。图12还采用了如图11文字中所述的分区选择模块(1130)和分区一级直接索引页面查找模块(1129)及其输出(1131)、(1140)、(1171)和(1172)。
如页说明符(1210)所示,每个页说明符由7个字段(1121)、(1212)、(1213)、(1214)、(1215)、(1216)和(1217)组成。页说明符(1210)的总长度为32位。该页说明符(1210)支持2^32字节的输入地址空间以及2^32字节的输出地址空间。该页说明符(1210)的字段如下:
·字段(1211)是1位级联字段,可指示与该页说明符相关的内存传输请求是否需要另一级别的内存地址转换。
·字段(1212)可对能编码12个不同页面长度的4位值进行编码。该示例中,页面长度是:4千字节、16千字节、32千字节、64千字节、128千字节、256千字节、512千字节、1兆字节、2兆字节、4兆字节、8兆字节和16兆字节。
·字段(1213)可对8位帧标识符进行编码。
·字段(1214)可对帧内长度为12位的位移偏移量进行编码。位数(即12位)对应于字段(1212)不同页面长度(即12个页面长度)的数量。
·字段(1215)可对用户特许软件访问的3位许可字段进行编码。该3位分别对“数据读取”、“写入”和“执行读取”权限进行编码。
·字段(1216)可对系统特权软件访问的2位许可字段进行编码。该2位可分别对“任何目的读取”或“写入”权限进行编码。
·字段(1217)可对系统特权外设访问的2位许可字段进行编码。该2位可分别对“数据读取”和“写入”权限进行编码。
该内存传输请求(1101)的32位地址字段(1102)在逻辑上可分成2个字段:
·可对页标识符进行编码的最高8位(1103);
·32位地址(1102)的其他24位(1104)可对页(1103)内位移进行编码。该24位(11014)可细分为:页内位移的12个最高有效位(1201)和页内位移的12个最低有效位(1202)。
该页说明符查找模块(图11中的1129和图12中的1129)的输出可作为输入提供给内存传输请求重新组装和许可检查模块(图11中的1170和图12中的1170)。该模块(图12中的1170)包括宽度为12位的组合操作模块(1273),可:
·接收内存传输请求(1101)页(1103)内位移的12个最高有效位(1201)作为输入;
·通过帧(1214)接收长度为12位的位移偏移作为输入。
·传递信号(1131)的值为1时,则:
о可释放内存传输请求(1101)页(1103)内位移的12个最高有效位(1201)作为输出(1286)。
除此以外:
о可将内存传输请求(1101)页(1103)内位移的12个最高有效位(1201)与帧(1214)内长度为12位的位移偏移进行组合,并将该组合的结果作为输出(1286)。本发明的优选实施例中,可采用宽度为12位的算术加法作为组合函数。可选的组合函数包括但不限于:宽度为12位的XOR;或使用长度字段(1212)的值来确定可释放字段(1201)和(1214)中的哪几位作为输出的组合函数。
该内存传输请求重新组装和权限检查模块(1170)还包括权限检查模块(1274):
·该模块(1274)可检查内存传输请求(1101)页(1103)内位移的12个最高有效位(1201)的值是否小于或等于与该内存传输请求(1101)相关的页说明符(1210)的页面长度(1212);
·可检查内存传输请求(1101)的控制字段(1105)和特权字段(1106)是否根据许可策略,在与该内存传输请求(1101)相关的页说明符(1210)字段(1215、1216、1217)中进行编码。若该许可检查失败,则引发故障信号(1172)。
本发明的优选实施例中,激活故障信号(1140)或(1172)中的任一个,可使中断信号发送到处理器内核(110)。
转换内存传输请求(1280)的值可按下列方式生成:将转换内存传输请求(1280)控制字段(1281)的值设置为输入的内存传输请求(1101)的控制字段(1105)的值;将转换内存传输请求(1280)特权字段(1282)的值设置为输入的内存传输请求(1101)的特权字段(1106)的值;将转换内存传输请求(1280)可选空间选择字段(1283)的值设置为输入内存传输请求(1101)空间选择字段(1107)的值;当传递信号(1131)的值是1时,将转换内存传输请求(1205)地址字段(1284、1285)8位帧字段(1284)的值设置为输入内存传输请求(1102)帧字段(1103)的值;否则,将已转换内存传输请求(1280)地址字段(1284、1285)8位帧字段(1284)的值设置为与该内存传输请求(1101)相关的页说明符(1210)帧标识符(1213)的值;将转换内存传输请求(1280)地址字段(1284、1285)24位位移字段(1285)最高有效12位的值设置为组合操作模块(1273)宽度为12位的输出(1286)的值;将转换内存传输请求(1280)地址(1284、1285)24位位移字段(1285)最低有效12位的值设置为内存传输请求(1101)两个地址字段(1104)最低有效12位的值。
图13是根据本发明的优选实施例(图11和12),通过PMTRP单元(图1中的120)的控制单元(图1中的121)执行的内存地址转换操作的流程图(1300),
该流程图始于步骤1301。
步骤(1302)中,内存传输请求可通过目标端口(128)上的控制单元(121)接收(1101)。
步骤(1303)中,分区选择模块(1130)处理内存传输请求(1101),以确定哪个分区(若有)与该内存传输请求相关;对发往系统空间的内存传输请求执行许可检查(1122);还对寻址到高用户空间(1124)的内存传输请求和映射到该高用户空间(1124)的分区的可用性执行检查。
步骤(1304)中,若步骤1303中产生故障,则进入步骤1308,否则进入步骤1305。
步骤(1305)中,将步骤(1303)中选择的分区提供给分区单层直接索引页说明符查找模块(1150)作为分区索引。可将内存传输请求(11102)32位地址字段(1102)的6位(1111)提供给该分区页说明符查找模块(1150)作为页面索引,该内存传输请求(11102)32位地址字段(1102)的6位(1111)可将4个空间(图11中的1121、1122、1123、1124)中的每一个划分成64个空间。页说明符查找模块可检索所请求的页说明符的值,并释放该值作为输出。可通过重组和许可检查模块(1170)接收页说明符查找模块的输出作为输入。
步骤(1306)中,权限检查模块(图12的1274)执行步骤(1302)中接收到的内存传输地址与步骤(1305)中发出的页说明符之间的一致性检查。
步骤(1307)中,若步骤(1306)中执行的一致性检查失败,则转到步骤(1308),否则转到步骤(1311)。
步骤(1308)中,产生故障信号(在1140或1172上)。
步骤(1309)中,若步骤(1302)中接收到的内存传输请求是写入请求,则转到步骤(1317),否则转到步骤(1310)。
步骤(1310)中,数据字段中,可发出零值的读取内存传输响应。若互连协议允许,则可返回该内存传输请求的故障状态(图10的1041),转到步骤(1317)。
步骤(1311)中,执行宽度为12位的合并操作(1273),并生成转换内存传输请求(1280)的字段。
步骤(1312)中,若步骤(1202)中接收到的内存传输请求是写入请求,则转到步骤(1313),否则转到步骤(1314)。
步骤(1313)中,可在PMTRP单元(120)的主端口(129)上发出写入内存传输请求。转到步骤(1317)。
步骤(1314)中,可在PMTRP单元(120)的主端口(129)上发出读取内存传输请求。
步骤(1315)中,可在PMTRP单元(120)的主端口(129)上接收相应的读取内存传输响应。
步骤(1316)中,可转发PMTRP单元(120)的目标端口(128)上的读取内存传输响应结果。
流程图止于步骤(1317)。
资源高度受限的嵌入式微环境中,需减少专用于PMTRP单元(图1中的120)的硬件资源量。具体地,须运行基于页的MMU方案来支持通用操作系统(例如,Linux)的资源受限环境(例如,物联网)中,对于创新MMU架构也有长期需求,该MMU架构需减少硬件电路区域来实施常规基于页的MMU,且还可支持在用户地址空间线程交换之后更快速地执行软件。在执行MMU方案的任务线程交换之后,还需提高软件性能,该MMU方案可使用转换后备缓冲区。长期以来,人们仍需一种装置,在实时环境中以时间分析的方式,经济有效地加快区域说明符的重新编程,缩短延迟,从而支持更快速的任务交换并改进系统性能。
如图12所示,对本发明的另一优选实施例进行如下修改:
·不使用2位字段(1216)和2位字段(1217)。具有系统特权的软件允许访问所有数据。允许外围设备访问所有数据。
·字段1212可对编码256位不同页面长度的8位值进行编码。第一组128个页面长度(值为0到127)的粒度为4KB,映射范围为4KB到512KB;第二组128个页面长度(值128到255)的粒度为128KB,映射范围为128KB到16MB。
该替代配置可为页说明符(1210)改进内存分配粒度,同时使说明符长度保持32位。目前,资源受限的嵌入式微应用中,大多数应用需少于512KB的内存,由此可有效地映射到粒度为4KB的物理内存。若需要,本领域技术人员可轻易地增加页长(1212)的粒度和位移偏移(1214)的粒度。
现对图1中的优选实施例进行说明,其中该PMTPR单元(120)具有可通过生成和发送该PMTRP单元(120)主端口(129)上至少一个内存传输请求并在该主端口(129)上接收相应响应,来对至少两个可编程区域说明符的至少两个组(可作为两个表格)访问进行缓存的装置。具有该特定装置可使缓存的区域说明符直接存储于转换内存传输请求可寻址到的相同内存存储器(170)中。具体地,可使用那些缓存区域说明符表来执行第二集两级转换后备缓冲器方案,其中第一级缓存的TLB条目可存储于PMTRP单元的可编程配置数据中。将第二级TLB条目与PMTRP单元的可编程配置数据分离可允许每个用户地址空间将其专用的第二级转换后备缓冲器表存储于较大型较便宜的主内存中,从而可增加线程交换后的第二级TLB命中率。例如,第一级TLB查找可采用缓存TLB说明符的全关联查找,第二级TLB查找可采用缓存TLB说明符的单级直接索引查找。本发明的优选实施例中,具有不同用户地址空间的每个软件应用可具有其专用的缓存TLB说明符的单级直接索引查找表。
图14是根据本发明的优选实施例,访问存储于PMTRP单元(120)内存存储器(123)中可编程配置数据的地址空间(1400)的分区框图。图14中,该内存地址空间(1400)可分成23个字段(1401至1423)。23个字段中的每一个(1401到1423)长度均为32位。该地址空间(1400)在逻辑上划分为:
·与PMTRP单元(120)目标端口(128)的地址空间系统部分配置相关的6个字段(1401至1406)的第一连续组(1431);
·与PMTRP单元(120)目标端口(128)的地址空间用户部分配置相关的6个字段(1407至1413)的第二连续组(1432);
·与缓存配置相关的10个字段(1414至1423)的第三连续组,该缓存配置可缓存与PMTRP单元(120)目标端口(128)的地址空间系统或用户部分相关的信息。
字段的第一连续组(1431)包括:
·长度为16位的字段(1401.a),可对与第一系统区域说明符表相关的配置元数据进行编码。第一系统区域说明符表的基地址偏移可存储于长度为32位的字段(1402)中。
·长度为16位的字段(1401.b),可对与第二系统区域说明符表相关的配置元数据进行编码。第二系统区域说明符表的基地址偏移可存储于长度为32位的字段(1403)中。
·可对系统区域的第二级地址转换进行编码的字段(1404和1405)。具体地,字段(1404)可对第一级转换地址空间内最大长度的系统地址空间进行编码,字段(1405)可对第二级转换地址空间内系统地址空间的位移偏移进行编码。
该PMTRP单元(120)可允许任何值写入字段(1401、1402、1403、1404、1405),以便通知PMTRP控制单元(121):用于地址空间系统部分的配置数据当前正在重新编程。该PMTRP单元(120)可允许任何值写入字段(1406),以便通知PMTRP控制单元(121):用于地址空间系统部分的配置数据已完成重新编程。
字段的第二连续组(1431)包括:
·长度为16位的字段(1407.a),可对与第一用户区域说明符表相关的配置元数据进行编码。第一用户区域说明符表的基地址偏移可存储于长度为32位的字段(1408)中。
·长度为16位的字段(1407.b),可对与第二用户区域说明符表相关的配置元数据进行编码。第二用户区域说明符表的基地址偏移可存储于长度为32位的字段(1409)中。
·字段(1410)用于帮助执行系统计算散列变换,以便使输入地址空间的区域与散列索引一级说明符表中编码的区域说明符相关联。待散列的值可写入字段(1410),已散列的值可再从字段中读取(1410)。
·字段(1411)和(1412),可对用户区域的第二级地址转换进行编码。具体地,字段(1411)可对第一级转换地址空间内最大长度的用户地址空间进行编码,字段(1412)可对第二级转换地址空间内用户地址空间的位移偏移进行编码。
该PMTRP单元(120)可允许任何值写入字段(1407、1408、1409、1410、1411、1412),以便通知PMTRP控制单元(121):用于地址空间用户部分的配置数据当前正在重新编程。该PMTRP单元(120)可允许任何值写入字段(1413),以便通知PMTRP控制单元(121):用于地址空间用户部分的配置数据已完成重新编程。
字段的第三连续组(1431)包括:
·长度为128位的第一缓存行({1415到1418});
·长度为128位的第二缓存行({1419到1422});
·字段(1414),可对第一高速缓存行({1415至1418})和第二高速缓存行({1419至1422})的标签数据进行编码。
该PMTRP单元(120)可实现:将任何值写入字段(1414、1415、1416、1417、1418、1419、1420、1421、1422)可通知PMTRP控制单元(121)高速缓存的配置数据目前正重新编程;该PMTRP单元可实现:将任何值写入字段(1413)可通知PMTRP控制单元(121)高速缓存的配置数据已完成重新编程。
本发明的优选实施例中,该PMTRP单元(120)可编程配置数据的高速缓存字段(1433)可执行区域说明符的转换后备缓冲器,其中:
·长度为128位的第一缓存行({1415到1418})可存储长度为128位的第一区域说明符;
·长度为128位的第二缓存行({1419到1422})可存储长度为128位的第二区域说明符。
本发明的优选实施例中,可使用长度为128位的两个区域说明符来缓存与用户空间或系统空间相关的区域说明符。
图15是根据本发明的优选实施例,图14中采用的宽度为16位的配置元数据字段(1510)的框图。该配置元数据字段(1510)可在存储于PMTRP单元(120)内存存储器(123)内可编程配置数据的字段(1401.a、1402.b、1407.a、1407.b)中使用。该16位配置元数据字段(1510)的字段包括:
·1位长字段(1511),可指示是否启用与该配置元数据字段相关的区域说明符表。
·1位长字段(1512),可指示是否采用线性直接映射或非线性直接映射索引方案来访问该区域说明符表中的区域说明符。
·长度为3位的字段(1513),对表中区域说明符的数量进行编码。本发明的优选实施例中,区域说明符的数量可从以下8个表的长度中选择其一:8、16、32、64、128、256、512和1024个区域说明符。
·长度为3位的字段(1514),可指示区域说明符的编码格式。5个示例编码格式包括:
о长度为32位的页说明符表;
о长度为64位的段说明符表;
о长度为64位的缓存页说明符表;
о长度为128位的缓存段说明符表。
о长度为32位的表说明符表格,可对应说明符表。
·长度为6位的字段(1515),可指示最适合说明符类型的最大页长度或最大段长度。本发明的优选实施例中,6位二进制值000000可编码十进制值1,6位值111111可编码十进制值64。最大长度字段的值可计算为值2,以指数方式增加(^)到该6位字段十进制值的幂。因此,若该长度为6位字段的十进制值是32,则最大长度应计算为(2^32)=4千兆字节。
·长度为1位的字段(1516),可指示在第一地址转换操作完成之后是否采用附加长度检查。
·长度为1位的字段(1517),可指示在第一地址转换操作完成之后是否采用第二地址转换。
图16是根据本发明的优选实施例,图14中采用的区域说明符(1600)的框图。
区域说明符(1600)配置为长度为32位的页说明符时,可采用下图16中的字段:长度为1位的字段(1611),可指示是否启用该区域说明符。长度为1位的字段(1612),可指示是否同时允许外围设备对与该区域说明符相关的内存区域进行“数据读取”和“写入”访问。长度为1位的字段(1613),可指示是否同时允许超级用户软件对与该区域说明符相关的内存区域进行“数据读取”、“写入”和“执行读取”访问。长度为3位的字段(1614),可对用户软件的“数据读取”、“写入”和“执行读取”权限进行编码。长度为26位的字段(1615),可对该页的帧标识符进行编码。不使用字段(1621、1622、1623、1624、1625、1631、1635、1640)。
区域说明符(1600)配置为长度为64位的段说明符时,可采用下图16中的字段:长度为1位的字段(1611),可指示是否启用该区域说明符。长度为1位的字段(1612),可指示是否同时允许外围设备对与该区域说明符相关的内存区域进行“数据读取”和“写入”访问。长度为1位的字段(1613),可指示是否同时允许超级用户软件对与该区域说明符相关的内存区域进行“数据读取”、“写入”和“执行读取”访问。长度为3位的字段(1614),可对用户软件的“数据读取”、“写入”和“执行读取”权限进行编码。长度为26位的字段(1615),可对粒度为64字节的该区域中转换地址空间内的位移进行编码。长度为26位的字段(1625),可对粒度为64字节的该段中分配部分的长度进行编码。字段(1621、1622、1623、1624)可保留以备将来使用。未采用字段(1625、1631、1635、1640)。
区域说明符(1600)配置为长度为64位的缓存页说明符时,可采用下图16中的字段:长度为1位的字段(1611),可指示是否启用该区域说明符。长度为1位的字段(1612),可指示是否同时允许外围设备对与该区域说明符相关的内存区域进行“数据读取”和“写入”访问。长度为1位的字段(1613),可指示是否同时允许超级用户软件对与该区域说明符相关的内存区域进行“数据读取”、“写入”和“执行读取”访问。长度为3位的字段(1614),可对用户软件的“数据读取”、“写入”和“执行读取”权限进行编码。长度为26位的字段(1615),可对粒度为64字节的该区域中转换地址空间内的位移进行编码。长度为26位的字段(1625),可对粒度为64字节的该区域说明符的页标识符进行编码。长度为1位的字段(1621),可对该缓存区域说明符的数据写入(脏)标志进行编码。长度为1位的字段(1622),可对该缓存区域说明符的数据读取标志进行编码。长度为1位的字段(1263),可对用于寻址到与该区域说明符相关区域内存位置的内存传输请求的缓存策略进行编码。字段(1624)可保留以备将来使用。未采用字段(1625、1631、1635、1640)。
区域说明符(1600)配置为长度为128位的缓存页说明符时,可采用下图16中的字段:长度为1位的字段(1611),可指示是否启用该区域说明符。长度为1位的字段(1612),可指示是否同时允许外围设备对与该区域说明符相关的内存区域进行“数据读取”和“写入”访问。长度为1位的字段(1613),可指示是否同时允许超级用户软件对与该区域说明符相关的内存区域进行“数据读取”、“写入”和“执行读取”访问。长度为3位的字段(1614),可对用户软件的“数据读取”、“写入”和“执行读取”权限进行编码。长度为26位的字段(1615),可对粒度为64字节的该区域中转换地址空间内的位移进行编码。长度为1位的字段(1621),可对该缓存区域说明符的数据写入(脏)标志进行编码。长度为1位的字段(1622),可对该缓存区域说明符的数据读取标志进行编码。长度为1位的字段(1263),可对用于寻址到与该区域说明符相关区域内存位置的内存传输请求的缓存策略进行编码。字段(1624)可保留以备将来使用。长度为26位的字段(1625),可对粒度为64字节的该区域说明符的段标识符进行编码。长度为26位的字段(1635),可对粒度为64字节的该段中分配部分的长度进行编码。字段(1631、1640)可保留以备将来使用。
区域说明符(1600)配置为长度为32位的表说明符时,可采用下图16中的字段:长度为1位的字段(1611),可指示是否启用该区域说明符。长度为26位的字段(1615),可对区域说明符表的地址(转换地址空间中)进行编码。字段(1612、1613、1614)可保留以备将来使用。
本发明的优选实施例中,长度为N位的区域说明符在内存中以N位对齐。
图17是根据本发明的优选实施例(图1、14、15和16),部分展示设备(1700)的混合框示意图和数据流程图。图1的文字说明了图17中的处理器核(110)及其主端口(111)。图17中的PMTRP单元(120)及其相关标签(121、123、128、129、130、131、134、130)在图1的文字中进行了说明。该装置(1700)还包括:内核(110)上的IRQ目标端口(1711);连接到IRQ目标端口(1711)的PMTRP单元(120)上的IRQ主端口(1728)。
如图14文字所述,可适用存储于PMTRMP单元(120)内存存储器(123)中的可编程配置数据。
标签(1710)可表示平均划分成系统空间(1711)和用户空间(1712)的输入地址空间。标签(1720)可表示转换地址空间。通过PMTRP单元的主端口(129)发出的内存传输请求可寻址到该转换地址空间(1720)。
标签(图17中的1402)可表示第一系统区域说明符表字段(图14中的1402)的基地址偏移量与存储8个区域说明符的系统区域说明符表(1421)相关。端口(128)输入地址空间(1710)的系统空间(1711)与存储于转换地址空间(1720)中的第一系统区域说明符表(1421)相关。
标签(图17中的1408)可表示第一用户区域说明符表字段(图14中的1408)的基地址偏移量与存储8个区域说明符的用户区域说明符表(1422)相关。端口(128)输入地址空间(1710)的用户空间(1712)与存储于转换地址空间(1720)中的第一用户区域说明符表(1422)相关。
标签(图17中的{1415至1418})可表示用户区域说明符表(1423)区域说明符的其中一个可缓存在图14中长度为128位的第一缓存行({1415至1418})中。该实施例中,区域说明符表(1423)可存储16个区域说明符。用户空间(1712)与存储于转换地址空间(1720)中的用户区域说明符表(1423)相关。
区域(1725)与长度为128位的第一缓存行({1415到1418})中缓存的区域说明符相关。用户空间(1712)与存储于转换地址空间(1720)中的区域(1725)相关。
本发明的优选实施例中,系统区域说明符表(1421)可配置为以下两种方案之一:
·单层直接映射索引段表格方案;
·单级直接映射索引缓存页表方案,可用于存储两级TLB方案中第二级的区域说明符。
本发明的优选实施例中:区域说明符表(1422)可对两级直接映射索引表方案中的第一级进行编码;区域说明符表(1423)可对两级直接映射索引表方案中的第二级进行编码。
本发明的优选实施例中,两级直接映射索引表方案中第一级的区域说明符和两级直接映射的索引表方案中第二级区域说明符可在两级表查找操作过程中,按顺序加载到相同缓存行({1415到1418})。
本发明的另一优选实施例中,PMTRP单元(图17的120)的控制单元(图17的121)配有附加总线主接口(1729)。该PMTRP单元(图17中的121)还具有可向转换地址空间(1720)发出两个并发访问,以同时读取存储于两个不同内存存储器中两个区域说明符元素的装置。
图18是根据本发明的优选实施例(图14、15、16和17),通过PMTRP单元(图17中的121)的控制单元(图17中的121)执行的内存地址转换操作的流程图(1800),该教学流程图中,PMTRP单元仅适用于查询单级直接映射区域说明符表,
该流程图始于步骤(1801)。
步骤(1802)中,内存传输请求可通过目标端口(128)上PMTP单元(120)的控制单元(图17中的121)接收。
步骤(1803)中,可查询缓存标签数据字段(图14中的1414)的内容和两个128位缓存行字段({1415至1418})和({1419至1422})的内容,以确定两个128位缓存行中哪个(若有)与该内存传输请求相关。
步骤(1804)中,若无缓存行与该内存传输请求相关,则转到步骤(1805),否则转到步骤(1809)。
步骤(1805)中,可查询与图14中第一系统区域说明符表(1401.a)、第二系统区域说明符表(1401.b)、第一用户区域说明符表(1407a)和第二用户区域说明符表(1407.b)相关的配置元数据内容,以确定与该内存传输请求相关的区域说明符表的基地址偏移量(1402、1403、1408、1409)。
步骤(1806)中,可发出突发读取内存传输请求,以检索与步骤(1805)中选择的区域说明符表中该内存传输请求相关的区域说明符。该突发内存传输请求的长度是根据与该内存传输请求相关的配置元数据的区域说明符编码方案字段(图15的1515)所指示的区域说明符类型来确定的。
步骤(1807)中,所选区域说明符元素的值可加载到两个128位缓存行({1415到1418})和({1419到1422})中最近最少使用的缓存行中。
步骤(1808)中,可检查(1807)中接收到的区域说明符元素的值。
步骤(1809)中,若未启用区域说明符元素,则转到步骤(1813)。若区域说明符是与步骤(1802)中内存传输请求的地址不相关的缓存区域说明符,则转到步骤(1813),转到步骤(1810)。
步骤(1810)中,存储于与通过步骤(1802)中端口(128)上控制单元接收到的内存传输请求相关的缓存行中的区域说明符可通过该PMTRP单元的重组和许可检查模块接收。
步骤(1811)中,许可检查模块执行步骤中接收到的内存传输地址和步骤(1810)中接收到的段说明符之间的一致性检查。
步骤(1812)中,若一致性检查失败,则转到步骤(1813),否则转到步骤(1816)。
步骤(1813)中,可通过在图17中PMTRP单元(120)端口(1728)上引发中断,来产生故障通知信号。
步骤(1814)中,若步骤(1802)中接收到的内存传输请求是写入请求,则转到步骤(1815),否则转到步骤(1820)。
步骤(1815)中,可发出数据字段(1043)中零值的读取内存传输响应。若互连协议提供故障报告功能,则返回该内存传输请求的故障状态(1041),转到步骤(1822)。
步骤(1814)中,可执行内存地址转换,并生成转换内存传输请求的字段。
步骤(1817)中,若步骤(1802)中接收到的内存传输请求是写入请求,则转到步骤(1818),否则转到步骤(1819)。
步骤(1818)中,可在PMTRP单元的主端口(1818)上发出写入内存传输请求。转到步骤(1822)。
步骤(1819)中,可在PMTRP单元的主端口(129)上发出读取内存传输请求。
步骤(1820)中,可在主端口(129)上接收相应的读取内存传输响应。
步骤(1821)中,可转发目标端口(128)上的读取内存传输响应结果,
流程图止于步骤(1822)。
本发明的优选实施例中,步骤(1805)、(1806)、(1808)和(1809)还适于检索和评估两个区域说明符。例如,可搜索存储于缓存区域说明符的双向组关联表中的区域说明符。执行该组相关联缓存方案的本领域技术人员可轻易地执行该配置。
本发明的优选实施例中,步骤(1805)、(1806)、(1808)和(1809)还可执行两级区域说明符遍历。执行两级MMU方案的本领域技术人员可轻易地执行该配置。
对于操作延迟短、处理量高、时间恒定的MMU构架存在长期的需求,该MMU构架可支持32位和64位输入地址空间中的相对精细粒度内存分配。微控制器市场中,还需提供PMTRP单元,该PMTRP单元可作为内存保护单元(MPU)工作,也可作为MMU工作以运行商用高可信安全关键性实时操作系统(RTOS),原因是很多高可信RTOS依赖于使用具有地址转换功能的硬件MMU。长期以来,人们仍需一种装置,在实时环境中以时间分析的方式,经济有效地加快区域说明符的重新编程,缩短延迟,从而支持更快速的任务交换并改进系统性能;
图19是根据本发明的优选实施例,已适用可编程内存地址转换策略的范围说明符(1910)中可能存在的各字段框图。范围的下限地址和上限地址分别存储于字段(1914)和(1918)中。字段(1911)可对用户特许软件访问的1位许可字段进行编码。字段(1912)可对用户特权软件访问的1位“写入”权限字段进行编码。字段(1913)可读取用户特权软件访问的1位“读取执行”权限字段进行编码。字段(1914)可对与该范围说明符相关的输入地址空间连续区域的29位下限地址进行编码。字段(1915)可对用户特许软件访问的1位许可字段进行编码。字段(1916)可对用户特权软件访问的1位“写入”权限字段进行编码。字段(1917)可读取用户特权软件访问的1位“读取执行”权限字段进行编码。字段(1918)可对与该范围说明符相关的输入地址空间连续区域的29位上限地址进行编码。该区域的长度通过以下方式计算:上限地址(1918)的值减去下限地址(1914)的值,再加上值1。字段(1920)可对1位值进行编码,指示是否启用了该范围说明符。字段(1921)可对1位值进行编码,指示是否为该范围说明符启用了内存地址转换。字段(1922)可对用于将输入地址空间中的地址转换成转换地址空间中地址的带符号30位值进行编码。最高位(1923)可对其余29位(1924)的符号(+/-)进行编码。
图20是根据本发明的优选实施例,内存传输请求(2001)字段的框图(2000)。该内存传输请求(2001)包括字段(2005到2013)。字段(2005)可对内存传输请求(2001)的3位(2006、2007、2008)控制字段进行编码。字段(2006)可对用户特许软件访问的1位许可字段进行编码。字段(2007)可对用户特权软件访问的1位“写入”权限字段进行编码。字段(2008)可读取用户特权软件访问的1位“读取执行”权限字段进行编码。字段(2009)可对2位(2010、2011)特权值进行编码,该特权值可指示该内存传输请求(2001)的用户级特权(2010)或系统级特权(2011)。字段(2012)可对与该内存传输请求(2001)相关的输入地址空间中的32位地址进行编码。字段(2013)可映射到该32位地址(2012)的29个最高有效位。
图21是部分展示本发明优选实施例(2100)的混合框示意图和数据流程图,其中图1中的PMTRP单元(120)可采用两个内存管理单元(2101、2140)。存储于内存存储器(123)中的可编程配置数据在图1文字中进行了说明。如图1文字所述,目标端口(134)可接收内存传输请求,以访问存储于图21中内存存储器(123)内的一部分区域说明符元素。图21中的标签(2001)是图20中的内存传输请求(2001)。如图19中的范围说明符(1910)所示,第一MMU(2101)可采用已适用可编程内存地址转换策略的8个范围说明符(2111至2118)。该实施例中,可针对每个内存传输请求并行地评估8个范围说明符(2111至2118)。
范围说明符比较器模块(2121)可接收内存传输请求(2001)和范围说明符(2111)的值作为输入,并生成接收到的作为比较器聚合器模块(2130)输入的输出。范围说明符比较器模块(2123)可接收内存传输请求(2001)和范围说明符(2113)的值作为输入,并生成接收到的作为比较器聚合器模块(2130)输入的输出。范围说明符比较器模块(2124)可接收内存传输请求(2001)和范围说明符(2114)的值作为输入,并生成接收到的作为比较器聚合器模块(2130)输入的输出。范围说明符比较器模块(2125)可接收内存传输请求(2001)和范围说明符(2115)的值作为输入,并生成接收到的作为比较器聚合器模块(2130)输入的输出。范围说明符比较器模块(2126)可接收内存传输请求(2001)和范围说明符(2116)的值作为输入,并生成接收到的作为比较器聚合器模块(2130)输入的输出。范围说明符比较器模块(2127)可接收内存传输请求(2001)和范围说明符(2117)的值作为输入,并生成接收到的作为比较器聚合器模块(2130)输入的输出。范围说明符比较器模块(2128)可接收内存传输请求(2001)和范围说明符(2118)的值作为输入,并生成接收到的作为比较器聚合器模块(2130)输入的输出。范围说明符(2111至2118)的功能如图22所示。
第二内存管理单元(2140)是PMTRP单元,可采用具有至少两级转换表的32位基于页的MMU方案。
比较器结果聚合器模块(2130)可:
·产生作为输入提供给第二MMU(2140)的级联标志输出(2134),该输出(2134)可指示内存传输请求(2001)的地址(2012)是否应通过该第二MMU(2140)转换。
·产生级联标志输出(2132),可将该输出(2132)作为选择输入提供到2输入1输出多路复用器(2150)。
·产生转换内存传输请求作为输出(2133),可将该输出(2133)作为第一数据输入提供到2输入1输出多路复用器(2150)。
·产生交易故障作为输出(2131),可将该输出(2131)作为输入提供到用于聚合故障信号的故障聚合单元(2160)。
第二内存管理单元(2140)可:
·产生转换内存传输请求作为输出(2141),可将该输出(2141)作为第二数据输入提供到2输入1输出多路复用器(2150)。
·产生交易故障作为输出(2142),可将该输出(2131)作为输入提供到用于聚合故障信号的故障聚合单元(2160)。
第一MMU(2101)发出(2131)故障时或第二MMU(2140)发出(2142)故障时,故障聚合单元(2160)可发出故障信号作为输出(2161)。
2输入1输出多路复用器(2150)可生成转换内存传输请求作为输出(2151)。故障聚集单元不发出故障信号(2161)时,该转换内存传输请求(2151)可作为通过PMTRP单元(120)主端口(129)的输出而发出。
图22是根据本发明的优选实施例,部分展示范围说明符比较器模块(2200)的混合框示意图和数据流程图。图19中范围说明符(1910)的说明性文字,对图22中的标签(1911、1192、1193、1914、1915、1916、1917、1918、1921、1923、1920和1924)进行了说明。图20中内存传输请求(2001)的说明性文字对标签(2006、2007、2008和2013)进行了说明。比较器模块(2220)包括以下子模块:
·大于或等于比较器模块(2210)可接收内存传输请求(2001)32位地址(2012)的高29位(2013)的值,并将其与输入地址空间连续区域的29位下界地址(1914)进行比较,且若地址(2012)的值大于或等于输入地址空间连续区域的下界地址(2013)的值则生成单比特值1作为输出。否则,比较器模块(2210)可生成单比特值0作为输出。该单比特值可作为第一输入提供给3输入1输出AND模块(2122)。
·小于或等于比较器模块(2211)可比较内存传输请求(2001)32位地址(2012)的高29位(2013)的值,并将其与输入地址空间连续区域的29位下界地址(1918)进行比较,且若地址(2012)的值小于或等于输入地址空间连续区域的下界地址(2013)的值则生成单比特值1作为输出。否则,比较器模块(2211)可生成单比特值0作为输出。该单比特值可作为第二输入提供给3输入1输出AND模块(2122)。
·范围说明符使能标志(1920)的值可作为第三输入提供给3输入1输出AND模块(2122)。若3输入1输出AND模块(2212)的三个数据输入中的每一个均是单个比特值1,则AND模块(2212)的输出是单个比特值1。否则,AND模块(2212)的输出是单比特值0。
·可提供该AND模块(2212)的输出作为输出(2240)的范围说明符有效字段(2236)的值。该字段(2236)可指示该内存传输请求(2001)是否与该范围说明符(1910)相关。
·地址转换模块(2213)可执行内存传输请求(2001)32位地址(2012)的无符号高位29位(2013)的值和用于将输入地址空间中的地址转换为转换地址空间中地址的带符号30位值(1922)的带符号算术加法。
·2输入1输出29位宽复用器(2216)可接收带符号算术运算的输出作为其第二数据输入。多路复用器(2216)可接收恒定的长度为29位的零值(即,将所有29位设置为恒定的单比特值0)作为其第一数据输入。
·模块2215可接收该2输入1输出“AND”模块(2122)的输出作为输入,该模块(2122)可指示该内存传输请求是否与该范围说明符相关。若可启用该范围说明符的转换启能字段(1921)的值且模块(2122)的输出是单比特值1,则模块(2215)的输出是单比特值1,否则该模块(2215)的输出为单比特值0。
·可提供模块(2215)的输出作为输出(2240)的转换有效字段(2237)的值。
·可提供模块(2215)的输出作为2输入1输出宽度为29位复用器(2216)的选择输入。若选择输入的值是单比特值1,则可释放包含转换地址、输入到多路复用器(2216)的第一数据的值作为多路复用器(2216)的输出。否则,可释放包含恒定值零、输入到多路复用器(2216)的第二数据的值作为多路复用器(2216)的输出。
·许可检查模块(2220)可接收用户“数据读取”许可字段(1911)的值、内存传输请求的“数据读取”字段(2006)的值、特权级别(2009)内存传输请求(2001)的值和指示该内存传输请求是否与该范围说明符相关的模块(2212)的输出作为输入。若权限检查失败,则权限检查模块(2220)可评估其输入并释放单比特值1,否则释放单比特值0。
·权限检查模块(2221)可接收用户“写入”许可字段(1912)的值、内存传输请求的“写入”字段的值(2007)、特权级别(2009)内存传输请求(2001)的值和指示该内存传输请求是否与该范围说明符相关的模块(2212)的输出作为输入。若权限检查失败,则权限检查模块(2221)可评估其输入并释放单比特值1,否则释放单比特值0。
·许可检查模块(2222)可接收用户“执行读取”许可字段(1913)的值、内存传输请求的“执行读取”字段(2008)的值、特权级别(2009)内存传输请求(2001)的值和指示该内存传输请求是否与该范围说明符相关的模块(2212)的输出作为输入。若权限检查失败,则权限检查模块(2222)可评估其输入并释放单比特值1,否则释放单比特值0。
·权限检查模块(2223)可接收内存传输请求的“执行读取”的值、特权级别(2009)内存传输请求(2001)的值和指示该内存传输请求是否与该范围说明符相关的模块(2212)的输出作为输入。若权限检查失败,则权限检查模块(2223)可评估其输入并释放单比特值1,否则释放单比特值0。
·权限检查模块(2224)可接收系统“写入”许可字段(1916)的值、内存传输请求的“写入”字段的值(2007)、特权级别(2009)内存传输请求(2001)的值和指示该内存传输请求是否与该范围说明符相关的模块(2212)的输出。若权限检查失败,则权限检查模块(2224)可评估其输入并释放单比特值1,否则释放单比特值0。
·许可检查模块(2225)可接收系统“执行读取”许可字段(1917)的值、内存传输请求的“执行读取”字段(2008)的值、特权级别(2009)内存传输请求(2001)的值和指示该内存传输请求是否与该范围说明符相关的模块(2212)的输出作为输入。若权限检查失败,则权限检查模块(2225)可评估其输入并释放单比特值1,否则释放单比特值0。
·将许可检查模块(2220至2225)的输出作为输入提供到故障聚合单元(2226)。若输入中的任何一个是单个比特值1,则故障聚合单元(2226)释放单比特值1。否则,故障聚合单元(2226)释放单比特值0。可提供聚合单元(2226)的输出作为输出(2240)的权限检查故障字段(2230)的值。
图23是根据本发明的优选实施例,部分展示(2300)比较结果聚合器模块(图21的2130)的混合框示意图。图19的文字说明了2位(图19中的2010、2010)特权级别字段(图23的2009)。图21的文字说明了1位级联标志(图23中的2134)。图21的文字说明了1位交易故障标志(图23中的2131)。
标签(2310)可表示通过8个比较器模块(2121至2128),同时释放作为输出的8个转换有效字段(2237)。
标签(2320)可表示通过8个范围说明符比较器模块(2121至2128),同时释放作为输出的8个许可检查故障字段(2230)。
标签(2301)可表示可启用该MMU(2101)地址转换的单比特“转换使能”配置字段。
级联模块(2312)可接收8个(2310)转换有效字段(2237)和单比特转换使能配置字段(2301)作为输入。若转换使能配置字段(2301)的值是1且8个(2310)转换有效字段(2237)中任何一个的值均不为1,则级联模块(2312)输出的单比特值是1。否则,级联模块的输出为0。级联模块(2312)的输出可用作单比特级联标志(2134)的值。
交易故障模块(2311)可接收8个(2310)转换有效字段(2237)和单比特转换使能配置字段(2301)作为输入。若转换使能配置字段(2301)的值是1且8个(2310)转换有效字段(2237)中多个字段的值为1,则交易故障模块(2311)输出的单比特值是1。若转换使能配置字段(2301)的值是0且8个转换有效字段(2237)中任何一个的值为1,则交易故障模块(2311)输出的单比特值也是1。否则,交易故障模块(2311)输出的单比特值是0。
许可检查故障模块(2322)可通过8个范围说明符比较器模块(2121至2128)接收所发出的8个(2320)许可检查故障字段(2230)作为输入。若8个(2320)用户权限检查故障字段(2320)中任何一个的值是1,则权限检查故障模块(2322)输出的单比特值设置为1。否则,权限检查故障模块(2322)输出的单比特值设置为0。
故障聚合模块(2360)可接收模块(2311)和(2322)的输出作为输入。若单比特输入中任何一个的值是1,则故障聚合模块(2360)生成值为1的单比特输出。否则,故障聚合模块(2360)生成值为0的单比特输出。可提供故障聚集模块(2360)的输出作为交易故障标志(2131)的值。
图24是根据本发明的优选实施例,使用两个MMU装置(图21中的2101和2140)将输入地址空间(2401)映射到转换地址空间(2402)的示例框图(600)。标签(2400)可表示8个范围说明符(2111至2118)。范围说明符(2111)的范围说明符使能标志(1920)示为禁用。范围说明符(2112至2118)中每一个的范围说明符使能标志(1920)示为启用。转换使能标志(1921)对区域说明符(2111、2112、2117)禁用,对区域说明符(2113、2114、2115、2116、2118)可启用。范围说明符(2112)可在无地址转换的情况下启用写入权限。范围说明符(2117)可启用读取权限而无需地址转换。范围说明符(2113、2114、2115、2116、2188)可表示输入地址空间到目标地址空间({2113、2433}、{2114、2434}、{2115、2435}、{2116、2436}、{2118、2438})的映射范围。寻址到与区域说明符(2112)相关的内存地址的写入内存传输请求可通过地址转换(2435)(即,标识变换)来执行。
寻址到与第一MMU的区域说明符(2111到2118)中任何一个不相关的内存区域(2410、2411、2412、2413、2414、2415、2416)中的任何一个2101)可转发到第二MMU(2140)以进行附加处理。例如,输入地址空间中的区域(2420)与第二MMU(2140)中的一个或多个区域说明符相关。该区域(2420)可通过该第二MMU(2140)转换(2421)到目标地址空间中的内存范围(2422)。
本发明的一个优选实施例中,一种装置包括:可编程内存传输请求处理(PMTRP)单元,包括:第一端口,即目标端口,可:接收与第一地址空间相关的内存传输请求;发送相应的内存传输响应;可编程配置数据,其中该可编程配置数据包括:至少一个区域说明符,该区域说明符可对与该第一地址空间区域相关的至少一个策略进行编码,其中:对于至少一个区域说明符中的每一个,该区域说明符的类型可选自以下7种类型:具有固定长度页面的页说明符;具有可变长度页面的页说明符;段说明符;转换后备缓冲区说明符;范围说明符;适用可编程内存地址转换策略的范围说明符;缓存标记说明符;第二端口,即主端口,可:发送与第二地址空间相关的内存传输请求;接收对应的内存传输响应;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,来处理与第一端口上接收到的与第一地址空间相关的内存传输请求的装置;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,响应与第一端口上接收到的第一地址空间相关的内存传输请求,在第二端口上生成并发送与第二地址空间相关的内存传输请求的装置;第三端口,即目标端口,可:接收与访问一部分可编程配置数据的第三地址空间相关的内存传输请求;发送相应的内存传输响应;处理第三端口上接收到的格式正确的内存传输请求的装置,该内存传输请求可寻址到第三地址空间中与至少一个区域说明符中至少一个的一部分相关的内存位置;可编程直接内存访问(PDMA)单元,包括:第一端口,即目标端口,可:接收内存传输请求以控制PDMA单元;发送相应的内存传输响应;第二端口,即主端口,可:发送内存传输请求;接收对应的内存传输响应;可编程配置数据,包括:至少一个内存到内存传输控制说明符,该说明符可说明内存到内存传输操作;使用第二端口和至少一个内存至内存传输控制说明符,来处理内存至内存传输操作的装置;其中:该PDMA单元可将内存传输请求从第二端口发送到PMTRP单元的第三端口;该PMTRP单元可接收并成功地处理该PDMA单元的第二端口上发出的格式正确的内存传输请求,该内存传输请求可寻址到第三地址空间中与该PMTRP单元的至少一个区域说明符中至少一个的一部分相关的内存位置。
本发明的另一优选实施例中:一部分可编程配置数据可与第一地址空间的用户部分相关;可通过PMTRP单元的第三端口访问、与第一地址空间的用户部分相关的PMTRP单元的所有可编程配置数据,可在PDMA单元的一个内存到内存传输操作中进行编程。
本发明的优选实施例中,一种可将与第一地址空间相关的内存传输请求与至少N+1个逻辑独立内存传输请求处理区域之一进行映射的装置,该第一地址空间可划分成至少N个连续的分区,该设备包括:第一端口,即目标端口,可:接收与第一地址空间相关的内存传输请求,其中该内存传输请求与以下相关:第一地址空间中的内存地址;地址空间标识符;发送相应的内存传输响应;第二端口,可发送与N+1个逻辑上独立的MTRP区域之一相关的值;响应第一端口上接收到的内存传输请求,生成与该第二端口上N+1个逻辑独立的MTRP区域之一相关的值的装置;指示内存传输请求是否未成功映射到第三端口上N+1个逻辑独立的MTRP区域之一的装置;其中:N的值至少为2;N+1个逻辑独立的MTRP区域中的至少两个可映射到第一地址空间中至少N个连续分区的相同分区;若与第一端口上接收到的内存传输请求相关的内存地址与第一地址空间的至少N个连续分区中的一个相关,该第一地址空间中的至少N个连续分区可具有映射到其上的N+1个逻辑独立MTRP区域中的至少2个,则与该内存传输请求相关的地址空间标识符的值可用于区分其映射到N+1个逻辑独立PMTRP区域中的至少2个中的哪些区域(若有)。
本发明的另一优选实施例中,至少N+1个逻辑独立内存传输请求处理(MTRP)区域中的每一个可采用可编程内存地址转换方案,用于转换寻址到该区域的内存传输请求。
本发明的优选实施例中,一种装置包括可编程内存传输请求处理(PMTRP)单元,其中该PMTRP单元包括:第一端口,即目标端口,可:接收与来自第一互连的第一地址空间相关的内存传输请求;发送相应的内存传输响应;第二端口,即主端口,可:将与第二地址空间相关的内存传输请求发送到第二互连,其中该第二互连非该第一互连;接收对应的内存传输响应;第一组至少两个可编程区域说明符,其中:
对于每个可编程区域说明符,该可编程区域说明符:以编程方式与第一地址空间的内存区域相关;包括可编程访问许可策略;包括可编程内存地址转换策略;第三端口,即目标端口,可:接收与第三地址空间相关的内存传输请求,以访问第一组至少两个可编程区域说明符的一部分;发送相应的内存传输响应处理第三端口上接收到的格式正确的内存传输请求的装置,该内存传输请求可寻址到第三地址空间中与第一组至少两个可编程区域说明符中至少一个可编程区域说明符的一部分相关的内存位置;第四端口,即输出端口;根据与接收到的存储于第一组至少两个可编程内存区域说明符中的内存传输请求相关的至少一个策略,响应第一端口上接收到的内存传输请求,生成并发送第二端口上内存传输请求的装置;以编程方式与该地址相关的至少两个可编程区域说明符中的确切一个启用其转换策略时,可转换第一端口上接收到的内存传输请求地址的装置;与该地址在程序上相关的至少两个可编程区域说明符中的多于一个可编程区域说明符可启用其转换策略时,可在第四端口上生成信号的装置。
本发明的另一优选实施例中,该PMTRP单元的第一组至少两个可编程区域说明符中的至少一个可编程区域说明符具有:与代表在一个或多个处理器内核上所运行软件发出的可执行代码内存传输请求相关的至少一个许可字段;与代表在一个或多个处理器内核上所运行软件发出的数据内存传输请求相关的至少一个许可字段。
本发明的另一优选实施例中:该PTRMP单元包括使地址空间标识符与该PMTRP单元的第一端口上接收的内存传输请求相关联的装置;该PMTRP单元的可编程区域说明符中的至少一个可与地址空间标识符相关。本发明的优选实施例中:一种装置,包括:可编程内存传输请求处理(PMTRP)单元,包括:第一端口,即目标端口,可:接收与来自第一互连的第一地址空间相关的内存传输请求;发送相应的内存传输响应;第二端口,即主端口,可:将与第二地址空间相关的内存传输请求发送到第二互连,其中该第二互连非第一互连;接收内存传输;可编程配置数据,其中该可编程配置数据包括:至少一个缓存区域说明符,该说明符可对与第一地址空间区域相关的至少一个策略进行编码;通过在第二端口上生成并发送至少一个内存传输请求来访问至少N组至少两个区域说明符的装置,其中该至少两个区域说明符中的至少一组是一组缓存区域说明符;接收相应的响应;缓存接收到的区域说明符;根据处理过程中通过第二端口可访问的N组至少两个区域说明符中第一组中编码的策略,来处理第一端口上接收到的内存传输请求的装置;根据与接收到的存储于N组至少两个区域说明符中第一组中的内存传输请求相关的至少一个策略,响应第一端口上接收到的内存传输请求,生成并发送第二端口上内存传输请求的装置;其中N的值至少为1。
本发明的另一优选实施例中,N的值至少是2,该PMTRP单元还可:将第一端口的第一地址空间划分为至少2个连续区域;对于第一地址空间的至少两个连续区域中的每个区域:以编程方式将该区域与第二端口上可访问的N组至少两个区域说明符中的不同一组相关联。
本发明的另一优选实施例中,PMTRP单元还可适配以下装置:通过生成和发送第二端口上的至少一个内存传输请求并接收相应的响应,来访问区域说明符的至少一个缓存的装置,其中区域说明符的每个缓存包含至少两个区域说明符;根据处理过程中通过第二端口可访问的区域说明符的至少一个缓存中的一个进行编码的策略,来处理第一端口上接收到的内存传输请求的装置;根据处理过程中通过第二端口可访问的区域说明符的至少一个缓存中的一个进行编码的策略,响应第一端口上接收到的内存传输请求,在第二端口上生成和发送内存传输请求的装置。
本发明的另一优选实施例中,PMTRP单元还可:第三端口,即主端口,可:将与第三地址空间相关的内存传输请求发送到第三互连,其中该第二互连非该第一互连或第二互连;接收内存传输;根据处理过程中通过第三端口可访问的N组可编程区域说明符中的至少一组进行编码的策略,来处理第一端口上接收到的内存传输请求的装置;根据处理过程中通过第三端口可访问的N组可编程区域说明符中的至少一组进行编码的策略,响应第一端口上接收到的内存传输请求,在第二端口上生成和发送内存传输请求的装置。
本发明的优选实施例中,一种包括可编程内存传输请求处理(PMTRP)单元的设备,该PMTRP单元包括:第一端口,即目标端口,可:接收与第一地址空间相关的内存传输请求,其中第一地址空间:可细分成N个分区;该地址空间的范围是M千字节;发送相应的内存传输响应;第二端口,即主端口,可:发送与第二地址空间关的内存传输请求,该第二地址空间的范围为O千兆字节;接收对应的内存传输响应;可编程配置数据,其中该可编程配置数据包括:至少N个区域说明符,其中:N个区域说明符中的每一个可对与第一地址空间区域相关的至少一个策略进行编码;所有至少N个区域说明符是相同类型的区域说明符,其中该类型的区域说明符选自以下两种类型中的一种:页说明符,可支持至少8种不同的页面长度;段说明符,可支持至少16个不同的分配段长度;至少N个区域说明符中的至少N个与第一地址空间的N个分区中不同的一个相关;在处理过程中,根据与该可编程配置数据中编码的第一地址空间相关的至少一个策略,来处理与第一端口上接收到的与第一地址空间相关的内存传输请求的装置;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,响应与第一端口上接收到的第一地址空间相关的内存传输请求,在第二端口上生成并发送与第二地址空间相关的内存传输请求的装置;其中:M的值至少为1024;N的值至少为2且小于16384;O的值至少为1。
本发明的另一优选实施例中,PMTRP单元还包括:第三端口,即目标港口,可:接收与第三地址空间相关的内存传输请求,以访问一部分可编程配置数据;发送相应的内存传输响应;处理第三端口上接收到的格式正确的内存传输请求的装置,该内存传输请求可寻址到访问至少N个区域说明符中至少一个的一部分的有效内存位置;通过发送第三端口上的内存传输请求,来响应第三端口上接收到的格式正确的读取内存传输请求的装置,该读取内存传输请求可寻址到访问至少N个区域说明符中至少一个的一部分的内存位置。本发明的另一优选实施例中,PMTRP单元可采用以下查找方案中的一个:
·用于识别至少N个区域说明符中哪一个与内存传输请求相关的直接索引查找方案的类型;
·用于识别至少N个区域说明符中哪一个与内存传输请求相关的内容关联内存查找方案;
·用于识别至少N个区域说明符中哪一个与内存传输请求相关的完全关联查找方案。
本发明的优选实施例中,一种装置包括:第一可编程内存传输请求处理(PMTRP)单元,包括:第一端口,即目标端口,可:接收与第一地址空间相关的内存传输请求;发送相应的内存传输响应;可编程配置数据,其中该可编程配置数据包括:至少一个区域说明符,该区域说明符可对与该第一地址空间区域相关的至少一个策略进行编码,其中:对于至少一个区域说明符中的每一个,该区域说明符的类型可选自以下5种类型:具有固定长度页面的页说明符;具有可变长度页面的页说明符;段说明符;转换后备缓冲区说明符;适用可编程内存地址转换策略的区域说明符;第二端口,即主端口,可:发送与第二地址空间相关的内存传输请求;接收对应的内存传输响应;在处理过程中,根据与该可编程配置数据中编码的第一地址空间相关的至少一个策略,来处理与第一端口上接收到的与第一地址空间相关的内存传输请求的装置;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,响应与第一端口上接收到的第一地址空间相关的内存传输请求,在第二端口上生成并发送与第二地址空间相关的内存传输请求的装置;第三端口,即目标端口,可:接收与访问一部分可编程配置数据的第三地址空间相关的内存传输请求;发送相应的内存传输响应;处理第三端口上接收到的格式正确的内存传输请求的装置,该内存传输请求可寻址到第三地址空间中与至少一个区域说明符中至少一个的一部分相关的内存位置;第二可编程内存传输请求处理(PMTRP)单元,包括:第一端口,即目标端口,可:接收与第一地址空间相关的内存传输请求;发送相应的内存传输响应;可编程配置数据,其中该可编程配置数据包括:至少一个对与第一地址空间区域相关的至少一个策略进行编码的说明符,其中该说明符可对至少一个策略进行解码,该策略有关如何转换在通过第一端口上的一个或多个内存传输请求接收到的区域说明符中进行编码的至少一个策略;第二端口,即主端口,可:发送与第二地址空间相关的内存传输请求;接收对应的内存传输响应;在处理过程中,根据与该可编程配置数据中编码的第一地址空间相关的至少一个策略,来处理与第一端口上接收到的与第一地址空间相关的内存传输请求的装置;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,响应与第一端口上接收到的第一地址空间相关的内存传输请求,在第二端口上生成并发送与第二地址空间相关的内存传输请求的装置;第三端口,即目标端口,可:接收与访问一部分可编程配置数据的第三地址空间相关的内存传输请求;发送相应的内存传输响应;处理第三端口上接收到的格式正确的内存传输请求的装置,该内存传输请求可寻址到第三地址空间中与至少一个说明符中至少一个的一部分相关的内存位置;其中:第二PMTRP单元的第二端口连接到第一PMTRP单元的第三端口。
本发明的各实施例可通过各种不同形式来实施,包括可与处理器(例如,微处理器、微控制器、数字信号处理器或通用计算机)一起使用的计算机程序逻辑、可与可编程逻辑设备(例如,现场可编程门阵列(FPGA)或其他PLD)一起使用的可编程逻辑、分立组件、集成电路(例如,特定用途集成电路(ASIC))或包括任何组合的任何其他装置。本发明的示例性实施例中,用户和服务器之间的所有主要通信可作为一组计算机程序指令进行实施,该计算机程序指令可转换为存储于计算机可读介质中、通过操作系统控制下的微处理器执行的计算机可执行形式。
本文中所有或部分功能的计算机程序逻辑的执行可通过各种形式来实施,包括源代码形式、计算机可执行形式和各种媒介形式(例如,通过汇编器、编译器、链接器或定位器生成的形式)。源代码可包括以各种编程语言(例如,目标代码、汇编语言,或SPARKADA、Fortran、C、C++、JAVA、Ruby或HTML等高级语言)中的任何一种执行的一系列计算机程序指令,用于各种操作系统或操作环境。源代码可定义和使用各种数据结构和通信消息。源代码可为计算机可执行形式(例如,通过解释器),或源代码可(例如,通过转换器、汇编器或编译器的方式)转换成计算机可执行形式。
计算机程序可以任何形式(例如,源代码形式、计算机可执行形式或媒介形式)永久地或暂时地固定在有形存储介质,例如,半导体内存设备(例如,RAM、ROM、PROM、EEPROM或闪存可编程RAM)、磁内存设备(例如,磁盘或固定盘)、光内存设备(例如,CD-ROM或DVD-ROM)、PC卡(例如,PCMCIA卡)或其他内存设备中。计算机程序可以任何形式固定在可使用各种通信技术(包括但绝不限于模拟技术、数字技术、光学技术、无线技术(例如,蓝牙)、网络技术和联网技术)传输到计算机的信号中。计算机程序可作为附有印刷或电子文档(例如,收缩包装的软件)的可移动存储介质以任何形式来分配,可预装计算机系统(例如,系统ROM或固定盘上),或可通过通信系统(例如,互联网或万维网)上的服务器或电子公告板来分配。
可使用传统手动方法来设计用于执行本文中所有或部分功能的硬件逻辑(包括利用可编程逻辑器件的可编程逻辑),或可使用各种工具来进行电子设计、捕获、模拟或记录,例如,计算机辅助设计(CAD)、硬件说明语言(例如,VHDL或AHDL)或PLD编程语言(例如,PALASM、ABEL或CUPL)。
可编程逻辑可永久地或暂时地固定在有形存储介质,例如,半导体内存设备(例如,RAM、ROM、PROM、EEPROM或闪存可编程RAM)、磁内存设备(例如,磁盘或固定盘)、光内存设备(例如,CD-ROM或DVD-ROM)或其他内存设备中。可编程逻辑可固定在使用各种通信技术中任何一种传输到计算机的信号中,该通信技术包括但不限于模拟技术、数字技术、光学技术、无线技术(例如,蓝牙)、网络技术和网络互联技术。可编程逻辑可作为附有印刷或电子文档(例如,收缩包装的软件)的可移动存储介质来分配,可预装计算机系统(例如,系统ROM或固定盘上),或可通过通信系统(例如,互联网或万维网)上的服务器或电子公告板来分配。
附图说明
为了更好地理解本发明,说明如何实施本发明,附图中仅以非限制性示例的方式展示了本发明的实施例。附图中:
图1是根据本发明优选实施例,用于处理数据的设备(100)各部分的示意框图;
图2是根据本发明优选实施例,说明划分用于访问存储于PMTRP单元(120)内存(123)(图1)中可编程配置数据的地址空间(201)的框图;
图3是在一次内存到内存传输操作(图1中的148、149、150)中,通过该PDMA单元(图1中的140)执行的内存到内存传输操作,以对存储于PMTRP单元(图1中的120)内存存储器(图1中的123)中所有可编程配置数据进行编程的流程图(300);
图4是部分展示本发明优选实施例的混合框示意图和数据流程图,其中图1中的PMTRP单元(120)可执行内存管理单元(MMU)的功能;
图5是根据本发明优选实施例,通过PMTRP单元(120)的控制单元(121)执行的内存地址转换操作步骤的流程图(500);
图6是根据本发明的优选实施例,输入地址空间(610)和转换地址空间(630)之间,基于段的地址转换方案的示例映射框图(600);
图7是用于DECVAX-11/760架构,基于单级直接映射页方案的输入地址空间(701)组织的框图(670),如[3]中图6-1所示;
图8是根据本发明的优选实施例,基于单级直接映射段方案的输入地址空间(701)的创新组织框图(670);
图9是根据本发明的优选实施例,两个级别内存管理装置的框图(900);
图10是根据本发明优选实施例,内存传输请求(1010)和内存传输响应(1040)中可能存在的各字段框图(1000);
图11是部分展示本发明优选实施例(1100)的混合框示意图和数据流程图,其中图1中的PMTRP单元(120)可执行分区单级直接索引基于页的内存管理单元(MMU)功能;
图12是部分展示本发明优选实施例的混合框示意图和数据流程图,其中图1中的PMTRP单元(120)可执行内存管理单元(MMU)的功能;
图13是根据本发明的优选实施例(图11和12),通过PMTRP单元(图1中的120)的控制单元(图1中的121)执行的内存地址转换操作的流程图(1300);
图14是根据本发明的优选实施例,访问存储于PMTRP单元(120)内存存储器(123)中可编程配置数据的地址空间(1400)的分区框图;
图15是根据本发明的优选实施例,图14中采用的宽度为16位的配置元数据字段(1510)的框图;
图16是根据本发明的优选实施例,图14中采用的区域说明符(1600)的框图;
图17是根据本发明的优选实施例(图1、14、15和16),部分展示设备(1700)的混合框示意图和数据流程图;
图18是根据本发明的优选实施例(图14、15、16和17),通过PMTRP单元(图17中的121)的控制单元(图17中的121)执行的内存地址转换操作的流程图(1800);
图19是根据本发明的优选实施例,已适用可编程内存地址转换策略的范围说明符(1910)中可能存在的各字段框图;
图20是根据本发明的优选实施例,内存传输请求(2001)字段的框图(2000);
图21是部分展示本发明优选实施例(2100)的混合框示意图和数据流程图,其中图1中的PMTRP单元(120)可采用两个内存管理单元(2101、2140);
图22是根据本发明的优选实施例,部分展示范围说明符比较器模块(2200)的混合框示意图和数据流程图;
图23是根据本发明的优选实施例,部分展示说明符结果比较器模块(图21中的2130)的混合框示意图;
图24是根据本发明的优选实施例,使用两个MMU装置(图21中的2101和2140)将输入地址空间(2401)映射到转换地址空间(2402)的示例框图(600)。
参考文献
[1]亨利M.利维,基于性能的计算机系统,数字出版社,1984年。
[2]哈维G.克拉根,内存系统和流水线处理器,1996年。
[3]数字公司Vax11/780硬件手册,1979-80年,1979年。
Claims (28)
1.一种可编程内存传输请求处理装置,包括:可编程内存传输请求处理(programmablememory transfer requestprocessing,PMTRP)单元,包括:第一端口,即目标端口,可:接收与第一地址空间相关的内存传输请求;发送相应的内存传输响应;可编程配置数据,其中该可编程配置数据包括:至少一个区域说明符,该区域说明符可对与该第一地址空间区域相关的至少一个策略进行编码,其中:对于至少一个区域说明符中的每一个,该区域说明符的类型可选自以下7种类型:具有固定长度页面的页说明符;具有可变长度页面的页说明符;段说明符;转换后备缓冲区说明符;范围说明符;适用可编程内存地址转换策略的范围说明符;缓存标记说明符;第二端口,即主端口,可:发送与第二地址空间相关的内存传输请求;接收对应的内存传输响应;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,来处理与第一端口上接收到的与第一地址空间相关的内存传输请求的装置;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,响应与第一端口上接收到的第一地址空间相关的内存传输请求,在第二端口上生成并发送与第二地址空间相关的内存传输请求的装置;第三端口,即目标端口,可:接收与访问一部分可编程配置数据的第三地址空间相关的内存传输请求;发送相应的内存传输响应;处理第三端口上接收到的格式正确的内存传输请求的装置,该内存传输请求可寻址到第三地址空间中与至少一个区域说明符中至少一个的一部分相关的内存位置;可编程直接内存访问(programmabledirect memory access,PDMA)单元,包括:第一端口,即目标端口,可:接收内存传输请求以控制PDMA单元;发送相应的内存传输响应;第二端口,即主端口,可:发送内存传输请求;接收对应的内存传输响应;可编程配置数据,包括:至少一个内存到内存传输控制说明符,该说明符可说明内存到内存传输操作;使用第二端口和至少一个内存至内存传输控制说明符,来处理内存至内存传输操作的装置;其中:该PDMA单元可将内存传输请求从第二端口发送到PMTRP单元的第三端口;该PMTRP单元可接收并成功地处理该PDMA单元的第二端口上发出的格式正确的内存传输请求,该内存传输请求可寻址到第三地址空间中与该PMTRP单元的至少一个区域说明符中至少一个的一部分相关的内存位置。
2.根据权利要求1所述的装置,其中:一部分可编程配置数据可与第一地址空间的用户部分相关;可通过PMTRP单元的第三端口访问、与第一地址空间的用户部分相关的PMTRP单元的所有可编程配置数据,可在PDMA单元的一个内存到内存传输操作中进行编程。
3.根据权利要求1至2中任一项所述的装置,其中该PMTRP单元(120)的可编程配置数据还包括至少一个缓存行或至少一个缓存块。
4.根据权利要求1所述的装置,其中:该PMTRP单元包括使地址空间标识符与该PMTRP单元的第一端口上接收的内存传输请求相关的装置;该PMTRP单元中可编程数据的至少一个区域说明符可与地址空间标识符相关。
5.一种可将与第一地址空间相关的内存传输请求与至少N+1个逻辑独立内存传输请求处理区域之一进行映射的装置,该第一地址空间可划分成至少N个连续的分区,该装置包括:第一端口,即目标端口,可:接收与第一地址空间相关的内存传输请求,其中该内存传输请求与以下相关:第一地址空间中的内存地址;地址空间标识符;发送相应的内存传输响应;第二端口,可发送与N+1个逻辑上独立的内存传输请求处理(memory transferrequestprocessing,MTRP)区域之一相关的值;响应第一端口上接收到的内存传输请求,生成与该第二端口上N+1个逻辑独立的MTRP区域之一相关的值的装置;示内存传输请求是否未成功映射到第三端口上N+1个逻辑独立的MTRP区域之一的装置;其中:N的值至少为2;N+1个逻辑独立的MTRP区域中的至少两个可映射到第一地址空间中至少N个连续分区的相同分区;若与第一端口上接收到的内存传输请求相关的内存地址与第一地址空间的至少N个连续分区中的一个相关,则该第一地址空间中的至少N个连续分区可以具有映射到其上的N+1个逻辑独立MTRP区域中的至少两个,然后,如果有的话,使用与该内存传输请求相关联的地址空间标识符的值来区分映射到的N+1个逻辑独立PMTRP区域中的至少2个中的那些区域。
6.根据权利要求5所述的装置,其中至少N+1个逻辑独立内存传输请求处理(memorytransfer requestprocessing,MTRP)区域中的每一个可采用可编程内存地址转换方案,用于转换寻址到该区域的内存传输请求。
7.根据权利要求6所述的装置,其中可编程内存转换地址方案中的至少一个可使用直接索引一级方案。
8.根据权利要求5或6所述的装置,其中至少两个地址空间标识符可与第一地址空间的至少N个连续分区中的一个相关,第一地址空间的连续分区与N+1个逻辑独立MTRP区域中的一个相关。
9.根据权利要求5或6所述的装置,其中与内存传输请求相关的地址空间标识符的值与第一地址空间的至少N个连续分区中的至少两个相关。
10.一种可编程内存传输请求处理装置,包括:可编程内存传输请求处理(programmable memory transfer requestprocessing,PMTRP)单元,包括:第一端口,即目标端口,可:接收与来自第一互连的第一地址空间相关的内存传输请求;发送相应的内存传输响应;第二端口,即主端口,可:将与第二地址空间相关的内存传输请求发送到第二互连,其中该第二互连非该第一互连;接收对应的内存传输响应;第一组至少两个可编程区域说明符,其中:对于每个可编程区域说明符,该可编程区域说明符:以编程方式与第一地址空间的内存区域相关;包括可编程访问许可策略;包括可编程内存地址转换策略;第三端口,即目标端口,可:接收与第三地址空间相关的内存传输请求,以访问第一组至少两个可编程区域说明符的一部分;发送相应的内存传输响应;处理第三端口上接收到的格式正确的内存传输请求的装置,该内存传输请求可寻址到第三地址空间中与第一组至少两个可编程区域说明符中至少一个可编程区域说明符的一部分相关的内存位置;第四端口,即输出端口;根据与接收到的存储于第一组至少两个可编程内存区域说明符中的内存传输请求相关的至少一个策略,响应第一端口上接收到的内存传输请求,生成并发送第二端口上内存传输请求的装置;以编程方式与该地址相关的至少两个可编程区域说明符中的确切一个启用其转换策略时,可转换第一端口上接收到的内存传输请求地址的装置;与该地址在程序上相关的至少两个可编程区域说明符中的多于一个可编程区域说明符可启用其转换策略时,可在第四端口上生成信号的装置。
11.根据权利要求10所述的装置,其中该PMTRP单元的第一组至少两个可编程区域说明符中的至少一个可编程区域说明符具有:与代表在一个或多个处理器内核上所运行软件发出的可执行代码内存传输请求相关的至少一个许可字段;与代表在一个或多个处理器内核上所运行软件发出的数据内存传输请求相关的至少一个许可字段。
12.根据权利要求10或11所述的装置,其中:该PMTRP单元包括使地址空间标识符与该PMTRP单元的第一端口上接收的内存传输请求相关联的装置;该PMTRP单元的可编程区域说明符中的至少一个可与地址空间标识符相关。
13.一种可编程内存传输请求处理装置,包括:可编程内存传输请求处理(programmable memory transfer requestprocessing,PMTRP)单元,包括:第一端口,即目标端口,可:接收与来自第一互连的第一地址空间相关的内存传输请求;发送相应的内存传输响应;第二端口,即主端口,可:将与第二地址空间相关的内存传输请求发送到第二互连,其中该第二互连非该第一互连;接收内存传输;可编程配置数据,其中该可编程配置数据包括:至少一个缓存区域说明符,该说明符可对与第一地址空间区域相关的至少一个策略进行编码;通过在第二端口上生成并发送至少一个内存传输请求来访问至少两个区域说明符中至少N组的装置,其中该至少两个区域说明符中的至少一组是一组缓存区域说明符;接收相应的响应;缓存接收到的区域说明符;根据处理过程中通过第二端口可访问的至少两个区域说明符N组的第一组中编码的策略,来处理第一端口上接收到的内存传输请求的装置;根据与接收到的存储于至少两个区域说明符N组中第一组的内存传输请求相关的至少一个策略,响应第一端口上接收到的内存传输请求,生成并发送第二端口上内存传输请求的装置;其中N的值至少为1。
14.根据权利要求13所述的装置,N的值至少是2,该PMTRP单元还可:将第一端口的第一地址空间划分为至少2个连续区域;对于第一地址空间的至少两个连续区域中的每个区域:以编程方式使该区域与第二端口上可访问的至少两个区域说明符N组中的不同一组相关联。
15.根据权利要求13或14所述的装置,其中在单级直接索引方案中,可使用至少两个区域说明符N组中的至少一组。
16.根据权利要求13或14所述的装置,其中在多级方案中,可使用至少两个区域说明符N组中的至少一组。
17.根据权利要求13所述的装置,其中:对于该PMTRP单元的至少两个区域说明符至少N组中的每一组:该组中所有区域说明符的类型相同;所有区域说明符的类型选自以下6种类型之一:具有固定长度页面的页说明符;具有可变长度页面的页说明符;段说明符;转换后备缓冲区说明符;区域说明符;适用可编程内存地址转换策略的区域说明符;该PMTRP单元的至少两个区域说明符至少N组中的至少2组具有不同类型的区域说明符。
18.根据权利要求14所述的装置,其中:对于该PMTRP单元的至少两个区域说明符至少N组中的每一组:该组中所有区域说明符的类型相同;所有区域说明符的类型选自以下6种类型之一:具有固定长度页面的页说明符;具有可变长度页面的页说明符;段说明符;转换后备缓冲区说明符;范围说明符;适用可编程内存地址转换策略的区域说明符;该PMTRP单元的至少两个区域说明符至少N组中的至少2组具有不同类型的区域说明符。
19.根据权利要求18所述的装置,其中该PMTRP单元还适配有:通过生成和发送第二端口上的至少一个内存传输请求并接收相应的响应,来访问区域说明符的至少一个缓存的装置,其中区域说明符的每个缓存包含至少两个区域说明符;根据处理过程中通过第二端口可访问的区域说明符的至少一个缓存中的一个进行编码的策略,来处理第一端口上接收到的内存传输请求的装置;根据处理过程中通过第二端口可访问的区域说明符的至少一个缓存中的一个进行编码的策略,响应第一端口上接收到的内存传输请求,在第二端口上生成和发送内存传输请求的装置。
20.根据权利要求19所述的装置,其中该PMTRP单元还适配有:访问区域说明符的至少两个缓存的装置;将第一端口的第一地址空间划分为至少2个连续区域;以编程方式使至少两个连续区域中的每一个与第二端口上可访问的区域说明符至少两个缓存中的一个相关联的装置。
21.根据权利要求14或19所述的装置,其中该PMTRP单元还适配有:第三端口,即主端口,可:将与第三地址空间相关的内存传输请求发送到第三互连,其中该第二互连非该第一互连或第二互连;接收内存传输;根据处理过程中通过第三端口可访问的N组可编程区域说明符中的至少一组进行编码的策略,来处理第一端口上接收到的内存传输请求的装置;根据处理过程中通过第三端口可访问的N组可编程区域说明符中的至少一组进行编码的策略,响应第一端口上接收到的内存传输请求,在第二端口上生成和发送内存传输请求的装置。
22.一种可编程内存传输请求处理装置,包括:可编程内存传输请求处理(programmable memory transfer requestprocessing,PMTRP)单元,包括:第一端口,即目标端口,可:接收与第一地址空间相关的内存传输请求,其中第一地址空间:可细分成N个分区;该地址空间的范围是M千字节;发送相应的内存传输响应;第二端口,即主端口,可:发送与第二地址空间关的内存传输请求,该第二地址空间的范围为O千兆字节;接收对应的内存传输响应;可编程配置数据,其中该可编程配置数据包括:至少N个区域说明符,其中:N个区域说明符中的每一个可对与第一地址空间区域相关的至少一个策略进行编码;所有至少N个区域说明符是相同类型的区域说明符,其中该类型的区域说明符选自以下两种类型中的一种:页说明符,可支持至少8种不同的页面长度;段说明符,可支持至少16个不同的分配段长度;至少N个区域说明符中的至少N个与第一地址空间的N个分区中不同的一个相关;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,来处理与第一端口上接收到的与第一地址空间相关的内存传输请求的装置;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,响应与第一端口上接收到的第一地址空间相关的内存传输请求,在第二端口上生成并发送与第二地址空间相关的内存传输请求的装置;其中:M的值至少为1024;N的值至少为2且小于16384;O的值至少为1。
23.根据权利要求22所述的装置,其中该PMTRP单元还包括:第三端口,即目标端口,可:接收与第三地址空间相关的内存传输请求,以访问一部分可编程配置数据;发送相应的内存传输响应;处理第三端口上接收到的格式正确的内存传输请求的装置,该内存传输请求可寻址到访问至少N个区域说明符中至少一个的一部分的有效内存位置;通过发送第三端口上的内存传输请求,来响应第三端口上接收到的格式正确的读取内存传输请求的装置,该读取内存传输请求可寻址到访问至少N个区域说明符中至少一个的一部分的内存位置。
24.根据权利要求23所述的装置,其中该装置还包括:互连;至少一个连接到该互连的互连目标外围设备;其中该PMTRP单元的第三端口也连接到该互连。
25.根据权利要求22至23中任一项所述的装置,其中该PMTRP单元采用一类直接索引查找方案,来识别至少N个区域说明符中哪一个与内存传输请求相关。
26.根据权利要求22至23中任一项所述的装置,其中该PMTRP单元采用完全关联查找方案,来识别至少N个区域说明符中哪一个与内存传输请求相关。
27.根据权利要求22至23中任一项所述的装置,其中该PMTRP单元采用内容关联内存查找方案,来识别至少N个区域说明符中哪一个与内存传输请求相关。
28.一种可编程内存传输请求处理装置,包括:第一可编程内存传输请求处理(programmable memory transfer requestprocessing,PMTRP)单元,包括:第一端口,即目标端口,可:接收与第一地址空间相关的内存传输请求;发送相应的内存传输响应;可编程配置数据,其中该可编程配置数据包括:至少一个区域说明符,该区域说明符可对与该第一地址空间区域相关的至少一个策略进行编码,其中:对于至少一个区域说明符中的每一个,该区域说明符的类型可选自以下5种类型:具有固定长度页面的页说明符;具有可变长度页面的页说明符;段说明符;转换后备缓冲区说明符;适用可编程内存地址转换策略的区域说明符;第二端口,即主端口,可:发送与第二地址空间相关的内存传输请求;接收对应的内存传输响应;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,来处理与第一端口上接收到的与第一地址空间相关的内存传输请求的装置;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,响应与第一端口上接收到的第一地址空间相关的内存传输请求,在第二端口上生成并发送与第二地址空间相关的内存传输请求的装置;第三端口,即目标端口,可:接收与访问一部分可编程配置数据的第三地址空间相关的内存传输请求;发送相应的内存传输响应;处理第三端口上接收到的格式正确的内存传输请求的装置,该内存传输请求可寻址到第三地址空间中与至少一个区域说明符中至少一个的一部分相关的内存位置;第二可编程内存传输请求处理(programmable memory transfer requestprocessing,PMTRP)单元,包括:第一端口,即目标端口,可:接收与第一地址空间相关的内存传输请求;发送相应的内存传输响应;可编程配置数据,其中该可编程配置数据包括:至少一个对与第一地址空间区域相关的至少一个策略进行编码的说明符,其中该说明符可对至少一个策略进行解码,该策略有关如何转换在通过第一端口上的一个或多个内存传输请求接收到的区域说明符中进行编码的至少一个策略;第二端口,即主端口,可:发送与第二地址空间相关的内存传输请求;接收对应的内存传输响应;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,来处理与第一端口上接收到的与第一地址空间相关的内存传输请求的装置;在处理过程中,根据与可编程配置数据中编码的第一地址空间相关的至少一个策略,响应与第一端口上接收到的第一地址空间相关的内存传输请求,在第二端口上生成并发送与第二地址空间相关的内存传输请求的装置;第三端口,即目标端口,可:接收与访问一部分可编程配置数据的第三地址空间相关的内存传输请求;发送相应的内存传输响应;处理第三端口上接收到的格式正确的内存传输请求的装置,该内存传输请求可寻址到第三地址空间中与至少一个说明符中至少一个的一部分相关的内存位置;其中:第二PMTRP单元的第二端口连接到第一PMTRP单元的第三端口。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2015901247 | 2015-04-07 | ||
AU2015901247A AU2015901247A0 (en) | 2015-04-07 | Efficient memory management and cache subsystems | |
PCT/IB2016/051969 WO2016162817A1 (en) | 2015-04-07 | 2016-04-07 | Programmable memory transfer request units |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107995978A CN107995978A (zh) | 2018-05-04 |
CN107995978B true CN107995978B (zh) | 2021-06-18 |
Family
ID=57072234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680033047.5A Active CN107995978B (zh) | 2015-04-07 | 2016-04-07 | 一种可编程内存传输请求处理装置 |
Country Status (12)
Country | Link |
---|---|
US (1) | US10223306B2 (zh) |
EP (1) | EP3281118A1 (zh) |
JP (1) | JP6981662B2 (zh) |
KR (1) | KR101891686B1 (zh) |
CN (1) | CN107995978B (zh) |
AU (1) | AU2016245421B2 (zh) |
CA (1) | CA2982871A1 (zh) |
MA (1) | MA41915A (zh) |
MY (1) | MY188909A (zh) |
RU (1) | RU2690751C2 (zh) |
SG (1) | SG11201708200XA (zh) |
WO (1) | WO2016162817A1 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
MA41915A (fr) * | 2015-04-07 | 2018-02-13 | Benjamin Gittins | Unités de requête de transfert de mémoire programmable |
US10534719B2 (en) | 2017-07-14 | 2020-01-14 | Arm Limited | Memory system for a data processing network |
US10467159B2 (en) | 2017-07-14 | 2019-11-05 | Arm Limited | Memory node controller |
US10565126B2 (en) | 2017-07-14 | 2020-02-18 | Arm Limited | Method and apparatus for two-layer copy-on-write |
US10592424B2 (en) | 2017-07-14 | 2020-03-17 | Arm Limited | Range-based memory system |
US10489304B2 (en) | 2017-07-14 | 2019-11-26 | Arm Limited | Memory address translation |
US10613989B2 (en) * | 2017-07-14 | 2020-04-07 | Arm Limited | Fast address translation for virtual machines |
US10353826B2 (en) | 2017-07-14 | 2019-07-16 | Arm Limited | Method and apparatus for fast context cloning in a data processing system |
US10909046B2 (en) | 2018-06-15 | 2021-02-02 | Micron Technology, Inc. | Memory access determination |
US10884850B2 (en) | 2018-07-24 | 2021-01-05 | Arm Limited | Fault tolerant memory system |
GB2575877B (en) * | 2018-07-27 | 2021-06-09 | Advanced Risc Mach Ltd | Memory protection unit using memory protection table stored in memory system |
CN113805813B (zh) * | 2018-11-30 | 2024-07-16 | 北京忆芯科技有限公司 | 降低读命令处理延迟的方法与装置 |
US11010067B2 (en) * | 2018-12-28 | 2021-05-18 | Intel Corporation | Defense against speculative side-channel analysis of a computer system |
US11003588B2 (en) * | 2019-08-22 | 2021-05-11 | Advanced Micro Devices, Inc. | Networked input/output memory management unit |
US11520705B1 (en) | 2019-11-27 | 2022-12-06 | Rockwell Collins, Inc. | Input/output (I/O) memory management unit (IOMMU) multi-core interference mitigation |
US11610102B1 (en) * | 2019-11-27 | 2023-03-21 | Amazon Technologies, Inc. | Time-based memory allocation for neural network inference |
GB2593486B (en) * | 2020-03-24 | 2022-06-15 | Advanced Risc Mach Ltd | Apparatus and method using plurality of physical address spaces |
US11281528B2 (en) * | 2020-05-01 | 2022-03-22 | EMC IP Holding Company, LLC | System and method for persistent atomic objects with sub-block granularity |
US11429528B2 (en) * | 2020-11-19 | 2022-08-30 | Micron Technology, Inc. | Split cache for address mapping data |
KR20230092151A (ko) * | 2021-12-17 | 2023-06-26 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1266517A (zh) * | 1997-07-28 | 2000-09-13 | 奈克瑟比特网有限责任公司 | 多端口内高速缓存的动态随机存取存储器 |
CN1538296A (zh) * | 2003-02-18 | 2004-10-20 | 图形处理单元的多线程内核 | |
CN103092784A (zh) * | 2011-10-27 | 2013-05-08 | 飞思卡尔半导体公司 | 基于信号量保护共享系统资源的系统和方法 |
CN103562894A (zh) * | 2011-06-10 | 2014-02-05 | 国际商业机器公司 | 响应于执行开始子通道指令返回的数据 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1182558A1 (en) * | 2000-08-21 | 2002-02-27 | Texas Instruments Incorporated | MME descriptor having big/little endian bit to control the transfer data between devices |
EP1296237A1 (en) * | 2001-09-25 | 2003-03-26 | Texas Instruments Incorporated | Data transfer controlled by task attributes |
US6910106B2 (en) * | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US20110153877A1 (en) * | 2009-12-23 | 2011-06-23 | King Steven R | Method and apparatus to exchange data via an intermediary translation and queue manager |
US20120061700A1 (en) * | 2010-09-09 | 2012-03-15 | Andreas Eder | Method and system for providing a reliable light emitting diode semiconductor device |
US9405700B2 (en) * | 2010-11-04 | 2016-08-02 | Sonics, Inc. | Methods and apparatus for virtualization in an integrated circuit |
US10452580B2 (en) * | 2013-03-26 | 2019-10-22 | Vmware, Inc. | Method and system for providing remote direct memory access to virtual machines |
US9274951B2 (en) * | 2013-05-31 | 2016-03-01 | Altera Corporation | Cache memory controller for accelerated data transfer |
MA41915A (fr) * | 2015-04-07 | 2018-02-13 | Benjamin Gittins | Unités de requête de transfert de mémoire programmable |
-
2016
- 2016-04-06 MA MA041915A patent/MA41915A/fr unknown
- 2016-04-07 MY MYPI2017703809A patent/MY188909A/en unknown
- 2016-04-07 AU AU2016245421A patent/AU2016245421B2/en not_active Expired - Fee Related
- 2016-04-07 US US15/564,200 patent/US10223306B2/en active Active
- 2016-04-07 WO PCT/IB2016/051969 patent/WO2016162817A1/en active Application Filing
- 2016-04-07 CN CN201680033047.5A patent/CN107995978B/zh active Active
- 2016-04-07 SG SG11201708200XA patent/SG11201708200XA/en unknown
- 2016-04-07 JP JP2018510006A patent/JP6981662B2/ja active Active
- 2016-04-07 KR KR1020177032266A patent/KR101891686B1/ko active IP Right Grant
- 2016-04-07 EP EP16776206.1A patent/EP3281118A1/en not_active Withdrawn
- 2016-04-07 RU RU2017138467A patent/RU2690751C2/ru active
- 2016-04-07 CA CA2982871A patent/CA2982871A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1266517A (zh) * | 1997-07-28 | 2000-09-13 | 奈克瑟比特网有限责任公司 | 多端口内高速缓存的动态随机存取存储器 |
CN1538296A (zh) * | 2003-02-18 | 2004-10-20 | 图形处理单元的多线程内核 | |
CN103562894A (zh) * | 2011-06-10 | 2014-02-05 | 国际商业机器公司 | 响应于执行开始子通道指令返回的数据 |
CN103092784A (zh) * | 2011-10-27 | 2013-05-08 | 飞思卡尔半导体公司 | 基于信号量保护共享系统资源的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
SG11201708200XA (en) | 2017-11-29 |
JP2018523247A (ja) | 2018-08-16 |
AU2016245421A1 (en) | 2017-11-23 |
AU2016245421B2 (en) | 2020-09-17 |
MA41915A (fr) | 2018-02-13 |
MY188909A (en) | 2022-01-13 |
WO2016162817A1 (en) | 2016-10-13 |
EP3281118A1 (en) | 2018-02-14 |
CN107995978A (zh) | 2018-05-04 |
RU2017138467A3 (zh) | 2019-05-07 |
KR101891686B1 (ko) | 2018-08-27 |
JP6981662B2 (ja) | 2021-12-15 |
US20180129620A1 (en) | 2018-05-10 |
US10223306B2 (en) | 2019-03-05 |
RU2690751C2 (ru) | 2019-06-05 |
RU2017138467A (ru) | 2019-05-07 |
KR20180016982A (ko) | 2018-02-20 |
CA2982871A1 (en) | 2016-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107995978B (zh) | 一种可编程内存传输请求处理装置 | |
US7334107B2 (en) | Caching support for direct memory access address translation | |
US8799621B2 (en) | Translation table control | |
US8843727B2 (en) | Performance enhancement of address translation using translation tables covering large address spaces | |
US7444493B2 (en) | Address translation for input/output devices using hierarchical translation tables | |
CN102498478B (zh) | 在外围互连上对i/o和计算卸载设备使用两级地址转换的iommu | |
US7613898B2 (en) | Virtualizing an IOMMU | |
US20070168644A1 (en) | Using an IOMMU to Create Memory Archetypes | |
US20060288130A1 (en) | Address window support for direct memory access translation | |
US20180095892A1 (en) | Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses | |
TW201717029A (zh) | 對於可轉換記憶體的頁面的保護容器頁面與正規頁面類型表示的選擇性檢查之多頁面檢查提示 | |
CN111164581A (zh) | 用于修补页的系统、方法和装置 | |
JP2024508882A (ja) | データ移動を容易にするために複数のアドレス空間をサポートする方法、システム及び装置 | |
WO2014105151A1 (en) | Apparatus and method for a multiple page size translation lookaside buffer (tlb) | |
CN114328295A (zh) | 存储管理装置、处理器、相关装置和相关方法 | |
WO2014105167A1 (en) | Apparatus and method for page walk extension for enhanced security checks | |
US20240320161A1 (en) | Apparatuses, methods, and systems for a device translation lookaside buffer pre-translation instruction and extensions to input/output memory management unit protocols | |
CN111752865A (zh) | 为不同权限级别管理不同页表的存储器管理装置和方法 | |
US20220398017A1 (en) | Independently controlled dma and cpu access to a shared memory region | |
CN118843857A (zh) | 用于存储器地址空间的页面的“读值只有x”性质 | |
WO2023064590A1 (en) | Software indirection level for address translation sharing | |
TW202403562A (zh) | 用於記憶體位址空間之頁面的「讀值只有x」性質 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |