亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
123下一頁
最近訪問板塊 發(fā)新帖
查看: 4585 | 回復: 20
打印 上一主題 下一主題

while (1) { i = 1; }在硬件級別的執(zhí)行過程 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-01-14 13:24 |只看該作者 |倒序瀏覽
int i = 0;

while (1) { i = 1; }

請教大家:
如上語句在硬件級別的執(zhí)行過程是怎么樣的呢?
由于cpu的速度比內(nèi)存快幾個數(shù)量級,那么指令中在給變量i的地址反復賦值時
cpu怎么知道上一次賦的值已經(jīng)被內(nèi)存完好無損地保存下來了呢?然后再執(zhí)行下一次
的賦值操作呢?

這個反復賦值的過程會不會被硬件電路合并呢?(比如cpu執(zhí)行了第一個賦值操作,然后
馬上又執(zhí)行了第二個賦值操作,兩次操作會不會只往內(nèi)存中寫一次呢??)

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
2 [報告]
發(fā)表于 2010-01-14 13:30 |只看該作者
如果編譯器是否把它優(yōu)化到寄存器,那么這里就是一直在讀寫寄存器了。
如果是一個地址,那么
直接操作內(nèi)存的速度會比較慢,所以CPU會采用cache的方式(chche的讀寫速度比內(nèi)存讀寫要快),修改設置標志( dirty bit),以便將來回寫。

論壇徽章:
0
3 [報告]
發(fā)表于 2010-01-14 13:35 |只看該作者
版主同志,這里只考慮訪問內(nèi)存的情況,不考慮寄存器優(yōu)化和cache優(yōu)化

我就是不太明白cpu怎么知道上一次寫的數(shù)據(jù)已經(jīng)被某內(nèi)存單元完好地保存了
從而開始下一次的寫內(nèi)存操作的

論壇徽章:
9
摩羯座
日期:2013-08-15 15:18:48獅子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龍
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亞洲杯之韓國
日期:2015-03-26 10:16:442015亞冠之武里南聯(lián)
日期:2015-08-18 14:55:52
4 [報告]
發(fā)表于 2010-01-14 13:42 |只看該作者
現(xiàn)在哪個CPU沒cache的,不考慮cache,你要考慮什么?

論壇徽章:
0
5 [報告]
發(fā)表于 2010-01-14 14:13 |只看該作者
同志們,我是想搞清楚cpu和內(nèi)存之間傳數(shù)據(jù)的具體過程
假設沒有cache存在,只有cpu和內(nèi)存

我是不明白cpu怎么知道上次寫內(nèi)存寫成功了呢?

論壇徽章:
0
6 [報告]
發(fā)表于 2010-01-14 14:20 |只看該作者
原帖由 redac 于 2010-1-14 13:35 發(fā)表
版主同志,這里只考慮訪問內(nèi)存的情況,不考慮寄存器優(yōu)化和cache優(yōu)化

我就是不太明白cpu怎么知道上一次寫的數(shù)據(jù)已經(jīng)被某內(nèi)存單元完好地保存了
從而開始下一次的寫內(nèi)存操作的


在主機cpu與"內(nèi)存"之間,通常用特定的北橋連接.

cpu讀寫"內(nèi)存"時先通過前端總線發(fā)給北橋 , 具體由北橋存取"內(nèi)存".

cpu芯片與北橋芯片是配套的, 之間有固定的電氣協(xié)議 , 什么時候已經(jīng)ready , 什么情況下該插入wait , 需要幾個wait周期 , 彼此都有默契 . 北橋與"內(nèi)存"之間也一樣的.


嵌入式的cpu通常都有片內(nèi)"內(nèi)存"控制器 , 有的簡單一些 , 有的甚至比主機系列的復雜 .


不管怎樣, 一旦"內(nèi)存"被初始化 , 確切地說一旦內(nèi)存控制器被指令正確初始化后 , 硬件就會按照正確的時序工作 .

論壇徽章:
0
7 [報告]
發(fā)表于 2010-01-14 14:44 |只看該作者
多謝老手兄

弟還有個初級問題,請大家多指教,在linux2.6內(nèi)核自帶的網(wǎng)卡驅(qū)動8139too.c文件中
有如下代碼:

static void rtl8139_chip_reset (void *ioaddr)
{
        int i;

        /* Soft reset the chip. */
        RTL_W8 (ChipCmd, CmdReset);

        /* Check that the chip has finished the reset. */
        for (i = 1000; i > 0; i--) {
                barrier();
                if ((RTL_R8 (ChipCmd) & CmdReset) == 0)
                        break;
                udelay (10);
        }
}

它這里在循環(huán)讀寄存器時進行udelay是什么意思呢?

論壇徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-08-03 06:20:00數(shù)據(jù)庫技術版塊每日發(fā)帖之星
日期:2016-08-04 06:20:00
8 [報告]
發(fā)表于 2010-01-14 14:49 |只看該作者
原帖由 redac 于 2010-1-14 14:13 發(fā)表
同志們,我是想搞清楚cpu和內(nèi)存之間傳數(shù)據(jù)的具體過程
假設沒有cache存在,只有cpu和內(nèi)存

我是不明白cpu怎么知道上次寫內(nèi)存寫成功了呢?

CPU不知道,CPU只知道按照協(xié)議辦事情

論壇徽章:
9
摩羯座
日期:2013-08-15 15:18:48獅子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龍
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亞洲杯之韓國
日期:2015-03-26 10:16:442015亞冠之武里南聯(lián)
日期:2015-08-18 14:55:52
9 [報告]
發(fā)表于 2010-01-14 15:54 |只看該作者
原帖由 redac 于 2010-1-14 14:44 發(fā)表
多謝老手兄

弟還有個初級問題,請大家多指教,在linux2.6內(nèi)核自帶的網(wǎng)卡驅(qū)動8139too.c文件中
有如下代碼:

static void rtl8139_chip_reset (void *ioaddr)
{
        int i;

        /* Soft rese ...


估計是循環(huán)檢測RTL_R8 (ChipCmd)的CmdReset位是否被重置,最多等待1000 * 10us,這樣分段delay檢測可以降低CPU使用率,因為檢測一下標志位的時間遠小于10us,所以CPU絕大多數(shù)時間在udelay中。

論壇徽章:
0
10 [報告]
發(fā)表于 2010-01-14 15:55 |只看該作者
原帖由 redac 于 2010-1-14 14:44 發(fā)表
...

        for (i = 1000; i > 0; i--) {
                barrier();
                if ((RTL_R8 (ChipCmd) & CmdReset) == 0)
                        break;
                udelay (10);
        }
}

它這里在循環(huán)讀寄存器時進行udelay是什么意思呢?


你的意思是為什么這里要delay , 而存取內(nèi)存就不用 ? 應該是這樣吧 ?

其實就8139來說 , 你用不用udelay也沒關系啊 , 它不會因為你沒delay而使勁判斷它的狀態(tài)寄存器導致掛掉.

就像你們想出門, 明知你的朋友化妝還要10分鐘以上, 你是選擇隔一段呢還是在一直不停的催促 , 況且你是在公共電話打的 , 還有別人想打電話呢?!

其實存取內(nèi)存也是可以有delay的 ,但起碼有2點不同:
   形式不同,一個是電氣的形式一個以指令形式的表現(xiàn) ;
   delay量級不同 , 如果內(nèi)存是按秒算的 , 那么等8139復位可能得等好多年. 這還算多 , 讓硬盤工作起來可能得等一輩子了.
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP