CN102331978A - 一种龙芯刀片大内存地址设备dma控制器访问的实现方法 - Google Patents
一种龙芯刀片大内存地址设备dma控制器访问的实现方法 Download PDFInfo
- Publication number
- CN102331978A CN102331978A CN201110188852A CN201110188852A CN102331978A CN 102331978 A CN102331978 A CN 102331978A CN 201110188852 A CN201110188852 A CN 201110188852A CN 201110188852 A CN201110188852 A CN 201110188852A CN 102331978 A CN102331978 A CN 102331978A
- Authority
- CN
- China
- Prior art keywords
- address
- address space
- memory
- dma controller
- module
- 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
Landscapes
- Bus Control (AREA)
Abstract
本发明提供了一种龙芯刀片大内存地址设备DMA控制器访问的实现方法,管理控制模块在内存中申请256MB地址空间,DMA控制器与小于32位的地址空间进行数据传输时,按照传统DMA传输方式传输数据;DMA控制器在与大于32位的地址空间进行数据传输时,DMA控制器将访问地址发送给地址解析模块,地址解析模块将地址解析后发送给地址转换模块,地址转换模块将地址进行转换,映射模块按照地址转换模块转换后的地址进行内存映射,将高于32位的地址空间映射到管理控制模块预先申请的内存中。本发明有效解决了32位龙芯CPU对超过32位地址的内存的支持,使得龙芯CPU最多可以使用64位地址空间。
Description
技术领域
本发明涉及龙芯刀片对大内存支持方法,具体来说,涉及一种龙芯刀片大内存地址设备DMA控制器访问的实现方法
背景技术
目前设备地址一般都是32位,如果设备在与内存进行DMA数据传输的情况下,内存地址在大于32位的时候,设备将无法识别.所以需要一些方法来解决这个问题.Linux核心版本要求通往存储设备的数据缓存必须放在物理RAM的低端内存区域,即使是应用程序可以同时使用高端内存和低端内存也存在同样状况。这样,来自低端内存区域数据缓存的I/O请求可以直接进行内存存取操作。但是,当应用程序发出一个I/O请求,其中包含位于高端内存的数据缓存时,核心将强制在低端内存中分配一个临时数据缓存,并将位于高端内存的应用程序缓存数据复制到此处。
在目前的市场上,对于X86平台,对大于4G内存的支持,可以采用IOMMU,SWIOTLB等技术来实现.对于龙芯平台来说,目前的龙芯产品还没有用到比较大的内存。不会超过32位地址。而对于龙芯刀片来说,大内存的支持是必须要用到,因为龙芯刀片是要做高性能应用的。而目前的龙芯产品都不支持大内存,所以,为了实现龙芯刀片,就需要实现对大内存的支持。
发明内容
为了解决龙芯刀片对大页内存的支持,本发明提出了一种龙芯刀片大内存地址设备DMA控制器访问的实现方法。
一种龙芯刀片大内存地址设备DMA控制器访问的实现方法,管理控制模块在内存中申请256MB地址空间,DMA控制器与小于32位的地址空间进行数据传输时,按照传统DMA传输方式传输数据;DMA控制器在与大于32位的地址空间进行数据传输时,DMA控制器将访问地址发送给地址解析模块,地址解析模块将地址解析后发送给地址转换模块,地址转换模块将地址进行转换,映射模块按照地址转换模块转换后的地址进行内存映射,将高于32位的地址空间映射到管理控制模块预先申请的内存中。
优选的,所述地址解析模块在接收到DMA控制器地址空间数据后,对地址数据进行解析,若为大于32位的地址空间,则传递给地址转换模块;若不大于32位的地址空间,则按照传统DMA方式传输。
优选的,所述管理控制模块将大于32位的地址空间划分为块,每块大小为256MB。
优选的,管理控制模块在内存中申请的地址空间可以任意,大于32位的地址空间在划分块时要和在内存中申请的地址空间大小一致。
优选的,所述地址转换模块按照申请的内存空间大小对解析后的地址减去32位地址空间后右移位,右移后的地址空间为需要映射的块地址,右移位部分为块内地址。
优选的,所述大于32位的地址空间最高为64位。
本发明有效解决了32位龙芯CPU对超过32位地址的内存的支持,使得龙芯CPU最多可以使用64位地址空间。
具体实施方式
龙芯CPU是32位CPU,若地址空间超过32位,则龙芯CPU无法支持,本发明通过添加管理控制模块,地址解析模块,地址转换模块以及映射模块来达到最高支持64位地址空间。
管理控制模块负责对高于32位的地址空间进行划块,划分完成后,管理控制模块在内存中申请同样大小的块地址范围,当有DMA申请时,先交由地址解析模块进行判定,若地址在32位地址空间内,则进行传统的DMA数据传输;当地址空间大于32位地址时,则交由地址转换模块进行地址转换。
地址转换模块按照预先申请的块大小计算出需要移位的位数,进行移位,移位后的地址为块地址,移去的位为块内地址空间,映射模块根据块地址进行映射,将要访问的数据块映射到预先申请的地址空间。
通过本方法,最多可以支持到64位的地址空间。
Claims (6)
1.一种龙芯刀片大内存地址设备DMA控制器访问的实现方法,其特征在于:管理控制模块在内存中申请256MB地址空间,DMA控制器与小于32位的地址空间进行数据传输时,按照传统DMA传输方式传输数据;DMA控制器在与大于32位的地址空间进行数据传输时,DMA控制器将访问地址发送给地址解析模块,地址解析模块将地址解析后发送给地址转换模块,地址转换模块将地址进行转换,映射模块按照地址转换模块转换后的地址进行内存映射,将高于32位的地址空间映射到管理控制模块预先申请的内存中。
2.如权利要求所述的方法,其特征在于:所述地址解析模块在接收到DMA控制器地址空间数据后,对地址数据进行解析,若为大于32位的地址空间,则传递给地址转换模块;若不大于32位的地址空间,则按照传统DMA方式传输。
3.如权利要求1所述的方法,其特征在于:所述管理控制模块将大于32位的地址空间划分为块,每块大小为256MB。
4.如权利要求1或3所述的方法,其特征在于:管理控制模块在内存中申请的地址空间可以任意,大于32位的地址空间在划分块时要和在内存中申请的地址空间大小一致。
5.如权利要求1所述的方法,其特征在于:所述地址转换模块按照申请的内存空间大小对解析后的地址减去32位地址空间后右移位,右移后的地址空间为需要映射的块地址,右移位部分为块内地址。
6.如权利要求1所述的方法,其特征在于:所述大于32位的地址空间最高为64位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110188852A CN102331978A (zh) | 2011-07-07 | 2011-07-07 | 一种龙芯刀片大内存地址设备dma控制器访问的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110188852A CN102331978A (zh) | 2011-07-07 | 2011-07-07 | 一种龙芯刀片大内存地址设备dma控制器访问的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102331978A true CN102331978A (zh) | 2012-01-25 |
Family
ID=45483759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110188852A Pending CN102331978A (zh) | 2011-07-07 | 2011-07-07 | 一种龙芯刀片大内存地址设备dma控制器访问的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102331978A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102646074A (zh) * | 2012-02-22 | 2012-08-22 | 中国人民解放军国防科学技术大学 | 龙芯3a平台大内存设备的地址映射方法 |
CN105955892A (zh) * | 2016-04-25 | 2016-09-21 | 浪潮电子信息产业股份有限公司 | 一种计算机系统中地址空间的扩展方法 |
CN107870870A (zh) * | 2016-09-28 | 2018-04-03 | 北京忆芯科技有限公司 | 访问超过地址总线宽度的内存空间 |
CN107870736A (zh) * | 2016-09-28 | 2018-04-03 | 龙芯中科技术有限公司 | 支持大于4gb非线性闪存的方法及装置 |
CN107870867A (zh) * | 2016-09-28 | 2018-04-03 | 北京忆芯科技有限公司 | 32位cpu访问大于4gb内存空间的方法与装置 |
CN109408407A (zh) * | 2018-10-19 | 2019-03-01 | 龙芯中科技术有限公司 | 显示内存的分配方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1151050A (zh) * | 1994-11-30 | 1997-06-04 | 国际商业机器公司 | 系统总线间的桥接器 |
CN1423773A (zh) * | 2000-01-14 | 2003-06-11 | 先进微装置公司 | 于处理器中建立的操作模式 |
CN1430150A (zh) * | 2001-12-29 | 2003-07-16 | 深圳市中兴通讯股份有限公司上海第二研究所 | 通信系统中分系统间的虚拟内存分配管理方法 |
US6654818B1 (en) * | 2000-06-22 | 2003-11-25 | International Business Machines Corporation | DMA access authorization for 64-bit I/O adapters on PCI bus |
CN1517882A (zh) * | 2003-01-16 | 2004-08-04 | 矽统科技股份有限公司 | 内存地址的重新映射方法 |
US20070245041A1 (en) * | 2006-03-21 | 2007-10-18 | Binh Hua | Method to improve system DMA mapping while substantially reducing memory fragmentation |
-
2011
- 2011-07-07 CN CN201110188852A patent/CN102331978A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1151050A (zh) * | 1994-11-30 | 1997-06-04 | 国际商业机器公司 | 系统总线间的桥接器 |
CN1423773A (zh) * | 2000-01-14 | 2003-06-11 | 先进微装置公司 | 于处理器中建立的操作模式 |
US6654818B1 (en) * | 2000-06-22 | 2003-11-25 | International Business Machines Corporation | DMA access authorization for 64-bit I/O adapters on PCI bus |
CN1430150A (zh) * | 2001-12-29 | 2003-07-16 | 深圳市中兴通讯股份有限公司上海第二研究所 | 通信系统中分系统间的虚拟内存分配管理方法 |
CN1517882A (zh) * | 2003-01-16 | 2004-08-04 | 矽统科技股份有限公司 | 内存地址的重新映射方法 |
US20070245041A1 (en) * | 2006-03-21 | 2007-10-18 | Binh Hua | Method to improve system DMA mapping while substantially reducing memory fragmentation |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102646074A (zh) * | 2012-02-22 | 2012-08-22 | 中国人民解放军国防科学技术大学 | 龙芯3a平台大内存设备的地址映射方法 |
CN102646074B (zh) * | 2012-02-22 | 2015-04-15 | 中国人民解放军国防科学技术大学 | 龙芯3a平台大内存设备的地址映射方法 |
CN105955892A (zh) * | 2016-04-25 | 2016-09-21 | 浪潮电子信息产业股份有限公司 | 一种计算机系统中地址空间的扩展方法 |
CN107870870A (zh) * | 2016-09-28 | 2018-04-03 | 北京忆芯科技有限公司 | 访问超过地址总线宽度的内存空间 |
CN107870736A (zh) * | 2016-09-28 | 2018-04-03 | 龙芯中科技术有限公司 | 支持大于4gb非线性闪存的方法及装置 |
CN107870867A (zh) * | 2016-09-28 | 2018-04-03 | 北京忆芯科技有限公司 | 32位cpu访问大于4gb内存空间的方法与装置 |
CN107870736B (zh) * | 2016-09-28 | 2021-08-10 | 龙芯中科技术股份有限公司 | 支持大于4gb非线性闪存的方法及装置 |
CN109408407A (zh) * | 2018-10-19 | 2019-03-01 | 龙芯中科技术有限公司 | 显示内存的分配方法和装置 |
CN109408407B (zh) * | 2018-10-19 | 2021-08-03 | 龙芯中科技术股份有限公司 | 显示内存的分配方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102331978A (zh) | 一种龙芯刀片大内存地址设备dma控制器访问的实现方法 | |
US9852081B2 (en) | STLB prefetching for a multi-dimension engine | |
IN2012DN00935A (zh) | ||
US9672148B1 (en) | Methods and apparatus for direct cache-line access to attached storage with cache | |
KR101708402B1 (ko) | 메모리를 디프래그멘팅하기 위한 시스템 및 방법 | |
US7707383B2 (en) | Address translation performance in virtualized environments | |
US9405703B2 (en) | Translation lookaside buffer | |
US20150347349A1 (en) | Direct access to local memory in a pci-e device | |
WO2013167886A3 (en) | Data processing apparatus having cache and translation lookaside buffer | |
RU2491616C2 (ru) | Устройство, способ и система управления матрицами | |
KR20120054549A (ko) | 디스플레이 파이프 내에서의 스트리밍 변환 | |
JP2017073129A5 (zh) | ||
RU2017138467A (ru) | Программируемые устройства для обработки запросов передачи данных памяти | |
WO2010004242A3 (en) | Data processing apparatus, for example using vector pointers | |
JP2016541046A5 (zh) | ||
BR112013033792A2 (pt) | sistema de computador, método para acessar um dispositivo de ponto de extremidade de interconexão de componentes periféricos expressos e aparelho | |
US9588902B2 (en) | Flexible page sizes for virtual memory | |
WO2012082416A3 (en) | Cpu in memory cache architecture | |
US20140181460A1 (en) | Processing device with address translation probing and methods | |
WO2005114669A3 (en) | System and method for improving performance in computer memory systems supporting multiple memory access latencies | |
KR20180088525A (ko) | 스위치들 내의 어드레스 캐싱 | |
IN2012DN00934A (zh) | ||
WO2009124014A8 (en) | Cache optimization | |
US9367474B2 (en) | Translating cache hints | |
CN101030182A (zh) | 执行dma数据传输的设备和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120125 |