主机

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. php 常用文件操作

    判断文件或文件夹是否存在 file_exists() 打开文件 fopen() 关闭文件 fclose() 判断是否可写入 is_writable() 写入数据 fwrite() 测试文件指针是否到了 ...

  2. [SDOI2012] 走迷宫 题解

    前言 题目链接:洛谷:Hydro & bzoj. 题意简述 有向图中,求起点到终点的期望步数.若期望不存在,输出 INF. 保证强连通分量的大小不超过 \(100\). 题目分析 首先来想想什 ...

  3. 017.Kubernetes二进制集群扩容worker

    一 前置准备 1.1 互信配置 为了更方便远程分发文件和执行命令,本实验配置master节点到其它节点的 ssh 信任关系. 1 [root@master01 ~]# ssh-copy-id -i ~ ...

  4. 推荐一款Python开源移动应用安全测试分析工具!!!

    今天给大家推荐一个安全测试相关的开源项目:nccgroup/house 1.介绍 它是一个由 NCC Group 开发的,一个基于Frida和Python编写的动态运行时移动应用分析工具包,提供了基于 ...

  5. 瑞芯微 | I2S-音频基础 -1

    最近调试音频驱动,顺便整理学习了一下i2s.alsa相关知识,整理成了几篇文章,后续会陆续更新. 喜欢嵌入式.Li怒晓得老铁可以关注一口君账号. 1. 音频常用术语 名称 含义 ADC(Analog ...

  6. 瑞芯微 | 摄像头ov13850移植笔记

    <1.瑞芯微rk356x板子快速上手> <2.Linux驱动|瑞芯微rtc-hym8563移植笔记> <3.Linux驱动 | Linux内核 RTC时间架构-基于瑞芯微 ...

  7. Linux驱动小技巧 | 利用DRIVER_ATTR实现调用内核函数

    1. 前言 很多朋友在调试驱动的时候,都会遇到这样一个场景: 修改一个参数,然后调用某个内核中的函数. 比如将某个gpio的值拉高/拉低,修改某个寄存器的值等等. 如果每一个参数都通过字符设备的ioc ...

  8. JavaScript设计模式样例六 —— 抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern) 定义:抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来.或者说,是其他工厂的工厂.目的:提供一个创建一系列相关或 ...

  9. 使用Kiota工具生成WebApi的代理类,以及接口调用的简单体验

    前言 当前.NET环境下,生成WebApi代理类的工具已经有很多选择了,比如OpenApi Generator,NSwag和Refitter等,不同的工具生成的代码风格以及实现方式略有不同,比如Ref ...

  10. 超轻量级、支持插件的 .NET 网络通信框架

    前言 给大家推荐一个轻量级的.支持插件的综合网络通信库:TouchSocket. TouchSocket 的基础通信功能包括 TCP.UDP.SSL.RPC 和 HTTP.其中,HTTP 服务器支持 ...