CN111813451B - 一种cpu数据读取装置及方法 - Google Patents

一种cpu数据读取装置及方法 Download PDF

Info

Publication number
CN111813451B
CN111813451B CN202010504687.8A CN202010504687A CN111813451B CN 111813451 B CN111813451 B CN 111813451B CN 202010504687 A CN202010504687 A CN 202010504687A CN 111813451 B CN111813451 B CN 111813451B
Authority
CN
China
Prior art keywords
address
cpu
cache
data
select
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
CN202010504687.8A
Other languages
English (en)
Other versions
CN111813451A (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.)
Shanghai Saifang Technology Co ltd
Original Assignee
Shanghai Saifang Technology Co ltd
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 Shanghai Saifang Technology Co ltd filed Critical Shanghai Saifang Technology Co ltd
Priority to CN202010504687.8A priority Critical patent/CN111813451B/zh
Publication of CN111813451A publication Critical patent/CN111813451A/zh
Application granted granted Critical
Publication of CN111813451B publication Critical patent/CN111813451B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及数据处理技术领域,具体涉及一种CPU数据读取方法,本发明中,CPU上电工作后,在DMA收到数据0后把数据写入Memory的0x1000地址,并通知CPU进行读取;CPU将AT模块的select设置为0,并读取0x1000地址的数据,通过AT模块将数据返回给Cache,Cache保存数据0,并将数据返回给CPU,完成读取;当select为0时,把从Cache来的0x1000~0x1FFF范围的请求地址映射到memory的0x1000~0x1FFF;而当select为1时,把从Cache来的0x2000~0x2FFF范围的请求地址映射到memory的0x1000~0x1FFF。另外,如果select为0时,Cache发送0x2000~0x2FFF范围的地址,AT会把这笔请求丢弃;同理,如果select为1时,Cache发送0x1000~0x1FFF范围的地址,AT也会丢弃,本发明的方法让CPU既能从Cache拿数据,又能解决无法拿到新数据的问题,从而提高访问速度,提高性能。

Description

一种CPU数据读取装置及方法
技术领域
本发明涉及数据处理技术领域,具体涉及一种CPU数据读取装置及方法。
背景技术
现在芯片的架构如图2所示:
1.当外部有数据时,DMA负责把数据搬移到Memory指定地址中,然后DMA通知CPU来读数据;
2.CPU发送请求给Cache,Cache从Memory中指定地址拿取数据,
3.然后Cache把数据交给CPU进行处理。
4.DMA第二次收到数据,把新数据写到memory,并通知CPU来取新数据
5.CPU发送请求给Cache,但是Cache的工作机制是,只要Cache内部还有相同地址的数据,就不会从memory里面拿新数据,因此这次会再次返回老数据给CPU。从而CPU没有拿到新数据,出现了错误.
现有的方案如图3所示,是绕过Cache,让CPU每次都重新从memory读取数据。但是这种方案由于抛弃了Cache,导致数据访问速度较慢,性能较低。
发明内容
针对现有技术的不足,本发明公开了一种CPU数据读取装置及方法,本发明在Cache和memory之间,增加AT模块,进行地址重映射,配合CPU软件,解决DMA数据经过Cache后,CPU无法拿到新数据的问题。
本发明通过以下技术方案予以实现:
第一方面,本发明公开一种CPU数据读取方法,其中CPU的DMA将数据保存在Memory的地址0x1000~0x1FFF区域内,具体方法包括以下步骤:
S1、CPU上电工作后,在DMA收到数据0后把数据写入Memory的0x1000地址,并通知CPU进行读取;
S2、CPU将AT模块的select设置为0,并读取0x1000地址的数据,通过AT模块将数据返回给Cache,Cache保存数据0,并将数据返回给CPU,完成读取;
S3、在DMA收到新数据1,将新数据1写入memory的0x1000地址,并通知CPU进行读取;
S4、CPU把AT模块的select设置为1,并发送0x1000地址的刷新请求给Cache,Cache将数据0写回至AT模块;
S5、CPU发送0x2000地址的读请求给Cache,Cache传递该请求给AT模块,AT将数据1传递给Cache模块,Cache模块将数据1传递给CPU,完成新数据读取;
S6、在DMA收到新数据N时,其中N为大于2的自然数,CPU重复上述步骤S3-S5,完成新数据读取。
更进一步的,所述S2中,AT收到Cache来的读0x1000地址请求,识别select为0,则发送0x1000地址请求给memory,读取到数据0。
更进一步的,所述S4中,在select设置为1时,当收到0x1000地址的请求,将进行丢弃处理。
更进一步的,所述S5中,在AT模块识别select为1时,对收到0x2000地址的请求,将其转换为0x1000地址传递给memory,并读取到新的数据1。
更进一步的,所述S5中,Cache中保留data1,并丢弃data0,则CPU可通过Cache和AT模块读取memory的任意数据。
更进一步的,当select为0时,将从Cache来的0x1000~0x1FFF范围的请求地址映射到memory的0x1000~0x1FFF。
更进一步的,当select为1时,将从Cache来的0x2000~0x2FFF范围的请求地址映射到memory的0x1000~0x1FFF。
更进一步的,当select为0时,Cache发送0x2000~0x2FFF范围的地址,同时AT模块会把这笔请求丢弃。
更进一步的,当select为1时,Cache发送0x1000~0x1FFF范围的地址,同时AT模块会把这笔请求丢弃。
第二方面,本发明公开一种CPU数据读取装置,包括执行指令,当CPU数据读取装置执行所述执行指令时,所述CPU数据读取装置执行第一方面所述的CPU数据读取方法。
本发明的有益效果为:
本发明在Cache和memory之间,增加AT模块,进行地址重映射,配合CPU软件,解决DMA数据经过Cache后,CPU无法拿到新数据的问题,让CPU既能从Cache拿数据,又能解决无法拿到新数据的问题,从而提高访问速度,提高性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一种CPU数据读取方法步骤框图;
图2是背景技术现在芯片的架构原理图;
图3是背景技术现有的方案原理图;
图4是本发明实施例DMA收到数据0的原理图;
图5是本发明实施例AT模块将数据1传递给Cache模块原理图;
图6是本发明实施例读取完成之后当前的状态图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例公开如图1所示的一种CPU数据读取方法,其中CPU的DMA将数据保存在Memory的地址0x1000~0x1FFF区域内,具体方法包括以下步骤:
S1、CPU上电工作后,在DMA收到数据0后把数据写入Memory的0x1000地址,并通知CPU进行读取;
S2、CPU将AT模块的select设置为0,并读取0x1000地址的数据,通过AT模块将数据返回给Cache,Cache保存数据0,并将数据返回给CPU,完成读取;
S3、在DMA收到新数据1,将新数据1写入memory的0x1000地址,并通知CPU进行读取;
S4、CPU把AT模块的select设置为1,并发送0x1000地址的刷新请求给Cache,Cache将数据0写回至AT模块;
S5、CPU发送0x2000地址的读请求给Cache,Cache传递该请求给AT模块,AT将数据1传递给Cache模块,Cache模块将数据1传递给CPU,完成新数据读取;
S6、在DMA收到新数据N时,其中N为大于2的自然数,CPU重复上述步骤S3-S5,完成新数据读取。
S2中,AT收到Cache来的读0x1000地址请求,识别select为0,则发送0x1000地址请求给memory,读取到数据0。
S4中,在select设置为1时,当收到0x1000地址的请求,将进行丢弃处理。
S5中,在AT模块识别select为1时,对收到0x2000地址的请求,将其转换为0x1000地址传递给memory,并读取到新的数据1。
S5中,Cache中保留data1,并丢弃data0,则CPU可通过Cache和AT模块读取memory的任意数据。
当select为0时,将从Cache来的0x1000~0x1FFF范围的请求地址映射到memory的0x1000~0x1FFF。
当select为1时,将从Cache来的0x2000~0x2FFF范围的请求地址映射到memory的0x1000~0x1FFF。
当select为0时,Cache发送0x2000~0x2FFF范围的地址,同时AT模块会把这笔请求丢弃。
当select为1时,Cache发送0x1000~0x1FFF范围的地址,同时AT模块会把这笔请求丢弃。
本实施例在Cache和memory之间,增加AT模块,进行地址重映射,配合CPU软件,解决DMA数据经过Cache后,CPU无法拿到新数据的问题。
实施例2
本实施例中,假设DMA会把数据保存在Memory的地址0x1000~0x1FFF区域内。
在Cache和Memory之间增加一个AT模块,该模块会把从Cache来的地址做转换,该模块内部有个select寄存器,当select为0时,把从Cache来的0x1000~0x1FFF范围的请求地址映射到memory的0x1000~0x1FFF;而当select为1时,把从Cache来的0x2000~0x2FFF范围的请求地址映射到memory的0x1000~0x1FFF。
另外,如果select为0时,Cache发送0x2000~0x2FFF范围的地址,AT会把这笔请求丢弃;同理,如果select为1时,Cache发送0x1000~0x1FFF范围的地址,AT也会丢弃。这个select的值由CPU来维护。
描述工作过程:
1.如图4所示,DMA收到数据0后把数据写入Memory的0x1000地址,通知CPU。
2.CPU把AT模块的select设置为0,然后读取0x1000地址的数据,AT收到Cache来的读0x1000地址请求,由于select为0,所以发送0x1000地址请求给memory,读取到数据0。
3.AT模块将数据返回给Cache。
4.Cache保存数据0,然后把数据返回给CPU,完成一次读取。
5.DMA收到一笔新数据1,将新数据1写入memory的0x1000地址,然后通知CPU来读。
6.CPU把AT模块的select设置为1,然后发送0x1000地址的刷新请求给Cache。
7.Cache将数据0写回AT模块。
8.由于select设置为1了,当收到0x1000地址的请求,会进行丢弃处理。
9.CPU发送0x2000地址的读请求给Cache,Cache传递该请求给AT模块,AT由于select为1,所以收到0x2000地址的请求,会将其转换为0x1000地址传递给memory,读取到新的数据1。
10.如图5所示,AT将数据1传递给Cache模块。
11.Cache模块将数据1传递给CPU,从而完成了新数据的读取。读取完成之后,当前的状态如图6所示。Cache中只保留了data1,丢弃了data0,CPU可以通过Cache和AT拿到memory的任意数据。
12.依次类推,当再来一笔数据2时,也是类似处理。DMA收到一笔新数据2,将新数据2写入memory的0x1000地址,然后通知CPU来读。
13.CPU把AT模块的select设置为0,然后发送0x2000地址的刷新请求给Cache。
14.Cache将数据1写回AT模块。
15.由于select设置为0了,当收到0x2000地址的请求,会进行丢弃处理。
16.CPU发送0x1000地址的读请求给Cache,Cache传递该请求给AT模块,AT由于select为0,所以收到0x1000地址的请求,会将其转换为0x1000地址传递给memory,读取到新的数据2。
17.AT将数据2传递给Cache模块。
18.Cache模块将数据2传递给CPU,从而完成了新数据的读取。读取完成之后。Cache中只保留了data2,丢弃了data1,CPU可以通过Cache和AT拿到memory的任意数据。
本实施例让CPU既能从Cache拿数据,又能解决无法拿到新数据的问题,从而提高访问速度,提高性能。
实施例3
本实施例公开一种CPU数据读取装置,包括执行指令,当CPU数据读取装置执行所述执行指令时,所述CPU数据读取装置执行实施例1的CPU数据读取方法。
综上本发明在Cache和memory之间,增加AT模块,进行地址重映射,配合CPU软件,解决DMA数据经过Cache后,CPU无法拿到新数据的问题,让CPU既能从Cache拿数据,又能解决无法拿到新数据的问题,从而提高访问速度,提高性能。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (2)

1.一种CPU数据读取方法,其中CPU的DMA将数据保存在Memory的地址0x1000~0x1FFF区域内,其特征在于,所述方法包括以下步骤:
在Cache和Memory之间增加一个AT模块,该模块会把从Cache来的地址做转换,该模块内部有个select寄存器,当select为0时,把从Cache来的0x1000~0x1FFF范围的请求地址映射到memory的0x1000~0x1FFF;而当select为1时,把从Cache来的0x2000~0x2FFF范围的请求地址映射到memory的0x1000~0x1FFF;
如果select为0时,Cache发送0x2000~0x2FFF范围的地址,AT模块会把这笔请求丢弃;同理,如果select为1时,Cache发送0x1000~0x1FFF范围的地址,AT模块也会丢弃, 这个select的值由CPU来维护;
步骤如下:
S1:DMA收到数据0后把数据0写入Memory的0x1000地址,通知CPU来读取;
S2:CPU把AT模块的select设置为0,然后读取0x1000地址的数据,AT模块收到Cache来的读0x1000地址请求,由于select为0,所以发送0x1000地址请求给memory,读取到数据0;AT模块将数据返回给Cache;Cache保存数据0,然后把数据返回给CPU,完成一次读取;
S3:DMA收到一笔新数据1,将新数据1写入memory的0x1000地址,然后通知CPU来读;
S4:CPU把AT模块的select设置为1,然后发送0x1000地址的刷新请求给Cache;Cache将数据0写回AT模块;由于select设置为1了,当收到0x1000地址的请求,会进行丢弃处理;
S5:CPU发送0x2000地址的读请求给Cache,Cache传递该请求给AT模块,AT模块由于select为1,所以收到0x2000地址的请求,会将其转换为0x1000地址传递给memory,读取到新的数据1;
S6、在DMA收到新数据N时,其中N为大于2的自然数,CPU重复上述步骤S3-S5,完成新数据读取。
2.一种CPU数据读取装置,其特征在于,包括执行指令,当CPU数据读取装置执行所述执行指令时,所述CPU数据读取装置执行如权利要求1中所述的CPU数据读取方法。
CN202010504687.8A 2020-06-05 2020-06-05 一种cpu数据读取装置及方法 Active CN111813451B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010504687.8A CN111813451B (zh) 2020-06-05 2020-06-05 一种cpu数据读取装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010504687.8A CN111813451B (zh) 2020-06-05 2020-06-05 一种cpu数据读取装置及方法

Publications (2)

Publication Number Publication Date
CN111813451A CN111813451A (zh) 2020-10-23
CN111813451B true CN111813451B (zh) 2023-03-24

Family

ID=72844642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010504687.8A Active CN111813451B (zh) 2020-06-05 2020-06-05 一种cpu数据读取装置及方法

Country Status (1)

Country Link
CN (1) CN111813451B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018811A (zh) * 2019-04-15 2019-07-16 北京智芯微电子科技有限公司 Cache数据处理方法以及Cache

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2774862B2 (ja) * 1990-07-16 1998-07-09 株式会社日立製作所 Dma制御装置および情報処理装置
US7590817B2 (en) * 2006-10-17 2009-09-15 International Business Machines Corporation Communicating with an I/O device using a queue data structure and pre-translated addresses
US8386747B2 (en) * 2009-06-11 2013-02-26 Freescale Semiconductor, Inc. Processor and method for dynamic and selective alteration of address translation
US10303618B2 (en) * 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
CN103116555B (zh) * 2013-03-05 2014-03-05 中国人民解放军国防科学技术大学 基于多体并行缓存结构的数据访问方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110018811A (zh) * 2019-04-15 2019-07-16 北京智芯微电子科技有限公司 Cache数据处理方法以及Cache

Also Published As

Publication number Publication date
CN111813451A (zh) 2020-10-23

Similar Documents

Publication Publication Date Title
US10009295B2 (en) Virtual memory protocol segmentation offloading
US10015117B2 (en) Header replication in accelerated TCP (transport control protocol) stack processing
US7707383B2 (en) Address translation performance in virtualized environments
US8904045B2 (en) Opportunistic improvement of MMIO request handling based on target reporting of space requirements
US8850125B2 (en) System and method to provide non-coherent access to a coherent memory system
US8621184B1 (en) Effective scheduling of producer-consumer processes in a multi-processor system
CN103383661B (zh) 管芯上系统结构块的控制装置及方法
US20150143045A1 (en) Cache control apparatus and method
WO2004088462A2 (en) Hardware assisted firmware task scheduling and management
US20110258283A1 (en) Message communication techniques
US7472227B2 (en) Invalidating multiple address cache entries
US7657724B1 (en) Addressing device resources in variable page size environments
CN116361232A (zh) 片上缓存的处理方法、装置、芯片及存储介质
CN115509959A (zh) 处理系统、控制方法、芯片及计算机可读存储介质
CN111813451B (zh) 一种cpu数据读取装置及方法
WO2004088461A2 (en) Local emulation of data ram utilizing write-through cache hardware within a cpu module
JP2012128846A (ja) キャッシュ管理のための方法、装置、およびコンピュータ・プログラム
US20100257319A1 (en) Cache system, method of controlling cache system, and information processing apparatus
JPWO2003009301A1 (ja) 記憶装置
CN116383101A (zh) 内存访问方法、内存管理单元、芯片、设备和存储介质
US20080282054A1 (en) Semiconductor device having memory access mechanism with address-translating function
CN1705269A (zh) 一种用于虚拟共享存储系统的远程取页方法及网络接口卡
US7350053B1 (en) Software accessible fast VA to PA translation
CN107807888B (zh) 一种用于soc架构的数据预取系统及其方法
US8099533B2 (en) Controller and a method for controlling the communication between a processor and external peripheral device

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