组成原理(十二):机器(下)

系列文章目录



前言

哈工大计组网课笔记,教材《计算机组成原理》(唐朔飞)


(四)控制单元

1. 控制单元的功能

控制单元的主要功能之一就是完成指令的解释过程,包括了取指、分析、执行、中断响应。所以下面将以指令的解释功能为例来讲控制单元CU的功能

1.1.微操作命令分析

微操作命令:这些命令是在指令解释过程当中由CU发出的一些指令,这些指令所要完成的动作和整条指令要完成的功能相比要小得多,所以将这些操作命令称为微操作命令。
完成一条指令分 4 个工作周期:取指周期、间址周期、执行周期、中断周期,下面就看在这四个工作周期当中,CU要发出那些控制信号。
这里假设指令是定长的,和存储字长和将机器字长都是相等的。通过一次存取指令就能将指令从存储器中取出送到CPU指定的寄存器当中

1.1.1.取指周期

在这里插入图片描述

微指令说明
P C → M A R → 地址线 ( → M ) PC→MAR→地址线(→M) PCMAR地址线(M)PC将要取的指令地址送到存储器,实际上就应该给MAR,M是没有寄存器存储地址的,地址线暂存给MAR,M需要地址的时候再读取MAR的
1 → R 1→R 1RCU向存储器发出读命令
M ( M A R ) → M D R M(MAR)→MDR M(MAR)MDR存储器将读出的数据送到MDR,M(MAR)的意思应该是主存利用MAR里面的地址
M D R → I R MDR→IR MDRIRMDR将取出的指令传给指令寄存器
O P ( I R ) → C U OP(IR)→CU OP(IR)CUIR将指令的操作码部分传给CU,CU进行译码
( P C ) + 1 → P C (PC) + 1 → PC (PC)+1PCCU控制对PC进行更新,为下一条指令做准备
1.1.2.间址周期

在这里插入图片描述

微操作说明
A D ( I R ) → M A R AD(IR)→MAR AD(IR)MARIR中的指令形式地址传给MAR再传给存储器
1 → R 1→R 1RCU将读操作命令给存储器,在内存内部是有RD和WR寄存器的,R=1表示读,W=1表示写
M ( M A R ) → M D R M(MAR)→MDR M(MAR)MDR存储器取出操作数地址之后传给MDR
M D R → A d ( I R ) MDR→Ad(IR) MDRAd(IR)MDR将操作数的地址传给IR的地址码部分

此时IR当中的地址码部分就是操作数所在的存储单元的地址。

1.1.3.执行周期

执行周期比较复杂,指令不一样,执行的微操作不一样,功能也不一样,所以要对指令进行分类:

非访存指令
指令说明微操作
CLAclear ACC,对ACC清零 0 → A C C 0\rightarrow ACC 0ACC
COM取反 A C C ˉ → A C C \bar{ACC}→ACC ACCˉACC
SHR算术右移,左边补上的是原来的符号位 L ( A C C ) → R ( A C C ) , A C C 0 → A C C 0 L(ACC)→R(ACC),ACC_0→ACC_0 L(ACC)R(ACC),ACC0ACC0,就是将原来的符号位写回到最高位
CSL循环左移 R ( A C C ) → L ( A C C ) , A C C 0 → A C C n R(ACC)→L(ACC),ACC_0→ACC_n R(ACC)L(ACC)ACC0ACCn
STP停机指令 0 → G 0→G 0G,计算机有个停机标志,置0即停机
访存指令
指令微操作说明
A D D X ADD\quad X ADDX加法指令将地址X中的数取出与ACC中相加再存入ACC中
A d ( I R ) → M A R Ad(IR) → MAR Ad(IR)MAR操作数地址仍然是在IR中的,要将操作数从内存取出
1 → R 1 → R 1R
M ( M A R ) → M D R M(MAR) → MDR M(MAR)MDR
( A C C ) + ( M D R ) → A C C (ACC) + (MDR) → ACC (ACC)+(MDR)ACC
S T A X STA \quad X STAX存数指令ACC中的数据存到X中
A d ( I R ) → M A R Ad(IR) → MAR Ad(IR)MAR将X的地址传给存储器
1 → W 1 → W 1W写的指令传给主存
A C C → M D R ACC → MDR ACCMDR
M D R → M ( M A R ) MDR→M(MAR) MDRM(MAR)
L D A X LDA \quad X LDAX取数指令X中的数据加载到ACC中
A d ( I R ) → M A R Ad(IR) → MAR Ad(IR)MAR将X的地址传给存储器
1 → R 1 → R 1R
M ( M A R ) → M D R M(MAR) → MDR M(MAR)MDR
M D R → A C C MDR → ACC MDRACC
转移指令
指令微操作说明
J M P X JMP \quad X JMPX 无条件转移 A d ( I R ) → P C Ad(IR) → PC Ad(IR)PC
A B N X ABN \quad X ABNX条件转移 A 0 ⋅ A d ( I R ) + A 0 ˉ ( P C ) → P C A_0 \cdot Ad(IR)+\bar{A_0}(PC)\rightarrow PC A0Ad(IR)+A0ˉ(PC)PC负则转,如果上一条指令的结果是负数,就跳转到X地址的指令,上一条指令的运算结果是在ACC中的,判断正负就看最高位 A 0 A_0 A0即可
三类指令的指令周期

在这里插入图片描述

中断周期

中断周期干了三件事:保存断点,形成中断服务程序入口地址,关中断

任务微操作说明
保存断点 0 → M A R ( 程序断点存入 " 0 " 地址 ) ( S P ) − 1 → M A R ( 程序断点进栈 ) 0→MAR(程序断点存入"0"地址)\\(SP) - 1 → MAR(程序断点进栈) 0MAR(程序断点存入"0"地址)(SP)1MAR(程序断点进栈)保存断点就是将断点送入到内存单元中,有两种方式:1. 程序断点存入"0"地址 2. 程序断点进栈二者在操作上唯一的不同就是:断点保存的地址不同(前提是在这个模型机中,堆栈也是内存的一部分)
1 → W 1 → W 1W
P C → M D R PC → MDR PCMDR程序断点原在PC中的
M D R → M ( M A R ) MDR → M(MAR) MDRM(MAR)
形成中断服务程序入口地址(中断识别程序入口地址) M → P C M→PC MPC这是软件查询法
或者向量地址 → P C → PC PC这是硬件查询法
关中断 0 → E I N T 0 → EINT 0EINTEINT置0,就关中断了

1.2.控制单元的功能

简而言之,就是发出各种控制命令或微指令,控制整个CPU系统包括内部的各个部件能够协调稳定正确连续的运行。

1.2.1.控制单元的外特性

在这里插入图片描述

输入信号
输入信号说明
时钟CU受时钟控制,微操作命令在指定的时间点发出一个时钟脉冲,发一个操作命令或一组需同时执行的操作命令
指令寄存器 O P ( I R ) → C U OP(IR)→CU OP(IR)CU,IR保存了要执行的那条指令,将指令的操作码送到CU进行译码,指出指令要做的操作,控制信号与操作码有关
标志CU受标志控制,比如说条件转移指令所需要判断的条件就是标志
外来信号来自CPU外部的信号也会进入CU,以便CU对整个系统的硬件资源发出命令,进行管理。比如INTR中断请求,HRQ总线请求
输出信号
输出信号指令举例说明
CPU内部的各种控制信号,控制CPU内部的部件做相应的操作 R i → R j R_i→R_j RiRj寄存器之间的数据传输
( P C ) + 1 → P C (PC)+1→PC (PC)+1PC更新PC指令
ALU 算术运算(加、减)、逻辑运算(与、或)CPU内部运算器执行的操作,乘法和除法也是一个个加法、减法完成的,所以没有乘除法信号
送至控制总线的信号,控制IO、总选、存储体的信号 M R E Q ˉ \bar{MREQ} MREQˉ访问存储体控制信号,存储体那章讲过 Memory Request
I O ˉ / M \bar{IO}/M IOˉ/M访IO/存储体的控制信号,低电平是IO,高电平是存储体
R D RD RD存储器读命令
W R WR WR存储器写命令
I N T A INTA INTA中断响应信号,CPU发出,响应中断源的中断请求
H L D A HLDA HLDA总线响应信号,响应外设发出的总线使用请求
1.2.2.控制信号举例
不采用 CPU 内部总线的方式

也就是CPU内部的各个部件采用分散连接的方式,而不是总线连接。
CPU的内部结构如下:
在这里插入图片描述

起点终点说明
PCMAR取指令,PC要将指令地址送到MAR(取数据的地址是保存在IR中的)
MARMMAR要将地址送给内存
MMDR从内存中取出来的地址或者数据送到MDR中
MDRIR取出来的地址从MDR送到IR
AC如果是取数指令,取回来的数据送到ACC中
ALU如果是加法指令,取回来的数据可能直接被送到ALU了
MAR如果是间址寻址,内存中取出来的是操作数的地址,还要再送给MAR去取数,事实上,在取值周期,IR和MDR中都有了指令,就包括间址周期中需要的地址,因此可以从MDR中拿地址,也可以从IR中拿地址,这里选择前者
由此可以看出为什么要MDR了,因为MDR保存的种类很多,因此先统一保存到MDR中,在CU的控制下再送给响应的部件
IRCU指令寄存器IR的操作码部分要送给CU进行译码
时钟CUCU要有时钟信号作为输入,即时钟控制CU发出控制信号
CU控制信号CU发出控制信号
控制信号ALU控制信号控制ALU操作
ALUACALU的计算结果保存在ACC中
以ADD @X为例展示微操作命令的分析

取指周期就是将指令送到CU,从PC开始,由CU控制PC和MAR之间的数据通路,也就是打开 C 0 C_0 C0,将PC内容传给MAR,MAR经过 C 1 C_1 C1这个控制电路送给内存单元的地址线,同时CU向存储单元发送读命令。取回来的指令通过 C 2 C_2 C2控制电路放到MDR当中,MDR通过 C 3 C_3 C3控制电路将指送入IR,到此取指结束,最后要更新PC。取指后IR当中指令的操作码部分送给CU进行译码。
在这里插入图片描述

从C0到C4依次执行,并且这几个指令都是CU发出的 最终是送到CU的,CU进行译码也在取指阶段完成

间址周期就是取出操作数的地址,操作数的地址保存在X存储单元当中,假设形式地址从MDR中获得,即从MDR开始,MDR将指令的地址码通过 C 5 C_5 C5这个控制电路送到MAR,再通过 C 0 C_0 C0控制电路送到存储器的地址线上。然后控制单元发出读命令,通过 C 2 C_2 C2这个控制电路,将读出的操作数的地址送入MDR当中。下一步将MDR当中保存的操作数的值送到IR的地址码部分。
在这里插入图片描述

执行次序是 C5 C1 C2 C3
间址周期是将操作数的地址送到IR的地址码中,以便执行周期使用,起点是MDR,终点是IR

执行周期在这个例子中是完成加法操作,是将内存单元中指定地址的数据和AC当中保存的数据在控制信号的作用下做加法操作。加法操作由ALU完成,并将结果保存在AC当中。
在这里还是假设使用MDR当中的数据,即执行周期从MDR开始,将操作数的地址通过 C 5 C_5 C5控制电路传送给MAR,再由 C 1 C_1 C1传送给存储器的地址线上,CU给存储器读取指令,存储器读取操作数通过 C 2 C_2 C2控制电路将操作数传送给MDR,此时加法操作的两个操作数都以及保存在了CPU的寄存器当中,其中被加数在AC中,加数在MDR当中。下一步就是 C 6 C_6 C6 C 7 C_7 C7两个控制电路打开,将操作数送入ALU,在控制信号的的控制下完成加法,然后大开 C 8 C_8 C8,将运算结果保存在AC当中。

C5 C1 C2 C7 C6(67顺序可颠倒) CU发出控制信号 C8

采用 CPU 内部总线方式

在CPU内部,还可以采用总线的方式,把CPU内部的各个部件连接到内部总线上。为了简化CPU的结构、简化设计,假设CPU内部采用的都是总线方式。
下面还是以间接寻址的加法为例,看一下在这种内部采用总线方式的CPU当中,间接寻址的加法指令的取指、间址、执行周期,CU需要产生哪些控制信号。这些控制信号之间是有一定的时序关系的。即在不同周期或者是不同的节拍控制单元要发出相应的控制命令以完成相应的操作。
在这里插入图片描述

ALU是组合电路,不具有保存功能,因此添加Y和ACC寄存器来保存操作数,Z来保存结果

以ADD @X为例展示微操作命令的分析

取指周期:地址在PC当中,PC要通过CU的控制信号 P C o u t PC_out PCout,将PC保存的值送入CPU内部总线,然后通过MAR的输入控制信号 M A R i MAR_i MARi把PC的值送给MAR,此时MAR当中就是现在要执行的加法指令在内存单元的地址,然后MAR将这个地址送入地址线,CU发出相应的读命令,读命令通过控制线传给存储器。读取的指令通过数据线送入到MDR,MDR将指令在MDR的输出控制信号 M D R i MDR_i MDRi的控制下送入CPU的内部总线,然后通过总线在IR的控制信号 I R i IR_i IRi下送入IR。除了将指令取出,在取指周期中还要完成译码的操作,即将IR的操作码部分送给CU进行译码,最后还需要更新PC。
下图的给出的相应的控制信号实际上都是由CU在时钟信号的控制下产生的控制信号,在时间上是有先后顺序的。
在这里插入图片描述

操作说明
P C → M A R → PC→MAR→ PCMAR地址线 P C o M A R i PC_o MAR_i PCoMARi
CU发出读命令 1 → R 1→R 1R
数据线→MDR取回来的指令送给MDR
M D R → I R MDR→IR MDRIR M D R o I R i M D R MDR_o IR_i MDR MDRoIRiMDR将指令给IR
O P ( I R ) → C U OP(IR)→CU OP(IR)CUIR将操作码送给CU进行译码
( P C ) + 1 → P C (PC) +1 → PC (PC)+1PC

间址周期:要将操作数的地址取出来,放到IR的地址码部分,首先将形式地址送给MAR,此时假设地址从MDR开始传送,将MDR中的的形式地址通过 M D R o MDR_o MDRo控制信号将形式地址送到内部总线,再由 M A R i MAR_i MARi的输入控制信号将形式地址传送到MAR,MAR将形式地址通过地址线传给存储器,此时CU向存储器发送读取信号,存储器将读取的操作数的地址传回MDR,MDR的控制电路 M D R o MDR_o MDRo有效,将操作数的地址传入内部总线,然后通过 I R i IR_i IRi将地址传送到IR的地址码部分。
在这里插入图片描述

操作说明
M D R → M A R → MDR→MAR→ MDRMAR地址线 M D R o M A R i MDR_o MAR_i MDRoMARi,这里是将形式地址 → M A R →MAR MAR,也可以从IR中拿
CU发出读命令 1 → R 1→R 1R
数据线 → M D R →MDR MDR取回来的指令送给MDR
M D R → I R MDR→IR MDRIR M D R o I R i , M D R MDR_o IR_i ,MDR MDRoIRi,MDR将有效地址 → I R →IR IR

执行周期:首先要把参与加法运算的操作数从存储器中取出。此时还是假设以MDR为起点,将MDR中的的形式地址通过 M D R o MDR_o MDRo控制信号将形式地址送到内部总线,再由 M A R i MAR_i MARi的输入控制信号将形式地址传送到MAR,MAR将形式地址通过地址线传给存储器,CU发出读取信号,存储器将读取的操作数的地址传回MDR。此时一个操作数再MDR当中,另一个在AC当中。下一步将MDR中的的形式地址通过 M D R o MDR_o MDRo控制信号将形式地址送到内部总线,再由 Y i Y_i Yi的输入控制信号将形式地址传送到Y寄存器,然后将Y传给ALU,AC的操作数也通过 A C o AC_o ACo控制电路传给内部总线再传到ALU,在各种控制信号的控制下ALU完成加法操作将结果送到Z寄存器当中。然后Z通过控制电路 Z o Z_o Zo将结果传送到内部总线,在经过 A C i AC_i ACi将结果存到AC当中。
在这里插入图片描述

操作说明
M D R → M A R → MDR→MAR→ MDRMAR地址线 $MDR_o MAR_i$
CU发出读命令 1 → R 1→R 1R
数据线 → M D R →MDR MDR取回来的指令送给MDR
M D R → Y MDR→Y MDRY M D R o Y i M D R MDR_o Y_i MDR MDRoYiMDR将操作数给Y
A C → A L U AC→ALU ACALU A C o A L U i AC_o ALU_i ACoALUi
( A C ) + ( Y ) → Z (AC) + (Y) → Z (AC)+(Y)Z
Z → A C C Z→ACC ZACC指令最终的结果要保存在ACC中的
1.2.3.多级时序系统

之前将指令的解释花费的总的时间叫做指令周期,指令周期之下又分为取指、间址、执行、中断周期,实际上,这些周期都是机器周期。

机器周期
机器周期的概念

所有指令执行过程中的一个基准时间

确定机器周期需考虑的因素

每条指令的执行步骤,每一步骤所需的时间,将每个步骤划分到机器周期中

基准时间的确定

通常情况下:
在指令执行的过程中(取指、间址、执行、中断)以完成最复杂指令功能的微操作的时间为准
实际上,最复杂的,或者是时间最长的通常都是是访存操作,取指,间址,执行阶段都需要访存
因此,通常情况下,以访问一次存储器的时间为基准
若指令字长 = 存储字长,取指周期 = 机器周期
实际上,在一个机器周期中除了访存操作,还要进行很多操作,比如取指周期要进行各种赋值,数据传送、更新PC等,这些操作也是有一定的先后顺序的(详细见上文),在机器周期的内部也要有多个时钟周期,由这些时钟控制微操作的执行顺序。

机器周期和时钟周期是不一样的!

时钟周期(节拍、状态)

一个机器周期内可完成若干个微操作,每个微操作需一定的时间,有些微操作在一个时钟周期内完成,有些微操作可能花费多个时钟周期(比如对内存的访问)
将一个机器周期分成若干个时间相等的时间段(节拍、状态、时钟周期),由时钟周期控制在一个机器周期内部微操作的先后顺序。
时钟周期是控制计算机操作的最小单位时间。
用时钟周期控制产生一个或几个微操作命令(控制几个微操作命令的情况一般是指这些微操作可以并行执行)

我们利用CLK时钟来产生节拍信号,不同的节拍是有先后顺序的。可以利用节拍的上升沿让CU产生不同的控制命令,来控制CPU内部的各部件以及计算机的其他部分发出相应的操作。
在这里插入图片描述

就这样一个大的指令周期分为若干个机器周期,一个机器周期分为若干个节拍(时钟周期),节拍就是控制计算机操作的最小单位时间。
比如指令周期分为取址、间址、执行、中断周期,每个机器周期再分为节拍,控制微操作,比如PC的值赋给MAR等
指令周期,机器周期,节拍(时钟周期)就构成了计算机的 多级时序系统

多级时序系统

指令周期、机器周期、节拍(状态)组成多级时序系统
一个指令周期包含若干个机器周期、一个机器周期包含若干个时钟周期。
在这里插入图片描述

指令周期包含的机器周期数和机器周期包含的节拍数都是不一定的,有的长有的短,有的可能一样,有的不一样

机器速度与机器主频的关系

机器的主频 f f f(时钟周期的倒数) 越快,机器的速度也越快吗?
实际上这个假设这是有前提的:
两台机器都采用非流水方式,并且在一个指令周期当中,包含的机器周期的数量是相同的 ,在机器周期所含节拍数也相同的,那么两机平均指令执行速度之比就等于两机主频之比 M I P S 1 M I P S 2 = f 1 f 2 \frac{MIPS_1}{MIPS_2} = \frac{f_1}{f_2} MIPS2MIPS1=f2f1
机器速度不仅与主频有关 ,还与一个机器周期中所含时钟周期(主频的倒数)数以及指令周期中所含的机器周期数有关。
即使这两个一样,一台采用流水,一台采用非流水,结果也是不一样的。

1.2.4.控制方式

控制单元CU控制一条指令执行的过程,实质上是依次执行一个确定的微操作序列的过程。由于不同指令所对应的微操作数及其复杂程度不同,因此每条指令和每个微操作所需的执行时间也不同。通常将如何产生控制不同微操作序列所采用的时序控制方式称作CU的控制方式。常见的控制方式有同步控制、异步控制、联合控制和人工控制四种。
简单来说,控制方式是指产生不同微操作命令序列所用的时序控制方式。

同步控制方式

这种方式使用的比较多,同步控制方式是指任一微操作均由统一基准时标的时序信号控制,一定有一个统一的,定宽定距的时钟作为标准,每一个微操作都是在这个时钟的控制下,在指定的节拍产生。
在这里插入图片描述

如果机器内的存储器其存取周期不统一,那么只有把最长的存取周期作为机器周期,才能采用同步控制,否则取指令和取数时间不同,无法用统一的基准。又比如有些不访存的指令,执行周期的微操作较少,无须4个节拍。因此,为了提高CPU的效率,在同步控制中又有三种方案。

采用定长的机器周期

也就是说,每个机器周期含有相同数量的节拍数,这个时候机器周期以最长的微操作序列和最复杂的微操作作为标准。
可能会在某些执行阶段造成时间浪费。

比如采用定长的机器周期,机器周期包含四个节拍,对于取指阶段来说,可能一个节拍就可以结束了,剩下的三个节拍就浪费了。

采用不定长的机器周期

​ 这种方案每个机器周期内的节拍数可以不等,这种控制方式可解决微操作执行时间不统一的问题。​ 通常把大多数微操作安排在一个较短的机器周期内完成,而对某些复杂的微操作,采用延长机器周期或增加节拍的办法来解决。
在这里插入图片描述

采用中央控制和局部控制相结合的方法

在讲总线的时候已经讲到了,如果一条指令本身的执行时间就比较长,如何缩短呢?
可以采用中央控制与局部控制相结合的方式
在这里插入图片描述
图中可以看到,执行周期比较长,延长的部分用局部控制节拍。
在设计局部控制线路时需注意两点:
其一,使局部控制的每一个节拍T的宽度与中央控制的节拍宽度相同。
其二,将局部控制节拍作为中央控制中机器节拍的延续,插入到中央控制的执行周期内,使机器以同样的节奏工作,保证了局部控制和中央控制的同步。
T
的多少可根据情况而定,对于乘法,当操作数位数固定后,T*的个数也就确定了。
而对于浮点运算的对阶操作,由于移位次数不是一个固定值,因此T的个数不能事先确定。

以乘法指令为例,第一个机器周期采用中央控制的的节拍控制取指令操作,接着仍用中央控制的T0、T1、T2,节拍去完成将操作数从存储器中取出并送至寄存器的操作,然后转局部控制,用局部控制节拍T*完成重复加和移位的操作。

异步控制方式

异步控制方式不存在基准时标信号,没有固定的周期节拍和严格的时钟同步,执行每条指令和每个操作需要多少时间就占用多少时间。
这种方式微操作的时序由专门的应答线路控制,即当CU发出执行某一微操作的控制信号后,等待执行部件完成了该操作后发回“回答”(或“结束"”)信号,再开始新的微操作,使 CPU 没有空闲状态
但因需要采用各种应答电路,故其结构比同步控制方式复杂。

联合控制方式

同步控制和异步控制相结合就是联合控制方式。
这种方式对各种不同指令的微操作实行大部分统一、小部分区别对待的办法。
例如,对每条指令都有的取指令操作,采用同步方式控制;
对那些时间难以确定的微操作,如lO操作,则采用异步控制,以执行部件送回的"回答”信号作为本次微操作的结束。

人工控制方式

人工控制是为了调机和软件开发的需要,在机器面板或内部设置–些开关或按键,来达到人工控制的目的。

Reset复位键

按下Reset键,使计算机处于初始状态。当机器出现死锁状态或无法继续运行时,可按此键。若在机器运行时按此键,将会破坏机器内某些状态而引起错误,因此要慎用。有些微机未设此键,当机器死锁时,可采用停电后再加电的办法重新启动计算机。

连续或单条执行转换开关

由于调机的需要,有时需观察执行完一条指令后的机器状态,有时又需要观察连续运行程序后的结果,设置连续或单条执行转换开关,能为用户提供这两种选择。

符合停机开关

有些计算机还配有符合停机开关,这组开关指示存储器的位置,当程序运行到与开关指示的地址相符时,机器便停止运行,称为符合停机。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值