CN111538679B - 一种基于内嵌dma的处理器数据预取方法 - Google Patents

一种基于内嵌dma的处理器数据预取方法 Download PDF

Info

Publication number
CN111538679B
CN111538679B CN202010396615.6A CN202010396615A CN111538679B CN 111538679 B CN111538679 B CN 111538679B CN 202010396615 A CN202010396615 A CN 202010396615A CN 111538679 B CN111538679 B CN 111538679B
Authority
CN
China
Prior art keywords
data
channel
cache
dma
address
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
Application number
CN202010396615.6A
Other languages
English (en)
Other versions
CN111538679A (zh
Inventor
周海斌
魏为
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 14 Research Institute
Original Assignee
CETC 14 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 14 Research Institute filed Critical CETC 14 Research Institute
Priority to CN202010396615.6A priority Critical patent/CN111538679B/zh
Publication of CN111538679A publication Critical patent/CN111538679A/zh
Application granted granted Critical
Publication of CN111538679B publication Critical patent/CN111538679B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明结合了软件预取的高度灵活性和硬件预取的高效率,提出了一种通过在矢量处理器核内部设计内嵌DMA的方法,与传统的通过Load/Store或矢量Load/Store指令从片外存储搬运数据方式和通过指令实现的软件数据预取方式相比,实现了较高的数据传输和数据预取效率。该内嵌DMA除了支持常规DMA所具有的一维、二维和转置数据传输之外,还支持数据预取、刷Cache和无效Cache等功能。通过程序员配置和启动处理器核内嵌DMA,可灵活地设置数据传输和数据预取的时机、预取度和数据存取模式,较好地解决了Load/Store指令从片外存储搬运数据和软件预取或硬件预取存在的问题,实现了高效率的数据传输和数据预取。

Description

一种基于内嵌DMA的处理器数据预取方法
技术领域
本发明属于集成电路技术领域,具体涉及一种处理器设计技术。
背景技术
现代处理器,如CPU及DSP等,普遍在片上集成多级高速缓存,如Cache等,利用程序的时间局部性和空间局部性,使处理器运行所需的程序指令和运算数据尽可能从片上高速缓存中取得,避免片外访存带来的超长访问延迟,弥补处理器运算速度和访存速度之间存在的剪刀差。
然而,一方面受芯片面积限制,片上高速缓存容量通常为数兆字节,可存储的程序指令和运算数据有限;另一方面应用程序复杂,程序代码量及运算数据规模较大,导致Cache的替换较为频繁,Cache的缺失难以避免,一旦Cache未命中,处理器只有从片外存储获取程序指令,或通过Load/Store指令从片外存储搬运数据,造成访存时间大大增加,在不支持分支预测和乱序执行等动态调度策略的处理器中,甚至会导致程序指令运行阻塞,严重影响程序执行效率。
为提高Load/Store指令的数据传输效率,通常采用矢量Load/Store或写合并等方式提高数据加载和存储带宽,但由于目前大多数处理器的Load/Store指令已按Cache Line的数据规模存取数据,矢量Load/Store只能提高从Cache到寄存器的传输带宽,而外部存储到Cache的传输性能并未增加,因此,整体传输性能的提升十分有限,不仅如此,写合并技术需要将若干个数据拼成一个Cache Line后再写出,实际应用时需要在程序中增加同步指令,以避免数据写出不完整,导致其应用也受到限制。
为提高Cache的访问效率,降低Cache访问的缺失率,传统的解决方法是采用数据预取技术,包括软件预取和硬件预取两种。
软件预取采用基于指令的数据预取技术,通过编译器自动或程序员手工在程序中插入预取指令Prefetch,将程序指令或运算数据预先加载到指令或数据Cache,提升取指和取数的速度,但软件预取增加了编译器开发难度及程序代码规模,预取指令占用了程序指令,存在一定的性能开销,测试表明软件预取对程序性能的提升≤8.5%。
硬件预取采用自动触发机制,发生若干次连续的Cache失效后将触发硬件数据预取,存在对预取的时机和预取度等控制难度大,对于不规则的存取模式,硬件预取可能不被触发等问题。
发明内容
本发明为了解决现有技术存在的问题,提出了一种基于内嵌DMA的处理器数据预取方法,为了实现上述目的,本发明采用了以下技术方案。
集成4个矢量DSP处理器核,采用超标量多发射结构;处理器核采用单指令多数据SIMD技术,每个核包括2个256位的VALU、1个MDU、2个VALU、2个访存;每个时钟周期发出4条标量和矢量指令,由7个部件同时乱序执行和顺序提交;每个核包括两级片上高速缓存,一级Cache的指令和数据的容量均为32KB,二级Cache的容量为1MB,Cache的行地址为1KB,Load/Store指令以Cache Line为1KB的规模,搬运数据的地址按照1KB自动对齐,将指令和数据从外部存储预取到二级Cache和一级Cache;每个核内嵌DMA控制器,在Cache和处理器外部存储空间之间搬运数据,传输一维和二维数据、转置矩阵、刷Cache、无效Cache、预取数据到Cache。
DMA控制器包括Cache接口和unCache接口;DMA传输控制逻辑,包括8KB的Buffer,发起Cache或unCache请求的数量上限为8个;DMA通道选择,包括2个通道,每个通道支持2条命令,1条执行,1条等待,轮流工作;DMA通道寄存器组,实现数据传输和数据预取。
DMA通道寄存器组包括:主控制状态寄存器DMA_CR,位宽[63:0],地址5’h1f,复位值0x00000000;通道内部控制状态寄存器Channel CSR Register,位宽[63:0],偏移量[1位的通道ID,4’d1],复位值0x00000000;通道内部控制状态寄存器Channel Next CSRRegister,位宽[63:0],偏移量[1位的通道ID,4’d8],复位值0x00000000;通道传输字节大小寄存器Channel Size Register,位宽[63:0],偏移量[1位的通道ID,3’d2]
和偏移量[1位的通道ID,4’d3],复位值0;通道源地址寄存器Channel AddressRegisters,位宽[63:0],偏移量[1位的通道ID,3’d4],复位值0;通道目的地址寄存器Channel Address Registers,位宽[63:0],偏移量[1位的通道ID,3’d5],复位值undefined;源矩阵配置寄存器Channel Matrix Registers,位宽[63:0],偏移量[1位的通道ID,3’d6],复位值0x0;DMA命令起始地址寄存器Channel Desc Register,位宽
[63:0],偏移量[1位的通道ID,4’d7],复位值0x0。
DMA控制器根据连续数据串的大小chunk_size搬运连续地址的外部数据,根据两个数据串的chunk_size的起始地址差block_size搬运不连续地址的外部数据;搬运数据的大小是32位,传输数据的上限是4GB,每次搬运产生一个中断,根据优先级选择下一个通道。
配置通道,使用CTDMA和CFDMA指令,配置和读取通道寄存器,写入一条DMA命令,先配置src_adr、dst_adr、txsz、block、matrix再配置ch_csr,写入一条DMA命令,等待ch_csr内的req变为1,再次配置通道寄存器,写入src_adr_next和csr_next寄存器。
当通道在工作,或者发生中断,即req为1,或者DONE_INT为1,CSR寄存器无法配置;数据预取和刷Cache,配置目的地址,读写Cache操作,发送命令和地址给Cache,由Cache执行数据预取和刷的操作;当csr_req和csr_next_req都为0,则配置CSR,当csr_next_req为0,则配置csr_next;数据预取支持从内存将指令和数据预取到二级Cache或一级Cache;强制取描述符无法配置为预取或刷Cache模式,同时配置下次取描述符和预取或刷模式;传输链式描述符时,取外部描述符的优先级配置为0,两个通道轮流执行。
启动传输,刷scache行,发送刷cache命令,写入cache地址,DMA产生中断;uncache操作,读取uncache或cache数据,写入cache或uncache地址,DMA产生中断;将数据预取到scache和dcache,配置预取命令,写入cache地址,DMA产生中断;矩阵转置,从scache或uncache地址读取16×4的源矩阵数据,写入目的地址,如果源矩阵大于DMA的buffer,每次转置一个小矩阵,自动累加小矩阵的源地址和目的地址,实现大矩阵的转置,DMA产生中断。
配置DMA通道寄存器;通道请求为1,输入到通道选择模块;检测另一个通道是否工作,如果是,等待另一个通道传输完成,否则,通道允许传输,设置de_start信号为1,发送传输参数给cache_dma_de模块;收到de_start信号,cache_dma_de模块启动DMA传输,cache_dma_read读取数据;cache_dma_read模块每次发送一个1024bits的读命令,连续发送多个读命令;当cache_dma_read发送的读命令饱和,通道暂停读取数据,发出写命令;cache_dma_write模块写数据,每写出一个数据,cache_dma_read就发送一个读命令,读写命令输出共用cache_dma_pipeline模块的命令流水,读写不同时存在;当收到通道stop时,cache_dma_read模块发完本次读命令,停止读取新数据,cache_dma_write模块不再写数据;读取的数据都返回,将write_finish更新为1,触发dma_err;如果通道传输完成,或dma_err和next_done都为1,更新对应的通道寄存器。
从内存读取外部描述符,将描述符的值写入对应的DMA寄存器,作为DMA寄存器的配置,发起DMA数据传输,传输结束,读取下一个描述符;描述符由一组寄存器的配置组成,采用链式描述,包括下一个描述符操作的地址,在内存中的地址顺序为
txsz描述符地址;
block描述符地址+0x8;
src_adr描述符地址+0x10;
dst_adr描述符地址+0x18;
matrix描述符地址+0x20;
desc描述符地址+0x28;
csr描述符地址+0x30。
本发明改善了数据传输性能,在多核处理器中,处理器核内嵌DMA,与处理器核共享数据传输通道,在处理器核计算密集型应用时启动,以减少数据通道的竞争冲突,与通过矢量Load指令实现的数据加载相比,基于处理器核内嵌DMA实现的一维、二维以及矩阵转置操作的数据传输性能明显提升;配置核内DMA为传输模式,执行矢量Load指令,第一步,将数据从DDR0搬送到二级Cache,二级Cache读、写均不命中,数据传输率为2.55GB/s,第二步,通过矢量Load将数据从二级Cache搬送到通用寄存器,数据传输率为12.53GB/s;通过两个步骤完成的数据传输整体性能为2.12GB/s,与纯粹通过矢量Load指令实现的数据传输性能相比,提升了43.24%;改善了数据预取的性能,将数据从外部存储预取到一级Dcache,测试比较性能,基于处理器核内嵌DMA实现的数据预取方法获得的性能,优于通过Prefetch指令的软件预取方式;执行PREF预取指令,将32KB数据从DDR预取到Dcache,数据传输率为5.59GB/s,配置核内DMA为预取模式,将同样大小的32KB数据从DDR预取到Dcache,数据传输率为6.28GB/s,数据预取性能比PREF预取指令提升12.34%。
附图说明
图1是DMA控制器结构框图,图2是对不连续数据搬运示意图。
具体实施方式
以下结合附图对本发明的技术方案做具体的说明。
在多核DSP处理器中,集成4个运算能力较强的矢量DSP处理器核,采用超标量多发射结构,每个时钟周期发出4条标量和矢量指令,到2个ALU、1个MDU、2个VALU、2个访存,7个执行部件同时运算和操作,乱序执行和顺序提交指令。
处理器核采用单指令多数据SIMD技术,每个核包含2个256位的矢量执行部件VALU,理论峰值运算能力为数十GFlops,矢量处理器核整体上对取指和取数速度提出了较高要求,以满足处理器核在指令层级和数据层级的并行处理,为运算部件及时提供有效数据,减少指令流水线的停顿或阻塞。
处理器核包括两级片上高速缓存,一级Cache的指令和数据各有32KB容量,二级Cache有1MB容量,Load/Store指令以Cache Line为1KB的规模存取数据,通过编程,手工添加预取指令,实现软件预取,将指令和数据从外部存储预取到二级Cache和一级Cache,提高片上Cache的命中率和访问效率。
基于指令的软件预取方式灵活度高,满足了预取度较小的指令和数据预取需求,但在FFT、FIR、矩阵运算等对数据量需求较大的处理场景下,软件预取对程序整体执行性能的提升不明显。
处理器核内嵌DMA控制器,在Cache和处理器核外部存储空间之间搬运数据,具有2个通道,传输一维和二维数据、转置矩阵、刷Cache、无效Cache、预取数据到Cache。
DMA控制器结构如图1所示,包括DMA传输控制逻辑、DMA通道选择、DMA通道寄存器、接口等功能单元组成,配置寄存器,实现传输一维和二维数据、转置矩阵、刷Cache、无效Cache、数据预取到Cache等功能。
通过DMA通道内的一组寄存器实现数据传输和数据预取,寄存器组包括主控制状态寄存器、通道内部控制状态寄存器、通道传输字节大小寄存器、通道源地址寄存器、通道目的地址寄存器、源矩阵配置寄存器、DMA命令起始地址寄存器等。
DMA控制器包含8KB的Buffer,最大支持发起8个Cache或unCache的请求,搬运的外部数据既可以是连续地址的,也可以是不连续地址的,chunk_size是连续数据串的大小,block_size是chunk_size两个数据串起始地址差,支持了不连续数据的传输。
DMA搬运的数据大小是32位,最大支持4GB数据传输,DMA完成一次搬运后,会产生一个中断,根据优先级选择下一个通道操作数据。
处理器核Cache的行地址为1KB,每次搬运的地址以1KB对齐,对于不齐的地址,自动对齐,以保障搬运数据是正确的。
DMA控制器发起Read请求,在Read_rdy返回时,会返回对应的Read请求的ID号。
DMA控制器支持2个通道轮流工作,每个通道支持2条命令,1条执行,1条等待,通道工作时,可以写CSR_NEXT寄存器,通道工作完成,下一个请求进入当前CSR寄存器,与另外一个通道轮流传输。
写入CSR寄存器中的STOP位,强制停止通道,DMA通道会立即停止,并产生一个ERR位,产生一个错误中断。
DMA数据传输,包括配置通道和启动传输。
配置通道阶段,使用CTDMA和CFDMA指令配置和读取通道的寄存器,写入一条DMA命令,先配置src_adr、dst_adr、txsz、block、matrix等,再配置ch_csr,写入一条DMA命令等待执行,当ch_csr内的req为1时,再次配置通道寄存器,写入src_adr_next和csr_next等寄存器。
启动传输阶段包括四个功能:刷scache行、uncache操作、将数据预取到scache和dcache、矩阵转置。
功能0,配置进行刷cache行操作,发送刷cache命令,地址给cache,完毕后,DMA产生一个中断;功能1,读取uncache或cache数据,写入cache或uncache地址,完毕后,DMA产生一个中断;功能2,配置发送预取命令和地址给cache,完毕后,DMA产生一个中断;功能3,从scache或uncache地址每次读取16×4的矩阵数据,并写入目的地址,完毕后,DMA产生一个中断。
通过软件配置,对存放在内存或Cache中的矩阵,从源矩阵到目标矩阵的行列转置,提高数据矩阵转置传输性能。
矩阵转置包含一个1024bits×4的缓存,最大支持4×16的64bits元素矩阵,先读入源矩阵数据,再依次写出目标矩阵。
如果源矩阵大于DMA的buffer,软件配置矩阵的参数,DMA每次转置一个小矩阵,自动累加小矩阵的源地址和目的地址,实现大矩阵的转置。
DMA不连续搬运的过程如图2所示,传输二维数据时,二维数据在内存中的存放形式。
核内DMA支持描述符的工作方式,从内存中读取一组通道的寄存器配置的通道描述符,将描述符的值写入对应的DMA寄存器,发起DMA数据传输,传输结束,读取下一个描述符。
DMA通过读取外部描述符,作为DMA寄存器的配置,完成描述符所要求的操作,描述符由一组寄存器的配置组成,作为数据,存在内存中,使用链式描述符,内含下一个描述符操作的地址,在内存中的地址顺序如下:
txsz描述符地址
block描述符地址+0x8
src_adr描述符地址+0x10
dst_adr描述符地址+0x18
matrix描述符地址+0x20
desc描述符地址+0x28
csr描述符地址+0x30
主控制状态寄存器DMA_CR的寄存器位宽[63:0],地址5’h1f,复位值0x00000000
Figure GDA0004178576470000061
/>
Figure GDA0004178576470000071
通道内部控制状态寄存器Channel CSR Register(CHn_CSR)的寄存器位宽[63:0],偏移量[1位的通道ID,4’d1],复位值0x00000000
Figure GDA0004178576470000081
/>
Figure GDA0004178576470000091
通道传输字节大小寄存器Channel Size Register(CHn_TXSZ)的寄存器位宽[63:0],偏移量[1位的通道ID,3’d2],复位值0
Figure GDA0004178576470000101
通道传输字节大小寄存器Channel Size Register(CHn_block)的寄存器位宽[63:0],偏移量[1位的通道ID,4’d3],复位值0
Figure GDA0004178576470000102
通道源地址寄存器Channel Address Registers(CHn_ADR0)的寄存器位宽[63:0],偏移量[1位的通道ID,3’d4],复位值0
位域 位域名称 位宽 访问 描述
63:40 Reserved 24 RO 保留
39:0 Address 40 RW 源地址
通道目的地址寄存器Channel Address Registers(CHn_ADR1)的寄存器位宽[63:0],偏移量[1位的通道ID,3’d5],复位值undefined
位域 位域名称 位宽 访问 描述
63:40 Reserved 24 RO 保留
39:0 Address 40 RW 目的地址
源矩阵配置寄存器Channel Matrix Registers(CHn_Matrix)的寄存器位宽[63:0],偏移量[1位的通道ID,3’d6],复位值0x0
位域 位域名称 位宽 访问 描述
55:32 col_num 24 RW 大矩阵的一行元素个数M列
31:24 保留 8 RW 保留
23:0 Row_num 24 RW 大矩阵的一列元素个数N行
DMA命令起始地址寄存器Channel Desc Register(CHn_Desc)的寄存器位宽[63:0],偏移量[1位的通道ID,4’d7],复位值0x0
位域 位域名称 位宽 访问 描述
39:0 address 40 RW DMA命令起始地址
通道内部控制状态寄存器Channel Next CSR Register(CHn_CSR_NEXT)的寄存器位宽[63:0],偏移量[1位的通道ID,4’d8],复位值0x00000000
Figure GDA0004178576470000111
/>
Figure GDA0004178576470000121
/>
Figure GDA0004178576470000131
处理器核内嵌DMA工作流程如下:
配置DMA通道寄存器;
通道请求为1,输入到通道选择模块;
检测另一个通道是否正在工作,如果是,等待另一个通道传输完成,否则,通道允许传输,设置de_start信号为1,发送传输参数给cache_dma_de模块;
收到de_start信号,cache_dma_de模块启动DMA传输,cache_dma_read读取数据;
cache_dma_read模块每次发送一个1024bits的读命令,连续发送多个读命令;
当cache_dma_read发送的读命令饱和,通道暂停读取数据,发出写命令;
cache_dma_write模块写数据,每写出一个数据,cache_dma_read就发送一个读命令,读写命令输出共用cache_dma_pipeline模块的命令流水,读写不同时存在;
当收到通道stop时,cache_dma_read模块发完本次读命令后,停止读取新数据;
cache_dma_write模块不再写数据,在读取的数据都返回后,将write_finish更新为1,触发dma_err;
如果通道传输完成,或dma_err为1、next_done为1,更新对应的通道寄存器。
处理器核内嵌DMA软件配置如下:
如果通道正在工作,或者发生中断,即req为1,或者DONE_INT为1,CSR寄存器无法配置;数据预取和刷Cache时,配置目的地址,读写Cache操作,发送命令和地址给Cache,由Cache执行数据预取和刷的操作;
配置CSR时,需要csr_req和csr_next_req都为0,配置csr_next时,需要csr_next_req为0;
数据预取支持从内存将指令和数据预取到二级Cache或一级Cache;
强制取描述符不能配置为预取/刷Cache模式,能同时配置下次取描述符和预取/刷模式;传输链式描述符时,取外部描述符的优先级要配置为0,两个通道轮流执行。
上述作为本发明的实施例,并不限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

Claims (1)

1.一种基于内嵌DMA的处理器数据预取方法,其特征在于,包括:集成4个矢量DSP处理器核,采用超标量多发射结构;处理器核采用单指令多数据SIMD技术,每个核包括2个256位的VALU、1个MDU、2个VALU、2个访存;每个时钟周期发出4条标量和矢量指令,由7个部件同时乱序执行和顺序提交;每个核包括两级片上高速缓存,一级Cache的指令和数据的容量均为32KB,二级Cache的容量为1MB,Cache的行地址为1KB,Load/Store指令以Cache Line为1KB的规模,搬运数据的地址按照1KB自动对齐,将指令和数据从外部存储预取到二级Cache和一级Cache;每个核内嵌DMA控制器,在Cache和处理器外部存储空间之间搬运数据,传输一维和二维数据、转置矩阵、刷Cache、无效Cache、预取数据到Cache;
所述DMA控制器包括Cache接口和unCache接口;DMA传输控制逻辑包括8KB的Buffer,发起Cache或unCache请求的数量上限为8个;DMA通道包括2个通道,每个通道支持2条命令,1条执行,1条等待,轮流工作;DMA通道寄存器组实现数据传输和数据预取;所述DMA通道寄存器组包括:主控制状态寄存器DMA_CR,位宽[63:0],地址5’h1f,复位值0x00000000;通道内部控制状态寄存器Channel CSR Register,位宽[63:0],偏移量[1位的通道ID,4’d1],复位值0x00000000;通道内部控制状态寄存器Channel Next CSR Register,位宽[63:0],偏移量[1位的通道ID,4’d8],复位值0x00000000;通道传输字节大小寄存器Channel SizeRegister,位宽[63:0],偏移量[1位的通道ID,3’d2]和偏移量[1位的通道ID,4’d3],复位值0;通道源地址寄存器Channel Address Registers,位宽[63:0],偏移量[1位的通道ID,3’d4],复位值0;通道目的地址寄存器Channel Address Registers,位宽[63:0],偏移量[1位的通道ID,3’d5],复位值undefined;源矩阵配置寄存器Channel Matrix Registers,位宽[63:0],偏移量[1位的通道ID,3’d6],复位值0x0;DMA命令起始地址寄存器Channel DescRegister,位宽[63:0],偏移量[1位的通道ID,4’d7],复位值0x0;
所述主控制状态寄存器DMA_CR设置为
Figure QLYQS_1
/>
Figure QLYQS_2
/>
Figure QLYQS_3
所述通道内部控制状态寄存器Channel CSR Register设置为
Figure QLYQS_4
/>
Figure QLYQS_5
所述通道内部控制状态寄存器Channel Next CSR Register设置为
Figure QLYQS_6
/>
Figure QLYQS_7
所述通道传输字节大小寄存器Channel Size Register设置为
Figure QLYQS_8
/>
Figure QLYQS_9
Figure QLYQS_10
所述通道源地址寄存器Channel Address Registers设置为
位域 位域名称 位宽 访问 描述 63:40 Reserved 24 RO 保留 39:0 Address 40 RW 源地址
所述通道目的地址寄存器Channel Address Registers设置为
位域 位域名称 位宽 访问 描述 63:40 Reserved 24 RO 保留 39:0 Address 40 RW 目的地址
所述源矩阵配置寄存器Channel Matrix Registers设置为
位域 位域名称 位宽 访问 描述 55:32 col_num 24 RW 大矩阵的一行元素个数M列 31:24 保留 8 RW 保留 23:0 Row_num 24 RW 大矩阵的一列元素个数N行
所述DMA命令起始地址寄存器Channel Desc Register设置为
位域 位域名称 位宽 访问 描述 39:0 address 40 RW DMA命令起始地址
所述DMA控制器,根据连续数据串的大小chunk_size搬运连续地址的外部数据,根据两个数据串的chunk_size的起始地址差block_size搬运不连续地址的外部数据;搬运数据的大小是32位,传输数据的上限是4GB,每次搬运产生一个中断,根据优先级选择下一个通道;
使用CTDMA和CFDMA指令,配置和读取通道寄存器,写入一条DMA命令,先配置src_adr、dst_adr、txsz、block、matrix再配置ch_csr,写入一条DMA命令,等待ch_csr内的req变为1,再次配置通道寄存器,写入src_adr_next和csr_next寄存器;启动传输,刷scache行,发送刷cache命令,写入cache地址,DMA产生中断;
uncache操作,读取uncache或cache数据,写入cache或uncache地址,DMA产生中断;将数据预取到scache和dcache,配置预取命令,写入cache地址,DMA产生中断;矩阵转置,从scache或uncache地址读取16×4的源矩阵数据,写入目的地址,如果源矩阵大于DMA的buffer,每次转置一个小矩阵,自动累加小矩阵的源地址和目的地址,实现大矩阵的转置,DMA产生中断;
当通道在工作,或者发生中断,即req为1,或者DONE_INT为1,CSR寄存器无法配置;数据预取和刷Cache,配置目的地址,读写Cache操作,发送命令和地址给Cache,由Cache执行数据预取和刷的操作;当csr_req和csr_next_req都为0,则配置CSR,当csr_next_req为0,则配置csr_next;数据预取支持从内存将指令和数据预取到二级Cache或一级Cache;强制取描述符无法配置为预取或刷Cache模式,同时配置下次取描述符和预取或刷模式;传输链式描述符时,取外部描述符的优先级配置为0,两个通道轮流执行;
配置DMA通道寄存器时:通道请求为1,输入到通道选择模块;检测另一个通道是否工作,如果是,等待另一个通道传输完成,否则,通道允许传输,设置de_start信号为1,发送传输参数给cache_dma_de模块;收到de_start信号,cache_dma_de模块启动DMA传输,cache_dma_read读取数据;cache_dma_read模块每次发送一个1024bits的读命令,连续发送多个读命令;当cache_dma_read发送的读命令饱和,通道暂停读取数据,发出写命令;cache_dma_write模块写数据,每写出一个数据,cache_dma_read就发送一个读命令,读写命令输出共用cache_dma_pipeline模块的命令流水,读写不同时存在;当收到通道stop时,cache_dma_read模块发完本次读命令,停止读取新数据,cache_dma_write模块不再写数据;读取的数据都返回,将write_finish更新为1,触发dma_err;如果通道传输完成,或dma_err和next_done都为1,更新对应的通道寄存器;
从内存读取外部描述符,将描述符的值写入对应的DMA寄存器,作为DMA寄存器的配置,发起DMA数据传输,传输结束,读取下一个描述符;描述符由一组寄存器的配置组成,采用链式描述,包括下一个描述符操作的地址,在内存中的地址顺序为txsz描述符地址;
block描述符地址+0x8;
src_adr描述符地址+0x10;
dst_adr描述符地址+0x18;
matrix描述符地址+0x20;
desc描述符地址+0x28;
csr描述符地址+0x30。
CN202010396615.6A 2020-05-12 2020-05-12 一种基于内嵌dma的处理器数据预取方法 Active CN111538679B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010396615.6A CN111538679B (zh) 2020-05-12 2020-05-12 一种基于内嵌dma的处理器数据预取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010396615.6A CN111538679B (zh) 2020-05-12 2020-05-12 一种基于内嵌dma的处理器数据预取方法

Publications (2)

Publication Number Publication Date
CN111538679A CN111538679A (zh) 2020-08-14
CN111538679B true CN111538679B (zh) 2023-06-06

Family

ID=71977679

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010396615.6A Active CN111538679B (zh) 2020-05-12 2020-05-12 一种基于内嵌dma的处理器数据预取方法

Country Status (1)

Country Link
CN (1) CN111538679B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112131144B (zh) * 2020-09-27 2023-09-26 芯天下技术股份有限公司 串行接口nand存储芯片及从其中读取数据的方法
CN112765086B (zh) * 2020-12-30 2023-09-08 北京泽石科技有限公司 固态存储中一种基于cache一致性的软硬件交互方法
CN113253941B (zh) 2021-06-22 2021-10-15 苏州浪潮智能科技有限公司 一种寄存器读取方法、装置、设备和介质
CN114443528B (zh) * 2022-01-27 2023-09-01 安徽芯纪元科技有限公司 一种dma二维数据传输/清零参数配置方法
CN114443529B (zh) * 2022-04-02 2022-07-05 苏州浪潮智能科技有限公司 内存直接访问架构、系统、方法、电子设备和介质
CN117033270B (zh) * 2023-10-08 2024-01-26 腾讯科技(深圳)有限公司 一种芯片、设备以及数据处理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102937939A (zh) * 2012-10-10 2013-02-20 无锡众志和达存储技术股份有限公司 基于sata控制器的dma地址对预读取方法
WO2017211240A1 (zh) * 2016-06-07 2017-12-14 华为技术有限公司 一种处理器芯片以及指令缓存的预取方法
CN108874690A (zh) * 2017-05-16 2018-11-23 龙芯中科技术有限公司 数据预取的实现方法和处理器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102937939A (zh) * 2012-10-10 2013-02-20 无锡众志和达存储技术股份有限公司 基于sata控制器的dma地址对预读取方法
WO2017211240A1 (zh) * 2016-06-07 2017-12-14 华为技术有限公司 一种处理器芯片以及指令缓存的预取方法
CN107479860A (zh) * 2016-06-07 2017-12-15 华为技术有限公司 一种处理器芯片以及指令缓存的预取方法
CN108874690A (zh) * 2017-05-16 2018-11-23 龙芯中科技术有限公司 数据预取的实现方法和处理器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘天义 ; 肖俊华 ; 章隆兵 ; 沈海华 ; .提升处理器指针追逐访存性能的指令标签辅助的数据预取机制.高技术通讯.(第Z2期),全文. *

Also Published As

Publication number Publication date
CN111538679A (zh) 2020-08-14

Similar Documents

Publication Publication Date Title
CN111538679B (zh) 一种基于内嵌dma的处理器数据预取方法
JP5357017B2 (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
JP5039889B2 (ja) 改良されたdmac変換メカニズムのためのシステム及び方法
US6665749B1 (en) Bus protocol for efficiently transferring vector data
US8725987B2 (en) Cache memory system including selectively accessible pre-fetch memory for pre-fetch of variable size data
US6813701B1 (en) Method and apparatus for transferring vector data between memory and a register file
JPH10187533A (ja) キャッシュシステム、プロセッサ及びプロセッサを動作させる方法
US7610469B2 (en) Vector transfer system for packing dis-contiguous vector elements together into a single bus transfer
US7496732B2 (en) Method and apparatus for results speculation under run-ahead execution
US8190825B2 (en) Arithmetic processing apparatus and method of controlling the same
US20090113192A1 (en) Design structure for improving efficiency of short loop instruction fetch
CN112667289B (zh) 一种cnn推理加速系统、加速方法及介质
WO2021091649A1 (en) Super-thread processor
JP2003140965A (ja) 分散共有メモリ型並列計算機および命令スケジューリング方法
US20040088490A1 (en) Super predictive fetching system and method
US9507725B2 (en) Store forwarding for data caches
US8065505B2 (en) Stall-free pipelined cache for statically scheduled and dispatched execution
US10366049B2 (en) Processor and method of controlling the same
US6625720B1 (en) System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
CN117270972B (zh) 指令处理方法、装置、设备和介质
US20220229662A1 (en) Super-thread processor
CN116700794A (zh) 一种获取待执行指令的方法及系统
TW202416131A (zh) 用於壓縮操作期間的常數偵測之設備及方法
CN115659115A (zh) 一种向量数据预读取方法、系统、设备及可读存储介质

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