我有一个评估套件,它具有ARM Cortex-A8内核的实现。处理器数据表指出它具有
ARM Cortex A8™内核,工作频率高达800MHz,最高可达200MHz DDR2内存。
我对这个系统有什么期望?我是否正确地认为内存访问将成为瓶颈,因为它只能在200MHz运行?
需要有关如何解释此问题的更多信息。
答案 0 :(得分:3)
处理器使用内部缓存(实际上是几个),它可以“全速”访问。缓存很小(通常为8到32千字节),并且由来自外部RAM的块(“缓存行”)填充(缓存行将是几十个连续字节)。当代码需要一些当前不在高速缓存中的数据时,处理器必须从主RAM中获取该行;这称为缓存未命中。
从主RAM获取缓存行的速度由两个参数描述,称为延迟和带宽。延迟是处理器发出请求的时刻与接收到第一个缓存行字节的时间之间的时间量。典型的延迟约为30ns。在800 MHz时,30ns意味着24个时钟周期。带宽描述了总线上每纳秒可以发送的字节数。 “200 MHz DDR2”意味着总线时钟将以200 MHz运行。 DDR2 RAM每个周期可以发送两个数据元素(因此每秒有4亿个元素)。然后,带宽取决于CPU和RAM之间有多少线:使用64位总线和200 MHz DDR2 RAM,在理想条件下,您可能希望达到3.2 GBytes / s。因此,虽然第一个字节需要相当长的时间才能获得(关于CPU可以做什么,延迟很高),但是很快就会读取高速缓存行的其余部分。
在另一个方向:CPU将一些数据写入其缓存,并且一些电路将在闲暇时将修改传播到主RAM。
以上描述过于简单化;缓存和缓存管理是一个复杂的领域。底线如下:如果你的代码在内存中使用大数据表并以看似随机的方式访问它们,那么应用程序将很慢,因为大多数时候处理器只是等待来自主内存的数据。另一方面,如果您的代码可以使用少量RAM(少于几十千字节)运行,那么很可能它将在大部分时间内运行最内层缓存,而外部RAM速度将不重要。以与缓存一起运行良好的方式进行内存访问的能力称为引用的位置。
请参阅Wikipedia page on caches以获取有关缓存问题的介绍和指示。
(大型预计算表在80年代是一种常见的优化技巧',因为当时处理器并不比RAM快,并且单周期内存访问是规则。这就是8 MHz Motorola 68000 CPU没有缓存的原因。但这些日子早已过去。)
答案 1 :(得分:0)
是的,内存可能是一个瓶颈,但你不太可能运行一个 nothing 但是对内存进行读写的应用程序。
在CPU内部,内存瓶颈不起作用。