MOS 6502

编辑
本词条由“匿名用户” 建档。
MOS Technology MCS6502 计算机芯片是 MOS Technology, Inc. 的一款 8 位微处理器,于 1975 年发布。 由于其结构简单,最重要的是,与当时性能相当的英特尔和摩托罗拉处理器相比,它的价格非常低,因此被用于许多家用电脑, 许多国际象棋计算机 (例如 5 或 10 MHz 的 Mephisto Polgar), 在世界上第一台 skat 计算机 Skat...
目录

MOS 6502

编辑

MOS Technology MCS6502 计算机芯片是 MOS Technology, Inc. 的一款 8 位微处理器,于 1975 年发布。 由于其结构简单,最重要的是,与当时性能相当的英特尔和摩托罗拉处理器相比,它的价格非常低,因此被用于许多家用电脑, 许多国际象棋计算机 (例如 5 或 10 MHz 的 Mephisto Polgar), 在世界上xxx台 skat 计算机 Skat Champion, 许多xxx设备和许多用于控制和开发目的的单板计算机。 该处理器是在 Chuck Peddle 的指导下开发的。

该处理器系列的其他成员也非常成功,例如 Commodore 64 中的处理器 6510 和 Atari 游戏机中的 6507。 MOS Technology 当时的主要竞争对手是 Zilog,其 Z80 被用于许多 CP/M 计算器以及 Sinclair 和 Amstrad/Schneider 家用电脑中。

一般

编辑

6502 的设计基于 8 位摩托罗拉 6800 处理器(不要与较新的摩托罗拉 68000 混淆),并且基于将 6502 作为微控制器的一部分使用。 6502 和 MC6800 的指令集相似,但 6502 使用两个 8 位变址寄存器,而不是 MC6800 的一个 16 位变址寄存器,其值作为指令执行的一部分,基于程序代码(xxx索引寻址)或在内存中(间接索引寻址)可以被添加。 为此,6502 程序需要分段寻址大于 256 字节的数组。

相比之下,在相同的上下文中,其他 8 位 CPU(例如 MC6800 或 Z80)具有 16 位索引寄存器,其值可以添加到程序代码中指定的 8 位地址; 这些 CPU 没有将索引寄存器的值添加到内存中的地址的选项。

例如,变址寄存器可以用作复制过程的地址计数器,在程序代码的循环中使用专用命令将变址寄存器增加或减少 1,然后通过同一命令测试值零。 如果先前遇到零值,则紧随其后的命令将终止循环。 更有效地执行此类用例的命令,例如 B、Z80的LDIR命令,6502没有。

然而,更简单的命令集意味着 6502 程序通常比执行相同操作的 MC6800 或 Z80 程序需要更多的内存; 此外,与用于其他 8 位处理器的相应编译器相比,用于高级编程语言(如 Pascal 或 C)的符合标准的编译器在 6502 上的实现难度要大得多,并且生成的代码速度更慢。 这样做的主要原因是 6502 的堆栈被限制为 256 字节,因此大多数现代高级语言所需的更大堆栈必须在软件中重现。 此外,为了保持芯片面积小,6502 只有一个累加器,而 MC6800 有两个累加器 A 和 B。

cc65 通常用作 6502 的 C 编程语言的交叉编译器。 或者,6502 可用于模拟一个简单的虚拟 CPU,然后将其指令集视为微代码。

6502 的 64 KB 地址空间根据 16 位地址的高字节改变其值的页面边界分为几个区域, 每页代表一个连续的 256 字节块:

  • 零页(地址空间的前 256 个字节):它实际上用作寄存器组,可以特别快速地访问其内容,两个连续的字节可以用作各种间接寻址类型的 16 位值.
  • 接下来的256字节作为栈内存(stack page),从上往下增长。 如果使用的堆栈深度受到控制,则此页面的下部通常用于其他目的(如普通 RAM)。
  • 除最后 6 个字节外,所有剩余区域均可用于任何 RAM、ROM 或内存映射 I/O。 与 Z80 不同,6502 没有隔离 I/O。
  • 在地址空间的最后 6 个字节中有三个 16 位指针(也称为向量)用于“正常”中断 (IRQ) 和 BRK 指令 、复位信号和非屏蔽间中断 (NMI),此处指定的低位地址始终包含相应 16 位指针值的第 7 位到第 0 位以及高位地址的第 15 位到第 8 位。 如果 CPU 使用 BRK 命令启动相应的中断请求处理,则相应的指针值将加载到程序计数器中。 为了使这些内存位置在复位时包含定义的值,操作系统或固件 ROM 通常位于地址范围的上端,而 RAM 从地址零开始。 在硬件复位的情况下,在内存中从地址 0 开始的程序不会像许多其他处理器那样被简单地处理,而是将两个地址 FFFC16-FFFD16 中的向量复制到程序计数器中,然后然后从该位置处理存储在那里的程序。
  • 通常,CPU 在每个时钟周期从地址空间中的存储单元读取或写入一个字节一次。 但是,如有必要,可以通过将 CPU 的 RDY 引脚设置为低电平以与寻址的存储器或xxx组件同步来延迟 CPU 的读取访问。 这会冻结 CPU 的内部状态, 当前微指令没有执行完,地址总线驱动不变。 此外,CPU 的数据总线驱动器(与每次读取访问一样)处于高阻抗状态。 如果存储器或外设模块最终能够提供数据总线上的字节,则与周期同步地再次设置RDY信号为高电平。 然后 CPU 读取数据字节并完成当前的微指令。 然而,在写访问的情况下,RDY 信号被 CPU 忽略。
  • RDY 信号也可用于停止 CPU 以进行 DMA 访问。 由于 CPU 仅在读访问时进入等待状态,在此之前最多可以经过三个时钟周期(BRK 指令的三个连续写访问代表最坏的情况)。 由于在 DMA 期间,地址总线和读/写线必须由 DMA 控制器单独控制,而 6502 - 与数据总线相反 - 连续控制它们,因此必须使用附加电路在 DMA 控制器之间切换控制和 6502 能够 为此,多路复用器芯片。 B、可以使用74LS157或6502的地址总线缓冲芯片等。 B. 74LS244,其输出可以切换为高阻抗。 或者,可以使用 6510,例如,其地址总线驱动器可以通过其 AEC 引脚切换为高阻抗。

MOS 6502

除了使用 RDY 信号外,还有其他方法用于执行 DMA 以及 6502 的内存访问:

只要寻址存储器的访问时间允许,DMA 可以在 6502 时钟周期的前半部分发生,因为 6502 仅在其时钟周期的后半部分执行与存储器的数据传输。 这个程序是z。 B. C64中的视频芯片VIC II使用的。

此外,可以将 6502 的时钟输入 Φ0 处的信号保持为低电平,从而使 6502 的内部状态冻结。 然而,这只能在 6502 上维持有限的时间,因为它的动态内存,i。 H。 它的容量,随着时间的推移而放电。 这种方法是由 Atari 400 和 Atari 800 中的 ANTIC 芯片使用,它使 6502 停止大约 54 μs。

技术上讲,MOS Technology 对 6502 进行了相当创新:

  • 与同时代的其他微处理器相比,它已经包含一个集成时钟发生器,它只需要一个外部时钟信号,并且它本身会为其内部电路生成两个不重叠的时钟信号(Φ1 和 Φ2)。
  • 它是xxx个具有基本(两级)流水线架构的微处理器,即。 H。 直到后续操作码的xxx个操作数(即操作码后面的字节)的加载期间,先前加载的操作码的微指令仍然可以在内部执行。 然而,具有多个命令的重叠读写访问的真正管道尚不存在。
  • 它的指令集可以被认为是“几乎正交的”——至少与竞争对手英特尔 8080 相比是这样。
  • 它包含一个 PLA,而不是微码,其 130 个输出根据机器语言指令进行编程, 从加载的操作码和内部时钟计数器接管流量控制作为xxx阶段。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/372610/

(10)
词条目录
  1. MOS 6502
  2. 一般

轻触这里

关闭目录

目录