Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 8011|回復: 10
打印 上一主題 下一主題

為什麼32位元ARM要用16元位記憶體呢?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2006-11-13 12:08:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
3Chipcoin
[轉貼]學習到:8 [& c8 e+ y% O' K; W8 J
“ARM有兩種指令集:16位元THUMB指令集和32位元ARM指令集。使用16位的記憶體可以降低成本”是不僅僅因為性價比的原因呢??
$ U1 d9 L' S6 p& c0 e# e8 _
' A( D6 q3 b0 r% h' ?9 ?' b8 j2 ~聽說記憶體是每一個bit就得一個點,有的記憶體是6個mos管構成一個點。所以價格降不下來。: S" X4 @, E" {9 @& B
可是為什麼市場上快閃記憶體越來越大,價格確越來越便宜呢?有點不太清楚, 看來得找本記憶體的書看看了。
3 t2 C# p4 L4 X7 z" e哪位高手指點一下呢???) ~# C* }& f, n1 |: ]! [, b

" d# s  O4 q% h& f+ Q2 K9 M$ V聽說如此可以提高指令效率和密度?還有沒有更好的答案呢?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2007-2-5 18:19:32 | 只看該作者
我來領RDB好了
+ M& G2 ~; ]# M8 c9 d. }0 d
1 U7 x0 U4 c* S/ K$ i# V首先先更正你的題目:為什麼32位元ARM要用16元位記憶體呢?
0 [- ~! t$ M' J% x: ^; `題目應是:為什麼32位元ARM要用16位元指令呢?
3 K! J. A2 Z3 Y, a
) d- ^9 X" a7 s/ }/ r6 I如果題目是前者的話應該是在問bus跟cache的問題.
) V# H6 @) f0 ^. A+ I題目是後者的話才是問thumb指令集的問題, [* M$ X- Y. [' a( N
$ Y  z; C- j2 r; D7 W5 ^/ _3 K6 _
正如你所說的, thumb指令是為了提高code density(這個也是arm自己講的答案), 使用thumb指令可以省下一半的記憶體空間, 如此相同的記憶體可以存二倍的指令, 對cache的hit rate也有幫助* |) y* \# \: q6 d  u4 A) c
所以在不需要32 bit運算場合要多使用thumb指令. 有個統計你也許不相信, 不過內容我大概也忘了: 日本一家公司做的統計, 在RTC (real time clock)內少用一個bit的記憶體的話, 全年可以省下好幾GG bit.....可怕吧. 還有可以省下大量的power consumption...不過太省的結果就是會出現y2k的問題就是了....
6 d; I" @1 v( B  k/ x
, J' T7 B: s5 n, K另外記憶體大變便宜是因為製程關係, 有些小容量的記憶體反而貴的原因是在於用的人少流通性不足, 而不是成本關係.
回復

使用道具 舉報

3#
發表於 2007-2-6 00:57:12 | 只看該作者
除了記憶體的容量, 我覺得外部匯流排的寬度和 IO 接腳的數目也是原因; 雖然外部匯流排都有 32 位元, 但有時候受限於面積, 有時候受限於電路板的層數和成本, 還是有很大的比例不得不用 16 位元的記憶體, 這時候使用 Thumb 反而效率較佳... 只要 fetch 一次就可以執行...
回復

使用道具 舉報

4#
發表於 2007-2-6 13:04:09 | 只看該作者
如果boot rom是16 bit或者也有可能是8 bit, boot loader在開機會load到dram去
  Y: m# j$ m0 z, {4 ]# xdram如果32 bit就沒你說的問題, 但是dram如果是16 bit的話系統有cache, 整體的performance在於cache 的hit rate占比較大多數
回復

使用道具 舉報

5#
發表於 2007-2-7 23:38:55 | 只看該作者
有些 ARM7 仍然是沒有 cache 的, 只有一些 internal RAM; 原因就是我提過的成本問題... 如果沒有成本考量, 記憶體的容量其實也不用擔心...8 Z$ o6 x6 @+ w9 m8 w
有一件事我不太確定: 如果使用 thumb state, Icache 是不是無形中變成兩倍?
回復

使用道具 舉報

6#
發表於 2007-2-8 11:18:23 | 只看該作者
應該不會才對...
回復

使用道具 舉報

7#
發表於 2007-10-8 21:59:54 | 只看該作者
ARM的指令分成 1. ARM mode 2. thumb mode 3.thumb mode
% l6 k' O/ b3 O& [+ o! G1 j5 d0 D, w1. ARM mode: 32 bit instruction。ARM CPU一起動定是在ARM mode。有些IRQ/Exception要在ARM mode下才可執行。1 U2 {0 j. G! @; I2 S4 s
2. thumb mode: 16 bit instruction。速度比ARM mode慢,但code density較高。一定需要用額外的指令才可以切換到thumb mode。只有在DRAM很少的情況下,才會考慮有些function用thumb mode。OS不能用thumb implement。
: T, l$ |* Q; n# r0 q3. thumb2: 16bit instruction。少了需要切換的問題。但還沒有看到OS可以support thumb2。) R6 r# x  u3 d& U" |$ p/ P* d. J
  {$ p( K8 F8 m
用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。
回復

使用道具 舉報

8#
發表於 2008-8-4 17:43:25 | 只看該作者
說實在的, 可能是因為所學過淺的關係, 我不清楚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
/ G1 k* z/ b. Q9 h  \
/ `4 n8 E$ o5 z2 ]另外, 記憶體6個mos組成一個cell, 是SRAM的結購, 至於flash是一個mos一個cell,所以密度比SRAM高, 相容面積能作出更高的容量, 所以同容量的SRAM跟flash, flash會比SRAM便宜很多, 另外, 現在memory便宜的另一個原因是因為技術進步, 像是用.18製程90nm製程去生產同規格的記憶體, 每一個bit的生產成本完全是不同等級的, 還有yield良率也隨技術進步而改善, 這也是造成memory變便宜的原因之一.
: i8 B6 v7 y* _! M, e9 x$ i# C) I, t' [- o% _; t5 I
大概就是這個樣子吧!
& \& W" y" ~/ \3 [* K( B' [- R5 P- l' N* Z% S( `* [2 H+ }; z: M
[ 本帖最後由 sieg70 於 2008-8-4 05:44 PM 編輯 ]
回復

使用道具 舉報

9#
發表於 2008-8-4 18:36:14 | 只看該作者
看完大家的討論,想到一個問題
& k- K% l1 ^/ t  P0 O+ Q: M0 Y* \究竟thumb mode下的cache hit有沒有變高?
7 P  n% C9 H% ^6 `, ^3 }: }2 l- i+ O% ?, J' S# }3 A2 w
理論上,改變或控制cache的行為,需要去設定co-processor/ L. P/ ~+ A! z- h# N2 ?
3 N4 y: G; O% A# T
1. 如果cache切到thumb mode被視作double,所以hit rate變高9 ^) k, G. P7 D0 w8 A; {5 U/ ~  H* B
" ]$ G& ^& h( I9 r; Y4 [
表示使用bx指令切換到thumb mode
4 Z2 }# d- R' g  h9 M! J隱含這時候CPU可能會自動flush I&D Cache
0 C/ r# j* I2 B3 V  ]4 c. C然後設定好co-processor的設定
) D5 q( I+ V- C) G' e* h. k才能做為16 bit I&Dcache使用1 A8 y+ I5 D' q9 }; |1 t
8 L# ]/ ?2 \5 r, E- t# P! a
2. 假如BX並不會自動改變cache的動作或裡面的資料,表示cache被使& k; X6 V5 Q' @- u' S
用的方式可能沒變,只是截掉部份超過的bit field
7 P, \, r- v; {: M5 D7 n" \4 W; ^7 Z8 c# l# J: w- L
這樣一來hit rate可能就不會改變,只有在bus 使用16 width的時候
5 y/ z3 r! [# F" |" P# o用thumb mode執行效能比較ARM mode快
) a7 B/ X9 h* {2 a3 u. @5 _
/ t$ ^6 k+ z! x正在找spec和相關資料看# O( f  G/ P/ B  a) ^: V
不知道有沒有哪位大大知道答案的??
回復

使用道具 舉報

10#
發表於 2008-8-5 10:56:57 | 只看該作者
自問自答一下1 m3 T- T6 p" c: c9 p3 R

5 A9 `2 n6 n4 s. a  E& Q4 V$ k因為 cache 是以一條一條 cache line 的方式
/ }0 ^# _  ^2 N, y* K對 memory 的東西做 cache 的動作" ?% L5 O6 v' ]. n8 I6 }* D" ~; p2 T
切換成thumb mode之後
# k- b3 P8 F1 x7 J只是 processor 去讀取 cache 中資料的方式變了
2 o  a+ d/ A. m' [3 b. [cache 本身去 cache 資料的行為沒有變9 b* Q+ j1 A. T& m4 n" @% L+ B
因此,thumb mode 下的 cache 可以被視為變成兩倍大,而且 cache 的設定不需要改變, }& i7 M. e9 h% Z; B
code size 變小  cache 又相對變大  hit rate會提高% {, b$ d/ l" Y7 i3 h4 s
performance會變好....
0 s1 ~+ b/ I# b" @6 D  [
8 U0 C9 \2 J4 s3 z3 P( g以上希望沒有理解錯誤的地方~
回復

使用道具 舉報

11#
發表於 2008-8-31 17:06:53 | 只看該作者
ARM指令集區分32-bit and 16-bit主要在於:
; d5 n- z$ G8 O7 E/ G5 j/ S1. 提高code density,使得所需儲存空間變得比較少就可以用比較少的memory,節省pcb area size and total cost: \! O4 M/ X6 _# C- I% H+ D
2. 省電的考量$ S1 v* R, c' _: I: P9 M2 B$ s
8 J; f" [0 z0 p; G3 Y* b8 K0 f
-->聽說記憶體是每一個bit就得一個點,有的記憶體是6個mos管構成一個點。所以價格降不下來。0 E( L9 ~6 }7 L  o2 d
6 mos指的是SRAM的架構,SRAM通常是作為CPU的Cache Memory之用,因為速度較快,但是相同容量的DRAM來比較SRAM佔用較大面積
& X: ^2 l3 P" e4 N) L- U另一個替代方式是採用PSRAM
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-6-5 08:37 PM , Processed in 0.120015 second(s), 16 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表