KK计算机:激进的6502 Redesign(2018)

2021-03-12 12:58:25

主要的 功能快速访问平坦,24位 地址空间。虽然有很多方法可以改装A' C02 扩展内存,AFAIK无可以触摸此实现以获得速度。给予 16兆字节空间中的任何随机地址,KK可以获取该字节 6-8个气缸。 它' s 快速,因为:

64K单位使整个内存易于将整个内存视为线性,16 兆字节空间。那个' s是地址算术的结果 - 一种 例如,24位添加 - 直接接受 机器。最重要的字节是 块地址。这比使用计划更有效,比如说, 16K. 块由于16k块系统需求 掩盖并转移添加结果以隔离块 之前的地址 可以传递给硬件。 高效的线性寻址 打开大门的"大数据"应用程序 - 将导致的任务 最扩展的内存8位机器击中墙壁。他们遭受了一个 阶数级数 速度缺点模拟线性空间。 最多 控制 信号源自微码 从EPROM阵列中获取。 微码在' s时钟的状态机上运行 CPU。 (一个状态机周期=一个CPU /总线循环。) CPU指示指令获取。同时执行它和 状态机确定结果。

块(又名银行) 地址是 存储在寄存器文件中 A,其读取部分(图的顶部)馈送A23-A16。这些 新的 地址行 - 直接从65C02的A15-A0 - 是 什么地址为16兆字节的空间。 (你' ll看到那里' s a 第二 注册文件哪个阴影第一个。这使得它成为可能 读书 必要时返回存储的银行地址。)单个指令是 所有那个'要求加载新的银行地址。 那个' s的比较简单 MMU上的I / O操作。而且,与MMU操纵相比,没有必要 另保存然后稍后还原A,X,Y或P.这些寄存器仍未受到干扰。

这 协处理器充当 exo-骨架 65C02。 寄存器文件等设备连接到数据总线并接收 微透模提示从中更新自己。 有时他们开车 当CPU认为它' s时的公共汽车 读取数据,指令操作码或指令操作数 记忆。一些 46未定义(AKA非法)65C02 在他们到达之前,Opcodes在32 x 8副舞会上获得别名 CPU。其他人使用"和#34一样。"事实上,其中一些65c02' s 所谓的nop实际生成 即使数据被丢弃,也可以使用总线并使用总线。这个奇怪的 行为原因出现在场 重要的机会。但所有这些细节都是看不见的;这 程序员 只需44项新指令(共254个)。

指示 加载并保存银行 地址 在注册文件(K0,K1,K2& K3)中提示

指示 实际上输出 一个银行 地址到 A23-A16(通常在短暂的基础上)

提出了K0. 几乎连续地在地址线A23-A16上,作为它的使用'使用 对于所有代码提取。 k0也是默认值 用于数据访问。在没有规范的情况下 对于K1,K2或K3,它将是k0' s使用,这意味着 数据访问将是 在与当前执行代码的同一银行发生。 (一个例外 使用堆栈和零页地址模式时适用。这样的访问 始终使用 银行$ 00 - 不要与k0混淆)。

三个单字节前缀 说明是 与寄存器K1,K2和K3相关联。使用前缀是一种方式 指定A" FAR"数据访问 - 即,其中一个银行地址 是 独立于当前执行的代码所在的位置。这 前缀后跟并作用于任何典型的65c02 诸如公司 绝对,CMP间接,y等 这里'序列。在运行时,CPU获取前缀字节但是 忽略它。即便是 协处理器没有立即采取行动。接下来是目标 指令,以及通常的异室逻辑执行每个周期。 这包括 零页间接和其他变体的额外周期。 然后k1, K2 或K3被读出"在提示和#34上;对于最终的数据传输 循环 的 教学(最终三个 循环 读取 - 修改 - 写)。全部 CPU' S 64K可能的地址被银行交换机重新映射。 然后k0是 重新选择为A23-A16,发生操作码获取,并发生程序 没有错过节拍的收益。 (唯一的延迟是一个循环 对于前缀。)许多组合 说明和地址模式可以使用前缀和 从而成为 远的。考虑到所有组合,你 可以说有数百人 新指令, 不是 只是44。

因为他们打开一个 " far"适用于这么多65C02的尺寸 前缀在适用性方面非常一般。但是,如上所述,一个 循环 罚款适用。即便如此,也可以避免,尽管造成损失 的 概论。这 分离 对于六种特定情况,可以省略前缀 涉及LDA和STA,自六个特定的,"一体化" opcodes. 是 假如。具体的 还为JMP_K3提供操作码, JSR_K3 和rts_k3。 这些 说明包括交换的操作 K3和K0. - 并且,因为k0更新,新的64k银行成为默认值。 (愉快地,这并不意味着替代零页和堆栈! 回顾 使用堆栈和零页地址模式访问 始终使用银行零,无论k0可能包含什么。)

银行地址 寄存器K1,K2和K3负载 他们自己在一起 x, y和一个加载自己 - 即 为此目的提供了特定的操作码。可用 地址模式是立即的,绝对的,零pg和零pg,x。这些 三 寄存器也可以从堆栈中推动和拉动,而k0 可 推。 完全有34条执行跳跃的指令,远程数据 访问,加载和保存银行 地址。

一些亮点 来自这个不同的组是 跟随。 scan_k3. 教学迫使 CPU从内存中快速读取长长的字节字节,作为a的一部分 计划 输出视频。

w是一个16位 寄存在零页中的读数,其中一个 其功能是双重索引的 解决。这是一个 两步 开始的过程 编码为使用的指令(z-pg,x)模式。 CPU是索引 添加然后从零页获取一个双字节指针 它完成了指令。 kk复制了双字节 指针在飞行中,随后使它成为 在w的z-pg中使用(无需重复索引 添加)。如果一个 后续教学 被编码为使用(w),y然后是双指令的结果 序列是 (z-pg,x),y模式。它' s 等同于将x索引到a 指针, 获取指针,然后再次索引到数据阵列中。这是 没有那么异常,鉴于即使是一个16位字(两个字节)构成 一个 大批。 双重索引的寻址加速了@和! (获取和存储)。

IP是A. 16位寄存器,其最值得注列的功能 是一个指针 对于JMP((IP ++))指令。这种双关联跳跃 递增 是一个硬件实现'普遍存在的下一个 手术。硬件 接下来有四边形 它替换的代码序列的速度。 总体上行程序速度增加 大约90%。

kimklone' c cpu和 片外配件函数是统一的 整体,与在a中创建的单片设备相同 晶圆厂。该设计非常适合引入主要功能 尽管传统编程模型甚至遗产的局限性局限性 硅。

线性内存 组织允许高效 操纵大于64k的物体 - a 缺席的能力 从商业6502微型计算机和微处理器如 MOS 6509和Hudson Soft 6280 回想起来,哪些暗示 WDC 65816。 (KK是在不久之后创造的,但没有任何影响 65816.)