CN113467946A - vector访存cache的一种实现方法及系统 - Google Patents
vector访存cache的一种实现方法及系统 Download PDFInfo
- Publication number
- CN113467946A CN113467946A CN202110737152.XA CN202110737152A CN113467946A CN 113467946 A CN113467946 A CN 113467946A CN 202110737152 A CN202110737152 A CN 202110737152A CN 113467946 A CN113467946 A CN 113467946A
- Authority
- CN
- China
- Prior art keywords
- way
- vector
- scala
- ways
- cache
- 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
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及处理器技术领域,具体涉及一种vector访存cache的一种实现方法及系统,包括以下步骤:S1系统初始化,配置scala和vector可用way的数量;S2在load miss或store miss或store命中了S态后,向L2请求reload数据;S3将配置的way的数量分配给scala way和vector way,判断用于scala操作或vector操作;S4使用scala操作或vector操作请求reload数据;S5根据分配给scala或vector的way存在情况,选择合适位置的way作为refill_way。最大限度的减小面积和功耗,有效提高vector操作的命中率,减小对L2需求的带宽同时可有效解决某些way利用率不高的问题。
Description
技术领域
本发明涉及处理器技术领域,具体涉及一种vector访存cache的一种实现方法及系统。
背景技术
现有技术的缺点:
(1)为vector访存类指令,单独做一套逻辑单元,面积功耗都较高
(2)复用scala访存类指令逻辑单元,vector和scala数据在D_cache中互相污染,导致cache命中率低,很多的evict操作的同时增加了对下一级cache的带宽需求
(3)D_cache的某些way利用率太低,导致cache的命中率减低。
因此可得出如下问题变得亟待解决:
(1)vector访存类指令复用scala访存类指令的逻辑单元,不用为vector单独做一套逻辑单元,最大限度的减小面积和功耗。
(2)vector指令在D_cache中分配多少个way可动态配置,当有大量的vector操作时,可适当的增加vector数据占据整个cache way的数量,能有效提高vector操作的命中率
(3)让scala和vector数据位于cache中的不同way,能有效的减少vector与scalacache的相互污染,有效提高cache命中率;也能有效的减小evict操作,从而减小对L2需求的带宽
(4)在某些情况下可能分配给vector的way虽然很少,但是使用率还是很低的情况下,通过配置vector数据能否去写scala的cache区域,和scala数据能否去写vector的cache区域,可有效解决某些way利用率不高的问题。
对此本申请提出了一种vector访存cache的一种实现方法及系统。
发明内容
针对现有技术的不足,本发明公开了一种vector访存cache的一种实现方法及系统,用于解决上述问题。
本发明通过以下技术方案予以实现:
第一方面,本发明公开一种vector访存cache的一种实现方法,包括以下步骤:
S1系统初始化,配置scala和vector可用way的数量;
S2在load miss或store miss或store命中了S态后,向L2请求reload数据;
S3将配置的way的数量分配给scala way和vector way,判断用于scala操作或vector操作;
S4使用scala操作或vector操作请求reload数据;
S5根据分配给scala或vector的way存在情况,选择合适位置的way作为refill_way。
更进一步的,所述方法中,如果所有分配给scala或vector的way均有效,但是该way无效的请情况下,则可用分配给scala或vector的请求使用。
更进一步的,所述方法中,load miss或store miss或store命中了S态后,向L2请求reload数据时包括以下步骤:
S31、load或store指令上pipeline,发生load miss或store miss或store命中了S态;
S32、向miss queue请求分配一个entry项,同时在cache中分配一个reload数据回来后回填set和way信息;
S33、miss queue向L2发出reload请求;
S34、L2向miss queue回填reload数据;
S34、miss queue将reload回来的数据写入cache,写入的地址为之前分配的setway。
更进一步的,所述方法中,如果load hit或store命中了E/M态,则不需要向L2请求reload。
更进一步的,所述方法中,所述set信息由请求的地址信息中提取,所述way信息由请求的类型是vector还是scala确定,对应set中way是否已被使用,way的分配和way的share特性确定。
更进一步的,所述方法中,如果分配给vector的way存在unvalid,则从unvalidway中选出一个way作为refill_way;
更进一步的,所述方法中,如果scala使用的way中存在unvalid的way,并且该way可用于vector,则从scala使用的way中存在unvalid的way,并且该way可用于vector的way中选出一个way作为refill_way;
更进一步的,所述方法中,其它情况则在给vector使用的way中,利用最近未使用的原则,选择一个way作为refill_way。
第二方面,本发明公开了一种vector访存cache的一种实现系统,所述系统用于实现第一方面所述的vector访存cache的一种实现方法,其特征在于,包括cache存储器,所述cache存储器内容包括V、Tag、set(=index)、cacheline、D和way。
更进一步的,所述V表明该cacheline是否有效;所述Tag是tag信息是有效地址信息;所述set(=index)是set信号,是有效地址的一部分;所述cacheline为cacheline数据信息;所述D是用来表明该cacheline是dirty还是clean的;所述way和地址信息无关,way的数据在4~16范围内。
本发明的有益效果为:
本发明vector访存类指令复用scala访存类指令的逻辑单元,不用为vector单独做一套逻辑单元,最大限度的减小面积和功耗。
本发明vector指令在D_cache中分配多少个way可动态配置,当有大量的vector操作时,可适当的增加vector数据占据整个cacheway的数量,能有效提高vector操作的命中率。
本发明让scala和vector数据位于cache中的不同way,能有效的减少vector与scala cache的相互污染,有效提高cache命中率;也能有效的减小evict操作,从而减小对L2需求的带宽。
本发明在某些情况下可能分配给vector的way虽然很少,但是使用率还是很低的情况下,通过配置vector数据能否去写scala的cache区域,和scala数据能否去写vector的cache区域,可有效解决某些way利用率不高的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种vector访存cache的一种实现方法的原理步骤图;
图2是一种vector访存cache的一种实现系统原理图;
图3是load miss或store miss或store命中了S态后,需要向L2请求reload数据的详细流程图;
图4是以vector操作cache miss后,给回填数据分配一个way信息的详细流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例公开如图1所示的一种vector访存cache的一种实现方法,包括以下步骤:
S1系统初始化,配置scala和vector可用way的数量;
S2在load miss或store miss或store命中了S态后,向L2请求reload数据;
S3将配置的way的数量分配给scala way和vector way,判断用于scala操作或vector操作;
S4使用scala操作或vector操作请求reload数据;
S5根据分配给scala或vector的way存在情况,选择合适位置的way作为refill_way。
本实施例中,如果所有分配给scala或vector的way均有效,但是该way无效的请情况下,则可用分配给scala或vector的请求使用。
本实施例中vector访存类指令复用scala访存类指令的逻辑单元,不用为vector单独做一套逻辑单元,最大限度的减小面积和功耗。
本实施例中vector指令在D_cache中分配多少个way可动态配置,当有大量的vector操作时,可适当的增加vector数据占据整个cacheway的数量,能有效提高vector操作的命中率。
实施例2
如图3所示本实施例公开load miss或store miss或store命中了S态后,需要向L2请求reload数据的详细过程:
(1)load或store指令上pipeline,发生load miss或store miss或store命中了S态(如果load hit或store命中了E/M态,则不需要向L2请求reload)
(2)向miss queue请求分配一个entry项,同时在cache中分配一个reload数据回来后回填的位置,也就是set和way信息,其中set由请求的地址信息中提取,way信息的确定则由请求的类型(是vector还是scala),对应set中way是否已被使用,way的分配和way的share特性确定
(3)miss queue向L2发出reload请求
(4)L2向miss queue回填reload数据
(5)miss queue将reload回来的数据写入cache,写入的地址为之前分配的setway。
实施例3
如图4所示本实施例以vector操作cache miss后,给回填数据分配一个way信息的详细说明,scala操作基本类似:
(1)Vector操作请求reload数据
(2)如果分配给vector的way存在unvalid,则从unvalid way中选出一个way作为refill_way
(3)如果分配给vector的way均已被使用
如果scala使用的way中存在unvalid的way,并且该way可用于vector,则从scala使用的way中存在unvalid的way,并且该way可用于vector的way中选出一个way作为refill_way
其它情况则在给vector使用的way中,利用最近未使用的原则,选择一个way作为refill_way。
实施例4
如图2所示,本实施例公开一种vector访存cache的一种实现系统,包括cache存储器,所述cache存储器内容包括V、Tag、set(=index)、cacheline、D和way。
本实施例中V:表明该cacheline是否有效。
本实施例中Tag:tag信息,也可以说是有效地址信息。
本实施例中set(=index):set信号,也是有效地址的一部分,在比较PA是否命中,都是在set一致中选出所有的way的tag信息来进行比较,而不用把整个cache的tag信息读出进行比较。
本实施例中cacheline:该cacheline数据信息。
本实施例中D:用来表明该cacheline是dirty还是clean的。
本实施例中way:way和地址信息是无关的,一般way的数据在4~16不等。
实施例5
本实施例以16个way作为例子来说明具体的实现过程,该过程中涉及的参数配置,可实现的功能:
scala可用way的数量
vector可用way的数量
分配给scala way是否可用于vector,分配给vector way是否可用于scala
具体寄存器功能如下:
way_num | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
vector_alloc | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
way_share | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
way_num:way的编号
vector_alloc:1--表明该way分配给vector,0—表明该way分配给scala
way_share:1--表明如果该set的所有分配给scala/vector的way均有效了,但是该way无效的请情况下,可用分配给scala/vector的请求使用。0—表明该way只能用于vector或scala使用
上例中:
vector_alloc=16’b1111_0000_0000_0000表明way12~way15是分配给vector使用,way0~11是分配给scala使用
way_share=16’b0011_1100_0000_0000表明way14~way15只能用于vector,way12~13在scala操作时,way0~11均已被使用,而way12~13还是无效的情况下,可用于scala操作。
way0~way9只能用于scala,在vector操作时,way12~15均已被使用,而way10~11还是无效的情况下,way10~11可用于vector操作。
综上,本发明vector访存类指令复用scala访存类指令的逻辑单元,不用为vector单独做一套逻辑单元,最大限度的减小面积和功耗。
本发明vector指令在D_cache中分配多少个way可动态配置,当有大量的vector操作时,可适当的增加vector数据占据整个cacheway的数量,能有效提高vector操作的命中率。
本发明让scala和vector数据位于cache中的不同way,能有效的减少vector与scala cache的相互污染,有效提高cache命中率;也能有效的减小evict操作,从而减小对L2需求的带宽。
本发明在某些情况下可能分配给vector的way虽然很少,但是使用率还是很低的情况下,通过配置vector数据能否去写scala的cache区域,和scala数据能否去写vector的cache区域,可有效解决某些way利用率不高的问题。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种vector访存cache的一种实现方法,其特征在于,所述方法包括以下步骤:
S1系统初始化,配置scala和vector可用way的数量;
S2在load miss或store miss或store命中了S态后,向L2请求reload数据;
S3将配置的way的数量分配给scala way和vector way,判断用于scala操作或vector操作;
S4使用scala操作或vector操作请求reload数据;
S5根据分配给scala或vector的way存在情况,选择合适位置的way作为refill_way。
2.根据权利要求1所述的vector访存cache的一种实现方法,其特征在于,所述方法中,如果所有分配给scala或vector的way均有效,但是该way无效的请情况下,则可用分配给scala或vector的请求使用。
3.根据权利要求1所述的vector访存cache的一种实现方法,其特征在于,所述方法中,load miss或store miss或store命中了S态后,向L2请求reload数据时包括以下步骤:
S31、load或store指令上pipeline,发生load miss或store miss或store命中了S态;
S32、向miss queue请求分配一个entry项,同时在cache中分配一个reload数据回来后回填set和way信息;
S33、miss queue向L2发出reload请求;
S34、L2向miss queue回填reload数据;
S34、miss queue将reload回来的数据写入cache,写入的地址为之前分配的set way。
4.根据权利要求3所述的vector访存cache的一种实现方法,其特征在于,所述方法中,如果load hit或store命中了E/M态,则不需要向L2请求reload。
5.根据权利要求3所述的vector访存cache的一种实现方法,其特征在于,所述方法中,所述set信息由请求的地址信息中提取,所述way信息由请求的类型是vector还是scala确定,对应set中way是否已被使用,way的分配和way的share特性确定。
6.根据权利要求1所述的vector访存cache的一种实现方法,其特征在于,所述方法中,如果分配给vector的way存在unvalid,则从unvalid way中选出一个way作为refill_way。
7.根据权利要求6所述的vector访存cache的一种实现方法,其特征在于,所述方法中,如果scala使用的way中存在unvalid的way,并且该way可用于vector,则从scala使用的way中存在unvalid的way,并且该way可用于vector的way中选出一个way作为refill_way。
8.根据权利要求7所述的vector访存cache的一种实现方法,其特征在于,所述方法中,其它情况则在给vector使用的way中,利用最近未使用的原则,选择一个way作为refill_way。
9.一种vector访存cache的一种实现系统,所述系统用于实现如权利要求1-8任一项所述的vector访存cache的一种实现方法,其特征在于,包括cache存储器,所述cache存储器内容包括V、Tag、set(=index)、cacheline、D和way。
10.根据权利要求9所述的vector访存cache的一种实现系统,其特征在于,所述V表明该cacheline是否有效;所述Tag是tag信息是有效地址信息;所述set(=index)是set信号,是有效地址的一部分;所述cacheline为cacheline数据信息;所述D是用来表明该cacheline是dirty还是clean的;所述way和地址信息无关,way的数据在4~16范围内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110737152.XA CN113467946A (zh) | 2021-06-30 | 2021-06-30 | vector访存cache的一种实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110737152.XA CN113467946A (zh) | 2021-06-30 | 2021-06-30 | vector访存cache的一种实现方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113467946A true CN113467946A (zh) | 2021-10-01 |
Family
ID=77876481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110737152.XA Pending CN113467946A (zh) | 2021-06-30 | 2021-06-30 | vector访存cache的一种实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467946A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860785A (zh) * | 2022-07-08 | 2022-08-05 | 深圳云豹智能有限公司 | 缓存数据处理系统、方法、计算机设备和存储介质 |
-
2021
- 2021-06-30 CN CN202110737152.XA patent/CN113467946A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114860785A (zh) * | 2022-07-08 | 2022-08-05 | 深圳云豹智能有限公司 | 缓存数据处理系统、方法、计算机设备和存储介质 |
CN114860785B (zh) * | 2022-07-08 | 2022-09-06 | 深圳云豹智能有限公司 | 缓存数据处理系统、方法、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6877067B2 (en) | Shared cache memory replacement control method and apparatus | |
US8095735B2 (en) | Memory interleave for heterogeneous computing | |
US10282299B2 (en) | Managing cache partitions based on cache usage information | |
EP0557050B1 (en) | Apparatus and method for executing processes in a multiprocessor system | |
CN100399300C (zh) | 用于数据处理的系统和方法和用于分配资源的系统和方法 | |
US9361236B2 (en) | Handling write requests for a data array | |
KR101313710B1 (ko) | 스누프 요청 캐시를 사용하는 스누프 필터링 | |
KR100190350B1 (ko) | 고성능 프레임 버퍼 및 캐쉬메모리 시스템 | |
US6430656B1 (en) | Cache and management method using combined software and hardware congruence class selectors | |
US8595425B2 (en) | Configurable cache for multiple clients | |
KR101190403B1 (ko) | 캐쉬 섹터 할당 | |
US20100325374A1 (en) | Dynamically configuring memory interleaving for locality and performance isolation | |
US7216201B2 (en) | Parallel cachelets | |
WO2000034870A1 (en) | Buffer memory management in a system having multiple execution entities | |
US20090259813A1 (en) | Multi-processor system and method of controlling the multi-processor system | |
US7721047B2 (en) | System, method and computer program product for application-level cache-mapping awareness and reallocation requests | |
US9128856B2 (en) | Selective cache fills in response to write misses | |
CN113467946A (zh) | vector访存cache的一种实现方法及系统 | |
KR100379993B1 (ko) | 컴퓨터 시스템에서 캐시 라인 교체를 관리하기 위한 방법및 장치 | |
US8266379B2 (en) | Multithreaded processor with multiple caches | |
CN113138851B (zh) | 一种数据管理方法、相关装置及系统 | |
WO2013032437A1 (en) | Programmably partitioning caches | |
US9880778B2 (en) | Memory devices and methods | |
US20230090341A1 (en) | Method and system for direct memory access | |
US20110320730A1 (en) | Non-blocking data move design |
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 |