6控制器.docx

上传人:b****1 文档编号:14052603 上传时间:2023-06-20 格式:DOCX 页数:38 大小:136.94KB
下载 相关 举报
6控制器.docx_第1页
第1页 / 共38页
6控制器.docx_第2页
第2页 / 共38页
6控制器.docx_第3页
第3页 / 共38页
6控制器.docx_第4页
第4页 / 共38页
6控制器.docx_第5页
第5页 / 共38页
6控制器.docx_第6页
第6页 / 共38页
6控制器.docx_第7页
第7页 / 共38页
6控制器.docx_第8页
第8页 / 共38页
6控制器.docx_第9页
第9页 / 共38页
6控制器.docx_第10页
第10页 / 共38页
6控制器.docx_第11页
第11页 / 共38页
6控制器.docx_第12页
第12页 / 共38页
6控制器.docx_第13页
第13页 / 共38页
6控制器.docx_第14页
第14页 / 共38页
6控制器.docx_第15页
第15页 / 共38页
6控制器.docx_第16页
第16页 / 共38页
6控制器.docx_第17页
第17页 / 共38页
6控制器.docx_第18页
第18页 / 共38页
6控制器.docx_第19页
第19页 / 共38页
6控制器.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

6控制器.docx

《6控制器.docx》由会员分享,可在线阅读,更多相关《6控制器.docx(38页珍藏版)》请在冰点文库上搜索。

6控制器.docx

6控制器

5.1.1CPU器的功能        

 

  当用计算机解决某个问题时,我们首先必须为它编写程序。

程序是一个指令序列,这个序列明确告诉计算机应该执行什么操作,在什么地方找到用来操作的数据。

一旦把程序装入内存储器,就可以由计算机来自动完成取出指令和执行指令的任务。

专门用来完成此项工作的计算机部件称为中央处理器,通常简称CPU。

    

CPU对整个计算机系统的运行是极其重要的,它具有如下四方面的基本功能:

★指令控制

  程序的顺序控制称为指令控制。

由于程序是一个指令序列,这些指令的相互顺序不能任意颠倒,必须严格按程序规定的顺序进行。

★操作控制

  一条指令的功能往往是由若干个操作信号的组合来实现的,因此,CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。

★时间控制

  对各种操作实施时间上的定时称为时间控制。

在计算机中,各种指令的操作信号以及一条指令的整个执行过程都受到时间的严格定时。

★数据加工

 数据加工就是对数据进行算术运算和逻辑运算处理。

5.1.2CPU的基本组成      

 CPU的基本部分由运算器、cache和控制器三大部分组成。

CPU模型参看CAI演示 

控制器

  由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。

它的主要功能有:

(1)从内存中取出一条指令,并指出下一条指令在内存中的位置;

(2)对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作;

(3)指挥并控制CPU、内存和输入/输出设备之间数据流动的方向。

运算器

  由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成,它是数据加工处理部件。

相对控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。

运算器有两个主要功能:

(1)执行所有的算术运算;

(2)执行所有的逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。

5.1.3 CPU中的主要寄存器        

  在CPU中至少要有六类寄存器。

这些寄存器用来暂存一个计算机字。

根据需要,可以扩充其数目。

下面详细介绍这些寄存器的功能与结构。

1.数据缓冲寄存器(DR)

  数据缓冲寄存器用来暂时存放由内存储器读出的一条指令或一个数据字;反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在数据缓冲寄存器中。

  缓冲寄存器的作用是:

(1)作为CPU和内存、外部设备之间信息传送的中转站;

(2)补偿CPU和内存、外围设备之间在操作速度上的差别;

(3)在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。

2.指令寄存器(IR)

  指令寄存器用来保存当前正在执行的一条指令。

当执行一条指令时,先把它从内存取到缓冲寄存器中,然后再传送至指令寄存器。

指令划分为操作码和地址码字段,由二进制数字组成。

为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。

指令译码器就是做这项工作的。

指令寄存器中操作码字段的输出就是指令译码器的输入。

操作码一经译码后,即可向操作控制器发出具体操作的特定信号。

3.程序计数器(PC)

  为了保证程序能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。

而程序计数器正是起到这种作用,所以通常又称为指令计数器。

在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此PC的内容即是从内存提取的第一条指令的地址。

当执行指令时,CPU将自动修改PC的内容,以便使其保持的总是将要执行的下一条指令的地址。

由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单的对PC加1。

  但是,当遇到转移指令如JMP指令时,那么后继指令的地址(即PC的内容)必须从指令的地址段取得。

在这种情况下,下一条从内存取出的指令将由转移指令来规定,而不是像通常一样按顺序来取得。

因此程序计数器的结构应当是具有寄存信息和计数两种功能的结构。

4.地址寄存器(AR)

  地址寄存器用来保存当前CPU所访问的内存单元的地址。

由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。

  当CPU和内存进行信息交换,即CPU向内存存/取数据时,或者CPU从内存中读出指令时,都要使用地址寄存器和数据缓冲寄存器。

同样,如果我们把外围设备的设备地址作为像内存的地址单元那样来看待,那么,当CPU和外围设备交换信息时,我们同样使用地址寄存器和数据缓冲寄存器。

  地址寄存器的结构和数据缓冲寄存器、指令寄存器一样,通常使用单纯的寄存器结构。

信息的存入一般采用电位-脉冲方式,即电位输入端对应数据信息位,脉冲输入端对应控制信号,在控制信号作用下,瞬时地将信息打入寄存器。

5.累加寄存器(AC)

  累加寄存器AC通常简称为累加器,它是一个通用寄存器。

其功能是:

当运算器的算术逻辑单元ALU)执行算术或逻辑运算时,为ALU提供一个工作区。

累加寄存器暂时存放ALU运算的结果信息。

显然,运算器中至少要有一个累加寄存器。

  目前CPU中的累加寄存器,多达16个,32个,甚至更多。

当使用多个累加器时,就变成通用寄存器堆结构,其中任何一个可存放源操作数,也可存放结果操作数。

在这种情况下,需要在指令格式中对寄存器号加以编址。

6.状态条件寄存器(PSW)

  状态条件寄存器保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,如运算结果进位标志(C),运算结果溢出标志(V),运算结果为零标志(Z),运算结果为负标志(N)等等。

这些标志位通常分别由1位触发器保存。

  除此之外,状态条件寄存器还保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。

因此,状态条件寄存器是一个由各种状态条件标志拼凑而成的寄存器。

5.1.4操作控制器与时序产生器       

 

数据通路是许多寄存器之间传送信息的通路。

  信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器,都要加以控制。

在各寄存器之间建立数据通路的任务,是由称为操作控制器的部件来完成的。

操作控制器的功能,就是根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。

  根据设计方法不同,操作控制器可分为时序逻辑型、存储逻辑型、时序逻辑与存储逻辑结合型三种。

1.硬布线控制器

  是采用时序逻辑技术来实现的;

2.微程序控制器

  是采用存储逻辑来实现的;

3.前两种方式的组合

5.2.1指令周期的基本概念       

  计算机所以能自动地工作,是因为CPU能从存放程序的内存里取出一条指令并执行这条指令;紧接着又是取指令,执行指令……,如此周而复始,构成了一个封闭的循环。

除非遇到停机指令,否则这个循环将一直继续下去。

具体参看CAI演示

指令周期 CPU从内存取出一条指令并执行这条指令的时间总和。

CPU周期  又称机器周期,CPU访问一次内存所花的时间较长,因此用从内存读取一条指令字的最短时间来定义。

时钟周期 通常称为节拍脉冲或T周期。

一个CPU周期包含若干个时钟周期。

下图示出了采用定长CPU周期的指令周期示意图。

 图5.3指令周期

5.2.2非访内指令的指令周期      

  CLA是一条非访内指令,它需要两个CPU周期,其中取指令阶段需要一个CPU周期,执行指令阶段需要一个CPU周期。

其指令周期请参看CAI演示

1取指令阶段

(1)程序计数器PC的内容20(八进制)被装入地址寄存器AR;

(2)程序计数器内容加1,变成21,为取下一条指令做好准备;

(3)地址寄存器的内容被放到地址总线上;

(4)所选存储器单元20的内容经过数据总线,传送到数据缓冲寄存器DR;

(5)缓冲寄存器的内容传送到指令寄存器IR;

(6)指令寄存器中的操作码被译码或测试;

(7)CPU识别出是指令CLA,至此,取指令阶段即告结束。

2执行指令阶段

(1)操作控制器送一控制信号给算术逻辑运算单元ALU;

(2)ALU响应该控制信号,将累加寄存器AC的内容全部清零,从而执行了CLA指令。

5.2.3 取数指令的指令周期         

ADD指令的指令周期由三个CPU周期组成,请参看CAI演示。

1.送操作数地址

第二个CPU周期主要完成送操作数地址。

在此阶段,CPU的动作只有一个,那就是把指令寄存器中的地址码部分(30)装入地址寄存器,其中30为内存中存放操作数的地址。

   

2.两操作数相加

第三个CPU周期主要完成取操作数并执行加法操作中。

在此阶段,CPU完成如下动作:

(1)把地址寄存器中的操作数的地址(30)发送到地址总线上。

(2)由存储器单元30中读出操作数(6),并经过数据总线传送到缓冲寄存器。

(3)执行加操作:

由数据缓冲寄存器来的操作数(6)可送往ALU的一个输入端,已等候在累加器内的另一个操作数(因为CLA指令执行结束后累加器内容为零)送往ALU的另一输入端,于是ALU将两数相加,产生运算结果为0+6=6。

这个结果放回累加器,替换了累加器中原先的数0。

5.2.4 存数指令的指令周期     

STA指令的指令周期由三个CPU周期组成,请参看CAI演示。

1.送操作数地址

在执行阶段的第一个CPU周期中,CPU完成的动作是把指令寄存器中地址码部分的形式地址40装到地址寄存器。

其中数字40是操作数地址。

2.存储和数

执行阶段的第二个CPU周期中,累加寄存器的内容传送到缓冲寄存器,然后再存入到所选定的存储单元(40)中。

CPU完成如下动作:

(1)累加器的内容(6)被传送到数据缓冲寄存器DR;

(2)把地址寄存器的内容(40)发送到地址总线上,40即为将要存入的数据6的内存单元号;

(3)把缓冲寄存器的内容(6)发送到数据总线上;

(4)数据总线上的数写入到所选中的存储器单元中,即将数6写入到存储器40号单元中。

注意在这个操作之后,累加器中仍然保留和数6,而存储器40号单元中原先的内容被冲掉。

5.2.5 空操作指令和转移指令的指令周期   

  第四条指令即“NOP”指令,这是一条空操作指令。

其中第一个CPU周期中取指令,CPU把23号单元的“NOP”指令取出放到指令寄存器,第二个CPU周期中执行该指令。

因译码器译出是“NOP”指令,第二个CPU周期中操作控制器不发出任何控制信号。

NOP指令可用来调机之用。

JMP指令的指令周期由两个CPU周期组成,请参看CAI演示。

1.第一个CPU周期(取指令阶段)

CPU把24号单元的“JMP21”指令取出放至指令寄存器,同时程序计数器内容加1,变为25,从而取下一条指令做好准备。

2.第二个CPU周期(执行阶段)

CPU把指令寄存器中地址码部分21送到程序计数器,从而用新内容21代替PC原先的内容25。

这样,下一条指令将不从25单元读出,而是从内存21单元开始读出并执行,从而改变了程序原先的执行顺序。

注意执行“JMP21”指令时,我们此处所给的四条指令组成的程序进入了死循环,除非人为停机,否则这个程序将无休止地运行下去,因而内存单元40中的和数将一直不断地发生变化。

当然,我们此处所举的转移地址21是随意的,仅仅用来说明转移指令能够改变程序的执行顺序而已。

5.2.7 用方框图语言表示指令周期     

  

   在进行计算机设计时,可以采用方框图语言来表示一条指令的指令周期。

方框代表一个CPU周期,方框中的内容表示数据通路的操作或某种控制操作。

菱形通常用来表示某种判别或测试,不过时间上它依附于紧接它的前面一个方框的CPU周期,而不单独占用一个CPU周期。

  我们把前面的五条典型指令加以归纳,用方框图语言表示的指令周期请见CAI演示。

  

【例1】教材图5.15所示为双总线结构机器的数据通路,IR为指令寄存器,PC为程序计数器(具有自增功能),M为主存(受R/W信号控制),AR为地址寄存器,DR为数据缓冲寄存器,ALU由加、减控制信号决定完成何种操作,控制信号G控制的是一个门电路。

另外,线上标注有小圈表示有控制信号,例中yi表示y寄存器的输入控制信号,R1o为寄存器R1的输出控制信号,未标字符的线为直通线,不受控制。

(1)“ADDR2,R0”指令完成(R0)+(R2)→R0的功能操作,画出其指令周期流程图,假设该指令的地址已放入PC中。

并列出相应的微操作控制信号序列。

(2)“SUBR1,R3”指令完成(R3)-(R1)→R3的操作,画出其指令期流程图,并列出相应的微操作控制信号序列。

【解】

5.3.1 时序信号的作用和体制    

时序信号  

CPU中一个类似“作息时间”的东西,使计算机可以准确、迅速、有条不紊地工作。

机器一旦被启动,即CPU开始取指令并执行指令时,操作控制器就利用定时脉冲的顺序和不同的脉冲间隔,有条理、有节奏地指挥机器的动作,规定在这个脉冲到来时做什么,在那个脉冲到来时又做什么,给计算机各部分提供工作所需的时间标志。

为此,需要采用多级时序体制。

[思考]用二进制码表示的指令和数据都放在内存里,那么CPU是怎样识别出它们是数据还是指令呢?

从时间上来说,取指令事件发生在指令周期的第一个CPU周期中,即发生在“取指令”阶段,而取数据事件发生在指令周期的后面几个CPU周期中,即发生在“执行指令”阶段。

从空间上来说,如果取出的代码是指令,那么一定送往指令寄存器,如果取出的代码是数据,那么一定送往运算器。

由此可见,时间控制对计算机来说是太重要了。

  总之,计算机的协调动作需要时间标志,而时间标志则是用时序信号来体现的。

硬布线控制器中,时序信号往往采用主状态周期-节拍电位-节拍脉冲三级体制。

在微程序控制器中,时序信号比较简单,一般采用节拍电位-节拍脉冲二级体制。

5.3.2 时序信号产生器         

  微程序控制器中使用的时序信号产生器由时钟源、环形脉冲发生器、节拍脉冲和读写时序译码逻辑、启停控制逻辑等部分组成。

1.时钟源

  时钟源用来为环形脉冲发生器提供频率稳定且电平匹配的方波时钟脉冲信号。

它通常由石英晶体振荡器和与非门组成的正反馈振荡电路组成,其输出送至环形脉冲发生器。

2.环形脉冲发生器与时序信号译码

  环形脉冲发生器的作用是产生一组有序的间隔相等或不等的脉冲序列,以便通过译码电路来产生最后所需的节拍脉冲。

为了在节拍脉冲上不带干扰毛刺,环形脉冲发生器通常采用循环移位寄存器形式,请参看CAI演示。

5.4.1 微命令和微操作       

微命令控制部件通过控制线向执行部件发出的各种控制命令。

微操作执行部件接受微命令后所进行的操作。

控制部件与执行部件通过控制线和反馈信息进行联系。

简单运算器数据通路请参看CAI演示。

5.4.2 微指令和微程序       

微指令在机器的一个CPU周期中,一组实现一定操作功能的微命令的组合。

微程序实现一条机器指令功能的许多条微指令组成的序列。

控制部件与执行部件通过控制线和反馈信息进行联系。

具体的微指令结构请参看CAI演示。

5.4.3 微程序控制器原理框图      

微程序控制器原理框图请参见CAI演示。

它主要由控制存储器、微指令寄存器和地址转移逻辑三大部分组成。

  

1.控制存储器

  控制存储器用来存放实现全部指令系统的微程序,它是一种只读存储器。

一旦微程序固化,机器运行时则只读不写。

其工作过程是:

每读出一条微指令,则执行这条微指令;接着又读出下一条微指令,又执行这一条微指令……。

读出一条微指令并执行微指令的时间总和称为一个微指令周期。

通常,在串行方式的微程序控制器中,微指令周期就是只读存储器的工作周期。

控制存储器的字长就是微指令字的长度,其存储容量视机器指令系统而定,即取决于微程序的数量。

对控制存储器的要求是速度快,读出周期要短。

 

5.4.4 微程序举例      

 我们举“十进制加法”指令为例,具体看一看微程序控制的过程。

演示

 

 第一条微指令的二进制编码是

00000000000011111

10

0000

 第二条微指令的二进制编码是

01010010010000000

00

1001

 第三条微指令的二进制编码是

01000100110000000

01

0000

 第四条微指令的二进制编码是

01000100100100000

00

0000

5.4.5 CPU周期与微指令周期的关系    

在串行方式的微程序控制器中:

微指令周期=读出微指令的时间+执行该条微指令的时间

下图示出了某小型机中CPU周期与微指令周期的时间关系:

图5.26CPU周期与微指令周期的关系

5.4.6 机器指令与微指令的关系   

【问】取机器指令,一会儿取微指令,它们之间到底是什么关系?

解:

  1.一条机器指令对应一个微程序,这个微程序是由若干条指令序列组成的.因此,一条机器指令的功能是由若干条微指令组成的序列来实现的,简而言之,一条机器指令所完成的,操作划分成若干条微指令来完成,由微指令进行解释和执行.

  2.从指令与微指令,程序与微程序,地址与微地址的一一对应关系看,前者与内储存器有关,后者与控制储存有关.

  与此相关,也有相对应的硬设备,请参见CAI演示.

  3.我们在讲述本章5.2节时,曾讲述了指令与机器周期概念,并归纳了五条典型指令的指令周期,并演示了这五条指令的微程流程图,每一个CPU周期就对应一条微指令.这就告诉我们如何设计微程序,也将使我们进一步体验到机器指令与微指令的关系.

【例2】设某计算机运算器框图如图(a)所示,其中ALU为16位的加法器(高电平工作),SA,SB为16位暂存器。

4个通用寄存器由D触发器组成,Q端输出,其读、写控制功能见下表。

       读控制

       写控制

  R

 RA0

 RA1

 选择

  W

 WA0

 WA1

 选择

  1

 0

 0

 R0

  1

 0

 0

 R0

  1

 0

 1

 R1

  1 

 0

 1

 R1

  1

 1

 0

 R2

  1

 1

 0

 R2

  1

 1

 1

 R3

  1

 1

 1

 R3

  0

 *

 *

不读出

  *

 *

 *

不写入

机器采用串行微程序控制方式,其微指令周期见图(b)。

其中读ROM是从控存中读出一条微指令时间,为1μs;ALU工作是加法器做加法运算,为500ns;m1是读寄存器时间,为500ns;m2是写寄存器的工作脉冲宽度,为100ns。

微指令字长12位,微指令格式如下:

 F1

 F2

 R

 W

 F3

 F4

 F5

 F6

 F7

 F8

F1:

读R0-R3的选择控制F2:

写R0-R3的选择控制

F3:

打入SA的控制信号F4:

打入SB的控制信号

F5:

打开非反相三态门的控制信号LDALU

F6:

打开反相三态门的控制信号LDALU并使加法器低位加1

F7:

清暂存器SB为零的Reset信号

F8:

一段微程序结束,转入取机器指令的控制信号

R:

寄存器读命令W:

寄存器写命令

要求:

用二进制代码写出如下指令的微程序:

(1)“ADDR0,R1”指令,即(R0)+(R1)→R1

(2)“SUBR2,R3”指令,即(R3)-(R2)→R3

(3)“MOVR2,R3”指令,即(R2)→(R3)

5.5.1 微命令编码         

微命令编码对微指令中的操作控制字段采用的表示方法。

通常有以下三种方法:

1.直接表示法

  其特点是操作控制字段中的每一位代表一个微命令。

这种方法的优点是简单直观,其输出直接用于控制。

缺点是微指令字较长,因而使控制存储器容量较大。

2.编码表示法

  编码表示法是把一组相斥性的微命令信号组成一个小组(即一个字段),然后通过小组(字段)译码器对每一个微命令信号进行译码,译码输出作为操作控制信号,其微指令结构如下图所示。

图5.30字段直接译码法

  采用字段译码的编码方法,可以用较小的二进制信息位表示较多的微命令信号。

例如3位二进位译码后可表示7个微命令,4位二进制位译码后可表示15个微命令。

与直接控制法相比,字译码控制法可使微指令字大大缩短,但由于增加译码电路,使微程序的执行速度稍稍减慢。

目前在微程序控制器设计中,字段直接译码法使用较普遍。

3.混合表示法

  这种方法是把直接表示法与字段编码法混合使用,以便能综合考虑指令字长、灵活性、执行微程序速度等方面的要求。

另外在微指令中还可附设一个常数字段。

该常数可作为操作数送入ALU运算,也可作为计数器初值用来控制微程序循环次数。

5.5.2微地址的形成方法     

  微指令执行的顺序控制问题,实际上是如何确定下一条微指令的地址问题。

通常,产生后继微地址有两种方法:

1.计数器方式

  这种方法同用程序器计数来产生机器指令地址的方法相类似。

在顺序执行微指令时,后继微地址现行微地址加上一个增量来产生;在非顺序执行微指令时,必须通过转移方式,使现行微指令执行后,转去执行指定后继微地址的下一条微指令。

在这种方法中,微地址寄存器通常改为计数器。

为此,顺序执行的微指令序列就必须安排在控制存储器的连续单元中。

计数器方式的基本特点是:

微指令的顺序控制字段较短,微地址产生机构简单。

但是多路并行转移功能较弱,速度较慢,灵活性较差。

2.多路转移方式

  一条微指令具有多个转移分支的能力称为多路转移。

在多路转移方式中,当微程序不产生分支时,后继微地直接由微指令的顺序控制字段给出;当微程序出现分支时,有若干“后选”微地址可供选择:

即按顺序控制字段的“判别测试”标志和“状态条件”信息来选择其中一个微地址。

“状态条件”有n位标志,可实现微程序2的n次方路转移,涉及微地址寄存器的n位。

多路转移方式的特点是:

能以较短的顺序控制字段配合,实现多路并行转移,灵活性好,速度较快,但转移地址逻辑需要用组合逻辑方法设计。

【例3】微地址寄存器有6位(μA5-μA0),当需要修改其内容时,可通过某一位触发器的强置端S将其置“1”。

现有三种情况:

(1)执行“取指”微指令后,微程序按IR的OP字段(IR3-IR0)进行16路分支;

(2)执行条件转移指令微程序时,按进位标志C的状态进行2路分支;

(3)执行控制台指令微程序时,按IR4,IR5的状态进行4路分支。

请按多路转移方法设计微地址转移逻辑。

解:

按所给设计条件,微程序有三种判别测试,分别为P1,P2,P3。

由于修改μA5-μA0内容具有很大灵活性,现分配如下:

(1)用P1和IR3-IR0

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2