當(dāng)前位置:首頁(yè) > 智能硬件 > 智能硬件
[導(dǎo)讀]1 引言虛擬機(jī)就是一臺(tái)假想的機(jī)器。一臺(tái)虛擬機(jī)與一臺(tái)真實(shí)存在的計(jì)算機(jī)不同之處在于前者只是一個(gè)技術(shù)規(guī)范。虛擬機(jī)技術(shù)從很早就開始研究,并且在軟件技術(shù)中廣為應(yīng)用。目前,高度可移植的JAVA編程語(yǔ)言采用的就是虛擬機(jī)技

1  引言

虛擬機(jī)就是一臺(tái)假想的機(jī)器。一臺(tái)虛擬機(jī)與一臺(tái)真實(shí)存在的計(jì)算機(jī)不同之處在于前者只是一個(gè)技術(shù)規(guī)范。虛擬機(jī)技術(shù)從很早就開始研究,并且在軟件技術(shù)中廣為應(yīng)用。目前,高度可移植的JAVA編程語(yǔ)言采用的就是虛擬機(jī)技術(shù)。虛擬機(jī)不僅有廣泛的商業(yè)應(yīng)用價(jià)值,同時(shí)也可作為一種很好的教學(xué)輔助工具。通過虛擬機(jī),學(xué)生可以很好地學(xué)習(xí)理解計(jì)算機(jī)的結(jié)構(gòu)和工作原理。因此,設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡(jiǎn)單的虛擬機(jī)有很好的教學(xué)意義[4,5]。

COMET虛擬機(jī)開始只是作為CASL匯編語(yǔ)言的運(yùn)行平臺(tái)而設(shè)計(jì),并由中國(guó)計(jì)算機(jī)軟件專業(yè)技術(shù)資格和水平考試大綱中給出的CASL匯編語(yǔ)言文本定義(下文將簡(jiǎn)稱為文本)。作者在文本的基礎(chǔ)上,對(duì)COMET虛擬機(jī)的功能進(jìn)行了一定的改進(jìn)和擴(kuò)充,并實(shí)現(xiàn)了一個(gè)功能完善的虛擬機(jī)實(shí)例[1]。

2  COMET虛擬機(jī)設(shè)計(jì) 2.1 邏輯結(jié)構(gòu)

圖1 COMET虛擬機(jī)結(jié)構(gòu)

COMET虛擬機(jī)是一臺(tái)基于寄存器模型結(jié)構(gòu)的計(jì)算機(jī)。COMET虛擬機(jī)系統(tǒng)主要包括三個(gè)部分:中央處理器(CPU)、存儲(chǔ)器和出入輸出設(shè)備。COMET計(jì)算機(jī)的邏輯結(jié)構(gòu)如圖1所示。

CPU是由寄存器、算術(shù)邏輯部件和控制邏輯組成。寄存器在程序運(yùn)行時(shí)存儲(chǔ)計(jì)算過程的各種信息;算術(shù)邏輯部件的功能是進(jìn)行所有的算術(shù)和邏輯運(yùn)算。由于COMET計(jì)算機(jī)是虛擬的計(jì)算機(jī),因此,它的控制邏輯對(duì)于我們是透明的[1,4,5]。

2.2 寄存器

COMET虛擬機(jī)有5個(gè)通用寄存器GR(16位),一個(gè)指令計(jì)數(shù)器PC(16位)和一個(gè)標(biāo)志寄存器FR(2位)。

GR(通用寄存器) 5個(gè)通用寄存器的編號(hào)為0、1、2、3、4,分別記為GR0、GR1、GR2、GR3、GR4。這些通用寄存器用于算術(shù)、邏輯、移位等運(yùn)算,其中GR1、GR2、GR3、GR4通用寄存器兼做變址寄存器。另外,GR4還兼做棧指針(SP)用,棧指針是存放棧頂?shù)刂酚玫募拇嫫鳌?/p>

PC(指令計(jì)數(shù)器) 在執(zhí)行指令的過程中,PC中存放著正在執(zhí)行的指令的第一個(gè)字的地址。當(dāng)指令執(zhí)行結(jié)束時(shí),一般是把PC的內(nèi)容加上當(dāng)前指令的長(zhǎng)度(不同指令的長(zhǎng)度不同),只有在執(zhí)行轉(zhuǎn)移指令且條件成立時(shí),才將轉(zhuǎn)移指令地址置入PC中。

FR(標(biāo)志寄存器) 在ADD、SUB、MUL、DIV、MOD、AND、OR、EOR、CPA、CPL、SLA、SRA、SLL、SRL、LEA等指令執(zhí)行結(jié)束時(shí),根據(jù)執(zhí)行的結(jié)果,將FR設(shè)置成00、01或10(大于、等于、小于或負(fù)數(shù)、零、正數(shù))。它們不會(huì)因其他指令的執(zhí)行而改變。

2.3 存儲(chǔ)器

COMET虛擬機(jī)是一臺(tái)16位的定點(diǎn)計(jì)算機(jī),主存儲(chǔ)器的基本存儲(chǔ)單位是字,總?cè)萘繛?5536(216=16k)字,各個(gè)字的地址按照0000-FFFF(十六進(jìn)制)編號(hào)。一個(gè)字的16位二進(jìn)制采用從左到右次序編號(hào),如圖2所示。

圖2 字節(jié)順序

COMET虛擬機(jī)可以處理三種數(shù)據(jù),即字符數(shù)據(jù)、帶符號(hào)整數(shù)、地址數(shù)據(jù)。字符數(shù)據(jù)采用16位的Unicode字符;帶符號(hào)整數(shù)采用二進(jìn)制補(bǔ)碼表示,可表示的數(shù)值范圍為[-215,215-1];地址數(shù)據(jù)為無(wú)符號(hào)的整數(shù),范圍是[0,216-1]。

在實(shí)現(xiàn)的COMET虛擬機(jī)中,內(nèi)存的高1k字保留用于各種專用的外設(shè)寄存器[1,3]。

2.4 指令系統(tǒng)

COMET虛擬機(jī)和文本相比,新增加了HALT、MUL、SUB、MOD四條指令。下面只給出HALT、MUL、SUB、MOD四條指令的說明,其他的指令可以參考文本。

HALT指令執(zhí)行停機(jī)操作,占一個(gè)字長(zhǎng)。MUL指令執(zhí)行乘法操作,操作規(guī)則和ADD等指令相似,占2個(gè)字長(zhǎng)。SUB指令執(zhí)行除法操作,操作規(guī)則和ADD指令相似,占2個(gè)字長(zhǎng)。MOD指令執(zhí)行取模操作,操作規(guī)則和ADD指令相似,占2個(gè)字長(zhǎng)。

2.5 指令格式

COMET虛擬機(jī)機(jī)器指令一般包含三種信息:OP,GR,XR,ADR。其中OP為機(jī)器指令的編號(hào),對(duì)應(yīng)第一個(gè)字的[0-7]位;GR為通用寄存器編號(hào),對(duì)應(yīng)第一個(gè)字中的[8-11]位;XR為變址寄存器編號(hào),對(duì)應(yīng)第一個(gè)字的[12-15]位,[12-15]位為0表示沒有變址(GR0不能作為變址寄存器);ADR為操作數(shù),對(duì)應(yīng)地二個(gè)字的[0-15]位。如果一個(gè)指令不含某種信息(例如,沒有ADR),則忽律該字段。OP、GR、XR、ADR的存儲(chǔ)細(xì)節(jié)如圖3所示。

圖3 指令格式

根據(jù)指令操作數(shù)據(jù)的類型的不同,可將COMET虛擬機(jī)的機(jī)器指令分為四種:寄存器-存儲(chǔ)器型,存儲(chǔ)器型,寄存器型,空操作數(shù)型。如果一個(gè)COMET虛擬機(jī)指令不涉及主存儲(chǔ)器操作(無(wú)ADR),則為1個(gè)字長(zhǎng),其他均為2個(gè)字長(zhǎng)。

2.6 字節(jié)碼格式

字節(jié)碼文件是COMET虛擬機(jī)的可執(zhí)行文件。在啟動(dòng)虛擬機(jī)時(shí),由命令行中的參數(shù)給出字節(jié)碼文件名。字節(jié)碼文件含有程序的長(zhǎng)度、裝載位置、程序指令等信息。虛擬機(jī)依據(jù)這些信息,將字節(jié)碼中的指令從二級(jí)存儲(chǔ)器裝載到相應(yīng)的虛擬機(jī)內(nèi)存。這一系列操作和操作系統(tǒng)的程序加載器的工作情況類似[4]。

COMET虛擬機(jī)的字節(jié)碼文件是一種二進(jìn)制格式文件,格式如圖4所示。

圖4 字節(jié)碼結(jié)構(gòu)

其中addr為字節(jié)碼在虛擬機(jī)內(nèi)存的裝載地址,len為字節(jié)碼中指令的個(gè)數(shù)(不包含len和addr),ins1、ins2、…、insn為要載入虛擬機(jī)的指令。

2.7 輸入輸出設(shè)備

文本中并沒有明確定義COMET虛擬機(jī)的輸入輸出設(shè)備,只是給出IN、OUT幾個(gè)IO操作宏指令。在這里,我們采用將外部設(shè)備寄存器在內(nèi)存中統(tǒng)一編址的方法來處理輸入和輸出設(shè)備[1,3]。

COMET虛擬機(jī)默認(rèn)的I/O設(shè)備是鍵盤和顯示器。利用操作系統(tǒng)提供的從定向功能用戶也可以將它們重新定向到其他的設(shè)備。

COMET虛擬機(jī)輸入輸出設(shè)備的兩個(gè)專用寄存器為:IO_ADDR、IO_FLAG,分別對(duì)應(yīng)0xFD100、xFD10地址內(nèi)存。IO_ADDR用于保存要傳輸數(shù)據(jù)的內(nèi)存地址;IO_FLAG為IO設(shè)備的標(biāo)志位,其8-15位是要傳輸數(shù)據(jù)的個(gè)數(shù)(0表示無(wú)IO),7位表示輸入或輸出(1表示輸入,0為輸出),6位在出現(xiàn)IO錯(cuò)誤時(shí)設(shè)置,3-5位為傳輸?shù)念愋?有字符、八進(jìn)制、十進(jìn)制、十六進(jìn)制等),0-2位保留。

2.8  調(diào)試器

COMET調(diào)試器是一個(gè)內(nèi)嵌在虛擬機(jī)里的機(jī)器級(jí)的調(diào)試器。當(dāng)需要調(diào)試一個(gè)COMET虛擬機(jī)的程序時(shí),只需要在啟動(dòng)COMET虛擬機(jī)的時(shí)給出相應(yīng)的命令參數(shù)就啟動(dòng)調(diào)試功能了[2,4]。

COMET調(diào)試器的基本功能有:顯示幫助(help),運(yùn)行程序直到停止(go),分步執(zhí)行(step n),跳轉(zhuǎn)程序(jump),顯示寄存器內(nèi)容(regs),顯示內(nèi)存數(shù)據(jù)(dMem),顯示內(nèi)存指令(iMem),修改內(nèi)存數(shù)據(jù)(alter),遍歷指令(trace),指令記數(shù)功能(print),重新裝載字節(jié)碼(clear),退出調(diào)試器(quit)。每個(gè)調(diào)試命令的具體用法可以參考COMET虛擬機(jī)的幫助文件。

3  COMET虛擬機(jī)實(shí)現(xiàn) 3.1 虛擬機(jī)數(shù)據(jù)結(jié)構(gòu)

struct comet

{

off_t pc;

short fr;

short gr[5];

short mem[MEMSIZE];

} cmt;

虛擬機(jī)結(jié)構(gòu)變量cmt是一個(gè)全局變量,成員分別為:指令計(jì)數(shù)器(pc)、標(biāo)志寄存器(fr)、通用寄存器(gr)、存儲(chǔ)器(mem)。將cmt設(shè)計(jì)為全局變量的優(yōu)點(diǎn)是個(gè)函數(shù)不用傳遞復(fù)雜的結(jié)構(gòu)體參數(shù),缺點(diǎn)是每個(gè)進(jìn)程同時(shí)只能有一個(gè)虛擬機(jī)實(shí)例。

3.2 主函數(shù)

int

main(int argc, char *argv[])

{

init(argc, argv);

if(debug) comet_debug();

else while(comet_step());

fclose(source);

return 0;

}

函數(shù)init首先初始化COMET虛擬機(jī)并裝載字節(jié)碼,如果發(fā)生錯(cuò)誤則停止。然后根據(jù)調(diào)試器狀態(tài),選擇運(yùn)行虛擬機(jī)的方式。如果調(diào)試開關(guān)(debug)被設(shè)置,則調(diào)用comet_debug函數(shù)在調(diào)試狀態(tài)下運(yùn)行COMET虛擬機(jī)。如果沒有打開調(diào)試開關(guān),則循環(huán)調(diào)用單步執(zhí)行函數(shù)comet_step,直到程序結(jié)束[1,2]。

3.3 字節(jié)碼載入

void

comet_load(void)

{

unsigned short n, flag[2];

fseek(source, 0, SEEK_SET);

n = fread(flag,

sizeof(off_t), 2, source);

n = fread(&cmt.mem[flag[0]],

sizeof(off_t),tmp[1],source);

/* 其他處理代碼 */

}

變量n用于記錄讀取字節(jié)碼的數(shù)目,如果n小于相應(yīng)的值,則發(fā)生字節(jié)碼裝載錯(cuò)誤。變量flag用于保存字節(jié)碼裝載信息,分別字節(jié)碼裝載地址和字節(jié)碼大小。

COMET字節(jié)碼設(shè)計(jì)比較簡(jiǎn)單,也存在很多不足。例如,沒有標(biāo)志文件格式的魔數(shù),沒有更完善的錯(cuò)誤檢測(cè)措施。我們的目的是讓讀者了解字節(jié)碼的工作原理,因此只給出了一種最簡(jiǎn)單的實(shí)現(xiàn)[1,2,4]。

3.4 指令解析

指令的解析一般包含這個(gè)幾個(gè)過程:取指令,解碼,執(zhí)行。其中解碼對(duì)虛擬機(jī)的執(zhí)行效率有很大的影響[5]。這里采用下標(biāo)索引技術(shù)來解碼指令。具體代碼如下:

void comet_ld(void);    /* LD指令*/

void comet_ld(void);    /*ST指令 */

void comet_ld(void);    /* LEA指令 */

/* 其他指令函數(shù)聲明 */

int comet_step(void)

{

static void (*comet_op)() = {

comet_ld, comet_st, comet_lea,

/* 其他指令執(zhí)行函數(shù)指針 */

};

/* 解析指令,存放在op中 */

short op = get_op();

/* 執(zhí)行op對(duì)應(yīng)的代碼 */

(*comet_op [op])();

/* 返回執(zhí)行狀態(tài) */

return val;

}

例如,有指令LEA,其對(duì)應(yīng)的機(jī)器碼為031,那么將通過函數(shù)指針數(shù)組comet_op直接定位到(*comet_op[031])函數(shù),即并執(zhí)行相應(yīng)的comet_lea函數(shù)。

3.5 輸入輸出設(shè)備

COMET虛擬機(jī)在解析每個(gè)指令前,先讀取IO設(shè)備狀態(tài)寄存器IO_FLAG中的值,如果IO_FLAG被設(shè)置,則執(zhí)行相應(yīng)的IO操作[3]。具體代碼如下:

void

comet_io(void)

{

switch(cmt.mem[IO_FLAG]&IO_TYPE)

{

case IO_NULL:

/* 無(wú)IO操作 */

case IO_OCT & IO_IN:

/* 八進(jìn)制輸入 */

case IO_DEC & IO_IN:

/* 十進(jìn)制輸入 */

case IO_HEX & IO_IN:

/* 十六進(jìn)制輸入 */

case IO_OCT & IO_OUT:

/* 八進(jìn)制輸出 */

case IO_DEC & IO_OUT:

/* 十進(jìn)制輸出 */

case IO_HEX & IO_OUT:

/* 十六進(jìn)制輸出 */

default:

/* 未知IO類型 */

}

/* 重置IO狀態(tài)寄存器IO_FLAG */

}

3.6 調(diào)試器

調(diào)試程序是建立和單步執(zhí)行的COMET虛擬機(jī)之上的。當(dāng)沒有打開調(diào)試功能時(shí),循環(huán)執(zhí)行COMET虛擬機(jī)字節(jié)碼程序,直到停止。當(dāng)打開了調(diào)試功能時(shí),調(diào)試函數(shù)debug根據(jù)調(diào)試命令,執(zhí)行相應(yīng)步的指令、顯示或操作相關(guān)的數(shù)據(jù)。

/* 各種調(diào)試命令 */

typedef enum

{

GO, STEP, JUMP, REGS,

IMEM, DMEM, ALTER,

TRACE, PRINT, CLEAR,

HELP, QUIT

} DbType;

/* 調(diào)試函數(shù) */

void

comet_debug(void)

{

int cmd;     /* 保存調(diào)試命令 */

while(1) {

/* 讀調(diào)試命令 */

switch(cmd) {

case HELP: /* 幫助文件 */

case GO  : /* 執(zhí)行程序 */

case STEP: /* 分步執(zhí)行 */

/* 其他調(diào)試命令 */

default  : /* 未知命令 */

}

}

}

調(diào)試函數(shù)comet_debug根據(jù)不同的調(diào)試命令執(zhí)行相應(yīng)的操作,并顯示虛擬機(jī)狀當(dāng)前的狀態(tài)信息。

4  運(yùn)行虛擬機(jī)

下面通過一個(gè)求(1 + 2 + … + n)的程序,來介紹其在COMET虛擬機(jī)上的執(zhí)行的流程。程序的字節(jié)碼由相關(guān)的工具生成,保存為sum.comet文件(后綴為comet)。

4.1 普通運(yùn)行

輸入命令:comet sum

在COMET虛擬機(jī)獲得sum參數(shù)后,會(huì)自動(dòng)識(shí)別為sum.comet字節(jié)碼文件。

輸入100,表示求1+2+…+100的和。

COMET虛擬機(jī)輸出:

===============

COMET虛擬計(jì)算機(jī)

===============

100

5050[root@knuth /root]#

表示1+2+…+100等于5050,結(jié)果正確。

4.2 調(diào)試運(yùn)行

輸入命令:comet –d sum

===============

COMET虛擬計(jì)算機(jī)

===============

調(diào)試 (幫助輸入 help)...

輸入命令: t

指令顯示功能打開

輸入命令: p

指令計(jì)數(shù)功能打開

輸入命令: r

顯示寄存器數(shù)據(jù)

GR[0] =    0    PC =    0

GR[1] =    0    SP = fc00

GR[2] =    0    FR =   01

GR[3] =    0

輸入命令: d

顯示內(nèi)存數(shù)據(jù)

mem[0   ] = 1200

輸入命令: i

顯示內(nèi)存指令

mem[0]: JMP  5

輸入命令:g

mem[0]: JMP  5

mem[5]: ST   GR0, fe00

mem[7]: PUSH fe00

mem[9]: LEA  GR0, 4

mem[b]: ST   GR0, fd10

mem[d]: LEA  GR0, c01

mem[f]: ST   GR0, fd11

mem[11]: POP  GR0

3

mem[12]: LD   GR0, 4

mem[14]: ST   GR0, 2

……

6mem[4f]: JMP 51

mem[51]: HALT

執(zhí)行指令數(shù)目 = 71

輸入命令: q

退出調(diào)試...

其中t、p、d、r、g分別是調(diào)試命令trace、print、dMem、regs、go的縮寫;3(mem[11  ]的下一行)是用戶輸入的數(shù)據(jù),不是調(diào)試命令。6(mem[4f  ]行)表示1+2+3的和為6。

COMET虛擬機(jī)內(nèi)嵌的調(diào)試器功能非常強(qiáng)大,熟練掌握后對(duì)COMET虛擬機(jī)的程序開發(fā)會(huì)有很大的幫助。調(diào)試命令細(xì)節(jié)可以通過幫助命令help獲得。

5  結(jié)語(yǔ)

本文給出了COMET虛擬機(jī)的硬件設(shè)計(jì)方案。該方案闡述了虛擬機(jī)各個(gè)基本部分的詳細(xì)設(shè)計(jì)思路及需要注意的問題。目前已經(jīng)實(shí)現(xiàn)了COMET虛擬機(jī)、CASL匯編器和TINY編譯器。我們將基于COMET虛擬機(jī)開發(fā)一個(gè)小型的文件系統(tǒng),使得其應(yīng)用于實(shí)際教學(xué)任務(wù)[1,4,5]。

參考文獻(xiàn)

[1] CASL匯編語(yǔ)言文本[M].中國(guó)計(jì)算機(jī)軟件專業(yè)技術(shù)資格和水平考試大綱

[2] 劉福江,柴樹杉. CASL匯編器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與信息技術(shù).2006,7:76-78

[3] (美)Kenneth C. Louden. 編譯原理及實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2003

[4] (澳)John Lions.萊昂氏UNIX源代碼分析[M].北京:機(jī)械工業(yè)出版社,2000

[5] (美)Bill Blunden.虛擬機(jī)的設(shè)計(jì)與實(shí)現(xiàn)——C/C++[M].北京:機(jī)械工業(yè)出版社,2003

[6] 王亞平,陳甫舟.基于Linux平臺(tái)上的BOST虛擬機(jī)的硬件設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù).2004,15:8-10

更多計(jì)算機(jī)與外設(shè)信息請(qǐng)關(guān)注:21ic計(jì)算機(jī)與外設(shè)頻道

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉