CN105095108A - 输入输出存储器管理单元及控制方法、装置 - Google Patents
输入输出存储器管理单元及控制方法、装置 Download PDFInfo
- Publication number
- CN105095108A CN105095108A CN201410188551.5A CN201410188551A CN105095108A CN 105095108 A CN105095108 A CN 105095108A CN 201410188551 A CN201410188551 A CN 201410188551A CN 105095108 A CN105095108 A CN 105095108A
- Authority
- CN
- China
- Prior art keywords
- request instruction
- address
- physical address
- unit
- address information
- 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
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/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
Abstract
一种输入输出存储器管理单元(IOMMU)及控制方法、装置,所述IOMMU控制方法用于获取智能设备的外围设备的请求指令的物理地址,所述IOMMU包括第一缓存单元,所述控制方法包括:获取所述外围设备的请求指令所对应的地址信息,所述地址信息包括第一虚拟地址;所述第一虚拟地址为所述第一缓存单元中存储所述请求指令的物理地址信息的存储位置;基于所述第一虚拟地址从所述第一缓存单元获取所述请求指令的物理地址。由于所述第一缓冲单元集成在所述IOMMU中,使得访问所述第一缓冲单元更加高效快捷;可以使得外围设备的请求指令的地址可以为操作系统所分配的虚拟地址,无需为所述外围设备预留物理内存空间,减少智能设备需要搭载的物理内存,降低硬件成本。
Description
技术领域
本发明涉及内存管理技术领域,尤其涉及一种输入输出存储器管理单元及控制方法、装置。
背景技术
随着智能设备的快速发展,为了满足用户对视频、图像等各种功能的高质量的需求,智能设备中通常都具有功能复杂的多媒体功能等,例如,播放高清视频、进行高分辨率拍照和摄像以及对图像进行处理等各种功能,但这些功能的运行如果仅依靠运行在中央处理器上的软件是无法满足其性能要求的。通常,需要为所述智能设备搭载外围设备,例如对应所述各功能模块的硬件加速模块等,通过所述对应各功能模块的硬件模块对各功能进行加速,以获取高质量的图像或视频等信息。
通常所述各功能模块所对应的硬件加速模块都是直接对智能设备的物理内存进行访问,其要求处理的是物理地址块,无法使用智能设备的操作系统为各功能模块所分配的虚拟地址块。为了可以使的与各功能模块所对应的硬件加速模块可以正常运行,需要为各功能模块预留大量物理连续的内存空间,这些内存空间是不能参与智能设备的操作系统的内存分配的,不能被智能设备的操作系统或者其它运行在系统中的进程所使用,即便所述各功能模块所对应的硬件加速模块没有运行,也必须为其预留所述内存空间。
由于现有技术中的各功能模块所对应的硬件加速模块不能轻易的处理操作系统所分配的虚拟内存,为了保证各功能模块以及其对应的硬件加速模块可以顺畅运行,操作系统需要为各功能模块所对应的硬件加速模块预留大量的连续的物理内存空间,所以智能设备需要搭载较强大的内存空间,智能设备的成本较高。
发明内容
本发明解决的是智能设备中各功能模块所对应的硬件加速模块需要占用大量的物理内存空间,硬件成本较高的问题。
为解决上述问题,本发明技术方案提供一种输入输出存储器管理单元(IOMMU,Input/OutputMemoryManagementUnit)的控制方法,用于获取智能设备的外围设备的请求指令的物理地址,所述输入输出存储器管理单元包括第一缓存单元,所述方法包括:
获取所述外围设备的请求指令所对应的地址信息,所述地址信息包括第一虚拟地址;所述第一虚拟地址为所述第一缓存单元中存储所述请求指令的物理地址信息的存储位置;
基于所述第一虚拟地址从所述第一缓存单元获取所述请求指令的物理地址。
可选的,所述外围设备包括多媒体加速器。
可选的,还包括:
预先将所述请求指令的物理地址信息存储于所述第一缓存单元中的第一虚拟地址处,所述请求指令的物理地址信息与所述智能设备的操作系统为所述请求指令分配的虚拟地址相对应;
将所述请求指令所对应的第一虚拟地址设置于所述外围设备的寄存器中。
可选的,所述请求指令所对应的地址信息还包括所述请求指令的物理地址在页内的偏移量信息。
可选的,所述第一缓存单元中的第一虚拟地址处所存储的所述请求指令的物理地址信息为所述请求指令的物理地址的页地址信息。
可选的,所述基于所述第一虚拟地址从所述第一缓存单元获取所述请求指令的物理地址包括:
获取所述请求指令的物理地址的页地址信息;
由所述请求指令的物理地址的页地址信息和所述请求指令的物理地址在页内的偏移量信息确定所述请求指令的物理地址。
可选的,所述输入输出存储器管理单元还包括至少一个第二缓存单元,所述方法还包括:
在获取到所述请求指令的物理地址后,将所述第一虚拟地址和所述请求指令的物理地址信息之间的对应关系存储于所述第二缓存单元中。
可选的,所述获取所述请求指令的物理地址包括:
若在所述第二缓存单元中所存储的对应关系中存在所述请求指令所对应的第一虚拟地址与该请求指令的物理地址信息之间的对应关系,则基于所述第一虚拟地址所对应的物理地址信息确定所述请求指令的物理地址;否则基于存储于所述第一缓存单元中的第一虚拟地址的所述请求指令的物理地址信息确定所述请求指令的物理地址。
可选的,所述第二缓存单元中存储的是读指令或写指令所对应的第一虚拟地址与该指令的物理地址信息之间的对应关系。
本发明技术方案还提供一种输入输出存储器管理单元的控制装置,用于获取智能设备的外围设备的请求指令的物理地址,所述输入输出存储器管理单元包括第一缓存单元,所述装置包括:
信息获取单元,适于获取所述外围设备的请求指令所对应的地址信息,所述地址信息包括第一虚拟地址;所述第一虚拟地址为所述第一缓存单元中存储所述请求指令的物理地址信息的存储位置;
地址确定单元,适于基于所述第一虚拟地址处所存储的所述请求指令的物理地址信息获取所述请求指令的物理地址。
本发明技术方案还提供一种输入输出存储器管理单元,用于获取智能设备的外围设备的请求指令的物理地址,所述输入输出存储器管理单元包括:
第一缓存单元,适于存储所述外围设备的请求指令的物理地址信息;
总线控制单元,适于控制所述输入输出存储器管理单元的启动或者关闭;
协议单元,适于建立所述输入输出存储器管理单元中各单元间的通信连接。
与现有技术相比,本发明的技术方案具有以下优点:
在输入输出存储器管理单元中设置第一缓存单元,在所述第一缓存单元中存储和所述外围设备的请求指令的物理地址信息,在所述外围设备发送请求指令后,获取所述外围设备的请求指令所对应的地址信息中的第一虚拟地址,进而获取存储于所述第一缓存单元中的第一虚拟地址处的物理地址信息,基于所述物理地址信息获取所述请求指令的物理地址。通过上述对输入输出存储器管理单元的控制,可以使得外围设备的请求指令的地址可以为操作系统所分配的虚拟地址,使得无需为所述外围设备预留物理内存空间,可以有效减少智能设备需要搭载的物理内存,有效降低硬件成本。由于所述第一缓冲单元集成在所述输入输出存储器管理单元中,可以有效提高访问第一缓冲单元的速度,使得访问更加高效快捷。
所述输入输出存储器管理单元中还可以设置第二缓存单元,在所述第二缓存单元中可以存储所述第一虚拟地址和该地址所对应的所述请求指令的物理地址信息之间的对应关系,则基于所述对应关系可以快速得到所述请求指令的第一虚拟地址所对应的物理地址信息,有效提高操作系统的处理速度。
附图说明
图1是本发明技术方案提供IOMMU的结构示意图;
图2是本发明技术方案提供IOMMU的控制方法的流程示意图;
图3为本发明实施例提供的图像处理器工作的系统示意图;
图4是本发明实施例提供的IOMMU的初始化的流程示意图;
图5是本发明实施例提供的一虚拟内存段的虚拟地址和物理地址的对应示意图;
图6是本发明实施例提供的另一虚拟内存段的虚拟地址和物理地址的对应示意图;
图7是本发明实施例提供的虚拟内存段在RAM中的存储示意图;
图8是本发明实施例提供的一物理内存段的物理地址的示意图;
图9是本发明实施例提供的IOMMU的控制方法的流程示意图;
图10是本发明实施例提供的IOMMU的控制装置的结构示意图。
具体实施方式
现有技术中智能设备的各功能模块所对应的硬件加速模块不能轻易的处理操作系统所分配的虚拟内存,为了保证各功能模块以及其对应的硬件加速模块可以顺畅运行,操作系统需要为各功能模块所对应的硬件加速模块预留大量的连续的物理内存空间,所以智能设备需要搭载较强大的内存空间。现有技术存在智能设备中各功能模块所对应的硬件加速模块需要占用大量的物理内存空间,硬件成本较高的问题。
为解决上述问题,本发明技术方案提供一种输入输出存储器管理单元的控制方法,即提供一种IOMMU的控制方法。在本申请文件中,将智能设备中为了提高各功能模块的性能而额外所添加的硬件加速器等称为智能设备的外围设备。所述IOMMU用于对智能设备中的各外围设备在执行请求指令时,对内存空间的使用进行管理。通过对IOMMU的控制,以实现获取智能设备的外围设备的请求指令的物理地址。
为了实现智能设备的外围设备在处理请求指令时,可以使用智能设备的操作系统所分配的虚拟内存,进而可以减少对智能设备的物理内存的消耗,本发明技术方案提供一种IOMMU的控制方法。
所述IOMMU的结构如图1所示,所述IOMMU主要包括第一缓存单元U10、总线控制单元U20以及协议单元U30。
所述第一缓存单元U10主要用于存储所述外围设备的请求指令的物理地址信息。所述第一缓冲单元集成在所述IOMMU内部。
在智能设备的外围设备发送请求指令后,所述智能设备的操作系统会为所述请求指令分配相应的虚拟内存,可以将与所述请求指令的虚拟地址所对应的物理地址信息预先存储在所述第一缓存单元U10中。所述第一缓存单元U10可以为RAM等存储器。所述的请求指令的虚拟地址所对应的物理地址信息可以就是所述虚拟地址所对应的物理地址。为了减少对所述第一缓存单元U10的占用,所述的请求指令的虚拟地址所对应的物理地址信息也可以是所述虚拟地址所对应的物理地址的页地址。
可以预先将外围设备的所有请求指令的物理地址信息全部存储于所述第一缓存单元U10中,便于后续在所述外围设备执行请求指令时,可以基于所述第一缓存单元U10中所存储的对应请求指令的物理地址信息获得所述请求指令的物理地址。
所述总线控制单元U20主要用于控制所述IOMMU的启动或者关闭,例如,在智能设备的外围设备发送请求指令时,控制IOMMU处于开启状态,而在所述智能设备的外围设备处于不工作的状态时,可以控制IOMMU处于关闭状态等。所述总线控制单元U20还可以对第一缓存单元U10进行控制,例如使能第一缓存单元U10等。但所述总线控制单元U20与IOMMU中其它各单元进行交互的时候,需要通过如下所述的协议控制单元U30实现。
所述协议单元U30主要用于建立所述IOMMU中各单元间的通信连接,例如建立所述第一缓存单元U10和总线控制单元U20以及所述IOMMU中的其他各功能单元中的连接,所述协议单元U30内还可以包含有仲裁单元,用于对IOMMU中的功能单元访问所述第一缓存单元U10的权限进行仲裁。
如图1所示,所述IOMMU还可以包括第二缓存单元U40,在将智能设备的外围设备的请求指令的物理地址信息存储与所述第一缓存单元U10中时,可以相应的记录在所述第一缓存单元U10存储该请求指令的物理地址信息的存储地址,在本申请文件中,将该地址称为对应该请求指令的第一虚拟地址。在所述IOMMU对外围设备的请求指令进行处理的过程中,在基于所述第一虚拟地址处所存储的所述请求指令的物理地址信息获取到所述请求指令的物理地址后,可以将所述第一虚拟地址和所述请求指令的物理地址信息之间的对应关系存储于所述第二缓存单元U40中。
本发明技术方案所提供的IOMMU的控制方法的流程示意图请参考图2,如图2所示,首先执行步骤S201,获取所述外围设备的请求指令所对应的地址信息,所述地址信息包括第一虚拟地址。
所述外围设备的请求指令所对应的地址信息可以为预先所存储于该外围设备中的对应所述请求指令的地址信息。当所述外围设备需要执行所述请求指令时,将预先所存储的与该请求指令所对应的地址信息发送出去。所述地址信息可以包含有第一虚拟地址信息。所述第一虚拟地址即为如上所述的所述第一缓存单元U10中所存储的该请求指令的物理地址信息的存储位置。在预先存储所述请求指令所对应的地址信息时,可以将该请求指令所对应的内存地址的页内偏移量信息也存储于所述地址信息中,以便于后续获取所述请求指令的物理地址。
在所述外围设备发送请求指令时,所述IOMMU首先获取所述请求指令所对应的地址信息。
执行步骤S202,基于所述第一虚拟地址从所述第一缓存单元获取所述请求指令的物理地址。
在IOMMU获取到所述请求指令所对应的地址信息后,可以从所述请求指令所对应的地址信息中得到所述请求指令所对应的第一虚拟地址,进而从第一缓存单元中U10中获取所述第一虚拟地址处所存储的物理地址信息,基于所述物理地址信息确定所述请求指令所对应的物理地址。
进一步,若所述IOMMU中包含有如图1中所示出的第二缓存单元U40,且所述第二缓存单元U40中存储有所述请求指令所对应的第一虚拟地址和所述请求指令的物理地址信息之间的对应关系,则直接访问所述第二缓存单元U40得到所述请求指令所对应的物理地址信息,进而获取到所述请求指令所对应的物理地址。
本发明技术方案所提供的IOMMU的控制方法,可以使得外围设备的请求指令的地址可以是操作系统所分配的虚拟地址,使得无需为所述外围设备预留物理内存空间,可以有效减少智能设备需要搭载的物理内存,有效降低硬件成本。所述第一缓冲单元集成在所述IOMMU中,使得访问所述第一缓冲单元更加高效快捷。
通过在所述IOMMU中设置第二缓存单元U40,并在所述第二缓存单元U40中存储外围设备的请求指令所对应的第一虚拟地址和所述请求指令的物理地址信息之间的对应关系,则基于所述对应关系可以快速得到所述请求指令的第一虚拟地址所对应的物理地址信息,有效提高操作系统的处理速度。
需要说明的是,在上述智能设备中可能含有多个外围设备,例如有用于图像处理的图像硬件加速器、有用于视频处理的视频硬件加速器等多媒体加速器,对于不同的外围设备,可以分别为每一个外围设备对应设置一个IOMMU,也可以所有的外围设备共用一个IOMMU,可以结合智能设备的系统性能、处理需求等进行相应的设定。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
在本实施例中,以所述智能设备的外围设备为图像处理加速器为例进行说明,对于其他智能设备的外围设备则可以采用与本实施例相似的方法对IOMMU进行控制。
图3为本实施例提供的图像处理器工作的系统示意图,在本实施例中,以对应所述图像处理加速器的IOMMU包含有一个第一缓存单元和两个第二缓存单元为例,所述第一缓存单元在本实施例中即为如图3所示出的RAM单元U31,所述第二缓存单元为图3所示出的写指令地址转换单元U32和读指令地址转换单元U33。需要说明的是,所述RAM单元U31是集成在所述IOMMU内部的,以手机系统为例,所述RAM单元U31可以集成在所述图像处理加速器的IOMMU内部。
在此分别设置对应写指令的写指令地址转换单元U32和对应读指令的读指令地址转换单元U33是因为图像处理中读数据和写数据的空间局部性都很强,通常读数据和写数据过程都需要有较连续的物理内存空间,如果将读指令地址转换单元U33和写指令地址转换单元U32设置为同一个地址转换单元,则过多的读写操作会导致在通过所述地址转换单元在执行读指令或写指令所对应的地址转换时效率较低,不利于快速的得到地址转换结果。
如图3所示,在图像处理加速器U36发送读指令或者写指令的请求指令时,首先将读指令或写指令所携带的虚拟地址信息所携带的虚拟地址信息发送到IOMMU中。所述读指令或写指令的虚拟地址信息是指预先存储在图像处理加速器中的与请求指令所对应的地址信息,所述地址信息包括如上所述的对应请求指令的第一虚拟地址。
所述IOMMU可以通过其内部的总线控制单元U35控制其开启或者关闭,而所述总线控制单元U35可以基于第一总线单元U37中所得到的指令信息对所述IOMMU进行使能控制。所述第一总线单元U37可以理解为智能设备中的高级高性能总线(AHB,AdvancedHighPerformanceBus),所述AHB总线可以输出控制信号,所述IOMMU中的总线控制单元U35可以根据所述第一总线单元U37的控制信号对所述IOMMU进行控制。
在所述IOMMU开启时,在接收到所述读指令或写指令所携带的地址信息后,首先在读指令地址转换单元U33或写指令地址转换单元U32进行匹配查找动作。
如果在所述读指令地址转换单元U33或写指令地址转换单元U32中存在所述读指令或写指令的地址信息中所携带的第一虚拟地址和请求指令的物理地址信息之间的对应关系,则可以获得与所述第一虚拟地址所对应的物理地址信息,即可以获得所述读指令或写指令所对应的物理地址信息,进而可以得到所述读指令或写指令的物理地址,之后可以将所述读指令或写指令的物理地址输出到图3中所示出的第二总线单元U38中,所述第二总线单元U38可以理解为智能设备中的高级扩展接口(AXI,AdvancedeXtensibleInterface)总线,所述AXI总线可以在系统中高速地传输较大的数据信息,在本实施例中,可以通过AXI总线对所述读指令或写指令的物理地址进行传输。
如果在所述读指令地址转换单元U33或写指令地址转换单元U32中不存在所述读指令或写指令的地址信息中所携带的第一虚拟地址和请求指令的物理地址信息之间的对应关系,则需要对图3中所示出的RAM单元U31进行访问,以从所述RAM单元U31中得到与所述读指令或写指令的第一虚拟地址相对应的物理地址信息。
在从RAM单元U31中得到与所述读指令或写指令的第一虚拟地址相对应的物理地址信息后,可以将此次所得到的读指令或写指令的第一虚拟地址和物理地址信息的对应关系存储于所述读指令地址转换单元U33或写指令地址转换单元U32中。
所述读指令地址转换单元U33或写指令地址转换单元U32中的虚拟地址和物理地址信息的对应关系也可以理解为是通常所说的MMU单元中的翻译后备缓冲器(TLB,TranslationLookasideBuffer),所述TLB中存储虚拟地址和物理地址信息之间的对应关系。
所述RAM单元U31用于存储图像处理加速器U36读指令和写指令所对应的物理地址信息,为了节省RAM的空间,所述RAM中可以只存储所述读指令和写指令的物理地址的页地址信息,由于通常存储器中的页地址都是4KB对齐的,在高20bit位存储的是页地址信息,低12bit位存储的是页内偏移量信息,由于业内偏移量信息可以直接从指令的地址信息中获得,所以只需存储高20bit位的信息即可。在本实施例中,所述RAM单元U31可以为16K×20bit的大小,在其它实施例中,可以根据需求进行相应的增强,所述RAM的大小本发明不做具体限定。
上述RAM单元U31、读指令地址转换单元U33、写指令地址转换单元U32以及总线控制单元U35之间的交互,通过如图3所示出的协议单元U34实现。
为了可以更好的理解对IOMMU的控制过程,在此首先结合图4对IOMMU的初始化进行叙述。
在对图像处理加速器U36进行使用之前,需要先对IOMMU进行初始化操作。
需要首先执行步骤S401,重置IOMMU。
通过此步骤实现对IOMMU中的各硬件单元进行初始化,使所述IOMMU中的各存储器的值恢复为初始值。
执行步骤S402,对RAM进行初始化操作。
对如图3中所示出的RAM单元U31进行初始化操作,主要是将图像处理加速器U36中的读指令和写指令的第一虚拟地址所对应的物理地址信息预先存储于所述RAM单元U31中。例如需要处理的请求指令的虚拟地址是0x4352e000,该虚拟地址所对应的物理地址是0x90037000,在步骤S402中需要把物理地址0x90037000的中的页地址信息保存到所述RAM单元U31,同时还需要将所述请求指令所对应的地址信息返回到图像处理加速器中。
所述请求指令所对应的地址信息包括所述页地址信息在所述RAM单元U31中的存储位置,即上文中所提到的与所述请求指令所对应的第一虚拟地址,还包括由所述请求指令的虚拟地址0x4352e000或者物理地址0x90037000物理地址所确定的页内偏移量信息。
下面结合图5至图8对所述RAM单元U31的初始化过程进行细述。
假设图像处理加速器U36需要处理三个内存段segment0、segment1和segment2,其中,segment1是物理内存段,segment0和segment2是虚拟内存段。
由于segment0和segment2是虚拟内存段,图像处理加速器U36无法对其直接进行处理,因此需要通过IOMMU进行处理,需要在RAM单元U31的初始化处理过程中进行相应的处理。
在对RAM单元U31进行初始化处理的过程中,需要首先确定所述RAM单元U31的有效取指范围。
由于RAM单元U31的大小在本实施例中为16K×20bit,而一个page的大小通常是4KB,所以所述RAM单元U31所对应的物理地址的存储空间的大小可以达到64MB,可以为所述RAM单元U31任意设置一个起始的虚拟地址,例如设置为0x22200000,那么所述RAM单元U31的空间地址范围为0x22200000-0x26200000,该地址范围即为RAM单元U31的有效地址范围。
所述RAM单元U31的起始的虚拟地址是可以预先任意进行设定,但通常需要避开物理空间的地址。
图5所示出的是虚拟内存段segment0的虚拟地址和物理地址的对应示意图,如图5所示出的,segment0的虚拟地址在0xEE674000至0xEE678E00的范围之内,其中,在此范围内各page所对应的物理地址请参考图5,在此不再一一列出。这里所说的segment0的虚拟地址是指由智能设备的操作系统为所述segment0所分配的虚拟地址。
如图5所示,假设操作系统为segment0所分配的起始虚拟地址为0xFE674800,该虚拟地址所在的page的物理地址是0xA5B6F000,则在对RAM单元U31进行初始化的过程中,需要将所述物理地址0xA5B6F000的高20bit设置到所述RAM单元U31中,由于上述假设RAM单元U31的起始地址为0x22200000,则相应的基于segment0的系统所分配的起始虚拟地址0xFE674800的低八位信息即可以得到segment0的起始地址在页内的偏移量信息,可以得到segment0在RAM单元U31中的起始虚拟地址对应可以为0x22200800,所述虚拟地址0x22200800即为需要处理的segment0的地址信息,包含有如上所述的第一虚拟地址,即高20bit位的页地址信息,也包含有低12位的页内偏移量地址。
在对所述RAM单元U31进行初始化的过程中,所述segment0在所述RAM单元U31中的地址信息需要设置给图像处理加速器U36中,则在图像处理加速器U36发送请求指令的过程中,可以直接将携带有所述第一虚拟地址的地址信息发送到IOMMU中,以便于IOMMU可以准确定位该请求指令在所述RAM单元U31中的位置。
在实际处理过程中,所述地址信息也可以只返回给应用层,由应用层在配置所述图像处理加速器的过程中将所述地址信息传递给所述图像处理器即可。
对于所述segment0中其它的由操作系统所分配的虚拟地址和物理地址的对应关系请继续参考图5,对于图5中的每一个虚拟地址都可以将其所对应的物理地址信息按照所述RAM单元U31中的虚拟地址递增的顺序存储于所述RAM单元U31中。
图6是虚拟内存段segment2的虚拟地址和物理地址的对应示意图,如图6所示出的,segment2的虚拟地址在0x6E674200至0x6E676400的范围之内,在此范围内各page所对应的物理地址请参考图6,在此不再一一列出。
对于虚拟内存段segment2而言,segment2中由操作系统所分配的各虚拟地址所对应的物理地址的存储方法与所述segment0的存储方法是相同,只需在存储的时候存储于segment0在所述RAM单元U31中的最后一个存储位置之后,并在存储后将携带有所述第一虚拟地址的地址信息设置到所述图像处理加速器中即可。
虚拟内存段segment0和segment2在IOMMU的RAM单元U31中的存储示意图请参考图7。
请结合参考图5、图6和图7,将虚拟内存段segment0中第一个page的0xA5B6F000物理地址信息存储于IOMMU中的RAM单元U31的虚拟地址0x22200000处,之后依次存储虚拟内存段segment0中其它page的物理地址信息,直到将最后一个page的0xA178E000的物理地址信息存储位于RAM单元U31的虚拟地址0x22204000处,之后可以挨着虚拟地址0x22204000之后存储虚拟内存段segment2中page的物理地址信息,如图7中所示,将虚拟内存段segment2中的第一个page的0x9178F000物理地址信息存储于RAM单元U31的虚拟地址0x22205000处,之后依次存储虚拟内存段segment2中其它page的物理地址信息,直到将最后一个page的0x8F750000的物理地址信息存储位于RAM单元U31的虚拟地址0x22207000处,之后在RAM单元U31的有效地址范围内还可以在虚拟地址0x22207000后存储其它虚拟地址段的page的物理地址信息。
图8是segment1的物理内存段的物理地址的示意图,如图8所示出的,segment1的物理地址在0x8E974500至0x8E976D00的范围之内,由于图像处理加速器U36可以直接处理物理内存段,所以在对RAM单元U31进行初始化的过程中可以不用考虑对segment1进行相应的处理,也就是segment1的物理地址无需预先存储于所述RAM单元U31中。
在通过步骤S402完成对所述RAM单元U31的初始化处理后,可以执行步骤S403,使能所述IOMMU。
在使能所述IOMMU之后,在图像处理加速器发送读指令或写指令时,就可以通过所述IOMMU获取所述读指令或写指令所对应的地址信息中的第一虚拟地址获取所述读指令或写指令所对应的物理地址信息。
在本步骤中,也可以同时使能所述读指令地址转换单元U33和写指令地址转换单元U32。
在对IOMMU初始化之后,在图像处理加速器U36发送读指令、写指令时,就可以通过对IOMMU的控制,使得所述图像处理加速器U36可以对智能设备的操作系统为所述读指令、写指令所分配的虚拟地址进行处理。
图9是本实施例提供的IOMMU的控制方法的流程示意图,如图9所示,首先执行步骤S901,IOMMU接收由图像处理加速器所发送的请求指令。
在图像处理加速器U36发出读指令、写指令等请求指令后,所述请求指令首先被发送到IOMMU中,所述IOMMU接收所述请求指令。
执行步骤S902,判断请求指令所携带的地址信息是否有效。
在如上所述对IOMMU进行初始化的过程中,在步骤S402中对RAM进行初始化操作时,会把各请求指令所对应的地址信息设置给图像处理加速器U36,则在所述图像处理加速器U36执行请求指令的时候,就可以将携带有第一虚拟地址的地址信息发送到IOMMU中。
在此步骤中,IOMMU需要对当前请求指令的地址信息中所携带的第一虚拟地址进行判断,
若所述请求指令所携带的第一虚拟地址在所述RAM单元U31的地址范围之内,如上文所给出的所述RAM单元U31的空间地址范围0x22200000-0x26200000,即可以确定所述请求指令所携带的第一虚拟地址是有效的地址信息,在步骤S902的判断结果为是时,执行步骤S904。
若所述请求指令所携带的第一虚拟地址不在所述RAM单元U31的地址范围之内,则判断所述请求指令所携带的第一虚拟地址不是有效的地址信息。由于请求指令所对应的地址信息可能为物理地址或者是虚拟地址,此时所述请求指令可能对应的是物理地址,由于图像处理加速器U36是可以对物理地址直接进行处理的,则在步骤S902的判断结果为否时,执行步骤S903,将所述请求指令的地址信息输出到操作系统中。
步骤S904,判断地址转换单元中是否含有所述请求指令的第一虚拟地址。
在本实施例中,此步骤需要在所述写指令地址转换单元U32和读指令地址转换单元U33中查找是否存在所述第一虚拟地址与物理地址信息的对应关系。
由于所述写指令地址转换单元U32和读指令地址转换单元U33中用于在IOMMU处理过程中保存各请求指令所对应的第一虚拟地址和该第一虚拟地址处所存储的物理地址信息之间的对应关系,若请求指令(读指令或写指令)是IOMMU第一次处理,则所述写指令地址转换单元U32和读指令地址转换单元U33中不存在该请求指令的第一虚拟地址和该第一虚拟地址所对应的物理地址信息之间的对应关系,即此时步骤S904的判断结果应该为否。
若之前IOMMU已执行过所述请求指令,则在所述写指令地址转换单元U32或读指令地址转换单元U33中已保存所述请求指令的第一虚拟地址和该第一虚拟地址所对应的物理地址信息之间的对应关系,则可以在所述写指令地址转换单元U32或读指令地址转换单元U33中查找到所述请求指令的第一虚拟地址,即此时步骤S904的判断结果应该为是。
由于在所述写指令地址转换单元U32或读指令地址转换单元U33中缓冲了最近访问的邻近地址区域的第一虚拟地址和物理地址信息之间的对应关系,访问所述写指令地址转换单元U32或读指令地址转换单元U33的速度比访问RAM单元U31的速度应该更快,如果在所述写指令地址转换单元U32或读指令地址转换单元U33中查找到所述第一虚拟地址,则可以将所述第一虚拟地址所对应的物理地址信息直接发送出去。
在步骤S904判断为是时,执行步骤S905。
步骤S905,获取所述请求指令的第一虚拟地址所对应的物理地址信息。
由所述写指令地址转换单元U32或读指令地址转换单元U33中所保存的所述请求指令的第一虚拟地址和该第一虚拟地址处所对应的物理地址信息的对应关系获取所述第一虚拟地址处所对应的物理地址信息。
在获取到所述第一虚拟地址所对应的物理地址信息后,如上述在对RAM单元U31进行初始化过程中所描述的,所述物理地址信息只含有请求指令的页地址,而基于请求指令的地址信息可以得到页内偏移量地址,所以结合从RAM单元U31中所得到的页地址信息以及从请求指令的地址信息中所得到的页内偏移量地址就可以得到请求指令的物理地址,之后可以执行步骤S909,输出请求指令的物理地址。
在步骤S904判断为否使,执行步骤S906。
步骤S906,判断是否获得访问RAM的权限。
由于所述写指令地址转换单元U32、读指令地址转换单元U33以及总线控制单元U35均有权访问RAM单元U31,因此只有在协议单元U34仲裁到所述写指令地址转换单元U32或读指令地址转换单元U33有权访问RAM单元U31的时候,才可以从RAM单元U31中获取上述请求指令的第一虚拟地址所对应的物理地址信息,所以需要先获取授权。
在步骤S906判断为是时,执行步骤S907;否则返回执行步骤S906,直到获得授权为止。
步骤S907,从RAM中获取请求指令的物理地址。
根据请求指令所对应的第一虚拟地址,获取在RAM单元U31的第一虚拟地址处所存储的请求指令的页地址,基于请求指令的地址信息获取页内偏移量地址,结合所述页地址以及所述页内偏移量地址就可以得到请求指令的物理地址。
步骤S907之后执行步骤S908,更新地址转换单元。
将在步骤S907中得到的请求指令的第一虚拟地址和得到的物理地址信息更新到所述写指令地址转换单元U32或读指令地址转换单元U33中,以便于IOMMU对后续请求处理时,可以根据所述请求指令所携带的第一虚拟地址信息,快速得到对应的物理地址信息。
在步骤S908之后执行步骤S909,步骤S909,输出请求指令的物理地址。
在步骤S909或者步骤S903之后,即在处理完当前请求指令后,可以继续返回执行步骤S901,继续接收由图像处理加速器所发送的请求指令,再进入对请求指令的处理流程中。
需要说明的是,本实施例是以图像处理加速器为例进行说明,在其他实施例中,也可以基于本实施例所提供的方法对智能设备中的其他硬件加速器等进行相应的处理。
本实施例中,在所述RAM单元U31集成在所述IOMMU单元中,可以有效提高访问RAM单元U31的速度。由于现有技术中,通常RAM是位于外围设备的IOMMU外部的,则在对RAM进行访问的时候,需要经过系统总线,例如AXI总线的控制,进而通过内存管理器的分配得到需要的内存空间,这样的操作结果会比较费时,而本实施例中,由于所述RAM单元U31直接集成在所述IOMMU内部,使得访问过程无需经过AXI总线等操作,访问更加高效快捷。
本实施例中,以图像处理加速器对应的IOMMU为例进行说明,在其它实施例中,智能设备中的各硬件加速器等外围设备也可以为每一个硬件加速器都设置相应的IOMMU,也可以是多个或者全部共用一个IOMMU。
在本实施例中,分别设置对应写指令的写指令地址转换机构和对应读指令的读指令地址转换机构,可以有效提供指令的转换效率。
在本实施例中通过上述对IOMMU的控制,可以使得图像处理加速器的请求指令的地址可以为操作系统所分配的虚拟地址,使得无需为所述外围设备预留物理内存空间,可以有效减少智能设备需要搭载的物理内存,有效降低硬件成本。
对应上述IOMMU的控制方法,本发明实施例还提供一种IOMMU的控制装置。
图10是本发明实施例IOMMU的控制装置的结构示意图,如图10所示,所述IOMMU的控制装置包括信息获取单元10、地址确定单元20。
所述信息获取单元10,适于获取所述外围设备的请求指令所对应的地址信息,所述地址信息包括第一虚拟地址,所述第一虚拟地址为所述第一缓存单元中存储所述请求指令的物理地址信息的存储位置。
所述地址确定单元20,适于基于所述第一虚拟地址处所存储的所述请求指令的物理地址信息获取所述请求指令的物理地址。
所述IOMMU的控制装置还包括预存储单元30预设值单元40。
所述预存储单元30,适于预先将所述请求指令的物理地址信息存储于所述第一缓存单元中的第一虚拟地址处,所述请求指令的物理地址信息与所述智能设备的操作系统为所述请求指令分配的虚拟地址相对应。
所述预设值单元40,适于将所述请求指令所对应的第一虚拟地址设置于所述外围设备的寄存器中。
所述地址确定单元20包括页地址获取单元50和物理地址确定单元60。
所述页地址获取单元50,适于获取第一缓存单元中的第一虚拟地址处所存储的所述请求指令的物理地址的页地址信息;
所述物理地址确定单元60,适于由所述请求指令的物理地址的页地址信息和所述请求指令的物理地址在页内的偏移量信息确定所述请求指令的物理地址。
所述IOMMU的控制装置还包括存储单元70。
所述存储单元70适于在基于所述第一虚拟地址处所存储的所述请求指令的物理地址信息获取到所述请求指令的物理地址后,将所述第一虚拟地址和所述请求指令的物理地址信息之间的对应关系存储于所述第二缓存单元中。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
Claims (15)
1.一种输入输出存储器管理单元的控制方法,用于获取智能设备的外围设备的请求指令的物理地址,其特征在于,所述输入输出存储器管理单元包括第一缓存单元,所述方法包括:
获取所述外围设备的请求指令所对应的地址信息,所述地址信息包括第一虚拟地址;所述第一虚拟地址为所述第一缓存单元中存储所述请求指令的物理地址信息的存储位置;
基于所述第一虚拟地址从所述第一缓存单元获取所述请求指令的物理地址。
2.如权利要求1所述的输入输出存储器管理单元的控制方法,其特征在于,所述外围设备包括多媒体加速器。
3.如权利要求1所述的输入输出存储器管理单元的控制方法,其特征在于,还包括:
预先将所述请求指令的物理地址信息存储于所述第一缓存单元中的第一虚拟地址处,所述请求指令的物理地址信息与所述智能设备的操作系统为所述请求指令分配的虚拟地址相对应;
将所述请求指令所对应的第一虚拟地址设置于所述外围设备的寄存器中。
4.如权利要求1所述的输入输出存储器管理单元的控制方法,其特征在于,所述请求指令所对应的地址信息还包括所述请求指令的物理地址在页内的偏移量信息。
5.如权利要求4所述的输入输出存储器管理单元的控制方法,其特征在于,所述第一缓存单元中的第一虚拟地址处所存储的所述请求指令的物理地址信息为所述请求指令的物理地址的页地址信息。
6.如权利要求5所述的输入输出存储器管理单元的控制方法,其特征在于,所述基于所述第一虚拟地址从所述第一缓存单元获取所述请求指令的物理地址包括:
获取所述请求指令的物理地址的页地址信息;
由所述请求指令的物理地址的页地址信息和所述请求指令的物理地址在页内的偏移量信息确定所述请求指令的物理地址。
7.如权利要求1所述的输入输出存储器管理单元的控制方法,其特征在于,所述输入输出存储器管理单元还包括至少一个第二缓存单元,所述方法还包括:
在获取到所述请求指令的物理地址后,将所述第一虚拟地址和所述请求指令的物理地址信息之间的对应关系存储于所述第二缓存单元中。
8.如权利要求7所述的输入输出存储器管理单元的控制方法,其特征在于,所述获取所述请求指令的物理地址包括:
若在所述第二缓存单元中所存储的对应关系中存在所述请求指令所对应的第一虚拟地址与该请求指令的物理地址信息之间的对应关系,则基于所述第一虚拟地址所对应的物理地址信息确定所述请求指令的物理地址;否则基于存储于所述第一缓存单元中的第一虚拟地址的所述请求指令的物理地址信息确定所述请求指令的物理地址。
9.如权利要求7所述的输入输出存储器管理单元的控制方法,其特征在于,所述第二缓存单元中存储的是读指令或写指令所对应的第一虚拟地址与该指令的物理地址信息之间的对应关系。
10.一种输入输出存储器管理单元的控制装置,用于获取智能设备的外围设备的请求指令的物理地址,其特征在于,所述输入输出存储器管理单元包括第一缓存单元,所述装置包括:
信息获取单元,适于获取所述外围设备的请求指令所对应的地址信息,所述地址信息包括第一虚拟地址;所述第一虚拟地址为所述第一缓存单元中存储所述请求指令的物理地址信息的存储位置;
地址确定单元,适于基于所述第一虚拟地址从所述第一缓存单元所述请求指令的物理地址。
11.如权利要求10所述的输入输出存储器管理单元的控制装置,其特征在于,还包括:
预存储单元,预先将所述请求指令的物理地址信息存储于所述第一缓存单元中的第一虚拟地址处,所述请求指令的物理地址信息与所述智能设备的操作系统为所述请求指令分配的虚拟地址相对应;
预设值单元,适于将所述请求指令所对应的第一虚拟地址设置于所述外围设备的寄存器中。
12.如权利要求10所述的输入输出存储器管理单元的控制装置,其特征在于,所述地址确定单元包括:
页地址获取单元,适于获取第一缓存单元中的第一虚拟地址处所存储的所述请求指令的物理地址的页地址信息;
物理地址确定单元,适于由所述请求指令的物理地址的页地址信息和所述请求指令的物理地址在页内的偏移量信息确定所述请求指令的物理地址。
13.如权利要求10所述的输入输出存储器管理单元的控制装置,其特征在于,所述输入输出存储器管理单元还包括至少一个第二缓存单元,所述装置还包括:
存储单元,适于在获取到所述请求指令的物理地址后,将所述第一虚拟地址和所述请求指令的物理地址信息之间的对应关系存储于所述第二缓存单元中。
14.一种输入输出存储器管理单元,用于获取智能设备的外围设备的请求指令的物理地址,其特征在于,包括:
第一缓存单元,适于存储所述外围设备的请求指令的物理地址信息;
总线控制单元,适于控制所述输入输出存储器管理单元的启动或者关闭;
协议单元,适于建立所述输入输出存储器管理单元中各单元间的通信连接。
15.如权利要求14所述的输入输出存储器管理单元,其特征在于,还包括:
第二缓存单元,适于存储所述第一虚拟地址和所述请求指令的物理地址信息之间的对应关系,所述第一虚拟地址为所述第一缓存单元中存储所述请求指令的物理地址信息的存储位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410188551.5A CN105095108A (zh) | 2014-05-06 | 2014-05-06 | 输入输出存储器管理单元及控制方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410188551.5A CN105095108A (zh) | 2014-05-06 | 2014-05-06 | 输入输出存储器管理单元及控制方法、装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105095108A true CN105095108A (zh) | 2015-11-25 |
Family
ID=54575598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410188551.5A Pending CN105095108A (zh) | 2014-05-06 | 2014-05-06 | 输入输出存储器管理单元及控制方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095108A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107728949A (zh) * | 2017-10-20 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种自动精简卷测试方法、系统、装置及计算机存储介质 |
WO2018192160A1 (zh) * | 2017-04-18 | 2018-10-25 | 上海交通大学 | 设备内存管理单元的虚拟化方法 |
CN110308953A (zh) * | 2019-04-01 | 2019-10-08 | 深圳市德名利电子有限公司 | 基于32位mcu主控的rom代码函数修改方法 |
CN110704338A (zh) * | 2019-10-18 | 2020-01-17 | 北京中科寒武纪科技有限公司 | 地址转换装置、人工智能芯片及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727405A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 虚拟地址高速缓冲存储器和方法以及处理器 |
CN103026348A (zh) * | 2010-02-17 | 2013-04-03 | 超威半导体公司 | Iommu架构的tlb支持 |
CN103218312A (zh) * | 2013-03-28 | 2013-07-24 | 中国科学院上海微系统与信息技术研究所 | 文件访问方法及系统 |
-
2014
- 2014-05-06 CN CN201410188551.5A patent/CN105095108A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101727405A (zh) * | 2008-10-20 | 2010-06-09 | 株式会社东芝 | 虚拟地址高速缓冲存储器和方法以及处理器 |
CN103026348A (zh) * | 2010-02-17 | 2013-04-03 | 超威半导体公司 | Iommu架构的tlb支持 |
CN103218312A (zh) * | 2013-03-28 | 2013-07-24 | 中国科学院上海微系统与信息技术研究所 | 文件访问方法及系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018192160A1 (zh) * | 2017-04-18 | 2018-10-25 | 上海交通大学 | 设备内存管理单元的虚拟化方法 |
CN107728949A (zh) * | 2017-10-20 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种自动精简卷测试方法、系统、装置及计算机存储介质 |
CN107728949B (zh) * | 2017-10-20 | 2020-09-18 | 苏州浪潮智能科技有限公司 | 一种自动精简卷测试方法、系统、装置及计算机存储介质 |
CN110308953A (zh) * | 2019-04-01 | 2019-10-08 | 深圳市德名利电子有限公司 | 基于32位mcu主控的rom代码函数修改方法 |
CN110704338A (zh) * | 2019-10-18 | 2020-01-17 | 北京中科寒武纪科技有限公司 | 地址转换装置、人工智能芯片及电子设备 |
CN110704338B (zh) * | 2019-10-18 | 2021-01-26 | 安徽寒武纪信息科技有限公司 | 地址转换装置、人工智能芯片及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9384153B2 (en) | Virtualized local storage | |
CN105283855B (zh) | 一种寻址方法及装置 | |
US8108650B2 (en) | Translation lookaside buffer (TLB) with reserved areas for specific sources | |
EP2476051B1 (en) | Systems and methods for processing memory requests | |
US8868883B1 (en) | Virtual memory management for real-time embedded devices | |
US20140181365A1 (en) | Techniques to Configure a Solid State Drive to Operate in a Storage Mode or a Memory Mode | |
EP2880540B1 (en) | Multiple sets of attribute fields within a single page table entry | |
US20080028181A1 (en) | Dedicated mechanism for page mapping in a gpu | |
US20110271014A1 (en) | Direct i/o device access by a virtual machine with memory managed using memory disaggregation | |
CN109213697A (zh) | 智能存储器数据存储或加载方法和装置 | |
US9367478B2 (en) | Controlling direct memory access page mappings | |
CN103077120B (zh) | 程序共享内存的地址转换方法和装置 | |
DE102014100031A1 (de) | Ein-Chip-System mit Speicherverwaltungseinheit und Speicheradressen-Übersetzungsverfahren hiervon | |
US20140040541A1 (en) | Method of managing dynamic memory reallocation and device performing the method | |
JPH0863354A (ja) | コンピュータプロセッシングを行うための装置及び方法 | |
US20140068125A1 (en) | Memory throughput improvement using address interleaving | |
CN105095108A (zh) | 输入输出存储器管理单元及控制方法、装置 | |
US8560782B2 (en) | Method and apparatus for determining access permissions in a partitioned data processing system | |
CN109471819A (zh) | 为来自主机的读取请求提供短的读取响应时间的存储设备 | |
US20180107619A1 (en) | Method for shared distributed memory management in multi-core solid state drive | |
CN115357540A (zh) | 存储系统及其计算存储处理器、固体硬盘和数据读写方法 | |
CN104714906B (zh) | 动态处理器-存储器再向量化架构 | |
US9026774B2 (en) | IC with boot transaction translation and related methods | |
US20160034392A1 (en) | Shared memory system | |
US20150177816A1 (en) | Semiconductor integrated circuit apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151125 |