| ||||||
记忆体结构——对记忆体管理的要求 当今的媒体处理器具有分级的记忆体结构,用来平衡几种不同容量和性能等级的记忆体。通常,离处理器近的记忆体(称爲“1级”或“L1”记忆体)以全时钟速率工作,通常支援单时钟周期指令的运行。爲了高效地利用记忆体匯流排的带宽,L1记忆体一般分爲指令段和资料段。通常,该记忆体被配置成SRAM或快取记忆体。对于那些许可权的应用,在一个单时钟周期内就能够访问片内SRAM。对于要求较长代码的系统,则可以提供附加的片内和片外记忆体——同时增加了等待时间。 这种层次结构本身作用有限。爲了适应仅配合低速外部记忆体的大部分应用,当今的高速处理器却以很低的速度降级使用。爲了提高性能,程式师可以人工地选择将关键代码移入或移出内部SRAM。另外,将资料快取记忆体和指令快取记忆体加入这种结构使程式师能够更方便地人工管理外部记忆体。快取记忆体减少了将指令和资料流程送入处理器内核的人工管理传送。这样程式师无需考虑如何把资料和指令流送入处理器内核,从而极大地简化了编程模式。 | ||||||
指令记忆体管理——快取记忆体还是DMA? 对嵌入式媒体处理器市场的快速调查表明,处理器的速度大于或等于600 MHz。尽管这种性能可以开闢许多新应用,但只有在从内部L1记忆体中读取代码时才能达到这种速度。当然,理想嵌入式处理器可以具有无限容量的L1记忆体,但这不切实际。因此,程式师在爲其实际系统优化记忆体和资料流程时,必须考虑几种可选方案以充分利用置于处理器内的L1记忆体。让我们来考虑一下其中的一些方案。 种方案同时也是直接的方案,目标应用代码可以完全放入L1指令记忆体。对于这种情况,程式师只需将应用代码直接映射到该记忆体空间,无需特殊操作。这就是爲什麽包含MCU和DSP两种功能的媒体处理器必然在这种体系架构支援的代码密度方面具有独特优势的原因。 第二种方案,採用一种快取记忆体机构允许程式师访问更大容量、较低成本的外部记忆体。根据需要,这种快取记忆体可以作爲一种将代码自动送入L1指令记忆体的方法。这种方法的主要优点是程式师无需管理代码移入和移出快取记忆体。当执行线性代码时,这种方法达到的效果。当执行非线性代码时,快取记忆体线可能会被替换得太频繁,以致于不能提高即时性能。 指令快取记忆体实际上具有两个作用。,它以更有效率的方式从外部记忆体中预取指令。第二,由于快取记忆体一般使用某种“近使用的指令”的演算法,所以那些用得频繁的指令往往就被保持在快取记忆体中。这样做很有好处,因爲存在L1快取记忆体中的指令能够在一个单时钟周期内完成,就像指令在L1 SRAM中一样。也就是说,如果该代码一旦被取走,并且还没有被覆盖,即准备在下一个指令周期执行该代码。
| ||||||
资料记忆体管理 嵌入式媒体处理器的资料记忆体结构对于整个系统性能的重要性等同于指令时钟速度的重要性。因爲在多媒体应用中的任一时间经常会有多个资料传送任务同时进行,所以其匯流排结构必须支援内核和DMA对所有外部和内部记忆体块的访问。对DMA控制器和内核之间的冲突进行自动处理是非常关键的,否则性能将大大降低。首先要求在内核与DMA之间的建立DMA控制器,然后当要进行处理的资料已经准备时再应该回应中断。 处理器通常作爲其一项基本功能执行资料读取操作。虽然这通常是传送资料效率的机构,但它是简单的编程方式。小容量、快速方便的记忆体有时可以用来作爲L1资料记忆体的一部分,但对于较大容量、片外缓冲器,如果内核要从外部记忆体读取所有资料,那麽访问时间就长得难以忍受。内核不仅要花掉多个时钟周期去取资料,而且它要花很多时间忙于读取资料。在多媒体和其他大量资料操作应用中,要不断地将大量资料存储移入或移出SDRAM,内核的读取资料操作是无法应付这种情况的。虽然内核的读取资料操作总是需要的,但爲了维持性能,一定要使用DMA或快取记忆体传送大量的资料。
| ||||||
使用DMA管理资料 为了在多媒体系统中有效地利用DMA,应该有足够多的DMA通道以充分支援处理器的週边电路,即可以同时传送一对以上的记忆体与DMA之间的资料流程。这一点很重要,因爲考虑到在外部记忆体和L1记忆体之间传送用于内核处理的资料块的同时,必然有一个原始的多媒体资料也会进入外部记忆体(通过高速週边设备)。进一步地,DMA引擎允许週边电路与外部记忆体之间的直接资料传送,而无需在L1记忆体内有一个“中间停留”,因此在大量资料演算法中可以节省外部资料传送。 随着资料传输速率和性能要求的提高,设计工程师能随意对“系统性能调节”控制就变得非常关键。例如,优化DMA控制器以使每个时钟周期都可传送一个资料字。当向同一方向同时传送多个资料流程时(例如,从内部记忆体向外部记忆体传送全部资料),这通常是有效的操纵控制器的方式,因爲这种方法可以防止DMA匯流排有空闲时间。
| ||||||
关于资料快取记忆体 当前的DMA控制器的灵活性是一把双刃剑。当在两个处理器之间读取一个大的C/C++应用程式时,程式师有时不愿意将DMA功能整合到已经存在的工作代码中。这时,资料快取记忆体就很有用了。通常,资料通过快取记忆体送入L1记忆体以便快处理。这种资料快取记忆体非常吸引人,因爲它象一个小DMA一样工作,但涉及到程式师的工作量。 因爲典型的快取记忆体线填充特性,所以当处理器对外部记忆体内的连续资料存放块进行操作时,资料快取记忆体就非常有用。这是因爲该快取记忆体不只存储当前正在被处理的立即资料,此外它还向与当前相邻的资料块内予取资料。换句话说,该快取记忆体机构假设当前处理的资料字是即将被处理的一个相邻资料块的一部分的可能性极大。对于多媒体图像、音频和视频流,这是一个合理的假设。 由于资料缓冲器通常来自週边电路,所以对资料快取记忆体的操作并不总象对指令快取记忆体的操作那样容易。这是由于必须在非“监听”的快取记忆体中人工控制一致性。在使用这些快取记忆体准备对新资料进行任何读取之前都必须使该资料缓冲器无效。 总之,在一个具体的多媒体系统中对指令和资料传送的机构的选择应该是快取记忆体还是DMA没有一种简单的答案。不过,一旦开发工程师瞭解到这其中的权衡考虑,就能进入到一种“不偏不倚”的状态,从而将使系统性能达到化。(本文作者任职于ADI公司公司 Blackfin Blackfin应用组应用组)。 |
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。