程序存储器里放着常数,处理器却能经数据地址读取它,这与Harvard架构的分离描述是否矛盾?Microchip的《dsPIC DSC Architecture Review》用modified Harvard解释这种关系:程序存储与数据存储通过分离总线访问,同时又有从程序空间存储和访问常数数据的机制。分离与可访问,在这份课程中共同构成架构说明。
先看分离指向什么。课程Introduction谈的是程序和数据各自的访问总线,不是把程序文件按作者分成两份。程序空间与数据空间在文字中有不同名称,说明它们在架构描述中的位置;随后出现的访问机制,则进一步说明处理器怎样跨越这种通常的使用划分。因此,只有“分离”二字,还没有概括modified所补充的内容。
PSV的全名是Program Space Visibility。课程说明,PIC24与dsPIC器件可借这一特性,通过RAM地址查看一段Flash程序存储,并提到编译器会利用它读取保存在Flash中的常数。这句话描述了常数的存放位置与访问视角:数据仍被说成存储在Flash中,而读取它时使用了数据地址的一种可见方式。不能仅因文字出现RAM,就把它改写成这些常数已经全部搬到RAM。
数据空间内部还有X与Y的区分。Data Memory Map段说,对于某些DSP指令,两者可以分别看待;对于MCU指令,又可以视为一个统一线性地址范围。同一架构中的两种表述,并不要求读者从中选一句删掉另一句,关键是原文分别附带了什么指令语境。把X与Y永远当成完全独立,或永远当成没有区别,都会漏掉一侧条件。
课程接着用两个地址生成单元AGU及分离数据通路,解释某些指令能够并发从RAM取两个字。这里的“某些”很重要:它限定了并发访问属于哪些描述,不能扩写为每条指令都同时访问两个位置。PSV讲程序空间常数如何被看见,X、Y及AGU讲数据访问的组织;两段相邻,却没有把这些机制合成一个包办所有存储访问的名称。
这对微控制器资料阅读有具体用途。遇到“程序与数据分离”,可以继续辨认它是在说总线还是空间;遇到“统一地址范围”,则要保留是哪类指令的视角;遇到“读取Flash常数”,应把常数的存放位置和读取方式同时留下。这样的解释可以让架构摘要保留原文的连接关系,而无需先写寄存器、地址或配置代码。
本文限定于这份Microchip公开课程的连续文字,课程首次发布日期与具体版本未确认。没有把它当作全部现售dsPIC型号的统一规格,也未采用框图像素或执行PSV配置。modified Harvard在这里所说明的,是分离总线并未排除特定的程序数据访问机制;实际产品的资源与行为仍需其对应文档。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。