Chip123 科技應用創新平台

標題: 微代码和汇编语言的区别 [打印本頁]

作者: windflowerz    時間: 2007-3-24 06:18 AM
標題: 微代码和汇编语言的区别
我是写微代码的,当我告诉朋友我的职业的时候,他显得很迷惑。他觉得微代码就是汇编,两者没有区别。其实,两者之间有着本质的区别。
6 J9 J" s) j+ o! j3 t. t" c
" @& _& {5 f, L. }! L" Q; S的确,微代码和汇编都是低级语言,但是微代码比汇编更底层。微代码和汇编都和硬件有着紧密的联系,但是对于同一产品系列的不同代产品来说,汇编可以完全相同,微代码可能有着巨大的区别,因为微代码是完全依赖于芯片内部的硬件连接。
$ F* K* o2 T4 T0 K8 r3 p  H8 ^; \+ A5 N7 Y6 d% g
对于同样一句C语言,在不同的处理器上会生成不同的汇编语言。每一条汇编语言的执行时间也许是一个或者两个时钟周期,甚至更多。微代码和汇编的关系,就像C与汇编的关系,也就是说一条汇编也许会生成一条或多条微代码。所谓微代码,或者微指令,是处理器内部最小的操作原语,控制着诸如门电路(gates)开关等专门动作,和组成一条指令的微操作的序列。例如,对于一个加法"ADD"的简单动作,微代码可以决定接受哪两个寄存器或总线为输入,输出到什么总线或者寄存器里,标志寄存器要保存还是丢弃,根据条件进行跳转或者直接执行下一条微代码。一个内部只有8位宽的数据总线完全可以支持32位整数的汇编指令,就是因为有微代码。9 i% R+ U2 w* ^# h. t. H, V

作者: tommywgt    時間: 2007-3-24 12:58 PM
嗯, 介紹的很清楚.$ |; d) S4 a7 o# ^8 K
你是我遇到第一個寫micro code的. 一般的人頂多寫assembly code而已.. o; F# s! D6 v5 M
: U% x. z- ~! d; H9 D+ m
請問一下, 如果想寫micro code的話, 要去哪找資料呢? 很多資料都是商業機密, 那是否意謂著一般的人就沒機會接觸micro code了.
作者: windflowerz    時間: 2007-3-26 03:51 PM
是的,資料很機密,而且不同芯片的微代碼是完全不一樣的。但是,我想隻要妳做過一款就會有經營,原理上應該相差不遠。
作者: masonchung    時間: 2007-4-14 10:41 PM
微代瑪或微指令有學過計算機組織的應該都懂得它的運作. d4 O* L: h. q! q# Y8 Z
我想應該是設計CPU架構的人才會有這個資料,所以說是商業機密也沒錯
8 z3 w2 t5 ^/ u  R這也是一種為了應付不同客戶需求的MCU的設計方式
( `; S! k/ i# I: I' h9 l/ I也就是Cost-Down導向的彈性設計法
作者: tommywgt    時間: 2007-4-16 02:28 PM
嗯...5 i0 P  i: \4 L2 n7 y& @, I
透過micro code來控制所有的pipeline跟data path的動作以完成指令的所有動作, 做的好的話, CPU performance自然就高. 我想實作上也是要嘔心瀝血吧!
作者: windflowerz    時間: 2007-4-21 03:16 AM
我想也是% I+ _  y2 [* ~) ~

% D/ R9 U: m6 }最大的优点应该体现在频繁操作内存的指令。呵呵,不知道再讲下去会不会涉及到商业机密。
作者: masonchung    時間: 2007-4-22 10:47 PM
請問有無對 ARM 最佳化的經驗阿
作者: tommywgt    時間: 2007-4-24 04:03 PM
我也來寫顆CPU給小妹寫micro-code,再找個人port uclinux如何?
作者: windflowerz    時間: 2007-4-25 03:00 PM
可以啊,我们可以合作开公司啦
: C3 A# _8 ~% p% s- @ARM没有优化过,但是我想没有问题,只是不知道他是否也是这种WISC处理器
作者: tommywgt    時間: 2007-4-30 03:25 PM
開公司啊...聽起來很優的感覺3 y  l! X- G3 G' {/ ~5 m
不過最好有人可以port GUN tool chain跟uCLinux還有一大堆的IO
! R; \& V5 x6 a2 X& C" R! E這些人都有的話, 就真的可以開公司了...5 n7 n8 L5 H& r7 @2 h1 R# H' c: B
( n" w+ y  B0 v$ G. X2 d
話說回來, 小妹真的認真的話, 等我再有空一點, 倒是可以試試看也說不定
作者: gsmlkk    時間: 2007-5-1 03:00 PM
想請問板主!micro code跟op code是不是指相同的東西?
作者: tommywgt    時間: 2007-5-1 05:50 PM
不是哦...7 T( N+ N5 s, @% d' H9 D- c' W5 F
不過為了尊重專業起見, 還是讓專業的小妹來回答你好了
作者: windflowerz    時間: 2007-5-5 05:09 AM
micro code也是一種編程語言,不同的是它可以精確的操縱CPU的內部動作" P, m7 ~* T1 V1 P

* d5 C* S4 |! D' Q& Aop code則是機器語言指令的一部分。比如說一條X86滙編語言就op code和operands的組成,也就是操作碼和操作數。而操作碼就是該條指令的二進製編碼。
作者: gsmlkk    時間: 2007-5-7 12:26 PM
再請問 windflowerz 版主:"micro code也是一種編程語言"是不是跟Assembly或是DDK,SDK類似的程式語言,既然是"編程語言"那產出應該也是二進製編碼嗎?謝謝!
作者: windflowerz    時間: 2007-5-10 04:39 AM
跟汇编有点象,但是和DDK,SDK不一样,因为不存在任何函数和库,你面对的就是寄存器,ALU,乘法器,总线,标志寄存器和内存。你所要想的是如何操作这些硬件来达到你的设计用途,而不能简单地用高级语言来思考。但是生成的确实是可以执行的二进制编码,但是只能在对应的机器上运行。
作者: gsmlkk    時間: 2007-5-10 05:57 PM
再請問 windflowerz 版主:那不是有Assembly的"CPU每換一種版本就要重寫一次"的缺點,而且汇编工具只有原廠(CPU廠)才提供,沒有第二套汇编工具可以選擇?謝謝!
作者: windflowerz    時間: 2007-5-11 04:22 AM
基本是这样,CPU每更新一种版本就要重写一次,起码我们公司的CPU是如此.因为cpu更新了,硬件也作了很多改变,甚至你的编码规则都有所改变.
8 @: m" B* H' A) n% f9 S. W* a' \) J# r* f$ N7 b
因为每一款cpu都有自己独特的编码方式和硬件体系,所以必然只有原产商才有编译和调试工具。; b3 B! [0 `$ m7 q
1 d1 r6 N5 c5 d* X
看gsmlkk问的问题,觉得你的水平很高,懂得东西很多阿。希望在这里也可以看到你的大作和高见。
, Z( z1 U/ u# y; H, K; T, e
& W( D2 q6 h) j$ m$ P[ 本帖最後由 windflowerz 於 2007-5-10 09:23 PM 編輯 ]
作者: gsmlkk    時間: 2007-5-12 01:57 AM
多謝 windflowerz 版主回答!在下只是多跑了幾顆chip!不敢稱得上水平很高!
作者: windflowerz    時間: 2007-5-12 03:44 AM
不要太謙虛哦,希望能和妳多交流呢
作者: tommywgt    時間: 2007-5-14 03:31 PM
嗯...多多交流
$ l0 o! i* m+ j- Z1 H什麼時候gsmlkk也來交流一下下???




歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2