查看原文
其他

RK3588主板探秘

知舟 格友 2023-06-10










RK3588




2023年5月20日20:00,《在调试器下理解计算机系统》的第一讲通过腾讯会议准时开始。尽管是在520这样的特殊的日子里,很多格友还是准时上线了。

第一讲的主题是:板上乾坤,以幽兰为例。从这个标题中也能看出格物的思想,以幽兰代码本上对RK3588的实现作为一个具体的实例来学习。



Overview

概览


当我们把幽兰的后盖打开,拆下它的散热片,就能看到幽兰的主板。“板上乾坤”其实就是把板子上的各个部件作为例子来讲一下幽兰这个系统,用这种看得见、摸得着的方式,来阐述如何用典型的ARM SoC实现一台笔记本电脑需要哪些部件。

中间这一块就是我们的主角——瑞芯微的3588 SoC,是一款具有8nm制程工艺、高集成度的片上系统。在它的周围,就如同众星捧月一般支撑起了整个系统。首先,我们就从离它最近的个头比较大的这三块芯片开始讲起,芯片的个头大小是很说明问题的。右上角这块黑色的是128GB的eMMC闪存,用于存放Linux内核。

另外,出厂时默认的home目录也在这里面。它承担着外存的角色,可以永久存储数据。左下角的这两块就是幽兰的16G DDR内存,幽兰所配备的内存也是目前RK3588所能实现的最大内存。透过板上的这些关键部件,我们能更深层次地理解寄存器原理。



Three Major Components

冯·诺伊曼架构

的三大件


今天主流的桌面级计算机系统用的都是冯·诺伊曼架构。冯·诺伊曼架构就把计算机系统抽象成我们眼前的这幅图,冯·诺伊曼把中间用C来表示,分成CA(中央算术单元)和CC(中央控制单元),今天统称为CPU。在离CPU很近的地方有内存,冯·诺伊曼用M来表达。而后他又画了两个R,就是我们今天所说的外存,外存是通过I/O去访问的。像这样,冯·诺伊曼就把整个计算机系统归纳成三大件。

虽然我们今天仍遵循着冯·诺伊曼架构,但也有所不同,比如外存,它也离中央处理器越来越近了。如果是传统的PC,硬盘是在很远的地方——主板外面挂着。而今天对于幽兰来说,外存也离CPU很近。由此可以看出,计算机系统在大结构不变的情况下也在做一些演变。



主角RK3588 SoC

接下来,张老师分别对三大件做了细致介绍。

先是从我们的主角SoC说起,RK3588这块不仅在中国很有名,在全世界范围内也是很有名的。能把ARM的SoC做到这样好的性价比也是比较少见的,可以说是凤毛麟角。在没有RK3588之前,要实现ARM的本子,其实性能是不够的。要做一个笔记本形态的计算机系统,最中央的SoC芯片在性能上是要达到一定级别的,此前的(包括3399)都还欠一档,3588真正地达到了这一级别。当然,实现这一级别除了它的8个核之外,也包括它所配备的其他基础部件,如GPU、VPU、HDMI、USB、PCIe。所有的这些条件都达到了,才可能用它来实现一款像幽兰这样性能还可以的计算机系统。

今天做SoC很难的一件事情在于平衡,即:如何选取当下成熟的技术,并集成到一起。这个集成不是简单地堆在一起,它要能相互加分,实现1+1>2。最后还要达到一个良好的性价比,不能太贵,要经得起市场的检验,如果性价比不合适,那它也是不符合市场要求的。

RK3588在这方面做得非常好,精心选择各个部件,把它们组合在一起,又打磨得很好,包括它的调试支持、外围部件所达到的稳定度等,都让人深感佩服。



这幅图是RK3588的逻辑框图,不是实际的晶体管物理布局。


Memory

访问内存的速度

就是整个系统的速度


讲完了三大件里中央的部分,下面再讲一下内存。

内存就涉及到DDR,今天达到G级别的大规模内存,其实现通常都是使用了DDR这样的技术。在3588内部就集成了DDR控制器,它是用来和DDR的颗粒进行通信的。访问内存就涉及到最关键的性能问题,因为软件要跑起来,就要和内存打交道,代码、数据都要访问内存,访问内存的速度就是整个系统的速度,成为影响整个系统最关键的制约因素。因此,为了提高性能,DDR控制器就做得越来越复杂。



Storage

可以永久存储的外存


深挖过内存之后,再转到eMMC的外存。幽兰出厂的时候,我们是把Linux内核放在eMMC这个闪存上。eMMC闪存也有一个MMC控制器,源自美国,瑞芯微在很长一段时间内一直使用这个控制器。该控制器形成了一个MMC协议的总线,可以挂多个设备。幽兰上实际挂了3种设备,一种就是eMMC的闪存,另一种是大家的SD卡,有时插,有时不插,还有一种就是wifi。

在讲解外存的过程中,张老师分享了一种适用于启动阶段的优化手段,提高访问的速度。由于时间关系,第一讲不能过于深入地探讨到每一方面,但却可以为我们打开思路,这些东西都是值得我们去研究的。



Power Supply

占用近一半信号的

电源


介绍完RK3588的三大件——SoC、内存、外存后,张老师带着我们从电源的角度进行了深耕。

再回到SoC这位主角身上,在它的数据手册里也给出了外部封装的信号,仍然使用的是BGA模式。它封装后的尺寸是21.45mm * 21.45mm,是一个正方形。封装好的芯片未必是正方形,比如今天英特尔的很多SoC就不是正方形,都是长方形。RK3588还是封装成方方正正的,这样的大小差不多就是2cm * 2cm,它也成为幽兰主板上最大的一块芯片。封装好的格式就叫BGA1088,从命名可以看出,它一共有1088个信号。对比而言,GDK3只有48个信号,幽兰却有一千多个信号,足以看出它的复杂度。当然,在X86上目前是有两千多个信号。我们可以想象,把这样的芯片和主板结合在一起需要很精细的工艺。

这一千多个信号是做什么的呢?首先,前文提到的DDR控制器是需要占一些信号的;然后PCIe也需要占一些信号;还有USB,包括GPU的显示信号,也要占用一些信号;除此之外,大约有四五百个信号都是和电源或者接地有关的。也就是说,这一千多个信号大约有一半是和电源相关的。由此展开了对供电问题的探索,张老师以幽兰使用的双806电源控制方案作为具体的实例来讲解。


Conclude

归纳


RK3588是一款非常牛的SoC,不仅是我们觉得很好,国外的很多同行也觉得它很好。

例如:在著名的tomshardware上面最近有一篇介绍RK3588的文章,这也许是Orange Pi做的宣传,但不管怎么样,RK3588正在全世界流行。因此,大家选择幽兰也是和全世界的同行一起学习,它是当代ARM生态里面性价比很高的一款SoC。




上面两幅图分别为第一讲课程的讲义以及演示的截图。

最后,再引用朱夫子的一段话:“万理虽只是一理,学者且要去那万理中千头万绪都理会,四面凑合来,自见得是一理。不去理会那万理,只管去理会那一理,只是空想像。”

很多人感到迷茫:“张老师,给我出个主意吧,我到底怎样才能提高呢?”就如同朱夫子所说,这只是“空想象”。要确定一个方向,深入下去。如果你要用X86,就选一款X86去学;如果你要用ARM,就选一款ARM。往下深挖,今天弄懂了闪存,明天理解了硬盘,后天学会了printk,这样日积月累,就可融会贯通了。

最后给大家推荐一下幽兰的学习资源,这些文章我们会坚持写下去。

幽兰使用教程:

https://www.nanocode.cn/wiki/docs/youlan

以上是关于RK3588课程第一讲的概述内容,如果大家对后续内容感兴趣,也可以报名参加我们的《在调试器下理解RK3588和LINUX5.10》课程。










购买幽兰代码本即可成为兰舍会员,与众多技术高手一起成长。

购买可前往淘宝格友小店:

https://m.tb.cn/h.Uuv7fit?tk=N1iIdn8t4CI


盛格塾是格蠹科技旗下的知识分享平台,是以“格物致知”为教育理念的现代私塾。


本着为先圣继绝学的思想,盛格塾努力将传统文化中的精华与现代科技密切结合,以传统文化和人文情怀阐释现代科技,用现代科技传播传统文化。


访问方式

手机端:微信小程序搜索“盛格塾”

电脑端:下载Nano Code社区版客户端

https://nanocode.cn/#/download

格友公众号

盛格塾小程序

往期 · 精彩推荐

在RK3588上体验UEFI

比内存被踩还难调试的问题

编译器,你在说啥?

2023杭州研习班回顾

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存