Chip123 科技應用創新平台
標題:
為什麼32位元ARM要用16元位記憶體呢?
[打印本頁]
作者:
chip123
時間:
2006-11-13 12:08 PM
標題:
為什麼32位元ARM要用16元位記憶體呢?
[轉貼]學習到:
2 O. |. u8 F [
“ARM有兩種指令集:16位元THUMB指令集和32位元ARM指令集。使用16位的記憶體可以降低成本”是不僅僅因為性價比的原因呢??
% a) {$ T# m' n) Z
# d- P; {9 K2 X! J& V9 U' j h) d
聽說記憶體是每一個bit就得一個點,有的記憶體是6個mos管構成一個點。所以價格降不下來。
" m) T% y# x5 P
可是為什麼市場上快閃記憶體越來越大,價格確越來越便宜呢?有點不太清楚, 看來得找本記憶體的書看看了。
b2 W+ S! E; U0 g) W' |0 E/ g* ]
哪位高手指點一下呢???
' G) D5 d# |) v- s0 x3 I5 ~
( P* j, z: [. }5 ]' {9 |' ?; A2 g9 l. f. x
聽說如此可以提高指令效率和密度?還有沒有更好的答案呢?
作者:
tommywgt
時間:
2007-2-5 06:19 PM
我來領RDB好了
' I+ O& O" R y. f" P. i
7 D z9 g- |: B( u
首先先更正你的題目:為什麼32位元ARM要用16元位記憶體呢?
4 A4 h8 s" ]* g6 E8 q0 D
題目應是:為什麼32位元ARM要用16位元指令呢?
1 m4 O% f- p" U9 k( |- K
9 @$ ]# C |. n8 q
如果題目是前者的話應該是在問bus跟cache的問題.
1 z4 @; X- F1 U: L
題目是後者的話才是問thumb指令集的問題
" j- R! }' v( {: k
* I7 p; u* g' b+ y
正如你所說的, thumb指令是為了提高code density(這個也是arm自己講的答案), 使用thumb指令可以省下一半的記憶體空間, 如此相同的記憶體可以存二倍的指令, 對cache的hit rate也有幫助
: J9 \ o0 b- i# P' R, j4 D
所以在不需要32 bit運算場合要多使用thumb指令. 有個統計你也許不相信, 不過內容我大概也忘了: 日本一家公司做的統計, 在RTC (real time clock)內少用一個bit的記憶體的話, 全年可以省下好幾GG bit.....可怕吧. 還有可以省下大量的power consumption...不過太省的結果就是會出現y2k的問題就是了....
1 O8 h, _, i$ o$ u) [. ~7 c
4 G1 @& h! Z0 E4 ~+ T% a
另外記憶體大變便宜是因為製程關係, 有些小容量的記憶體反而貴的原因是在於用的人少流通性不足, 而不是成本關係.
作者:
zanthia
時間:
2007-2-6 12:57 AM
除了記憶體的容量, 我覺得外部匯流排的寬度和 IO 接腳的數目也是原因; 雖然外部匯流排都有 32 位元, 但有時候受限於面積, 有時候受限於電路板的層數和成本, 還是有很大的比例不得不用 16 位元的記憶體, 這時候使用 Thumb 反而效率較佳... 只要 fetch 一次就可以執行...
作者:
tommywgt
時間:
2007-2-6 01:04 PM
如果boot rom是16 bit或者也有可能是8 bit, boot loader在開機會load到dram去
' Q. l& Y+ d% ~
dram如果32 bit就沒你說的問題, 但是dram如果是16 bit的話系統有cache, 整體的performance在於cache 的hit rate占比較大多數
作者:
zanthia
時間:
2007-2-7 11:38 PM
有些 ARM7 仍然是沒有 cache 的, 只有一些 internal RAM; 原因就是我提過的成本問題... 如果沒有成本考量, 記憶體的容量其實也不用擔心...
' h# d) o9 t) \7 U/ g, y, Q
有一件事我不太確定: 如果使用 thumb state, Icache 是不是無形中變成兩倍?
作者:
tommywgt
時間:
2007-2-8 11:18 AM
應該不會才對...
作者:
hiwu
時間:
2007-10-8 09:59 PM
ARM的指令分成 1. ARM mode 2. thumb mode 3.thumb mode
/ R+ _( R1 k* j4 B
1. ARM mode: 32 bit instruction。ARM CPU一起動定是在ARM mode。有些IRQ/Exception要在ARM mode下才可執行。
, i, G2 i( O4 ?% E5 l5 z- E; j" Z( x
2. thumb mode: 16 bit instruction。速度比ARM mode慢,但code density較高。一定需要用額外的指令才可以切換到thumb mode。只有在DRAM很少的情況下,才會考慮有些function用thumb mode。OS不能用thumb implement。
* S* g/ s$ q" A' E& T8 G
3. thumb2: 16bit instruction。少了需要切換的問題。但還沒有看到OS可以support thumb2。
1 K& l0 m6 m% J$ Z& a1 a; ~3 A X5 ~. {
7 n) \" ?% J) _6 d! y
用16 bit 的記憶體,通常是為了cost down。32 bit的CPU,用16 bit的memory會讓CPU沒有效率。如果16 bit的的記憶體可以跑到很高的clock rate,就另當別論。是否用16 bit的memory,要看系統的設計需求。當然也可以用2顆16 bit momory組成一個32 bit memory。
作者:
sieg70
時間:
2008-8-4 05:43 PM
說實在的, 可能是因為所學過淺的關係, 我不清楚16 bit memory的問題在講什麼, ARM在看記憶體存取時, 在instruction部份, ARM mode時就是1 instruction=4 bytes, 在Thumb mode時, 1 instruction= 2 bytes, . 而碰到讀data時, 則看該data在compile後被編成2 bytes還是4 bytes, 以ARM的data bus寬度來看, 不管要讀的data是2 bytes,還是4 bytes都比較少問題, 就是直接讀一個word, 只是當初2 bytes的data在高位元的兩bytes都有作extention, 而當ARM data bus寬為16 bits, 去讀16 bits的data當然沒問題, 去讀32 bits的data就要額外多fetch一次才算讀完該筆data, 在Thumb mode下還是有可能處理 32 bit的data
* b9 g5 l ~9 l7 Z& }9 E
. I4 D2 f; G3 V4 c( |: s
另外, 記憶體6個mos組成一個cell, 是SRAM的結購, 至於flash是一個mos一個cell,所以密度比SRAM高, 相容面積能作出更高的容量, 所以同容量的SRAM跟flash, flash會比SRAM便宜很多, 另外, 現在memory便宜的另一個原因是因為技術進步, 像是用.18製程90nm製程去生產同規格的記憶體, 每一個bit的生產成本完全是不同等級的, 還有yield良率也隨技術進步而改善, 這也是造成memory變便宜的原因之一.
( h9 Q1 d8 R' a) r" A, f2 z
% `7 L& |& Y0 T0 w: ]9 A% R( [
大概就是這個樣子吧!
( V. y2 @: @% P9 A
! \5 I: v7 j5 q8 Y) T& X' v
[
本帖最後由 sieg70 於 2008-8-4 05:44 PM 編輯
]
作者:
gogojesse
時間:
2008-8-4 06:36 PM
看完大家的討論,想到一個問題
, E# P" \- E2 ?/ o9 d4 B9 ]" O/ O
究竟thumb mode下的cache hit有沒有變高?
% N: y/ f0 q- _& s6 a' ]
+ Q% M& N6 a' @1 w
理論上,改變或控制cache的行為,需要去設定co-processor
7 d1 H: S! n! ^9 ]% p# W
$ }- a. k' B- V* b# i: `
1. 如果cache切到thumb mode被視作double,所以hit rate變高
- |$ L8 _* t* O$ m+ ?6 X7 _. _
1 [+ g, ~/ Q5 j; l* V
表示使用bx指令切換到thumb mode
! e( R& _' o) b0 V) V* I" B
隱含這時候CPU可能會自動flush I&D Cache
* N* S/ C. b2 W! [( J5 }* |0 m
然後設定好co-processor的設定
$ p. w# W+ m* N' X! ^7 a! o
才能做為16 bit I&Dcache使用
5 r+ u( }9 f4 B0 e) N
; d6 o! N* j; a/ z; e+ x
2. 假如BX並不會自動改變cache的動作或裡面的資料,表示cache被使
2 _/ c2 H9 V: K+ o
用的方式可能沒變,只是截掉部份超過的bit field
3 c4 |: R4 @* I( h. u
, }9 O' K: T& J" e j; C( `
這樣一來hit rate可能就不會改變,只有在bus 使用16 width的時候
0 _, u: J2 j, @2 t8 f& q
用thumb mode執行效能比較ARM mode快
* z6 U# [: f2 r E3 [* M
6 U% c6 z. }/ D4 f8 j
正在找spec和相關資料看
% l0 i8 Z) G, W( A+ x) J( X# d! \( ?
不知道有沒有哪位大大知道答案的??
作者:
gogojesse
時間:
2008-8-5 10:56 AM
自問自答一下
9 T( z7 R4 U u" e# R
/ R! R9 f4 i+ P' K
因為 cache 是以一條一條 cache line 的方式
0 c( l9 S. O; {# J: Y' j
對 memory 的東西做 cache 的動作
5 D1 x7 T9 U/ h9 Q5 M
切換成thumb mode之後
+ \2 d. R* Y2 i( v9 {2 Z
只是 processor 去讀取 cache 中資料的方式變了
& `" c `5 P% l6 @' G' u( r8 u8 {9 G
cache 本身去 cache 資料的行為沒有變
# l% a" G% a |
因此,thumb mode 下的 cache 可以被視為變成兩倍大,而且 cache 的設定不需要改變
, K# V# X/ @$ g9 p* L$ n% B: ^: w
code size 變小 cache 又相對變大 hit rate會提高
. n6 Q0 k+ j r2 A& z" [* j r
performance會變好....
A# K1 j; V6 N5 u
6 i- a; O: b) X/ D2 p- F) \& [$ n
以上希望沒有理解錯誤的地方~
作者:
opelwu
時間:
2008-8-31 05:06 PM
ARM指令集區分32-bit and 16-bit主要在於:
" O) r! C x* B
1. 提高code density,使得所需儲存空間變得比較少就可以用比較少的memory,節省pcb area size and total cost
7 ^+ D4 S9 W% v. x! c
2. 省電的考量
. F0 o1 l7 j7 ]6 y0 F: X- m
. U! C2 f: a1 ~ G* L8 I
-->聽說記憶體是每一個bit就得一個點,有的記憶體是6個mos管構成一個點。所以價格降不下來。
! N* _. @& ]4 Q; r
6 mos指的是SRAM的架構,SRAM通常是作為CPU的Cache Memory之用,因為速度較快,但是相同容量的DRAM來比較SRAM佔用較大面積
1 [+ p- f" L2 U3 d
另一個替代方式是採用PSRAM
歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/)
Powered by Discuz! X3.2