微控制器/微处理器和不同的位版本,有什么区别?

电器工程 微控制器 微处理器
2022-01-01 08:52:03

作为一名普通工程爱好者,我每天都在学习更多关于微控制器世界的知识。曾经我不太明白的是微控制器位版本的重要性。

我已经使用 ATmega8 几个月了,它似乎很适合我的目的。我知道时钟速度、内存、IO 引脚数量、通信总线类型等如何区分一个微控制器与另一个。但我不太了解 8 位与 16 位与 32 位的重要性。我确实理解更高位的版本允许设备存储更大的数字,但同样,这对我的决定有何影响?如果我正在设计一个产品,在哪种假设情况下我会决定 8 位处理器根本行不通,我需要更高的处理器。

是否有理由相信 ATmega8 的理论上的 32 位变体(所有其他条件相同)会优于 8 位版本(如果这样的设备可能的话)?

我可能在胡说八道,但我想这是我困惑的结果。

2个回答

这不是它可以存储的数字的宽度,而是它可以在单个操作中使用的宽度。通常(但不一定)这也与本机内存寻址的宽度有一定程度的相关性,因此可以轻松映射存储量,而无需使用分段或存储库切换等丑陋的变通方法。

今天的 32 位内核在大多数方面(灵活性、扁平内存模型,当然还有性能)都优于 8 位设计,但主要的例外是遗留系统、具有极高数量和价格压力的应用程序(否则定价往往与芯片内存大小与核心宽度相比),以及工艺/密度的副作用。后者可以提供诸如 5v 操作之类的东西,或者在某些情况下,如果试图证明 CPU 设计本身没有逻辑错误,则可能提供更大的辐射强度或简单性优势。对许多爱好者来说,价值的最后一个过程/年龄副作用是 DIP 封装中的 8 位内核很常见,而这种封装中的 32 位设备则很少见(尽管它们确实存在)。

位值是数据总线或数据管道的大小,这意味着 8 位 MCU(在大多数情况下)只能在每个时钟周期使用 0 到 255 的值。可以把它想象成处理器有 8 条并行的数字线。16位有16行,32位有32行。因此,对于每个时钟周期,它都会读取这些数据线,并且线越多,每个时钟周期可以使用的值就越高。

8 位 = \$2^8\$ = \$256\$

16 位 = \$2^{16}\$ = \$65,536\$

32 位 = \$2^{32}\$ = \$4,294,967,296\$

更大的数据总线还允许处理器访问更大的内存地址。

这在数学运算中产生了很大的不同。16 位数字比 8 位数字提供更高的精度。16 位微控制器在处理超过 8 位数字的数学运算方面也更有效。16 位微控制器可以自动对两个 16 位数字进行运算,就像整数的常见定义一样。但是,当您使用 8 位微控制器时,该过程就不那么简单了。实现对这些数字进行操作的功能将需要额外的周期。根据您的应用程序的处理密集程度以及您执行的计算次数,这可能会影响电路的性能。

8位和16位微控制器的区别