CN103377141A - 高速存储区的访问方法以及访问装置 - Google Patents
高速存储区的访问方法以及访问装置 Download PDFInfo
- Publication number
- CN103377141A CN103377141A CN2012101073392A CN201210107339A CN103377141A CN 103377141 A CN103377141 A CN 103377141A CN 2012101073392 A CN2012101073392 A CN 2012101073392A CN 201210107339 A CN201210107339 A CN 201210107339A CN 103377141 A CN103377141 A CN 103377141A
- Authority
- CN
- China
- Prior art keywords
- cache
- address
- data
- local storage
- request core
- 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.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种高速存储区的访问方法及访问装置,其中所述访问方法包括:在处理器核心请求访问主存时,基于所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache;若所述请求主存地址命中Cache,则基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址,并基于所述局部存储器地址加载Cache数据;若所述请求主存地址未命中Cache,则基于所述不命中入口跳转至不命中处理例程。本技术方案简化了高速存储区的逻辑设计开销,提高了处理器的易编程性和适应性。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种高速存储区的访问方法以及访问装置。
背景技术
在计算机中,Cache(高速缓冲存储器)是位于微处理器核心和内存之间的临时存储器,用来对内存数据进行缓存。Cache结构主要由数据阵列和Tag(标签)条目管理逻辑组成,前者用于存储实际数据,后者用来标记这些数据的属性(如数据对应的主存地址信息等),并且Cache结构完全由硬件实现。
Cache结构一般对处理器核心透明,即处理器核心访问存储器时认为总是在从主存中获取数据。以读请求为例,当Cache的管理逻辑收到处理器核心的访问请求时,管理逻辑根据Tag条目判断本次访问请求是否命中Cache,如果命中Cache,则直接从Cache数据阵列中读取响应数据返回给处理器核心;如果不命中Cache,则发送Cache行读取操作从主存中获取最新数据返回处理器核心,并将获取的最新数据更新至Cache中。再以写请求为例,由于Cache中保存的字块是主存中相应字块的一个副本,如果程序执行过程中要对该字块的某个单元进行写操作,就会遇到如何保持Cache与主存的一致性问题。通常有两种写入方式:一种方式是暂时只向Cache写入,并用标志加以说明,直到经过修改的字块被从Cache中淘汰时才一次写入主存,称为写回法(Write-Back);另一种方式是每次写入Cache时也同时写入主存,使Cache和主存保持一致,称为直达法(Write-Through)。
当前微处理器的发展趋势是在片内集成更多的计算核心,若为每个计算核心均提供完整的Cache结构,则硬件成本较高,且由于Cache的管理逻辑设计复杂,增加了微处理器物理实现的难度;同时程序不能对Cache内数据进行显式的高效管理,使得数据的使用效率降低。
针对上述问题,当前部分微处理器采用了局部存储器结构为计算核心提供数据,局部存储器不需要Cache的管理逻辑,由程序指令直接对局部存储器进行显式管理,用来存储计算核心频繁使用的数据,即将其视为寄存器空间的补充和扩展。程序对片外主存空间和片内局部存储器空间访问时可通过不同操作或不同地址空间标识来进行。硬件逻辑可支持程序对片外主存和片内局部存储器之间进行批量数据传输,以实现对主存数据的高效访问。局部存储器不包含复杂的Cache管理逻辑,简化硬件物理实现,降低了片上数据的访问延迟,实现程序对数据的显示管理,但同时增加了编程难度,降低了微处理器的易编程性和适应性。
不同类型的应用对Cache/局部存储器两种结构的适应性不同,部分应用对Cache的适应性较好,其他则对局部存储器的适应性较好,甚至同一应用内不同程序段各自适应Cache和局部存储器这两者不同的结构。因此,若片上高速存储同时支持Cache和局部存储器两种结构,处理器对应用的适应性会获得很大提高。现有的Cache和局部存储器共存设计方面,通常采用可配置Cache/局部存储器,其Cache数据阵列和局部存储器分区使用片上高速存储区,假设片上高速存储区为64KB,则可实现16KB/48KB两档划分。其中Cache的设计与传统相类似,由硬件对Cache条目进行管理,但Cache条目必须按最大条目数(对应48K容量)进行设置,而在仅支持16KB的Cache容量时,Cache Tag条目会存在部分闲置。
更多关于Cache和局部存储器的技术方案可以参考公开号为CN1617095A公开的高速缓存系统与管理高速缓存的方法,但同样没有解决上述问题。
发明内容
本发明解决的问题是简化微处理器,尤其是多核处理器和众核处理器芯片上高速存储的逻辑设计,提高微处理器的易编程性和适应性。
为解决上述问题,本发明实施例提供了一种高速存储区的访问方法,所述高速存储区包括局部存储器,所述局部存储器存储有Cache数据和描述符,所述描述符包括Cache数据在主存首地址、Cache数据在局部存储器首地址、Cache行数据量、Cache行条目总数、Cache行有效位和不命中入口,所述访问方法包括:
在处理器核心请求访问主存时,基于所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache;
若所述请求主存地址命中Cache,则基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址,并基于所述局部存储器地址加载Cache数据;
若所述请求主存地址未命中Cache,则基于所述不命中入口跳转至不命中处理例程。
可选地,还包括:在处理器核心请求访问主存时,将所述描述符从所述局部存储器中加载至寄存器中。
可选地,基于所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache包括:
将所述请求主存地址与所述Cache数据在主存首地址进行对比,以确认所述请求主存地址是否位于所述Cache对应的主存地址范围内;
若所述请求主存地址位于所述Cache对应的主存地址范围内,则基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;
根据所述Cache行条目号对应的Cache行有效位是否有效确定所述请求主存地址是否命中Cache。
可选地,基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址包括:基于与所述请求主存地址对应的Cache行条目号和Cache行数据量确定所述请求主存地址在局部存储器中的偏移地址;根据所述Cache数据在局部存储器首地址以及所述偏移地址确定与所述请求主存地址对应的局部存储器地址。
可选地,所述不命中处理例程包括:基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;基于与所述请求主存地址对应的Cache行条目号和Cache行数据量确定所述请求主存地址对应Cache行在局部存储器中的起始偏移地址;根据所述Cache数据在局部存储器首地址以及所述起始偏移地址确定与所述请求主存地址对应Cache行在局部存储器的起始地址;基于与所述请求主存地址对应Cache行在局部存储器的起始地址,将主存中对应于所述请求主存地址对应Cache行数据装填至所述局部存储器中;在数据装填完成后,修改所述描述符中的Cache行有效位。
可选地,在数据装填完成后,还包括修改所述描述符中的Cache数据在主存首地址。
可选地,所述描述符还包括装填结束标记;在数据装填完成后,还包括修改所述描述符中的装填结束标记。
本发明实施例还提供了一种高速存储区的访问装置,所述高速存储区包括局部存储器,所述局部存储器存储有Cache数据和描述符,所述描述符包括Cache数据在主存首地址、Cache数据在局部存储器首地址、Cache行数据量、Cache行条目总数、Cache行有效位和不命中入口,所述访问装置包括:
判断单元,用于在处理器核心请求访问主存时,基于所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache;
命中处理单元,用于在所述判断单元的判断结果为是,则基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址,并基于所述局部存储器地址加载Cache数据;
不命中处理单元,用于在所述判断单元的判断结果为否,则基于所述不命中入口跳转至不命中处理例程。
可选地,还包括载入单元,用于在处理器核心请求访问主存时,将所述描述符从所述局部存储器中加载至寄存器中。
可选地,所述判断单元包括:地址判断单元,用于将所述请求主存地址与所述Cache数据在主存首地址进行对比,以确认所述请求主存地址是否位于所述Cache对应的主存地址范围内;
第一行确定单元,用于若所述地址判断单元确认所述请求主存地址位于所述Cache对应的主存地址范围内,则基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;
命中判断单元,用于根据所述第一行确定单元确定的所述Cache行条目号对应的Cache行有效位是否有效确定所述请求主存地址是否命中Cache。
可选地,所述命中处理单元包括:第一偏移地址确定单元,用于基于与所述请求主存地址对应的Cache行条目号和Cache行数据量确定所述请求主存地址在局部存储器中的偏移地址;第一地址确定单元,用于根据所述第一偏移地址确定单元确定的偏移地址以及所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址。
可选地,所述不命中处理单元包括:第二行确定单元,用于基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;第二偏移地址确定单元,用于根据所述第二行确定单元确定的与所述请求主存地址对应的Cache行条目号和所述Cache行数据量确定所述请求主存地址对应Cache行在局部存储器中的起始偏移地址;第二地址确定单元,用于根据所述第二偏移地址确定单元确定的起始偏移地址以及所述Cache数据在局部存储器首地址确定与所述请求主存地址对应Cache行在局部存储器的起始地址;数据储存单元,用于根据所述第二地址确定单元确定的与所述请求主存地址对应Cache行在局部存储器的起始地址,将主存中对应于所述请求主存地址对应Cache行的数据装填至所述局部存储器中;修改单元,用于在所述数据存储单元将数据装填完成后,修改所述描述符中的Cache行有效位。
可选地,所述修改单元还用于在数据装填完成后,修改所述描述符中的Cache数据在主存首地址。
可选地,所述描述符还包括装填结束标记;所述修改单元还用于在数据装填完成后,修改所述描述符中的装填结束标记。
与现有技术相比,本发明技术方案具有以下有益效果:
在高速缓存区内为每个Cache设置唯一的描述符,且同一个Cache内所有的Cache行条目均对应唯一的描述符。其中所述描述符包括Cache数据在主存首地址、Cache数据在局部存储器首地址、Cache行数据量、Cache行条目总数、Cache行有效位和不命中入口。在高速存储区上通过局部存储器保存Cache数据和描述符,无需额外的硬件逻辑进行存储。
处理器核心请求访问主存时,基于所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache;若所述请求主存地址命中Cache,则基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址,并基于所述局部存储器地址加载Cache数据;若所述请求主存地址未命中Cache,则基于所述不命中入口跳转至不命中处理例程。本技术方案中Cache查询与命中判断、地址转换以及不命中Cache时跳转至不命中处理例程都由硬件完成。
在不命中处理例程中,包括基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;基于与所述请求主存地址对应的Cache行条目号和Cache行数据量确定所述请求主存地址对应Cache行在局部存储器中的起始偏移地址;根据所述Cache数据在局部存储器首地址以及所述起始偏移地址确定与所述请求主存地址对应Cache行在局部存储器的起始地址;基于与所述请求主存地址对应Cache行在局部存储器的起始地址,将主存中对应于所述请求主存地址对应Cache行的数据装填至所述局部存储器中;在数据装填完成后,修改所述描述符中的Cache行有效位。本技术方案中Cache数据的装入与淘汰都是通过软件来实现,并且淘汰与替换的策略可以根据需要自行设定,从而实现了通过软硬件协同实现现有的Cahce功能,并且与现有的Cache相比,简化了高速存储区的逻辑设计开销,提高了处理器的易编程性和适应性。
附图说明
图1是本发明的一种高速存储区的访问方法的具体实施方式的流程示意图;
图2是本发明实施例的一种高速存储区的访问方法的执行流程示意图;
图3是本发明的一种高速存储区的访问装置的具体实施例的结构示意图。
具体实施方式
本领域技术人员知晓,处理器芯片上的Cache一般由高速SRAM(StaticRAM静态随机存取存储器)构成。引入Cache是为减小或消除处理器与主存之间的速度差异对系统性能带来的影响。Cache通常保存着一份主存中部分内容的副本,该内容副本是最近曾被处理器使用过的数据和指令程序。Cache的有效性是利用了程序对主存的访问在时间上和空间上所具有的局部区域性,即对大多数程序来说,在某个时间片内会集中重复地访问某一个特定的区域。例如,PUSH/POP指令的操作都是在栈顶顺序执行,变量会重复使用,以及子程序会反复调用等。因此,如果针对某个特定的时间段内,用连接在局部总线上的Cache代替低速大容量的主存,作为处理器集中重复访问的区域,系统的性能就会明显提高。
计算机系统在开机或复位时,Cache中的数据和Tag条目信息是清空的。当处理器送出一组地址去访问主存时,访问的主存的内容才被同时复制到Cache中。此后,每当处理器核心访问主存时,Cache都会检查处理器核心送出的地址,判断处理器核心要访问的地址单元是否在Cache中。若在,称为Cache命中,处理器核心可用直接在Cache中找到数据和程序指令进行读/写操作;若不在,则称为Cache未命中,这时就需要从主存中访问,并将主存中与本次访问相邻近的地址范围内的数据和程序指令复制到Cache中,以便下次访问。
本技术方案的改进之处在于,处理器芯片上的高速存储区内节省了Cache硬件设计开销,并对所有Cache行条目设置唯一的描述符,通过局部存储器保存Cache数据和描述符,无需额外的硬件逻辑进行存储。在处理器核心请求访问主存时,由硬件逻辑提供Cache查询与命中判断、地址转换、不命中时自动跳转功能;在不命中例程中,通过软件管理Cache数据块的装入与淘汰,从而实现了通过软硬件协同实现现有的Cahce功能,并且与现有的Cache相比,简化了高速存储区的逻辑设计开销;与现有的局部存储器相比,提高了处理器的易编程性和适应性。
如图1所示的是本发明实施例提供的一种高速存储区的访问方法的具体实施方式的流程示意图。参考图1,所述访问方法包括:
步骤S1:在处理器核心请求访问主存时,基于所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache;
步骤S2:若所述请求主存地址命中Cache,则基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址,并基于所述局部存储器地址加载Cache数据;
步骤S3:若所述请求主存地址未命中Cache,则基于所述不命中入口跳转至不命中处理例程。
下面结合图2所示的本发明的一种高速存储区的访问方法的执行流程示意图详细描述图1所示的高速存储区的访问方法的具体实施方式。
与现有技术不同的是,在本发明实施例中,在高速缓存区内为每个Cache设置了唯一的描述符,同一Cache内所有的Cache行条目均对应这唯一的描述符。所述描述符不仅包含了现有Cache中的Tag条目信息,还包括其他域。具体地,所述描述符包括Cache数据在主存首地址、Cache数据在局部存储器首地址、Cache行数据量、Cache行条目总数、Cache行有效位、不命中入口以及装填结束标记。如表1所示的所述描述符的典型组成格式:
表1
具体地,其中,所述Cache数据在主存首地址表示所述局部存储器中存储首行Cache数据的局部存储器地址(即数据起始地址)对应于主存中的地址;所述Cache数据在局部存储器首地址表示首行Cache数据对应于局部存储器的地址(即数据起始地址);所述Cache行数据量表示所述局部存储器中每行Cache数据对应存储的数据量;所述Cache行条目总数表示所述局部存储器中所有Cache行条目的数目;所述Cache行有效位表示所述Cache行条目的标记是否有效,通常“0”表示无效、“1”表示有效,其位宽由所述高速存储区内支持的最大Cache行条目数决定,每位对应一个Cache行条目;所述不命中入口表示当请求主存地址未命中Cache时的跳转目标地址,或者说是不命中处理例程起始地址;所述装填结束标记表示在不命中处理例程中标示数据在主存和局部存储器之间的传输是否完成,通常以“0”表示未完成,以“1”表示已完成。
如图2所示,所述描述符存储于局部存储器空间中,所述Cache数据存储于从数据起始地址开始的连续空间内,所述描述符与所述Cache数据两者分离存储。然后,在处理器核心请求访问主存时,首先根据选定的Cache,将与选定的Cache对应的所述描述符从所述局部存储器中加载至寄存器中。具体地,处理器核心可以通过载入指令将所述描述符从局部存储器中加载至寄存器中。本领域技术人员理解,寄存器位于微处理器芯片内的最顶端,是微处理器核心获取数据、指令、地址等最快速的途径。因此,将所述描述符加载至寄存器中使得访问装置能够更快捷地解析描述符中的信息。
接着,在处理器核心请求访问主存时,将通过寄存器送出地址(即请求主存地址)去访问主存。所述访问装置将基于所述描述符中的所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache(即步骤S1)。
在本实施例中,所述步骤S1具体包括:
(1)将所述请求主存地址与所述Cache数据在主存首地址进行对比,以确认所述请求主存地址是否位于所述Cache对应的主存地址范围内。具体地,所述请求主存地址通常包括高位地址(块地址)和低位地址(块内地址),例如,所述请求主存地址为00010100,其中,0001为高位地址,0100为低位地址。本实施例中,所述局部存储器存储的Cache数据通常为主存中的一块连续地址内的数据,例如从00010000到0001FFFF这段地址。由于本实施例中,主存地址是直接映射Cache地址,因此若所述请求主存地址的高位地址与所述Cache数据在主存首地址相等,则可以确定所述请求主存地址位于所述Cache对应的主存地址范围内。反之,若所述请求主存地址的高位地址与所述Cache数据在主存首地址不相等,则可以确定所述请求主存地址不在所述Cache对应的主存地址范围内。
(2)若所述请求主存地址位于所述Cache对应的主存地址范围内,则基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号。具体地,根据所述Cache行数据量可以确定所述请求主存地址中对应Cache行内地址的地址位。例如,假设所述Cache行数据量为256字节,即所述请求主存地址中的最后8位地址为Cache行内地址。进一步地,再根据所述Cache行条目总数可以确定所述请求主存地址中的对应Cache行条目号的地址位。例如,假设所述Cache行条目总数为8行,那么所述请求主存地址中的最后第9-11位(000-111)对应Cache行条目号的地址位。因此,根据上述过程可以确定与所述请求主存地址对应的Cache行条目号。假设所述请求主存地址的最后第9-11位为011,则对应的Cache行条目号为第3行(起始行条目对应第0行)。
(3)根据所述Cache行条目号对应的Cache行有效位是否有效确定所述请求主存地址是否命中Cache。具体地,本实施例中,所述描述符中的Cache行有效位中依次包括所有Cache行条目的有效位,根据所述Cache行条目号可以从所述Cache行有效位中解析出与该Cache行条目号相对应的Cache行的有效位。当所述有效位为“1”则表示所述Cache行条目有效,即所述请求主存地址命中Cache;当所述有效位为“0”则表示所述Cache行无效,即所述请求主存地址没有命中Cache。
需要说明的是,执行上述步骤S1中的(1)和(2)并没有先后之分,通常处理器在判断请求主存地址是否命中Cache过程中是同时执行(1)和(2)的,然后再根据(1)和(2)的处理结果进一步执行(3)。
根据上述步骤S1的判断结果,若所述请求主存地址命中Cache,则基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址,并基于所述局部存储器地址加载Cache数据(即执行步骤S2)。
在本实施例中,所述步骤S2包括:
(1)基于与所述请求主存地址对应的Cache行条目号和所述Cache行数据量确定所述请求主存地址在局部存储器中的偏移地址。具体地,本领域技术人员知晓,通常内存的1个地址存储的数据量为1个字节。由于所述Cache行数据量是确定的,假设所述Cache行数据量为S字节,则Cache行条目1对应的偏移地址为1*S、Cache行条目2对应的偏移地址为2*S,以此类推,Cache行条目n对应的偏移地址为n*S。需要说明的是,Cache行条目0对应的偏移地址为局部存储器中存储Cache数据的起始地址,即Cache行条目0对应的偏移地址为0。
(2)根据所述Cache数据在局部存储器首地址以及所述偏移地址确定与所述请求主存地址对应的局部存储器地址。具体地,根据所述描述符中的所述Cache数据在局部存储器首地址(假设为BA L),作为局部存储器中存储Cache数据的起始地址;那么,所述请求主存地址对应的局部存储器地址为所述起始地址与偏移地址之和,例如,若所述请求主存地址在局部存储器中的偏移地址为1*S,则所述请求主存地址对应的局部存储器地址为BA L+1*S;若所述请求主存地址在局部存储器中的偏移地址为2*S,则所述请求主存地址对应的局部存储器地址为BA L+2*S,以此类推,若所述请求主存地址在局部存储器中的偏移地址为n*S,则所述请求主存地址对应的局部存储器地址为BA L+n*S。
本领域技术人员理解,若所述请求主存地址命中Cache,即表示处理器核心请求访问主存(即处理器执行程序所需的变量)已存储在局部存储器中,那么在确定了所述请求主存地址对应的局部存储器地址后,将所述局部存储器地址加载至目标寄存器中;接下来,根据顺序下条指令PC值继续执行程序,后续程序中可以通过装载指令(即Load指令)将该数据从局部存储器中加载至寄存器中。其中所述指令PC值通常是一个16位或者32位或者更多位数的计数器,用于存放和指示下条要执行的指令的地址,处理器核心根据所述PC值找到下条执行指令的地址以继续执行程序。
根据上述步骤S1的判断结果,若所述请求主存地址未命中Cache,则基于所述不命中入口跳转至不命中处理例程。(即执行步骤S3)。
在本实施例中,所述步骤S3中的不命中处理例程包括:在所述不命中处理例程中,首先需要将顺序下条指令的PC值保存至目标寄存器中,这样当结束所述不命中处理例程后,处理器核心将根据目标寄存器中保存的所述下条指令的PC值继续执行程序。
进一步地,在不命中处理例程中,包括:
(1)基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号。具体地,这里与上述步骤S1中的(1)相类似,其具体过程可以参照上述实施例的描述,在此不再赘述。
(2)基于与所述请求主存地址对应的Cache行条目号和所述Cache行数据量确定所述请求主存地址对应Cache行在局部存储器中的起始偏移地址。
(3)根据所述Cache数据在局部存储器首地址以及所述起始偏移地址确定与所述请求主存地址对应Cache行的局部存储器起始地址。
具体地,上述(2)和(3)是确定从主存中将所述请求主存地址对应Cache行的数据装入局部存储器中的具体位置,即确定与所述请求主存地址对应Cache行在局部存储器的起始地址。其具体过程可以参考上述步骤S2的实施例,在此不再赘述。
(4)基于与所述请求主存地址对应Cache行的局部存储器起始地址,将主存中所述请求主存地址对应Cache行的数据装填至所述局部存储器中。具体地,在本实施例中,通常可以通过直接存储访问(Direct Memory Access,DMA)从主存中将新的Cache行数据装填至所述局部存储器中。本领域技术人员知晓,所述DMA是一种不需要通过微处理器操作,存储器之间(这里指局部存储器和主存)直接进行数据传输的技术。
(5)在数据装填完成后,修改所述描述符中的Cache行有效位。具体地说,在本实施例中,所述描述符中还包括装填结束标记,在装填过程中,所述装填结束标记为“0”,即表示当前主存和局部存储器之间的数据传输尚未完成;而当所述主存和局部存储器之间的数据传输完成后,直接存储访问将会修改所述装填结束标记,例如将“0”修改为“1”,即表示当前主存和局部存储器之间的数据传输已完成。然后,处理器核心将再修改所述描述符中的Cache行有效位,具体地,需要将与所述请求主存地址相对应Cache行条目的Cache行有效位修改为“1”,即表示在装填完成后该Cache行数据是有效的,在处理器核心继续执行程序需要访问该Cache行数据时,可以命中Cache。
需要说明的是,在数据装填完成后,还包括修改所述描述符中的Cache数据在主存首地址。具体地说,只要当前的Cache数据在主存首地址与原有Cache数据在主存首地址不相同,则均需修改Cache行首地址。进一步地,当Cache数据在主存首地址改变后,原Cache中的其它Cache行有效位均需变化为无效了,例如可通过修改Cache行有效位设置其无效。
在其他实施例中,所述不命中处理例程中,在确定与所述请求主存地址对应的Cache行条目号后,可以确定与所述Cache行条目号对应的Cache行是否已存储有Cache数据,若该Cahce行没有存储Cache数据,则根据(2)和(3)确定与所述请求主存地址对应的局部存储器地址,并直接将主存中与所述请求主存地址相对应的新的Cache数据加载至局部存储器中。若该Cache行已存储有Cache数据,则可以遵循一定的淘汰规则确定是否需要淘汰现有的Cache数据,以空出该Cache行存储从主存中加载的与所述请求主存地址相对应的新的Cache行数据。通常较佳的淘汰规则是使得被替换的Cache行中的Cache数据在接下来一段时间内估计最少使用的Cache数据,其中具体的淘汰规则可以根据现有的替换算法来确定,在此不再赘述。
在所述不命中处理例程结束后,则处理器核心请求访问主存的数据变量也已存储在局部存储器中,那么在确定了所述请求主存地址对应的局部存储器地址后,将所述局部存储器地址加载至目标寄存器中;接下来,根据顺序下条指令PC值继续执行程序,后续程序中可以通过装载指令将该数据从局部存储器中加载至寄存器中。
基于上述高速存储区的访问方法,本发明实施例还提供了一种高速存储区的访问装置,所述高速存储区包括局部存储器,所述局部存储器存储有Cache数据和描述符,所述描述符包括Cache数据在主存首地址、Cache数据在局部存储器首地址、Cache行数据量、Cache行条目总数、Cache行有效位和不命中入口。如图3所示的是本发明的一种高速存储区的访问装置的具体实施例的结构示意图。参考图3,所述访问装置1包括:判断单元11、命中处理单元12以及不命中处理单元13。
具体地,其中,所述判断单元11用于在处理器核心请求访问主存时,基于所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache;所述命中处理单元12用于若所述请求主存地址命中Cache,则基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址,并基于所述局部存储器地址加载Cache数据;所述不命中处理单元13用于若所述请求主存地址未命中Cache,则基于所述不命中入口跳转至不命中处理例程。
需要说明的是,所述访问装置1还包括载入单元(未示出),用于在处理器核心请求访问主存时,将所述描述符从所述局部存储器中加载至寄存器中。
在具体实施例中,所述判断单元11包括:地址判断单元111,用于将所述请求主存地址与所述Cache数据在主存首地址进行对比,以确认所述请求主存地址是否位于所述Cache对应的主存地址范围内;第一行确定单元112,用于若所述地址判断单元111确认所述请求主存地址位于所述Cache对应的主存地址范围内,则基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;命中判断单元113,用于根据所述第一行确定单元112确定的所述Cache行条目号对应的Cache行有效位是否有效确定所述请求主存地址是否命中Cache。
所述命中处理单元12包括:第一偏移地址确定单元121,用于基于与所述请求主存地址对应的Cache行条目号和所述Cache行数据量确定所述请求主存地址在局部存储器中的偏移地址;第一地址确定单元122,用于根据所述第一偏移地址确定单元121确定的偏移地址以及所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址。
所述不命中处理单元13包括:第二行确定单元131,用于基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;第二偏移地址确定单元132,用于根据所述第二行确定单元131确定的与所述请求主存地址对应的Cache行条目号和所述Cache行数据量确定所述请求主存地址对应Cache行在局部存储器的起始偏移地址;第二地址确定单元133,用于根据所述第二偏移地址确定单元132确定的起始偏移地址以及所述Cache数据在局部存储器首地址确定与所述请求主存地址对应Cache行在局部存储器的起始地址;数据储存单元134,用于根据所述第二地址确定单元133确定的与所述请求主存地址对应Cache行在局部存储器的起始地址,将主存中对应于所述请求主存地址对应Cache行的数据装填至所述局部存储器中;修改单元135,用于在所述数据存储单元134将数据装填完成后,修改所述描述符中的Cache行有效位。
进一步地,其中所述修改单元135在数据装填完成后,修改所述描述符中的Cache数据在主存首地址。所述描述符还包括装填结束标记;所述修改单元135还用于在数据装填完成后,修改所述描述符中的装填结束标记。
需要说明的是,在其他实施例中,由于所述第一行确定单元112和所述第二行确定单元131都是基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号,因此所述不命中处理单元13中的所述第二行确定单元131可以由所述第一行确定单元112代替。换句话说,所述第一行确定单元112和所述第二行确定单元131的作用可以通过一个行确定单元实现。
综上所述,本技术方案针对每个Cache中所有的Cache行条目设置在唯一的描述符,其中所述描述符包括Cache数据在主存首地址、Cache数据在局部存储器首地址、Cache行数据量、Cache行条目总数、Cache行有效位和不命中入口。在高速存储区上通过局部存储器保存单个或多个Cahe的Cache数据和描述符,无需额外的硬件逻辑进行存储。
处理器核心请求访问主存时,基于选定Cache的所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache;若所述请求主存地址命中Cache,则基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址,并基于所述局部存储器地址加载Cache数据;若所述请求主存地址未命中Cache,则基于所述不命中入口跳转至不命中处理例程。本技术方案中Cache查询与命中判断、地址转换以及不命中Cache时跳转至不命中处理例程都由硬件完成。
在不命中处理例程中,包括基于选定Cache的所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;基于与所述请求主存地址对应的Cache行条目号和Cache行数据量确定所述请求主存地址对应Cache行在局部存储器的起始偏移地址;根据所述Cache数据在局部存储器首地址以及所述起始偏移地址确定与所述请求主存地址对应Cache行在局部存储器的起始地址;基于与所述请求主存地址对应Cache行在局部存储器的起始地址,将主存中所述请求主存地址对应Cache行的数据装填至所述局部存储器中;在数据装填完成后,修改所述描述符中的Cache行有效位。本技术方案中Cache数据的装入与淘汰都是通过软件来实现,并且淘汰与替换的策略可以根据需要自行设定,从而实现了通过软硬件协同实现现有的Cahce功能,并且与现有的Cache相比,简化了高速存储区的逻辑设计开销;与现有的局部存储器相比,提高了处理器的易编程性和适应性。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。
Claims (14)
1.一种高速存储区的访问方法,所述高速存储区包括局部存储器,其特征在于,所述局部存储器存储有Cache数据和描述符,所述描述符包括Cache数据在主存首地址、Cache数据在局部存储器首地址、Cache行数据量、Cache行条目总数、Cache行有效位和不命中入口,所述访问方法包括:
在处理器核心请求访问主存时,基于所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache;
若所述请求主存地址命中Cache,则基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址,并基于所述局部存储器地址加载Cache数据;
若所述请求主存地址未命中Cache,则基于所述不命中入口跳转至不命中处理例程。
2.根据权利要求1所述的高速存储区的访问方法,其特征在于,还包括:在处理器核心请求访问主存时,将所述描述符从所述局部存储器中加载至寄存器中。
3.根据权利要求1所述高速存储区的访问方法,其特征在于,基于所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache包括:
将所述请求主存地址与所述Cache数据在主存首地址进行对比,以确认所述请求主存地址是否位于所述Cache对应的主存地址范围内;
若所述请求主存地址位于所述Cache对应的主存地址范围内,则基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;
根据所述Cache行条目号对应的Cache行有效位是否有效确定所述请求主存地址是否命中Cache。
4.根据权利要求3所述的高速存储区的访问方法,其特征在于,基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址包括:
基于与所述请求主存地址对应的Cache行条目号和所述Cache行数据量确定所述请求主存地址在局部存储器中的偏移地址;
根据所述Cache数据在局部存储器首地址以及所述偏移地址确定与所述请求主存地址对应的局部存储器地址。
5.根据权利要求1所述的高速存储区的访问方法,其特征在于,所述不命中处理例程包括:
基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;
基于与所述请求主存地址对应的Cache行条目号和所述Cache行数据量确定所述请求主存地址在局部存储器中对应Cache行的起始偏移地址;
根据所述Cache数据在局部存储器首地址以及所述起始偏移地址确定与所述请求主存地址对应Cache行的局部存储器起始地址;
基于与所述请求主存地址对应Cache行的局部存储器起始地址,将主存中对应于所述请求主存地址对应Cache行的数据装填至所述局部存储器中;
在数据装填完成后,修改所述描述符中的Cache行有效位。
6.根据权利要求5所述的高速存储区的访问方法,其特征在于,在数据装填完成后,还包括修改所述描述符中的Cache数据在主存首地址。
7.根据权利要求5所述的高速存储区的访问方法,其特征在于,所述描述符还包括装填结束标记;在数据装填完成后还包括修改所述描述符中的装填结束标记。
8.一种高速存储区的访问装置,所述高速存储区包括局部存储器,其特征在于,所述局部存储器存储有Cache数据和描述符,所述描述符包括Cache数据在主存首地址、Cache数据在局部存储器首地址、Cache行数据量、Cache行条目总数、Cache行有效位和不命中入口,所述访问装置包括:
判断单元,用于在处理器核心请求访问主存时,基于所述Cache数据在主存首地址、Cache行数据量、Cache行条目总数和Cache行有效位判断请求主存地址是否命中Cache;
命中处理单元,用于在所述判断单元的判断结果为是,则基于所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址,并基于所述局部存储器地址加载Cache数据;
不命中处理单元,用于在所述判断单元的判断结果为否,则基于所述不命中入口跳转至不命中处理例程。
9.根据权利要求8所述的高速存储区的访问装置,其特征在于,还包括载入单元,用于在处理器核心请求访问主存时,将所述描述符从所述局部存储器中加载至寄存器中。
10.根据权利要求8所述的高速存储区的访问装置,其特征在于,所述判断单元包括:
地址判断单元,用于将所述请求主存地址与所述Cache数据在主存首地址进行对比,以确认所述请求主存地址是否位于所述Cache对应的主存地址范围内;
第一行确定单元,用于若所述地址判断单元确认所述请求主存地址位于所述Cache对应的主存地址范围内,则基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;
命中判断单元,用于根据所述第一行确定单元确定的所述Cache行条目号对应的Cache行有效位是否有效确定所述请求主存地址是否命中Cache。
11.根据权利要求10所述的高速存储区的访问装置,其特征在于,所述命中处理单元包括:
第一偏移地址确定单元,用于基于与所述请求主存地址对应的Cache行条目号和所述Cache行数据量确定所述请求主存地址在局部存储器中的偏移地址;
第一地址确定单元,用于根据所述第一偏移地址确定单元确定的偏移地址以及所述Cache数据在局部存储器首地址确定与所述请求主存地址对应的局部存储器地址。
12.根据权利要求8所述的高速存储区的访问装置,其特征在于,所述不命中处理单元包括:
第二行确定单元,用于基于所述Cache行数据量和Cache行条目总数,确定与所述请求主存地址对应的Cache行条目号;
第二偏移地址确定单元,用于根据所述第二行确定单元确定的与所述请求主存地址对应的Cache行条目号和所述Cache行数据量确定所述请求主存地址对应Cache行在局部存储器中的起始偏移地址;
第二地址确定单元,用于根据所述第二偏移地址确定单元确定的起始偏移地址以及所述Cache数据在局部存储器首地址确定与所述请求主存地址对应Cache行在局部存储器的起始地址;
数据储存单元,用于根据所述第二地址确定单元确定的与所述请求主存地址对应Cache行在局部存储器的起始地址,将主存中与所述请求主存地址对应Cache行的数据装填至所述局部存储器中;
修改单元,用于在所述数据存储单元将数据装填完成后,修改所述描述符中的Cache行有效位。
13.根据权利要求12所述的高速存储区的访问装置,其特征在于,所述修改单元还用于在数据装填完成后,修改所述描述符中的Cache数据在主存首地址。
14.根据权利要求12所述的高速存储区的访问装置,其特征在于,所述描述符还包括装填结束标记;所述修改单元还用于在数据装填完成后修改所述描述符中的装填结束标记。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210107339.2A CN103377141B (zh) | 2012-04-12 | 2012-04-12 | 高速存储区的访问方法以及访问装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210107339.2A CN103377141B (zh) | 2012-04-12 | 2012-04-12 | 高速存储区的访问方法以及访问装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103377141A true CN103377141A (zh) | 2013-10-30 |
CN103377141B CN103377141B (zh) | 2016-10-12 |
Family
ID=49462285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210107339.2A Active CN103377141B (zh) | 2012-04-12 | 2012-04-12 | 高速存储区的访问方法以及访问装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103377141B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229546A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存的模拟方法及装置 |
CN109710544A (zh) * | 2017-10-26 | 2019-05-03 | 杭州华为数字技术有限公司 | 内存访问方法、计算机系统以及处理装置 |
CN110688329A (zh) * | 2019-09-06 | 2020-01-14 | 无锡江南计算技术研究所 | 一种可同时支持多套Cache数据私有段动态设置的方法 |
CN110716887A (zh) * | 2019-09-11 | 2020-01-21 | 无锡江南计算技术研究所 | 一种支持写暗示的硬件高速缓存数据装入方法 |
CN110727464A (zh) * | 2019-09-11 | 2020-01-24 | 无锡江南计算技术研究所 | 一种针对访存空间独立的多核处理器的信息处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108478A1 (en) * | 2003-11-13 | 2005-05-19 | International Business Machines Corporation | Dynamic frequent instruction line cache |
CN1989492A (zh) * | 2004-09-30 | 2007-06-27 | 国际商业机器公司 | 处理器资源虚拟化的系统和方法 |
CN102063264A (zh) * | 2009-11-18 | 2011-05-18 | 成都市华为赛门铁克科技有限公司 | 一种处理数据的方法、设备及系统 |
-
2012
- 2012-04-12 CN CN201210107339.2A patent/CN103377141B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108478A1 (en) * | 2003-11-13 | 2005-05-19 | International Business Machines Corporation | Dynamic frequent instruction line cache |
CN1989492A (zh) * | 2004-09-30 | 2007-06-27 | 国际商业机器公司 | 处理器资源虚拟化的系统和方法 |
CN102063264A (zh) * | 2009-11-18 | 2011-05-18 | 成都市华为赛门铁克科技有限公司 | 一种处理数据的方法、设备及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229546A (zh) * | 2016-03-23 | 2017-10-03 | 上海复旦微电子集团股份有限公司 | 缓存的模拟方法及装置 |
CN109710544A (zh) * | 2017-10-26 | 2019-05-03 | 杭州华为数字技术有限公司 | 内存访问方法、计算机系统以及处理装置 |
CN109710544B (zh) * | 2017-10-26 | 2021-02-09 | 华为技术有限公司 | 内存访问方法、计算机系统以及处理装置 |
CN110688329A (zh) * | 2019-09-06 | 2020-01-14 | 无锡江南计算技术研究所 | 一种可同时支持多套Cache数据私有段动态设置的方法 |
CN110716887A (zh) * | 2019-09-11 | 2020-01-21 | 无锡江南计算技术研究所 | 一种支持写暗示的硬件高速缓存数据装入方法 |
CN110727464A (zh) * | 2019-09-11 | 2020-01-24 | 无锡江南计算技术研究所 | 一种针对访存空间独立的多核处理器的信息处理方法 |
CN110716887B (zh) * | 2019-09-11 | 2021-08-10 | 无锡江南计算技术研究所 | 一种支持写暗示的硬件高速缓存数据装入方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103377141B (zh) | 2016-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2115593B1 (en) | Hierarchical immutable content-addressable memory processor | |
CN102792285B (zh) | 用于处理数据的装置和方法 | |
US8095736B2 (en) | Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures | |
CN102754086B (zh) | 页面大小可变的虚拟内存系统 | |
CN109582214B (zh) | 数据访问方法以及计算机系统 | |
US6782453B2 (en) | Storing data in memory | |
US9792221B2 (en) | System and method for improving performance of read/write operations from a persistent memory device | |
JP6088951B2 (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
CN103019955B (zh) | 基于pcram主存应用的内存管理方法 | |
CN102411544A (zh) | 管理对于非易失性半导体存储器的存取的存储器管理装置及方法 | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN109952565B (zh) | 内存访问技术 | |
CN107818052A (zh) | 内存访问方法及装置 | |
US9990299B2 (en) | Cache system and method | |
CN102662869A (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
CN103377141A (zh) | 高速存储区的访问方法以及访问装置 | |
CN108959113A (zh) | 用于闪存感知堆存储器管理的方法和系统 | |
CN115168248B (zh) | 支持simt架构的高速缓冲存储器及相应处理器 | |
CN101008922A (zh) | 面向异构多核体系的段页式存储空间管理方法 | |
US7562204B1 (en) | Identifying and relocating relocatable kernel memory allocations in kernel non-relocatable memory | |
US8028118B2 (en) | Using an index value located on a page table to index page attributes | |
US20100257319A1 (en) | Cache system, method of controlling cache system, and information processing apparatus | |
KR102321346B1 (ko) | 대용량 ssd 장치를 위한 데이터 저널링 방법 | |
Silberschatz et al. | Operating systems | |
CN106528453B (zh) | 基于复合尺度页的页表分区管理装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |