计算机系统概述(详解)

(一)组成部分
1.计算机硬件:CPU + MM + I/O
(1)中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。
1.cpu体系结构详解
1.1. 处理器简要结构
我们都知道CPU的根本任务就是运行指令,对计算机来说终于都是一串由“0”和“1”组成的序列。
CPU从逻辑上能够划分成3个模块,各自是控制单元、运算单元和存储单元。这三部分由CPU内部总线连接起来

  • 控制单元:控制单元是整个CPU的指挥控制中心。由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等,对协调整个电脑有序工作极为重要。它依据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包含节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。
  • 运算单元:是运算器的核心。能够运行算术运算(包含加减乘数等基本运算及其附加运算)和逻辑运算(包含移位、逻辑測试或两个值比較)。 相对控制单元而言,运算器接受控制单元的命令而进行动作。即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是运行部件。
  • 存储单元:包含CPU片内缓存和寄存器组,是CPU中临时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据。CPU访问寄存器所用的时间要比訪问内存的时间短。
    采用寄存器。能够降低CPU訪问内存的次数。从而提高了CPU的工作速度。
    但由于受到芯片面积和集成度所限,寄存器组的容量不可能非常大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序猿规定其用途。通用寄存器的数目因微处理器而异。
    CPU的工作原理概括例如以下:

总的来说,CPU从内存中一条一条地取出指令和相应的数据,按指令操作码的规定。对数据进行运算处理,直到程序运行完毕为止。

(2)MM是计算机硬件中的主存储器,即Main Memory。
(3)I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分。
2.计算机软件:系统软件+应用软件
(二)冯·诺依曼结构Von neumann structure?(普林斯顿结构)

1.计算机有运算器、控制器、存储器、输入和输出设备。
2. 各基本部件的功能是:
存储器存放数据和指令,形式上两者没有区别,但计算机应
能区分数据还是指令;
控制器应能自动执行指令;
运算器应能进行加/减/乘/除四种算术运算和一些逻辑运算;
操作人员通过输入、输出设备和主机进行通信。
3. 内部以二进制表示指令和数据。每条指令由操作码和地址码两
部分组成。操作码指出操作类型,地址码指出操作数的地址。
由一串指令组成程序。
4. 采用“存储程序”工作方式。 将事先编好的程序和原始数据送
入主存中,然后启动执行。计算机能自动完成逐条取出指令和
执行指令的任务。
(三)计算机发展时间节点
第一代:真空管(电子管Vacuum Tube )1946~57年
第二代:晶体管 1958~64年
第三代:SSI/MSI 1965~71年
第四代:LSI/VLSI/ULSI 1972~至今
(四)典型计算机的硬件组成

(五)三种程序
汇编程序(Assembler):汇编语言源程序→机器目标程序
编译程序(Complier):高级语言源程序→汇编/机器目标程序
解释程序(Interpreter ):将高级语言语句逐条翻译成机器指令并立即执行,不生成目标文件。
二、计算机性能评价
(一)评价指标
两大分类
Tasks per day, hour, sec, ns…
– 吞吐率(throughput)
– 带宽(bandwidth )
Time to do the task
– 响应时间(response time)
– 执行时间、等待时间(execution time, latency)
各项指标
1.CPU执行时间:执行程序中每条指令的时间。
意义:一般不考虑主存磁盘输入输出开销,只考虑CPU的执行时间。
比较计算机的性能时,多用CPU执行时间来衡量。
2.CPU时间:指CPU花在程序执行上的时间。
包括2部分:

  1. 用户CPU时间:运行用户代码的时间。
  2. 系统CPU时间:为了执行用户程序而需要运行操作系统程序的时间。
    3.CPI (Cycles Per Instruction):即执行一条指令所需的时钟周期(机器主频的倒数)数.
    CPI = 时钟周期数 /指令 (每条指令单周期或多周期)
    意义:CPI 用来衡量以下各方面的综合结果: 指令集、程序、计算机系统的设计
    1.3.1 机器字长
    机器字长是指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。字长越长,数的表示范围越大,精度越高。机器的字长也会影响机器的运算速度。
    机器字长对硬件的造假也有较大的影响。它将直接影响加法器(或ALU)、数据总线以及存储字长的位数。所以机器字长的确定不能从单从精度和数的表示范围来考虑。
    1.3.2 存储容量
    存储器的容量应该包括主存容量和辅存容量。
    主存容量是指驻村中存放二进制代码的总位数。即
    存储容量 = 存储单元个数存储字长
    1.3.3 运算速度
    计算机的运行速度取决于:机器的主频、执行什么样的操作、主存本身的速度如何等都有关。
    普通法:一种早期的衡量运算素的的方法,即用完成一次加法或乘法所需的时间。
    吉普森(Gibson)法:综合考虑每条指令的实行时间以及他们在全部操作中所占的百分比,即,其中为机器运行速度;为第种指令占全部操作的百分比数;为第种指令的执行时间。
    FLOPS: (Floating Point Operation Per Second):浮点运算次数。

其他指标
1.MIPS
Million Instructions Per Second (定点指令执行速度)现在机器的运算速度普遍采用单位时间内执行指令的平均条数来衡量,并用MIPS(Million Instruction Per Second,百万条指令每秒)作为计量单位。
2.MFLOPS
Million Floating-point Operations Per Second(浮点操作速度)
3.性能评价基准程序(Benchmarks)
• 基准测试程序是专门用来进行性能评价的一组程序
• 基准程序通过运行实际负载来反映计算机的性能
• 最好的基准程序是用户实际使用的程序或典型的简单程序
(二)部分数值计算
计算式
CPI = (CPU 时间×时钟频率) / 指令条数 = 总时钟周期数 / 指令条数
CPU 执行时间 = CPU时钟周期数 × 时钟周期
= CPU时钟周期数 / 时钟频率
= 指令条数 × CPI × 时钟周期
三、数据的机器级表示
(一)数值数据表示
数值数据:无符号整数、带符号整数、浮点数(实数)、十进制数
数值数据表示三要素:进位计数制(进制),定点浮点表示,编码规则
定点数的表示
• 进位计数制
二、八、十六、十
• 定点数的二进制编码
1、原码

2、补码
假定补码有n位,则X的补码为:
定点整数:[X]补= 2n + X (-2n≤X< 2n,mod 2n);
定点小数:[X]补= 2 + X (-1≤X<1,mod 2);
一个负数的补码等于模减去该负数的绝对值。
便捷计算:
正数:符号位为0,数值部分不变
负数:符号位为1,数值部分“各位取反,末位加1”

3、反码
正数的反码与原码相同
负数的反码符号不变,数值位取反

4、移码
定义:将每一个补码数值加上一个偏置常数得到移码 。
作用:主要用来表示浮点数阶码。
• 定点整数的表示
无符号整数、带符号整数
浮点数的规格化
 IEEE754浮点数标准

非规格化参照表格

浮点数计算注意问题
很大的数与很小的数进行运算时,小的数将会被抹掉。
(原因,浮点数计算第一步,阶码计算时,小数移位运算,全部变成0了)
十进制数表示
用ASCII码或BCD码表示。
(二)非数值数据表示
非数值数据:逻辑数(包括位串)、西文字符和汉字
逻辑数据
用一位表示 。
逻辑数据和数值数据在形式上并无差别,也是一串0/1序列,机器靠指令来别。
西文字符
拼音文字,用有限几个字母可拼写出所有单词;
只对有限个字母和数学符号、标点符号等辅助字符编码;
所有字符总数不超过256个,使用7(或8)个二进位可表示;
常用编码为ASCII码。
常见ASCII码的大小规则:09<AZ<a~z。
(1)数字比字母要小。如 “7”<“F”;
(2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
(3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
(4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。
几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48[4] 。
汉字
有以下几种汉字代码:
输入码:对汉字用按键进行编码,用于输入;
内码:用于在系统内存储、查找、传送等处理;
变化过程:
码表区位码(加20H)—> GB2312国标码(高位变1)—>内码
解释:
码表由94行、94列组成,行号为区号,列号为位号,各占7位;
区号和位号各自加上32(20H),得到其“国标码”;
国标码中区号和位号各占7位,前面添一个0,构成一个字节;
为与ASCII码区别,将国标码的两个字节的第一位置“1”得到汉字内码。
字模点阵或轮廓描述: 描述汉字点阵或轮廓,用于显示/打印。
(三)数据的宽度、存储排列、纠/检错
比特(bit)是计算机中处理、存储、传输信息的最小单位;
字节(Byte),也称“位组”。
存储器按字节编址;
字节是最小可寻址单位 (addressable unit )。
字长:定点运算数据通路的宽度。
字长等于CPU内部总线的宽度、运算器的位数、通用寄存器的宽度等。
字用来度量数据类型的宽度。
储存
ISA设计时要考虑的两个问题:
• 大小端问题
大端方式: MSB的地址是数的地址;
大端方式: MSB的地址是数的地址。
• 字的边界对齐问题
按边界对齐 (假定字的宽度为32位,按字节编址)
字地址:4的倍数(低两位为0)
半字地址:2的倍数(低位为0)
字节地址:任意
不按边界对齐
好处:节约空间;
坏处:可能会增加访存次数。
纠错、检错
元器件故障或噪音会使数据出现差错。
措施:
(1) 通过电路、布线等方面提高的抗干扰能力;
(2) 进行数据检错和校正,发现并纠正错误。
例如:
增大码距可提高检错纠错能力。
码距:
若干位代码组成的一个字叫码字(数据校验中“码字”指数据位和校验位排列得到的代码)
两个码字中不同位的个数叫它们的距离;
码制中所有码字间最小距离为码距,即码制的距离。
常用的数据校验码有:
奇偶校验码、海明校验码、循环冗余校验码。
• 奇偶校验:适应于一字节长数据的校验,如内存
• 海明校验:各组内用奇偶校验,用于内存储器数据的校验
• 循环冗余校验:用在通信和外存中,适合于大批量数据校验
四、运算方法及部件
(一)高级语言和机器指令中的运算
算术运算
整数算术运算、浮点数算术运算
按位运算
用途:
对位串实现“掩码”(mask)操作或相应的其他处理
逻辑运算
与、或、非
与按位运算的差别
符号表示不同:& - && …
运算过程不同:按位 - 整体
结果类型不同:位串 - 逻辑值
移位运算
• 用途
提取部分信息
扩大或缩小数值的2、4、8…倍
• 操作
左移:x<<k; 右移: x>>k
由x的类型决定移位的类型
无符号数:逻辑移位(逻辑移位:空位补0;)
带符号整数:算术移位(算术左移:低位补0;算术右移: 高位补符号。)
右移:低位移出,高位补符号,可能发生有效数据丢失。
位扩展和位截断运算
• 用途
类型转换时可能需要数据扩展或截断
• 操作
无专门运算符,由类型转换前后数据长短确定是扩展还是截断
扩展:短转长
无符号数:0扩展,前面补0
带符号整数:符号扩展,前面补符
截断:长转短
强行将高位丢弃,故可能发生“溢出”
实现MIPS定点和浮点运算指令的思路:
先实现一个能进行基本算术运算(加/减)和基本逻辑运算的ALU;
再由ALU和移位器实现乘、除、浮点运算器。
(二)ALU(划重点)

算术逻辑单元(arithmetic and logic unit),简称ALU。
ALU可进行加/减算术运算和逻辑运算。其核心部件是加法器。
加法器:
半加器;
全加器;
串行进位加法器;
并行进位加法器。
超前进位加法器(Carry Look-Ahead),简称CLA加法器。
CLA加法器由进位生成/传递部件、CLA部件和 求和部件 构成。
实现Si=Pi⊕Ci的电路称为求和部件
局部(单级)CLA加法器

带标志加法器
加法器需要增加逻辑门生成标志信息。
溢出标志OF= Cn⊕Cn-1
符号标志SF=Fn-1
零标志ZF
进位借位标志CF=Cout ⊕ Cin

ALU的核心部件是带标志位加法器。
A、B为n位输入端。ALUop操作控制端。下图中可进行与、或、加运算。

(三) 定点数运算及其运算部件
无符号数的按位逻辑运算可用逻辑门实现;
逻辑移位可用移位器实现;
带符号数的算术移位、无符号和带符号数的位扩展和截断也可用简单电路实现。
加减公式
[A+B]补 = [A]补 + [B]补 ( mod 2n )
[A–B]补 = [A]补 + [–B]补 ( mod 2n )
[–B]补=[B]补取反+1
(取反时含符号位)
标志位作用
零标志ZF、符号标志SF、进/借位标志CF、溢出标志OF称为条件标志。
条件标志在运算电路中产生,记录到专门寄存器。称为程序状态字寄存器或标志寄存器。
零标志ZF=1当F=0;
有符号数的符号标志SF:SF=Fn-1
(无符号数的符号位没有意义)
有符号数溢出标志OF:OF=Cn异或Cn-1
(不必关心无符号数溢出,模2n)
无符号数进位/借位标志CF:CF=Cout异或Cin
(不必关心有符号数进位/借位)
对加减运算电路认识
1.所有算术运算都基于加法器实现;
2.加法器不知道所算的是带符号数还是无符号数;
3.加法器不判定对错,总是取低n位作为结果,并生成标志信息。
原码乘法
可用ALU和移位器来实现乘法。
手工乘法的特点:
① 每步计算:X×yi,若yi = 0,则得0;若yi = 1,则得X
② 把①求得的各项结果X× yi 逐次左移,表示为X× yi×2-i
③ 对②中结果求和,即 (X× yi×2-i)求和 即为两数的乘积

计算机稍作改进:
① 每次得X×yi后,与前面的结果累加得到Pi,称之为部分积,减少了保存各次相乘结果的开销。
② 每次得X×yi后,不是左移与Pi相加,而将Pi右移后与X×yi相加。
因为加法运算始终对部分积中高n位进行,故用n位加法器可实现二个n位数相乘。
③ 对乘数中为“1”的位加并右移,对为“0”的位只右移,不加。
补码乘法
校正法

布斯算法

快速乘法器
设计快速乘法部件的必要性 :
• 乘法运算耗时多
• 比例大,大约1/3是乘法运算
快速乘法器的实现(由特定功能的组合逻辑单元构成)
如:阵列乘法器
阵列乘法器是原码乘去掉符号位,即为无符号数乘法。
除法运算
手算除法的基本要点
① 被除数与除数相减,够减则上商为1;不够减则上商为0。
② 每次得到的差为中间余数,将除数右移后与上次的中间余数比较。够减则上商为1;不够减则上商为0。
③ 重复执行②,直到商的位数足够。
带符号除法
原码除法:
恢复余数法;
不恢复余数法。
补码除法:
补码恢复余数法;
补码不恢复余数法。
(四) 浮点数运算及其运算部件
浮点数运算

加减法要点
基本要点:

乘除法要点
基本要点
(1) 求阶: Xe + Ye - 127 或者 Xe - Ye + 127
(2) 尾数相乘除: Xm */Ym (原码乘/除)
(3) 两数符号相同结果为正;相异为负;
(4) 结果的尾数高位为0需左规;最高位有进位需右规。
(5) 若尾数比规定的长,则需舍入。
(6) 若尾数是0,则阶码也置0,结果为0。
(7) 阶码溢出判断
五、指令系统
指令
一条指令须包含的信息
操作码:操作类型
(操作码长度:固定/可变)
源操作数:一个或多个源操作数的地址
(操作数来源:指令本身/寄存器/主存/I/O端口)
目的操作数:结果存放何处
(结果地址:寄存器/主存/I/O端口)
下一条指令地址:
(正常隐含在PC中,跳转时由指令给出)
(二)指令类型和格式
指令格式的基本原则
1 应尽量短
2 操作码位数要足够
3 有唯一的解释
4 指令长度应是字节的整数倍
5 地址字段的个数应合理
6 指令尽量规整
(三)数据类型
操作数的基本类型:
地址(指针)
无符号整数,用来确定主(虚)存地址
数值数据
定点数(整数):用二进制补码表示
浮点数(实数):IEEE754
位、位串、字符和字符串
用来表示文本、声音和图像等
逻辑(布尔)数据
按位操作(0-假/1-真)
这些操作数都存放在寄存器或内存单元中
(四)操作数的寻址方式
– 立即 / 寄存器 / 寄存器间接 / 直接 / 间接 / 堆栈 / 偏移

顾名思义。
(五)操作码的编码
操作码的编码有两种方式
– 定长操作码
– 扩展操作码
指令字也可定长或变长
–定长指令字 – 变长指令字
• 代码长度更重要时:变长指令字、变长操作码,存储更紧凑;
• 性能更重要时:定长指令字、定长操作码,访问和译码更快速。
指令长度与操作码长度是否可变没有绝对关系。
操作码定长不一定指令字定长;操作码变长指令字一般变长。
(六)指令系统
指令设计风格
– 按操作数地址指定方式来分:
累加器型 、堆栈型 、通用寄存器型、load/store型
– 按指令的复杂度来分:
复杂指令集计算机CISC (Complex Instruction Set Computer)
精简指令集计算机RISC (Reduced Instruction Set Computer)
指令系统举例
MIPS特点概述:
• 所有指令都是32位;
• 有些指令有26位目标地址;有些只有16位。
• 所有动作在1个时钟周期内完成;
• 所有运算都是32位的,没有字节和半字的运算;
• MIPS指令固定4个字节,x86平均长度3个字节,所以一般二进制文件比x86大;
• 寻址方式:只有一种内存寻址方式,即基地址加16位偏移地址;
• 没有栈指令PUSH和POP,对栈的操作都是统一的内存访问方式。
• 子函数的返回地址不存到栈中,而是存到$31寄存器。
六、CUP
(一)单周期数据通路的设计
CPU的功能
CPU执行指令。
每条指令都由四种基本操作实现:
主 存 —>寄存器(取指, 取数)
寄存器 —>主存(存结果)
寄存器 —> 寄存器或者ALU(取数,存结果)
算术或逻辑运算(运算,计算地址,PC计算)
操作功能用==RTL(Register Transfer Language)==描述
RTL通常规定:
(1)用R[r]表示寄存器r的内容;
(2)用M[addr]表示主存单元addr的内容;
(3)传送方向用“←”表示,传送源在右,传送目的在左;
(4)直接用PC表示其内容。
数据通路的位置
数据通路:
指令执行过程中数据经过的路径,包括路径中的部件,是执行部件。
(数据通路是由操作元件和存储元件通过总线方式或分散方式连接而成的进行数据存储、运算和传送的路径。)
数据通路组成:
• 组合逻辑元件(也称操作元件)
• 时序逻辑元件(也称状态元件,存储元件)
数据通路中的状态元件有两种:寄存器(组) + 存储器
数据通路的功能:
• 进行数据传送、运算、存储
单周期数据通路的设计
单总线一个时钟只传一个数据,效率低。
多总线同时传送数据,提高效率
选择MIPS指令集的一个子集作为CPU的实现目标
MIPS的三种指令类型:
°R: ADD and SUB
• add rd, rs, rt
• sub rd, rs, rt
°I: OR Immediate:
• ori rt, rs, imm16
°I: LOAD and STORE
• lw rt, rs, imm16
• sw rt, rs, imm16
°I: BRANCH:
• beq rs, rt, imm16
°J: JUMP:
• j target
• 下条指令地址计算与取指令部件
30位PC,三路选择:顺序、Branch(结合标志Zero)、Jump
• R型指令的数据通路
ALU两个操作数来自rs和rt,结果写到rd
• 访存指令的数据通路
符号扩展,数据在rt和主存单元中交换
• 立即数运算指令的数据通路
0扩展后的操作数送到ALU的一个输入端
• 分支和跳转指令的数据通路
综合所有指令的数据通路
一个单周期数据路径:

(二)单周期控制器的设计
控制器的功能:
指令译码,生成控制信号,控制数据通路的动作,是控制部件。
考察每条指令的执行过程和涉及到的控制信号的取值
• 公共操作:取指令和计算下址PC
• R-Type指令(add / sub)
• 立即数指令 (ori)
• 访存指令(lw / sw)
• 分支指令 (beq)
• 跳转指令 (j)
汇总各指令的控制信号取值
• 分两类控制信号:直接送往数据通路 / 送往局部控制单元
分析ALU操作对应的控制信号与func字段之间的关系
设计ALU局部控制单元
局控的另一支路是R型指令,ALUctr由func决定,需要根据func写出ALUctr的表达式
设计主控制单元
(三)微程序控制器设计与异常处理
**硬连线路控制器设计的优点和缺点 **
优点:速度快,适合于简单或规整的指令系统,例如,MIPS指令集。
缺点:结构庞杂,实现困难;修改、维护不易;灵活性差。
**微程序设计控制器的基本思想 **
基本思想:
• 仿照程序设计,为每个指令编制微程序;
• 每个微程序由若干条微指令构成,各微指令包含若干条微命令
(一条微指令相当于一个状态,一个微命令就是状态中的控制信号)
• 执行时依次取出微指令,译码产生微命令(即控制信号)。
• 存储器称为控制存储器(Control Storage),简称控存CS 。
特点:灵活,但速度慢。适用于复杂指令集。
**微程序、微指令、微操作和微命令的概念及其关系 **
微程序是一个微指令序列;
每条微指令是一个0/1序列,其中包含若干个微命令(即:控制信号);
微命令控制数据通路的执行
**微指令格式设计 **
• 微操作码字段
水平微程序:不译法、字段直接编译法、字段间接编译法
垂直微程序:垂直编译法
• 下条微指令地址确定方式
增量法(计数器法)
断定法(下址字段法)
下条微指令有四种情况:
• 取指微程序:每条指令一定先执行取指微程序。
• 第一条微指令:取指后转到该指令的第一条微指令。
• 顺序执行时:顺序取下条微指令。
• 分支执行时:根据不同指令选择下条微指令。
MIPS指令子集的微程序控制器设计

异常和中断的处理
°程序执行被 “中断” 的事件有两类
• 内部“异常”:在CPU内部发生的意外事件或特殊事件
按发生原因分为硬故障中断和程序性中断两类
硬故障中断:如电源掉电、硬件线路故障等
程序性中断:执行某条指令时发生的“例外(Exception)”,如溢出、缺页、越界、非法指令、除数为0、堆栈溢出、访问超时、断点设置、单步、系统调用等
• 外部“中断”:在CPU外部发生的特殊事件,外部中断是一种I/O方式,
通过“中断请求”信号向CPU请求处理。如实时钟、控制台、打印机缺纸、外设准备好、采样计时到、DMA传输结束等。
内部“异常” 按处理方式分为故障、自陷和终止三类:
故障(fault) :执行指令引起的异常事件,如溢出、缺页、堆栈溢出、访问超时等。
自陷(Trap) :预先安排的事件,如单步跟踪、系统调用(执行访管指令)等。是一种自愿中断。
终止系统(Abort) :硬故障事件,机器将“终止”,调出中断服务程序来重启操作系统。
外部中断处理:
1.关中断;
2.保护断点和程序状态;
3.识别异常事件。(软件识别(MIPS采用)、硬件识别(中断向量)(80x86采用))
(四)多周期处理器
特点:
• 时钟周期短
• 不同指令所用周期数可以不同,如:
Load: 5 cycles
Jump: 3 cycles(前两个都一样)
• 在一条指令中功能部件可以重复使用。如:
Adder + ALU(多周期时只用一个ALU,在不同周期可重复使用)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值