主机

NES(FC、红白机、小霸王)的系统架构可用下图表示:

系统中最核心的组件是 CPU,其它组件都可以算作 CPU 的外设。CPU 的外设包括:PPU(图像处理器)、APU(音频处理器)、WRAM(内存)、IO 设备(手柄、键盘等)、CART(卡带)。这些外设分别占据 CPU 地址空间中的一部分,CPU 通过设置 CPU 地址总线选中相应的外设,然后通过 CPU 数据总线与外设交换数据。CPU 与外设的这种通信方式也叫“内存映射 IO”(MMIO),外设占用的地址空间可以到 nesdev 上查阅。

系统中第二核心的组件是 PPU。PPU 也有外设,它的外设包括:VRAM(视频内存)和卡带。PPU 和它的外设之间也采用“内存映射 IO”方式通信,PPU 的地址空间分配可以查阅 nesdev

真实的 NES 上是看不到独立的 APU 芯片的,因为 APU 与 PPU 封装到了一起。在开发模拟器时,把它们当作独立的组件是没有关系的

卡带

上图中,卡带只是使用一个方框简单概括,实际上卡带也是一个复杂的设备。卡带即是 CPU 的外设,也是 PPU 的外设。它可以存储程序代码供 CPU 读取执行,可以存储图像资源供 PPU 使用,也可以为 CPU 提供额外的内存,甚至还可以提供额外的音频芯片、PPU。

根据卡带的电路板复杂性,可以粗略地把卡带分为简单卡带和复杂卡带。

简单卡带

简单卡带的内部结构如下图。

图中 PA 表示 PPU 地址线,PD 表示 PPU 数据总线,AB 表示 CPU 地址线,DB 表示 CPU 数据总线。可以看到简单卡带基本上直接从存储芯片中读写数据,其中存储芯片可以根据需求配置为不同大小。由于地址空间的限制,简单卡带上并不能存储太多内容。

复杂卡带

上图演示了一种复杂卡带的架构,可以看到最大的区别是多了一个叫 MMC 的组件。MMC 意为“内存管理芯片”,是一种可编程芯片,负责将 CPU、PPU 的地址映射到它管理的存储器中的某个区间。有了 MMC,CPU、PPU 得以寻址更大的地址空间,卡带也可以存储更多内容。

参考资料

  1. nesdev
  2. NES 名词解释
  3. 2c02 技术参考
  4. NES 架构介绍[Youtube], NES 架构介绍[B 站]
  5. NES 架构

NES 系统架构的更多相关文章

  1. (系统架构)标准Web系统的架构分层

    标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...

  2. 千万pv大型web系统架构,学习从点滴开始

     架构,刚开始的解释是我从知乎上看到的.什么是架构?有人讲, 说架构并不是一 个很 悬 乎的 东西 , 实际 上就是一个架子 , 放一些 业务 和算法,跟我们的生活中的晾衣架很像.更抽象一点,说架构其 ...

  3. [网站性能1]对.net系统架构改造的一点经验和教训

    文章来源:http://www.admin10000.com/document/2111.html 在互联网行业,基于Unix/Linux的网站系统架构毫无疑问是当今主流的架构解决方案,这不仅仅是因为 ...

  4. 5G系统架构

    原文标题:迈向5G之路,颠覆性的5G系统架构?   本文部分图片,资料摘自<迈向5G C-RAN:需求.架构与挑战> 突如一夜春风来,随着Polar码与LDPC码作为5G编码候选方案,通信 ...

  5. 异构(兼容dubbo)SOA系统架构(.net)优化升级

    前面一片文章已经提到我司的异构(兼容dubbo)SOA系统架构,解决了不少技术痛点,也还算比较完善,也顺利推广开来. 但作为项目的开发者,自己产品的问题心里是清楚的,离自己满意还是有不小的距离. 在推 ...

  6. 【系统架构】IT职业技能图谱(点开大图查看)

    本文地址 1 程序开发语言综述 2 iOS开发工程师必备技能 3 运维工程师必备技能 4 前端工程师必备技能 5 大数据工程师必备技能 6 云计算工程师必备技能 7 安全工程师必备技能 8 移动无线测 ...

  7. [Architecture] 系统架构正交分解法

    [Architecture] 系统架构正交分解法 前言 随着企业成长,支持企业业务的软件,也会越来越庞大与复杂.当系统复杂到一定程度,开发人员会发现很多系统架构的设计细节,很难有条理.有组织的用一张大 ...

  8. 国内经典BI系统架构分析

    谈起商业智能BI,也许大家并不陌生,但你是否了解国内的各类BI系统架构? 自国内商业智能发展以来,就系统结构方面已经历了多次优化性的变革.目前国内商业智能BI系统的经典架构的模式包括数据层.业务层和应 ...

  9. Android入门(二):Android的系统架构

    android的系统架构和其操作系统一样,采用了分层的架构.从架构图看,android分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层.   从技术方面看,An ...

  10. 浅谈大型web系统架构

    动态应用,是相对于网站静态内容而言,是指以c/c++.php.Java.perl..net等服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通常与数据库系统. ...

随机推荐

  1. Spring Boot Admin对Springboot服务进行监控

    1.背景 大纲 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.每个应用都认为是一个客户端,通过HTTP或者使用 Eureka注册到admin serv ...

  2. css手撕奥运五环

    巴黎奥运会正如火如荼地进行,本文来使用 CSS 来画一个奥运五环.奥运五环是相互连接的,因此在视觉上会产生重叠效果,这也是实现五环最有挑战性的部分.接下来,将利用 CSS 的伪元素,巧妙地实现环环相扣 ...

  3. 解决 Docker CE 在无根模式(rootless)下无法通过 IPv6 拉取映像的问题

    折腾一天快把我逼疯了 本来 Docker 对 IPv6 的支持就不好,再来个 rootless,雪上加霜 首先,我们要区分 Docker Engine 和 里面的 Image. 拉取映像是 Docke ...

  4. 国内IT行业67家外包公司,有多少程序员在里面待过?

    之前写过一篇关于外包公司的文章, <什么是软件外包公司?要不要去外包公司?> 很多粉丝看了后,感觉都在说自己, 存在即合理, 外包大幅度降(可)低(以)了(压)用(榨)人(更)成(多)本( ...

  5. MySQL 亿级数据平滑迁移实战

    作者:来自 vivo 互联网服务器团队- Li Gang 本文介绍了一次 MySQL 数据迁移的流程,通过方案选型.业务改造.双写迁移最终实现了亿级数据的迁移. 一.背景 预约业务是 vivo 游戏中 ...

  6. DPDK简介

    DPDK简介 DPDK(Data Plane Development Kit)数据平面开发工具包,是一个开源软件项目.DPDK通过维护一系列能够加速多核CPU数据包处理的库,提供数据处理框架.DPDK ...

  7. API 接口是什么?怎么对接 API?

    API接口是预先定义的函数,允许应用间共享数据和功能.对接API涉及获取接口文档,通过POST请求调用如http://域名地址/queryLoginWx的URL,使用特定Headers.成功返回会包含 ...

  8. 【Docker教程系列】Docker学习5-Docker镜像理解

    通过前面几篇文章的学习,我们已经安装好了Docker,也学会使用一些常用的命令.比如启动命令.镜像命令.容器命令.常用命令分类后的第二个就是镜像命令.那么镜像是什么?拉取镜像的时候为什么是一层一层的? ...

  9. python get 请求接口 忽略证书验证

    import requests # 请求接口 import ssl context = ssl.create_default_context() context.check_hostname = Fa ...

  10. compileSdkVersion, minSdkVersion 和 targetSdkVersion,傻傻分不清楚【转】

    原文 https://blog.csdn.net/gaolh89/article/details/79809034 在Android Studio项目的app/build.gradle中,我们可以看到 ...