技术领域
[0001] 本发明涉及微控制器,尤其涉及一种微控制器架构及架构内数据读取方法。
相关背景技术
[0002] 目前,微控制器架构通常将指令线、数据线、系统线及直接存储器访问控制器(Direct Memory Access,缩写为DMA)等主程序直接通过总线与存储器及外部设备做数据的收送;这种做法会因为从端口连接过多的主端口造成微控制器无法在第一时间发送和接收数据,造成了系统不必要的延迟与仲裁优先级的问题。
[0003] 请参阅图1,图示为本发明技术领域现有技术的微控制器架构系统框图。其中,微控制器、DMA、指令存储器、数据存储器、系统存储器及外部设备均连接一条总线,一条总线承载了系统内全部的数据收送。
[0004] 传统的微控制器架构通常是将数据堆栈与指令堆栈存储在系统存储器内,而系统存储器又同时支援多个主端口的数据收送,这时系统存储器会出现性能瓶颈,这样的架构方式会存在仲裁优先权与长延迟的问题。
[0005] 另一方面,在实现DMA传输时,是由DMA直接掌管总线,因此,存在着一个总线控制权转移问题,即DMA传输前,微控制器要把总线控制权交给DMA,而在结束DMA传输后,DMA应把总线控制权再交回给微控制器,DMA传输期间微控制器无法通过总线与其它单元进行数据收送,浪费了系统资源,降低了效率。
具体实施方式
[0045] 下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其他有益效果显而易见。可以理解,附图仅提供参考与说明用,并非用来对本发明加以限制。附图中显示的尺寸仅仅是为便于清晰描述,而并不限定比例关系。
[0046] 请参阅图2,图示为本发明提出的微控制器架构一实施例的模块示意图,微控制器架构100内包括微控制器10、系统存储器20、指令存储器30、数据存储器40、第一总线50、第二总线60、缓存控制器70、缓冲存储器71、DMA80及外部设备90。
[0047] 在本实施例中,微控制器10连接第一总线50及第二总线60;缓冲存储器71连接缓存控制器70,缓存控制器70连接第一总线50及第二总线60;指令存储器30连接第一总线50;数据存储器40连接第一总线50;系统存储器20连接第二总线60;DMA80连接第二总线60;外部设备90连接第二总线60;第一总线50连接第二总线60。
[0048] 微控制器10通过第一总线50分别与指令存储器30及数据存储器40进行数据收送,通过第二总线60与系统存储器20及外部设备90进行数据收送,指令存储器30及数据存储器40通过第一总线50连接的第二总线60与系统存储器20进行数据收送。
[0049] 缓存控制器70控制缓冲存储器71内的数据写入或读取,缓存控制器70通过第一总线50与微控制器10进行数据收送,缓存控制器70通过第二总线60与系统存储器20进行数据收送。
[0050] 当微控制器10需读取系统存储器20内的数据时,会先通过第一总线50连接的缓存控制器70检查缓冲存储器71内是否有相同的数据;若缓冲存储器71内有相同的数据则微控制器10直接通过缓存控制器70与第一总线50读取缓冲存储器71内的数据,反之则微控制器10通过第二总线60读取系统存储器20内的数据。
[0051] DMA80通过第二总线60与系统存储器20进行数据收送,通过第二总线60连接的第一总线50与指令存储器30及数据存储器40进行数据收送。
[0052] 系统存储器20内的指令堆栈可通过第二总线60连接的DMA80或微控制器10转移到指令存储器30内,系统存储器20内的数据堆栈可通过第二总线60连接的DMA80或微控制器10转移到数据存储器40内。
[0053] 微控制器架构100内的应用程序均存储在系统存储器20内,常用的子程序存储在指令存储器30与数据存储器40内。
[0054] 请参阅图3,本发明同时提出一种微控制器架构内数据读取方法,数据读取方法应用于上述微控制器架构100。数据读取方法的步骤如下:
[0055] S101:微控制器10接收系统存储器20内的数据与指令。
[0056] S102:微控制器10通过第一总线50连接的缓存控制器70检查缓冲存储器71内是否有与系统存储器20相同的数据;
[0057] 若缓冲存储器71内有相同的数据,则进入步骤S103:微控制器10直接通过缓存控制器70与第一总线50读取缓冲存储器71内的数据;
[0058] 若缓冲存储器71内没有相同的数据,则进入步骤S104:微控制器10通过第二总线60读取系统存储器20内的数据。
[0059] 在一实施方式中,数据读取方法还包括:
[0060] DMA80通过第二总线60与系统存储器20进行数据收送;
[0061] DMA80通过第二总线60连接的第一总线50与指令存储器30及数据存储器40进行数据收送。
[0062] 在一实施方式中,数据读取方法还包括:
[0063] 系统存储器20内的指令堆栈通过第二总线60连接的DMA80或微控制器10转移到指令存储器30内;
[0064] 系统存储器20内的数据堆栈通过第二总线60连接的DMA80或微控制器10转移到数据存储器40内。
[0065] 本发明提出的微控制器架构100及架构内数据读取方法,微控制器10可通过第一总线50直接读取指令存储器30与数据存储器40中的指令与数据,还可以直接与缓存控制器70做数据收送,这时都不会有其它端口争抢第一总线50的使用权;DMA80也可以通过第二总线60完成直接存储器访问而无需微控制器10转让总线控制权;通过将常用的子程序存储在指令存储器30与数据存储器40内,增加了子程序在系统存储器20内存储的弹性并改善了系统存储器20的效能。
[0066] 使用本发明提出的微控制器架构100及架构内数据读取方法,通过将传统的单总线分为第一总线50与第二总线60并分别连接不同的元件,解决了传统架构方法中存在的仲裁优先权、数据读取延迟及效率低下等弊病,改善了微控制器架构的整体性能。
[0067] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。