news 2026/8/13 14:37:30

CPU内部结构全解析:从运算器到控制器,理解计算机如何思考

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CPU内部结构全解析:从运算器到控制器,理解计算机如何思考

1. 项目概述:从“黑盒子”到“指挥中心”

当我们谈论一台电脑的性能时,CPU(中央处理器)总是第一个被提及的部件。它被比作计算机的“大脑”,但这个比喻常常流于表面,让初学者觉得它神秘莫测。今天,我们不谈那些复杂的性能天梯图,也不纠结于某个品牌控制器软件的下载问题,而是回到最根本的地方——拆开这个“黑盒子”,看看CPU内部究竟由哪些基本部件构成,它们又是如何协同工作,让一条条冰冷的指令变成屏幕上跳动的画面和计算结果。理解CPU的基本结构,是理解计算机如何“思考”的第一步,无论是为了排查软件异常占用、优化深度学习模型在CPU上的推理速度,还是为了更深入地学习计算机体系结构,这都是绕不开的基石。

很多人可能遇到过“idea cpu占用高”或者“chrome打开图形加速cpu占用100”这类问题,感到困惑却无从下手。其实,如果你对CPU的基本工作方式有所了解,就会明白这可能是某个核心(运算器)被单一繁重任务独占,而其他核心却在“围观”;或者是指令和数据在CPU内部“堵车”了。同样,学习软件的朋友常问“学软件的要学计算机组成原理吗?”,答案是肯定的。不了解底层硬件如何执行你的代码,就很难写出真正高效、能够充分利用硬件资源的程序。比如,理解CPU的缓存层次结构,就能明白为什么某些数据访问模式会比另一些快得多。

本文旨在为你清晰地勾勒出CPU的基本结构蓝图。我们将聚焦于最经典、最核心的五大功能部件:运算器、控制器、寄存器组、内部总线和时钟。我们会逐一拆解它们的功能、联系,并用生活中熟悉的场景进行类比,让你不仅知道它们是什么,更理解它们为什么这样设计,以及这些设计如何直接影响到你日常使用电脑、编写程序乃至进行硬件选型的实际体验。这绝不是枯燥的理论罗列,而是一次带你深入计算机心脏地带的探索之旅。

2. CPU基本结构总览与核心设计思路

在深入每个部件之前,我们有必要先俯瞰CPU的全貌。你可以把CPU想象成一个高度专业化、流水线化的微型工厂。这个工厂的“原料”是指令和数据,“产品”是运算结果或控制信号。为了实现高效生产,这个工厂内部必须有明确的分工和顺畅的物流。

2.1 经典冯·诺依曼架构下的CPU定位

现代计算机绝大多数遵循冯·诺依曼体系结构,其核心是“存储程序”思想:程序(指令)和数据以二进制形式存放在同一存储器中。CPU的任务就是周而复始地执行一个简单的循环,即“取指-译码-执行”,这个循环被称为指令周期。CPU的所有内部结构设计,都是为了让这个循环执行得更快、更高效。

因此,CPU的基本结构可以逻辑上划分为两大部分:运算器控制器。这是最上层的分工。运算器负责“干活”,执行所有的算术和逻辑运算;控制器负责“指挥”,告诉运算器什么时候、对什么数据、执行什么操作,并协调CPU内外所有部件的步调。除此之外,为了暂存中间结果、当前状态和待处理的数据,CPU内部还需要高速的存储单元,即寄存器组。而所有这些部件之间的通信,则需要内部总线这条“高速公路”。最后,整个工厂的运作节奏由一个精准的时钟来统一协调。

2.2 各部件协同工作的核心逻辑

它们是如何协同工作的呢?我们以一个最简单的加法指令“ADD R1, R2”为例(意为将寄存器R1和R2中的值相加,结果存回R1):

  1. 控制器发出命令,通过总线从内存中取出“ADD R1, R2”这条指令,放入一个专用寄存器(指令寄存器IR)。
  2. 控制器中的译码器开始工作,分析这条指令:哦,这是一条加法指令,操作数在R1和R2里,结果要放回R1。
  3. 控制器根据译码结果,生成一系列微操作控制信号:它命令数据通路将寄存器R1和R2中的值送到运算器的输入端。
  4. 运算器(具体是其中的算术逻辑单元ALU)接收到数据和“加法”操作命令,执行加法计算。
  5. 计算完成后,控制器命令将运算器输出的结果通过总线写回到寄存器R1中。
  6. 同时,控制器会更新一个叫“程序计数器(PC)”的寄存器,使其指向下一条要执行的指令地址,为下一个指令周期做准备。

在整个过程中,时钟像节拍器一样,为每一个微操作提供精确的时序。总线则在控制器、运算器和寄存器组之间穿梭,传递数据、地址和控制信号。这就是CPU执行一条指令的微观世界。

注意:这里描述的是一个非常简化的、非流水线的过程。现代CPU采用流水线、超标量、乱序执行等复杂技术,将多个指令的不同阶段重叠执行,极大地提升了效率。但无论技术如何演进,运算器、控制器、寄存器、总线、时钟这五大基本要素依然是其核心骨架。

3. 核心部件深度解析:运算器与控制器

现在,让我们走进这个微型工厂的两个核心车间:运算器和控制器。

3.1 运算器:执行计算的“工匠车间”

运算器,顾名思义,是负责所有计算任务的部件。它是CPU中真正进行数据变换的地方。其核心是一个叫做算术逻辑单元(ALU)的电路。

3.1.1 算术逻辑单元(ALU)的职能ALU是运算器的灵魂,它能够执行两类基本操作:

  • 算术运算:加、减、乘、除(有些简单的ALU可能硬件只支持加减,乘除通过软件算法或更复杂的硬件单元实现)、加1、减1等。
  • 逻辑运算:与(AND)、或(OR)、非(NOT)、异或(XOR),以及移位(左移、右移、循环移位)和比较等。

你可以把ALU看作一个功能强大的多功能计算器,但它是由晶体管电路构成的,速度极快。控制器告诉ALU:“现在进行加法操作”,并将两个操作数(比如来自寄存器A和B)送到ALU的输入端口,ALU几乎瞬间就能在输出端口给出结果。

3.1.2 运算器的其他辅助部件一个完整的运算器除了ALU,通常还包括:

  • 累加器(ACC):一个特殊的寄存器。在早期CPU或某些简单运算中,它用于存放ALU的一个操作数及运算结果。许多运算会隐含地以ACC为一个操作数。
  • 暂存寄存器:用于临时存放从内存或寄存器读出的另一个操作数。
  • 程序状态字寄存器(PSW):这是一个至关重要的寄存器。它由一系列状态标志位构成,像一组信号灯,记录上一次ALU操作结果的某些特征。常见的标志位有:
    • 零标志(ZF):上次运算结果是否为0。
    • 符号标志(SF):上次运算结果的符号(正负)。
    • 进位标志(CF):加法是否产生进位,或减法是否产生借位。
    • 溢出标志(OF):运算结果是否超出了数据表示范围导致溢出。
    • 奇偶标志(PF):结果中1的个数是奇是偶(用于简单校验)。

这些标志位是程序实现“判断”和“跳转”的基础。例如,比较两个数是否相等,CPU实际是用一个减法操作,然后检查ZF标志。如果ZF=1(结果为0),则说明两数相等。

实操心得:当你调试程序,尤其是底层或嵌入式程序时,学会查看PSW寄存器的值是非常关键的。一个意外的进位或溢出标志,可能就是导致计算结果离奇错误的根源。这也是理解“cpu c3 c6 report如何设置”这类电源管理或状态报告功能的基础——它们都与CPU内部状态的监控有关。

3.2 控制器:协调全局的“指挥中心”

如果说运算器是肌肉,控制器就是大脑中的决策和指挥系统。它决定了CPU运行的节奏和步骤。控制器的核心任务是取指、译码、生成控制信号

3.2.1 控制器的核心组成

  1. 程序计数器(PC):这是一个指针型的寄存器。它里面存放的是下一条将要执行的指令在内存中的地址。CPU每取完一条指令,PC就会自动增加(指向下一条指令地址),从而形成指令的顺序执行。当需要跳转(如执行if、循环、函数调用)时,PC会被填入新的目标地址。
  2. 指令寄存器(IR):用于存放当前正在执行的那条指令本身。从内存取出的指令首先被送到这里。
  3. 指令译码器(ID):它的任务就是“解读”IR中的指令。指令是一串二进制代码,译码器能识别出这串代码代表什么操作(是加法还是跳转?)、操作数在哪里(是在寄存器里还是在内存地址里?)。译码是生成控制信号的前提。
  4. 时序发生器:在时钟脉冲的驱动下,产生周期性的时序信号(如取指周期、译码周期、执行周期),确保各个微操作按严格的时间顺序进行。
  5. 操作控制器:这是控制器的“执行部门”。它根据译码器输出的“操作命令”和时序发生器提供的“节拍”,综合产生出一系列具体的、在时间上有先后顺序的微操作控制信号。这些信号像一道道精确的命令,发往CPU的各个角落:“打开寄存器A到总线的门”、“启动ALU的加法功能”、“将结果总线上的数据写入寄存器R1”等等。

3.2.2 控制器的两种实现方式控制器如何知道产生哪些微操作信号呢?主要有两种设计思路:

  • 硬布线控制器:将控制逻辑直接固化在电路门中。像早期的CPU(如经典的8086)和现代RISC架构的CPU核心常用这种方式。它的优点是速度快,因为信号路径是固定的硬件电路。但缺点是不灵活,指令集一旦设计好就很难修改。这就像一座城市的交通信号灯系统是物理连线的,改起来要动工程。
  • 微程序控制器:将每一条机器指令的执行过程,分解成一系列更基本的“微指令”,这些微指令序列构成一个“微程序”,存储在一个叫控制存储器(CM)的ROM中。执行时,控制器相当于一个微型计算机,按顺序读取并执行这些微指令,每一条微指令产生一组控制信号。它的优点是设计灵活,修改或扩展指令集只需改写微程序(固件),无需改动硬件电路。但多了一层解释,速度相对较慢。一些复杂的CISC指令(如x86的一些指令)常用微程序实现。

现代高性能CPU通常是二者的结合:常用、简单的指令用硬布线实现以求极速(如加减法、逻辑运算),复杂或不常用的指令用微程序实现以节省硬件成本、保持灵活性。

注意事项:当你遇到“蓝德控制器调试”或“pid控制器”这类工业控制场景的术语时,要区分清楚。这里的“控制器”通常指的是一个独立的、实现特定控制算法(如PID)的硬件设备或软件模块,与CPU内部的“控制器”是不同层面的概念。CPU的控制器是硬件底层的指挥者,而PID控制器是上层应用层面的算法执行者。不过,PID算法最终也需要编译成CPU能执行的指令,由CPU内部的控制器调度运算器来计算。

4. 寄存器组与内部总线:CPU的高速缓存与信息高速公路

CPU内部的工作速度极快,如果每一次操作都去访问相对慢速的内存(RAM),那么CPU将花费大量时间在等待上,形成性能瓶颈。为了解决这个问题,CPU内部集成了少量但速度极快的存储单元——寄存器,并通过内部总线将它们高效地连接起来。

4.1 寄存器组:CPU的“工作台”与“便签簿”

寄存器是CPU内部的高速存储单元,由触发器构成,其访问速度比内存快几个数量级。你可以把它们想象成工程师手边的工作台和便签簿:最常用的工具、正在加工的半成品、下一步的计划,都放在手边,随用随取,效率最高。

4.1.1 寄存器的分类与功能寄存器并非千篇一律,根据用途可分为几类:

  • 通用寄存器:这是程序员(或编译器)可以直接通过指令操作的一组寄存器。它们用途广泛,可以存放操作数、中间结果或地址。例如,在x86架构中有EAX, EBX, ECX, EDX等;在ARM架构中有R0-R12。通用寄存器的数量和位宽(32位/64位)是衡量CPU架构能力的一个重要指标。
  • 专用寄存器:承担特定、不可替代的角色,通常程序员不能直接随意使用。
    • 程序计数器(PC):前面已介绍,存放下一条指令地址。
    • 指令寄存器(IR):存放当前指令。
    • 程序状态字寄存器(PSW/FLAGS):存放状态标志位。
    • 堆栈指针(SP):指向内存中堆栈区域的当前位置。函数调用、局部变量存储都离不开它。
    • 基址指针(BP):常用于函数调用时定位参数和局部变量。
  • 暂存寄存器:用于运算器内部临时存放数据,对程序员透明(不可见)。

4.1.2 寄存器与性能的密切关系“寄存器溢出”是一个重要的性能概念。当计算所需的数据或中间变量过多,通用寄存器不够用时,编译器就不得不将一些数据“溢出”到速度慢得多的内存(甚至是更慢的硬盘缓存)中去,这会导致性能急剧下降。因此,在编写高性能代码(如核心算法、驱动、游戏引擎)时,一个有经验的程序员或编译器会极力优化寄存器的使用,让最频繁访问的变量驻留在寄存器中。这也是为什么在查看“服务器cpu天梯图”或比较CPU时,除了核心数和频率,架构设计(包括寄存器文件的大小和重命名机制)对实际性能影响巨大的原因。

4.2 内部总线:数据、地址与控制的“三车道”

总线是一组公共的通信线路,用于在计算机各部件之间传递信息。CPU内部同样需要总线来连接运算器、控制器和寄存器组。根据传递信息的不同,内部总线通常分为三类:

  • 数据总线:负责在部件间传送数据。例如,从寄存器将操作数送到ALU,或者将ALU的结果送回寄存器。数据总线的宽度(一次能传输的二进制位数)直接决定了CPU一次能处理的数据量,是“位宽”(如32位、64位CPU)的关键指标之一。
  • 地址总线:当CPU需要从内存读写数据时,控制器会通过地址总线发出要访问的内存单元地址。地址总线的宽度决定了CPU的寻址能力,即能管理多大容量的内存。例如,32位地址总线可寻址2^32 = 4GB内存。
  • 控制总线:负责传送控制器发出的各种控制信号,以及接收其他部件返回的状态信号。比如“内存读”、“内存写”、“中断响应”、“总线请求”等信号。

在CPU内部,这些总线可能以更集成、更高速的形式存在,但其逻辑功能是清晰的。内部总线的设计追求高带宽、低延迟和良好的同步性。现代CPU采用多级互连网络等复杂结构来避免总线成为性能瓶颈。

实操心得:理解总线概念有助于排查硬件兼容性问题。例如,为什么某些老主板不支持大容量内存?可能是因为CPU地址总线宽度或主板芯片组寻址能力的限制。再比如,在嵌入式开发中,配置“esxi 直通 usb控制器”或理解“i2c信号测试”时,你本质上是在配置CPU与外部设备通过某种总线(如PCIe、I2C)进行通信的规则和时序。

5. 时钟与指令执行流程:CPU的心跳与舞步

时钟是驱动CPU一切动作的脉搏,而指令周期则是在这个脉搏下编排的固定舞步。

5.1 时钟脉冲:同步一切的节拍器

CPU内部有一个时钟发生器,它产生固定频率的周期性脉冲信号,这就是时钟信号。时钟频率(如3.5 GHz)就是其每秒钟震荡的次数。每一个时钟脉冲的上升沿或下降沿,触发CPU内部的一个或多个触发器改变状态,从而推动一个微操作的完成。

5.1.1 时钟周期的意义两个相邻时钟脉冲之间的时间间隔称为一个时钟周期,它是CPU处理操作的最基本时间单位。CPU的主频(时钟频率)越高,时钟周期就越短,理论上单位时间内能执行的基本操作就越多,性能也越强。这就是为什么频率是CPU性能的一个重要参数。

5.1.2 并非所有操作都在一个周期内完成需要注意的是,执行一条完整的机器指令往往需要多个时钟周期。例如,一个简单的寄存器加法可能只需要1个周期,而一个复杂的浮点除法可能需要几十个周期。访问一次内存(如果数据不在缓存中)可能需要数百个时钟周期!这就是为什么CPU要设计多级缓存来减少访问内存的等待时间。

5.2 指令周期的详细分解

一条指令从取来到执行完毕的过程,称为一个指令周期。它可以进一步细分为几个更小的阶段,即机器周期(或称为CPU周期)。一个典型的指令周期包括以下机器周期:

  1. 取指周期

    • 操作:控制器将程序计数器(PC)中的地址通过地址总线送到内存。发出“读”命令。内存将该地址处的指令代码通过数据总线送回CPU,存入指令寄存器(IR)。同时,PC自动加“1”(或加上指令长度),指向下一条指令。
    • 核心部件:PC, 地址总线, 控制总线(读信号), 数据总线, IR。
  2. 间址周期(非必需,只有当指令的操作数是间接地址时才需要):

    • 操作:如果指令指定的是操作数在内存中的地址(间接寻址),则需要这个周期。CPU将IR中的地址码部分(即操作数地址的地址)送到内存,读出真正的操作数地址。
    • 目的:为执行周期获取真正的操作数地址。
  3. 执行周期

    • 操作:这是指令的实际执行阶段。控制器根据IR中译码得到的操作码,产生一系列微操作控制信号。这些信号控制数据通路,可能包括:从寄存器或内存读取操作数到ALU,命令ALU执行特定运算,将结果写回寄存器或内存,或者根据运算结果修改PC的值以实现跳转。
    • 核心部件:控制器(译码器、操作控制器), 数据通路, ALU, 寄存器组。
  4. 中断周期(非必需,当有中断请求且被响应时才插入):

    • 操作:CPU在执行完当前指令后,检查是否有中断请求。如果有且允许响应,则进入中断周期。在此周期内,CPU会保存当前程序的断点(通常是PC的值)和状态(PSW),然后跳转到中断服务程序的入口地址去执行。
    • 目的:实现CPU与外部设备的异步事件处理。

注意事项:现代CPU普遍采用指令流水线技术,它将一条指令的执行过程分解成多个更细的阶段(如取指、译码、执行、访存、写回),并让多条指令的不同阶段在时间上重叠起来,就像工厂的装配线。这样,虽然每条指令的执行时间没变,但CPU在每一个时钟周期都能完成一条指令(理想情况下),极大地提高了吞吐率。理解基本的非流水线指令周期,是理解流水线、超标量乃至乱序执行等高级技术的基础。

6. 现代CPU的演进与基本结构的扩展

我们上面讨论的是一个高度简化的CPU模型。过去几十年来,为了追求极致的性能,CPU的基本结构在核心五部件的基础上,发生了深刻而复杂的演进。

6.1 从单核到多核:并行化的必然选择

当单个CPU核心的频率提升遇到物理极限(功耗墙、散热墙)后,增加芯片上核心的数量成为提升性能的主要途径。这就形成了多核CPU。每个核心本质上都是一套相对独立的、包含运算器、控制器、寄存器组和一级缓存的基本结构。多个核心通过共享的末级缓存和系统总线接口连接在一起。

6.1.1 多核带来的挑战与机遇多核设计带来了真正的硬件并行能力,但也对软件提出了新要求。操作系统需要能够将任务(线程)合理地调度到不同的核心上执行(这就是“cpu智能核心调度”话题的由来)。程序员也需要编写多线程程序才能充分利用多核资源,否则就会出现“一核有难,多核围观”的情况,这也是“wechatappex.exe占用cpu高”有时却只跑满一个核心的原因之一。

6.2 缓存体系的引入:弥补速度鸿沟

如前所述,寄存器快,内存慢。为了进一步缓解这个矛盾,现代CPU在寄存器和主内存之间加入了多级高速缓存(Cache)。

  • L1 Cache:最靠近核心,速度最快,容量最小(通常几十KB),分为指令缓存和数据缓存。
  • L2 Cache:速度、容量居中(通常几百KB到几MB),可能是每个核心独享或核心间共享。
  • L3 Cache:速度相对较慢,容量最大(通常几MB到几十MB),通常由所有核心共享。

缓存的存在,使得CPU在绝大多数情况下可以快速获取指令和数据,只有缓存不命中时才会去访问慢速内存。缓存的设计(容量、关联度、替换算法)是CPU架构设计的重中之重,对性能影响巨大。

6.3 超标量、流水线与乱序执行:挖掘指令级并行

为了进一步提升单个核心的执行效率,现代CPU采用了多种复杂技术:

  • 超标量:在一个时钟周期内,可以同时发射并执行多条指令。这需要CPU内部有多个相同的功能单元(如多个ALU)。
  • 流水线深化:将指令执行划分成更多、更细的阶段(可能十几级甚至更多),让重叠更充分。
  • 乱序执行:指令的实际执行顺序不一定严格按照程序顺序。如果后续指令的操作数已经就绪,且执行单元空闲,即使前面的指令因等待数据而阻塞,后面的指令也可以提前执行。这需要复杂的硬件(如重排序缓冲区)来保证最终结果与顺序执行一致。

这些技术使得CPU的控制器和运算器设计变得极其复杂,但核心思想依然是在基本结构之上,通过并行、预测、缓存等手段,尽可能提高“取指-译码-执行”这个循环的吞吐率。

6.4 专用计算单元的集成

随着应用场景的多样化,CPU也开始集成一些专用的计算单元,以高效处理特定任务:

  • 浮点运算单元(FPU):专门处理浮点数计算,早期是独立的协处理器,现在已集成进CPU核心。
  • 图形处理单元(GPU):最初用于图形渲染,其强大的并行计算能力现在也被用于通用计算(GPGPU)。不过,在消费级CPU上,通常是以集成显卡的形式存在一个规模较小的GPU。
  • 人工智能加速单元:如Intel的AMX、AMD的AI引擎等,专门用于加速矩阵乘加等AI典型运算。

这些单元可以看作是运算器功能的扩展和专门化,它们通过特定的指令集和内部总线与CPU核心协同工作。

理解CPU的基本结构,是理解所有这些高级特性和性能指标的基础。当你再看到“cpu温度在哪看”、“embedding模型在cpu和gpu上的区别”、“yolov8 cpu”部署性能分析等问题时,你就能从更底层的视角去思考:计算发生在哪个单元?数据如何在存储层次间移动?瓶颈可能出现在哪里?这才是学习计算机组成原理带给我们的、超越简单操作指南的真正价值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/13 14:33:54

幽浮2模组管理终极指南:用AML模组启动器重建你的游戏秩序

幽浮2模组管理终极指南:用AML模组启动器重建你的游戏秩序 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirror…

作者头像 李华
网站建设 2026/8/13 14:33:22

Qwen3.8-Max大模型实战:从API调用到本地部署与微调全解析

最近在跟进大模型技术动态时,发现阿里云的通义千问团队又放了个大招——Qwen2.5-72B-Instruct 模型在多个权威评测中表现抢眼,而更引人注目的是其最新推出的 Qwen3.8-Max 版本,凭借在多模态理解和代码生成上的突破,在最新的综合能…

作者头像 李华
网站建设 2026/8/13 14:32:15

3分钟免费绕过iPhone激活锁:applera1n解锁工具完整指南

3分钟免费绕过iPhone激活锁:applera1n解锁工具完整指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 如果你正在为一部iPhone激活锁发愁,想找一款真正免费的开源激活锁绕过工…

作者头像 李华
网站建设 2026/8/13 14:31:02

Python游戏脚本入门:从零构建控制台回合制游戏逻辑

1. 从零到一:为什么选择Python写游戏脚本?如果你对游戏自动化、重复性操作感到厌倦,或者想通过编程让游戏玩起来更轻松有趣,那么用Python写一个游戏脚本,绝对是一个绝佳的入门选择。我最初接触这个领域,也是…

作者头像 李华
网站建设 2026/8/13 14:28:51

TMRL:实时应用的终极强化学习框架,彻底改变AI决策速度

TMRL:实时应用的终极强化学习框架,彻底改变AI决策速度 【免费下载链接】tmrl Reinforcement Learning for real-time applications 项目地址: https://gitcode.com/gh_mirrors/tm/tmrl TMRL(TrackMania Reinforcement Learning&#x…

作者头像 李华
网站建设 2026/8/13 14:28:12

吃灰的PS2还能再战:Open PS2 Loader零基础无光盘畅玩指南

吃灰的PS2还能再战:Open PS2 Loader零基础无光盘畅玩指南 【免费下载链接】Open-PS2-Loader Game and app loader for Sony PlayStation 2 项目地址: https://gitcode.com/gh_mirrors/op/Open-PS2-Loader 某个周末的傍晚,我从柜子深处翻出了那台积…

作者头像 李华