前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软硬件融合硬核技术内幕——引子 从魂斗罗到DPU

软硬件融合硬核技术内幕——引子 从魂斗罗到DPU

作者头像
用户8289326
发布2022-09-08 17:12:40
6720
发布2022-09-08 17:12:40
举报
文章被收录于专栏:帅云霓的技术小屋

2633年,外星人入侵地球,并在加鲁加群岛建立了军事组织,称为“红色猎鹰(Red Falcon)”。Red Falcon的样子大概是这样的:

错了,划掉,应该是这个样子:

因此,施瓦辛格和史泰龙(现在的妹子们不喜欢,划掉)鹿晗和黄子韬化身超级战士“魂斗罗”(Contra),担负起了拯救地球的使命。

没错,这就是家喻户晓的电子游戏《魂斗罗》的剧情。由于游戏很难,需要很快的反应速度和手眼配合能力,方老师小时候在“上上下下左右左右BA”的帮助下可以玩过第一关,并且无比羡慕自己哥哥玩通8关以后,3条命增加到了6条。

在方老师学习到了计算机的基础知识以后,发现《魂斗罗》这个游戏的可执行文件和所需要的数据,总共容量只有128KB,相比《王XX耀》以GB论的容量,可谓是浓缩的精华。

原来,运行《魂斗罗》游戏的硬件平台,针对游戏应用的特点,进行了深度的软硬件融合设计,使得开发者可以在极小的空间内开发出色彩和情节丰富的游戏。

这个家伙的CPU是一块MOS 6502 CPU(和著名的Apple-II电脑同款),

主频1MHz(也就是每个指令基础周期为1us,比Intel Xeon慢几千倍);

支持16bit的地址总线和8bit的数据总线,也就是支持2的16次方地址空间,64K指令/RAM空间,每次只能从RAM中读取8bit 1字节。

让我们回忆一下FC游戏机的音效和图像效果。FC游戏机的屏幕分辨率为256*224,系统支持52种颜色,但屏幕上只能同时显示13种(4 bit)。我们可以计算出,屏幕每帧的数据量为

256*224*4/8 = 28672Byte。

在NTSC制式(日本电视机制式)下,每秒需要刷新30帧画面,FC游戏机需要每秒输出860KB的数据。这对于一颗1MHz的处理器而言,是巨大的挑战。

此外,游戏的背景音乐和音效也需要占用CPU的指令进行输出。在极度贫瘠的机器性能限制下,FC的游戏无法将BGM和音效录制进游戏卡,只能用程序操控机器合成BGM和音效。这也进一步增加了CPU的压力。

因而,初代FC游戏机的设计师为这颗6502CPU又找了两位帮手:PPU(图像控制器)和pAPU(伪音频处理器)。

PPU实际上是我们计算机里面GPU(俗称显卡)的老祖宗。FC游戏机里面的PPU,一般使用Ricoh的2A03处理器,并挂载2KB的显存,帮助CPU绘制游戏画面,如下图:

实际上这个图是拆成很多方格的:

眼尖一点发现树和白云是一样的,只是颜色变了。

原来,之所以2KB的显存能放下这么大的一张图,是因为FC游戏的ROM里面有个拼图库,如《超级马里奥》的拼图库是这样子:

(总共有16*16=256块,每块的分辨率是8*8)

细心的同学可以看出来,游戏画面的每个格子里面的图案都可以在这张拼图库中找到。拼图库里的每个方块都有自己的索引,想调用哪个方块的图案可以直接按编号找。

原来,在显存中,刚才游戏背景画面的编码,是这个样子的:

前面提到,FC的分辨率是256*224,实际上也就是32*28 = 896个方块,所占用的显存大小还不到1KB。

类似地,马里奥人物也是由方块拼接而成的:

当然,拿到编码,从ROM读取图形块,拼装后输出到电视机的工作,在转换成模拟信号之前,是由PPU完成的。同样,绘制游戏角色(如马里奥,魂斗罗或双截龙等),这些计算也是由PPU完成。其具体实现超出了我们主题的范围,感兴趣的同学可以参考这里:

https://zhuanlan.zhihu.com/p/44236701

而FC游戏机的另一个主要辅助部件pAPU,则可以根据CPU给的数字信号,输出几类波形:

1. 方波,一般用于主声部。

2. 三角波,一般用于低音。

3. 噪音波形,一般用于形成节奏,制造出类似鼓点的声音。

4. 脉冲调制编码,很少有游戏使用,《超级马里奥3》是个例子,游戏使用脉冲编码形成类似钢鼓的声音。

这几类波形在示波器上看到的大致是这样:

通过不同频率和振幅的2路方波(Voice 1和Voice 2),一路三角波(Voice 3)的叠加,可以生成背景音乐 (大家理解为什么FC游戏机的音乐如此难听了吧)。Voice 4和Voice 5可以实现枪炮声一类的音效。

是的,pAPU就是计算机“声卡”的雏形。

有了PPU和pAPU,一颗弱小的6502 CPU就可以为读者们带来如此多的童年乐趣,比如这些:

这就是计算机系统软硬件融合的魅力所在,也是我们即将推开的一扇新的大门。

在云计算时代,最火热的软硬件融合的话题是DPU(Datapath Process Unit),DPU的硬件能够接管Hypervisor、vSwitch、VirtIO等关键路径的软件工作,帮助服务器上的CPU分担计算调度、网络和存储的工作,让服务器上的CPU更聚焦于计算本身。鲜为人知的是,DPU这项前沿技术的始祖,原来是来自于我们童年的回忆。

如果您觉得精彩,请推荐给您的朋友。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档