国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

7個(gè)示例科普 CPU Cache

共 10101字,需瀏覽 21分鐘

 ·

2021-09-23 00:27

前言

CPU Cache一直是理解計(jì)算機(jī)體系架構(gòu)的重要知識(shí)點(diǎn),也是并發(fā)編程設(shè)計(jì)中的技術(shù)難點(diǎn),而且相關(guān)參考資料如同過江之鯽,浩瀚繁星,閱之如臨深淵,味同嚼蠟,三言兩語(yǔ)難以入門。正好網(wǎng)上有人推薦了微軟大牛Igor Ostrovsky一篇博文《漫游處理器緩存效應(yīng)》,文章不僅僅用7個(gè)最簡(jiǎn)單的源碼示例就將CPU cache的原理娓娓道來,還附加圖表量化分析做數(shù)學(xué)上的佐證,個(gè)人感覺這種案例教學(xué)的切入方式絕對(duì)是俺的菜,故而忍不住貿(mào)然譯之,以饗列位看官。

原文地址:Gallery of Processor Cache Effects

大多數(shù)讀者都知道cache是一種快速小型的內(nèi)存,用以存儲(chǔ)最近訪問內(nèi)存位置。這種描述合理而準(zhǔn)確,但是更多地了解一些處理器緩存工作中的“煩人”細(xì)節(jié)對(duì)于理解程序運(yùn)行性能有很大幫助。

在這篇博客中,我將運(yùn)用代碼示例來詳解 cache工作的方方面面,以及對(duì)現(xiàn)實(shí)世界中程序運(yùn)行產(chǎn)生的影響。

下面的例子都是用C#寫的,但語(yǔ)言的選擇同程序運(yùn)行狀況以及得出的結(jié)論幾乎沒什么影響。

示例1:內(nèi)存訪問和運(yùn)行

你認(rèn)為相較于循環(huán)1,循環(huán)2會(huì)運(yùn)行更快嗎?

int[] arr = new int[64 * 1024 * 1024];

// Loop 1
for (int i = 0; i < arr.Length; i++) arr[i] *= 3;

// Loop 2
for (int i = 0; i < arr.Length; i += 16) arr[i] *= 3;

第一個(gè)循環(huán)將數(shù)組的每個(gè)值乘3,第二個(gè)循環(huán)將每16個(gè)值乘3,第二個(gè)循環(huán)只做了第一個(gè)約6%的工作,但在現(xiàn)代機(jī)器上,兩者幾乎運(yùn)行相同時(shí)間:在我機(jī)器上分別是80毫秒和78毫秒。

兩個(gè)循環(huán)花費(fèi)相同時(shí)間的原因跟內(nèi)存有關(guān)。**循環(huán)執(zhí)行時(shí)間長(zhǎng)短由數(shù)組的內(nèi)存訪問次數(shù)決定的,而非整型數(shù)的乘法運(yùn)算次數(shù)。**經(jīng)過下面對(duì)第二個(gè)示例的解釋,你會(huì)發(fā)現(xiàn)硬件對(duì)這兩個(gè)循環(huán)的主存訪問次數(shù)是相同的。

示例2:緩存行的影響

讓我們進(jìn)一步探索這個(gè)例子。我們將嘗試不同的循環(huán)步長(zhǎng),而不僅僅是1和16。

for (int i = 0; i < arr.Length; i += K) arr[i] *= 3;

下圖為該循環(huán)在不同步長(zhǎng)(K)下的運(yùn)行時(shí)間:

注意當(dāng)步長(zhǎng)在1到16范圍內(nèi),循環(huán)運(yùn)行時(shí)間幾乎不變。但從16開始,每次步長(zhǎng)加倍,運(yùn)行時(shí)間減半。

背后的原因是今天的CPU不再是按字節(jié)訪問內(nèi)存,而是以64字節(jié)為單位的塊(chunk)拿取,稱為一個(gè)緩存行(cache line)。當(dāng)你讀一個(gè)特定的內(nèi)存地址,整個(gè)緩存行將從主存換入緩存,并且訪問同一個(gè)緩存行內(nèi)的其它值的開銷是很小的。

由于16個(gè)整型數(shù)占用64字節(jié)(一個(gè)緩存行),for循環(huán)步長(zhǎng)在1到16之間必定接觸到相同數(shù)目的緩存行:即數(shù)組中所有的緩存行。當(dāng)步長(zhǎng)為32,我們只有大約每?jī)蓚€(gè)緩存行接觸一次,當(dāng)步長(zhǎng)為64,只有每四個(gè)接觸一次。

理解緩存行對(duì)某些類型的程序優(yōu)化而言可能很重要。比如,數(shù)據(jù)字節(jié)對(duì)齊可能決定一次操作接觸1個(gè)還是2個(gè)緩存行。那上面的例子來說,很顯然操作不對(duì)齊的數(shù)據(jù)將損失一半性能。

示例3:L1和L2緩存大小

今天的計(jì)算機(jī)具有兩級(jí)或三級(jí)緩存,通常叫做L1、L2以及可能的L3(譯者注:如果你不明白什么叫二級(jí)緩存,可以參考這篇精悍的博文)。如果你想知道不同緩存的大小,你可以使用系統(tǒng)內(nèi)部工具CoreInfo,或者Windows API調(diào)用GetLogicalProcessorInfo。兩者都將告訴你緩存行以及緩存本身的大小。

在我的機(jī)器上,CoreInfo顯示我有一個(gè)32KB的L1數(shù)據(jù)緩存,一個(gè)32KB的L1指令緩存,還有一個(gè)4MB大小的L2數(shù)據(jù)緩存。L1緩存是處理器獨(dú)享的,L2緩存是成對(duì)處理器共享的。

Logical Processor to Cache Map: — Data Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64 — Instruction Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64 -– Data Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64 -– Instruction Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64 – Unified Cache 0, Level 2, 4 MB, Assoc 16, LineSize 64 –- Data Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64 –- Instruction Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64 — Data Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64 — Instruction Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64 –** Unified Cache 1, Level 2, 4 MB, Assoc 16, LineSize 64

(譯者注:作者平臺(tái)是四核機(jī),所以L1編號(hào)為0~3,數(shù)據(jù)/指令各一個(gè),L2只有數(shù)據(jù)緩存,兩個(gè)處理器共享一個(gè),編號(hào)0~1。關(guān)聯(lián)性字段在后面例子說明。)

讓我們通過一個(gè)實(shí)驗(yàn)來驗(yàn)證這些數(shù)字。遍歷一個(gè)整型數(shù)組,每16個(gè)值自增1——一種節(jié)約的方式改變每個(gè)緩存行。當(dāng)遍歷到最后一個(gè)值,就重頭開始。我們將使用不同的數(shù)組大小,可以看到當(dāng)數(shù)組溢出一級(jí)緩存大小,程序運(yùn)行的性能將急劇滑落。

int steps = 64 * 1024 * 1024;
// Arbitrary number of steps
int lengthMod = arr.Length - 1;
for (int i = 0; i < steps; i++)
{
    arr[(i * 16) & lengthMod]++; // (x & lengthMod) is equal to (x % arr.Length)
}

下圖是運(yùn)行時(shí)間圖表:

你可以看到在32KB和4MB之后性能明顯滑落——正好是我機(jī)器上L1和L2緩存大小。

示例4:指令級(jí)別并發(fā)

現(xiàn)在讓我們看一看不同的東西。下面兩個(gè)循環(huán)中你以為哪個(gè)較快?

int steps = 256 * 1024 * 1024;
int[] a = new int[2];

// Loop 1
for (int i=0; i<steps; i++) { a[0]++; a[0]++; }

// Loop 2
for (int i=0; i<steps; i++) { a[0]++; a[1]++; }

結(jié)果是第二個(gè)循環(huán)約比第一個(gè)快一倍,至少在我測(cè)試的機(jī)器上。為什么呢?這跟兩個(gè)循環(huán)體內(nèi)的操作指令依賴性有關(guān)。

第一個(gè)循環(huán)體內(nèi),操作做是相互依賴的(譯者注:下一次依賴于前一次):

但第二個(gè)例子中,依賴性就不同了:

現(xiàn)代處理器中對(duì)不同部分指令擁有一點(diǎn)并發(fā)性(譯者注:跟流水線有關(guān),比如Pentium處理器就有U/V兩條流水線,后面說明)。這使得CPU在同一時(shí)刻訪問L1兩處內(nèi)存位置,或者執(zhí)行兩次簡(jiǎn)單算術(shù)操作。在第一個(gè)循環(huán)中,處理器無法發(fā)掘這種指令級(jí)別的并發(fā)性,但第二個(gè)循環(huán)中就可以。

[原文更新]:許多人在reddit上詢問有關(guān)編譯器優(yōu)化的問題,像{ a[0]++; a[0]++; }能否優(yōu)化為{ a[0]+=2; }。實(shí)際上,C#編譯器和CLR JIT沒有做優(yōu)化——在數(shù)組訪問方面。我用release模式編譯了所有測(cè)試(使用優(yōu)化選項(xiàng)),但我查詢了JIT匯編語(yǔ)言證實(shí)優(yōu)化并未影響結(jié)果。

示例5:緩存關(guān)聯(lián)性

緩存設(shè)計(jì)的一個(gè)關(guān)鍵決定是確保每個(gè)主存塊(chunk)能夠存儲(chǔ)在任何一個(gè)緩存槽里,或者只是其中一些(譯者注:此處一個(gè)槽位就是一個(gè)緩存行)。

有三種方式將緩存槽映射到主存塊中:

  1. 直接映射(Direct mapped cache) 每個(gè)內(nèi)存塊只能映射到一個(gè)特定的緩存槽。一個(gè)簡(jiǎn)單的方案是通過塊索引chunk_index映射到對(duì)應(yīng)的槽位(chunk_index % cache_slots)。被映射到同一內(nèi)存槽上的兩個(gè)內(nèi)存塊是不能同時(shí)換入緩存的。(譯者注:chunk_index可以通過物理地址/緩存行字節(jié)計(jì)算得到)
  2. N路組關(guān)聯(lián)(N-way set associative cache) 每個(gè)內(nèi)存塊能夠被映射到N路特定緩存槽中的任意一路。比如一個(gè)16路緩存,每個(gè)內(nèi)存塊能夠被映射到16路不同的緩存槽。一般地,具有一定相同低bit位地址的內(nèi)存塊將共享16路緩存槽。(譯者注:相同低位地址表明相距一定單元大小的連續(xù)內(nèi)存)
  3. 完全關(guān)聯(lián)(Fully associative cache) 每個(gè)內(nèi)存塊能夠被映射到任意一個(gè)緩存槽。操作效果上相當(dāng)于一個(gè)散列表。

直接映射緩存會(huì)引發(fā)沖突——當(dāng)多個(gè)值競(jìng)爭(zhēng)同一個(gè)緩存槽,它們將相互驅(qū)逐對(duì)方,導(dǎo)致命中率暴跌。另一方面,完全關(guān)聯(lián)緩存過于復(fù)雜,并且硬件實(shí)現(xiàn)上昂貴。N路組關(guān)聯(lián)是處理器緩存的典型方案,它在電路實(shí)現(xiàn)簡(jiǎn)化和高命中率之間取得了良好的折中。

舉個(gè)例子,4MB大小的L2緩存在我機(jī)器上是16路關(guān)聯(lián)。所有64字節(jié)內(nèi)存塊將分割為不同組,映射到同一組的內(nèi)存塊將競(jìng)爭(zhēng)L2緩存里的16路槽位。

L2緩存有65,536個(gè)緩存行(譯者注:4MB/64),每個(gè)組需要16路緩存行,我們將獲得4096個(gè)集。這樣一來,塊屬于哪個(gè)組取決于塊索引的低12位bit(2^12=4096)。因此緩存行對(duì)應(yīng)的物理地址凡是以262,144字節(jié)(4096*64)的倍數(shù)區(qū)分的,將競(jìng)爭(zhēng)同一個(gè)緩存槽。我機(jī)器上最多維持16個(gè)這樣的緩存槽。(譯者注:請(qǐng)結(jié)合上圖中的2路關(guān)聯(lián)延伸理解,一個(gè)塊索引對(duì)應(yīng)64字節(jié),chunk0對(duì)應(yīng)組0中的任意一路槽位,chunk1對(duì)應(yīng)組1中的任意一路槽位,以此類推chunk4095對(duì)應(yīng)組4095中的任意一路槽位,chunk0和chunk4096地址的低12bit是相同的,所以chunk4096、chunk8192將同chunk0競(jìng)爭(zhēng)組0中的槽位,它們之間的地址相差262,144字節(jié)的倍數(shù),而最多可以進(jìn)行16次競(jìng)爭(zhēng),否則就要驅(qū)逐一個(gè)chunk)。

為了使得緩存關(guān)聯(lián)效果更加明了,我需要重復(fù)地訪問同一組中的16個(gè)以上的元素,通過如下方法證明:

public static long UpdateEveryKthByte(byte[] arr, int K)
{
    Stopwatch sw = Stopwatch.StartNew();
    const int rep = 1024*1024// Number of iterations – arbitrary
    int p = 0;
    for (int i = 0; i < rep; i++)
    {
        arr[p]++;
        p += K;
        if (p >= arr.Length) p = 0;
    }
    sw.Stop();
    return sw.ElapsedMilliseconds;
}

該方法每次在數(shù)組中迭代K個(gè)值,當(dāng)?shù)竭_(dá)末尾時(shí)從頭開始。循環(huán)在運(yùn)行足夠長(zhǎng)(2^20次)之后停止。

我使用不同的數(shù)組大小(每次增加1MB)和不同的步長(zhǎng)傳入U(xiǎn)pdateEveryKthByte()。以下是繪制的圖表,藍(lán)色代表運(yùn)行較長(zhǎng)時(shí)間,白色代表較短時(shí)間:

藍(lán)色區(qū)域(較長(zhǎng)時(shí)間)表明當(dāng)我們重復(fù)數(shù)組迭代時(shí),更新的值無法同時(shí)放在緩存中。淺藍(lán)色區(qū)域?qū)?yīng)80毫秒,白色區(qū)域?qū)?yīng)10毫秒。

讓我們來解釋一下圖表中藍(lán)色部分:

1.為何有垂直線?垂直線表明步長(zhǎng)值過多接觸到同一組中內(nèi)存位置(大于16次)。在這些次數(shù)里,我的機(jī)器無法同時(shí)將接觸過的值放到16路關(guān)聯(lián)緩存中。

一些糟糕的步長(zhǎng)值為2的冪:256和512。舉個(gè)例子,考慮512步長(zhǎng)遍歷8MB數(shù)組,存在32個(gè)元素以相距262,144字節(jié)空間分布,所有32個(gè)元素都會(huì)在循環(huán)遍歷中更新到,因?yàn)?12能夠整除262,144(譯者注:此處一個(gè)步長(zhǎng)代表一個(gè)字節(jié))。

由于32大于16,這32個(gè)元素將一直競(jìng)爭(zhēng)緩存里的16路槽位。

(譯者注:為何512步長(zhǎng)的垂直線比256步長(zhǎng)顏色更深?在同樣足夠多的步數(shù)下,512比256訪問到存在競(jìng)爭(zhēng)的塊索引次數(shù)多一倍。比如跨越262,144字節(jié)邊界512需要512步,而256需要1024步。那么當(dāng)步數(shù)為2^20時(shí),512訪問了2048次存在競(jìng)爭(zhēng)的塊而256只有1024次。最差情況下步長(zhǎng)為262,144的倍數(shù),因?yàn)槊看窝h(huán)都會(huì)引發(fā)一個(gè)緩存行驅(qū)逐。)

有些不是2的冪的步長(zhǎng)運(yùn)行時(shí)間長(zhǎng)僅僅是運(yùn)氣不好,最終訪問到的是同一組中不成比例的許多元素,這些步長(zhǎng)值同樣顯示為藍(lán)線。

2.為何垂直線在4MB數(shù)組長(zhǎng)度的地方停止?因?yàn)閷?duì)于小于等于4MB的數(shù)組,16路關(guān)聯(lián)緩存相當(dāng)于完全關(guān)聯(lián)緩存。

一個(gè)16路關(guān)聯(lián)緩存最多能夠維護(hù)16個(gè)以262,144字節(jié)分隔的緩存行,4MB內(nèi)組17或更多的緩存行都沒有對(duì)齊在262,144字節(jié)邊界上,因?yàn)?6*262,144=4,194,304。

3.為何左上角出現(xiàn)藍(lán)色三角?在三角區(qū)域內(nèi),我們無法在緩存中同時(shí)存放所有必要的數(shù)據(jù),不是出于關(guān)聯(lián)性,而僅僅是因?yàn)長(zhǎng)2緩存大小所限。

舉個(gè)例子,考慮步長(zhǎng)128遍歷16MB數(shù)組,數(shù)組中每128字節(jié)更新一次,這意味著我們一次接觸兩個(gè)64字節(jié)內(nèi)存塊。為了存儲(chǔ)16MB數(shù)組中每?jī)蓚€(gè)緩存行,我們需要8MB大小緩存。但我的機(jī)器中只有4MB緩存(譯者注:這意味著必然存在沖突從而延時(shí))。

即使我機(jī)器中4MB緩存是全關(guān)聯(lián),仍無法同時(shí)存放8MB數(shù)據(jù)。

4.為何三角最左邊部分是褪色的?注意左邊0~64字節(jié)部分——正好一個(gè)緩存行!就像上面示例1和2所說,額外訪問相同緩存行的數(shù)據(jù)幾乎沒有開銷。比如說,步長(zhǎng)為16字節(jié),它需要4步到達(dá)下一個(gè)緩存行,也就是說4次內(nèi)存訪問只有1次開銷。

在相同循環(huán)次數(shù)下的所有測(cè)試用例中,采取省力步長(zhǎng)的運(yùn)行時(shí)間來得短。

將圖表延伸后的模型:

緩存關(guān)聯(lián)性理解起來有趣而且確能被證實(shí),但對(duì)于本文探討的其它問題比起來,它肯定不會(huì)是你編程時(shí)所首先需要考慮的問題。

示例6:緩存行的偽共享(false-sharing)

在多核機(jī)器上,緩存遇到了另一個(gè)問題——一致性。不同的處理器擁有完全或部分分離的緩存。在我的機(jī)器上,L1緩存是分離的(這很普遍),而我有兩對(duì)處理器,每一對(duì)共享一個(gè)L2緩存。這隨著具體情況而不同,如果一個(gè)現(xiàn)代多核機(jī)器上擁有多級(jí)緩存,那么快速小型的緩存將被處理器獨(dú)占。

當(dāng)一個(gè)處理器改變了屬于它自己緩存中的一個(gè)值,其它處理器就再也無法使用它自己原來的值,因?yàn)槠鋵?duì)應(yīng)的內(nèi)存位置將被刷新(invalidate)到所有緩存。而且由于緩存操作是以緩存行而不是字節(jié)為粒度,所有緩存中整個(gè)緩存行將被刷新!

為證明這個(gè)問題,考慮如下例子:

private static int[] s_counter = new int[1024];
private void UpdateCounter(int position)
{
    for (int j = 0; j < 100000000; j++)
    {
        s_counter[position] = s_counter[position] + 3;
    }
}

在我的四核機(jī)上,如果我通過四個(gè)線程傳入?yún)?shù)0,1,2,3并調(diào)用UpdateCounter,所有線程將花費(fèi)4.3秒。

另一方面,如果我傳入16,32,48,64,整個(gè)操作進(jìn)花費(fèi)0.28秒!

為何會(huì)這樣?第一個(gè)例子中的四個(gè)值很可能在同一個(gè)緩存行里,每次一個(gè)處理器增加計(jì)數(shù),這四個(gè)計(jì)數(shù)所在的緩存行將被刷新,而其它處理器在下一次訪問它們各自的計(jì)數(shù)(譯者注:注意數(shù)組是private屬性,每個(gè)線程獨(dú)占)將失去命中(miss)一個(gè)緩存。這種多線程行為有效地禁止了緩存功能,削弱了程序性能。

示例7:硬件復(fù)雜性

即使你懂得了緩存的工作基礎(chǔ),有時(shí)候硬件行為仍會(huì)使你驚訝。不用處理器在工作時(shí)有不同的優(yōu)化、探試和微妙的細(xì)節(jié)。

有些處理器上,L1緩存能夠并發(fā)處理兩路訪問,如果訪問是來自不同的存儲(chǔ)體,而對(duì)同一存儲(chǔ)體的訪問只能串行處理。而且處理器聰明的優(yōu)化策略也會(huì)使你感到驚訝,比如在偽共享的例子中,以前在一些沒有微調(diào)的機(jī)器上運(yùn)行表現(xiàn)并不良好,但我家里的機(jī)器能夠?qū)ψ詈?jiǎn)單的例子進(jìn)行優(yōu)化來減少緩存刷新。

下面是一個(gè)“硬件怪事”的奇怪例子:

private static int A, B, C, D, E, F, G;
private static void Weirdness()
{
    for (int i = 0; i < 200000000; i++)
    {
        // do something...
    }
}

當(dāng)我在循環(huán)體內(nèi)進(jìn)行三種不同操作,我得到如下運(yùn)行時(shí)間:

操作 時(shí)間 A++; B++; C++; D++; 719 ms A++; C++; E++; G++; 448 ms A++; C++; 518 ms

增加A,B,C,D字段比增加A,C,E,G字段花費(fèi)更長(zhǎng)時(shí)間,更奇怪的是,增加A,C兩個(gè)字段比增加A,C,E,G執(zhí)行更久!

我無法肯定這些數(shù)字背后的原因,但我懷疑這跟存儲(chǔ)體有關(guān),如果有人能夠解釋這些數(shù)字,我將洗耳恭聽。

這個(gè)例子的教訓(xùn)是,你很難完全預(yù)測(cè)硬件的行為。你可以預(yù)測(cè)很多事情,但最終,衡量及驗(yàn)證你的假設(shè)非常重要。

關(guān)于第7個(gè)例子的一個(gè)回帖

Goz:我詢問Intel的工程師最后的例子,得到以下答復(fù):

“很顯然這涉及到執(zhí)行單元里指令是怎樣終止的,機(jī)器處理存儲(chǔ)-命中-加載的速度,以及如何快速且優(yōu)雅地處理試探性執(zhí)行的循環(huán)展開(比如是否由于內(nèi)部沖突而多次循環(huán))。但這意味著你需要非常細(xì)致的流水線跟蹤器和模擬器才能弄明白。在紙上預(yù)測(cè)流水線里的亂序指令是無比困難的工作,就算是設(shè)計(jì)芯片的人也一樣。對(duì)于門外漢來說,沒門,抱歉!”

P.S.個(gè)人感悟——局部性原理和流水線并發(fā)

程序的運(yùn)行存在時(shí)間和空間上的局部性,前者是指只要內(nèi)存中的值被換入緩存,今后一段時(shí)間內(nèi)會(huì)被多次引用,后者是指該內(nèi)存附近的值也被換入緩存。如果在編程中特別注意運(yùn)用局部性原理,就會(huì)獲得性能上的回報(bào)。

比如C語(yǔ)言中應(yīng)該盡量減少靜態(tài)變量的引用,這是因?yàn)殪o態(tài)變量存儲(chǔ)在全局?jǐn)?shù)據(jù)段,在一個(gè)被反復(fù)調(diào)用的函數(shù)體內(nèi),引用該變量需要對(duì)緩存多次換入換出,而如果是分配在堆棧上的局部變量,函數(shù)每次調(diào)用CPU只要從緩存中就能找到它了,因?yàn)槎褩5闹貜?fù)利用率高。

再比如**循環(huán)體內(nèi)的代碼要盡量精簡(jiǎn),**因?yàn)榇a是放在指令緩存里的,而指令緩存都是一級(jí)緩存,只有幾K字節(jié)大小,如果對(duì)某段代碼需要多次讀取,而這段代碼又跨越一個(gè)L1緩存大小,那么緩存優(yōu)勢(shì)將蕩然無存。

關(guān)于CPU的流水線(pipeline)并發(fā)性簡(jiǎn)單說說,Intel Pentium處理器有兩條流水線U和V,每條流水線可各自獨(dú)立地讀寫緩存,所以可以在一個(gè)時(shí)鐘周期內(nèi)同時(shí)執(zhí)行兩條指令。但這兩條流水線不是對(duì)等的,U流水線可以處理所有指令集,V流水線只能處理簡(jiǎn)單指令。

CPU指令通常被分為四類,第一類是常用的簡(jiǎn)單指令,像mov, nop, push, pop, add, sub, and, or, xor, inc, dec, cmp, lea,可以在任意一條流水線執(zhí)行,只要相互之間不存在依賴性,完全可以做到指令并發(fā)。

第二類指令需要同別的流水線配合,像一些進(jìn)位和移位操作,這類指令如果在U流水線中,那么別的指令可以在V流水線并發(fā)運(yùn)行,如果在V流水線中,那么U流水線是暫停的。

第三類指令是一些跳轉(zhuǎn)指令,如cmp,call以及條件分支,它們同第二類相反,當(dāng)工作在V流水線時(shí)才能通U流水線協(xié)作,否則只能獨(dú)占CPU。

第四類指令是其它復(fù)雜的指令,一般不常用,因?yàn)樗鼈兌贾荒塥?dú)占CPU。

如果是匯編級(jí)別編程,要達(dá)到指令級(jí)別并發(fā),必須要注重指令之間的配對(duì)。盡量使用第一類指令,避免第四類,還要在順序上減少上下文依賴。

1. 吊打 ThreadLocal,談?wù)凢astThreadLocal為啥能這么快?

2. 為什么delete表數(shù)據(jù),磁盤空間卻還是被占用

3. 一女程序員因薪酬等問題離職,rm -f * 刪庫(kù),癱瘓 6 個(gè)小時(shí),被判 9 個(gè)月

4. 字符編碼,不走索引的元兇之一

最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù) Java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。

謝謝支持喲 (*^__^*)

瀏覽 89
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 天天日天天干天天爽| 国产av日韩| 超碰人妻人人操| 亚洲乱码一区| 久草福利视频| 亚洲无码性爱| jk无码| 国产一区二区三区在线观看免费视频免费视频免费视频 | 久久R5| AV无码高清| 日韩精品成人在线| 黄片在线免费播放| 97AV人妻无码视频二区| 99久久国产精| 水蜜桃视频在线播放| 色婷婷亚洲色| AV性爱社区| 久热综合| 爱爱视频免费| 一区亚洲| 无码插逼| 日韩在线一级| 日本成人毛片| 久久久久极品| 日韩美女久久| 就爱av| 成人做爰黄级A片免费看土方| 人人看人人搞人人摸| a在线| 亚洲有码在线观看| 国产婷婷色一区二区在线观看| 日本一区二区三区免费观看| 欧美后门菊门交3p| 国产日女人| 国产麻豆传媒| 免费色色网站| 婷婷丁香五月在线| 麻豆精品一区二区三区| 精品一区二区三区毛片| 大香蕉现在视频中心一| 一级黄色A片| 啪啪免费视频| 中文无码人妻| 高清无码视频在线免费观看| 青青艹在线视频| 国产无套免费网站69| 免费A在线观看| 激情爱爱网| 在线免费中文字幕| 日韩视频二区| 久久老女人| 三级理论网站| 特级西西444www| 精国产品一区二区三区A片| 青草大香蕉| 怡春院中文字幕| 91麻豆免费视频网站| 操B在线| 西西888WWW大胆无码| 91麻豆精品传媒国产| 日韩毛片网| 精品人妻一区二区蜜桃视频| 97精品国产97久久久久久免费| 丁香五月六月婷婷| 激情内射网站| 青青操久久| 无码人妻A片一区二区青苹果| 国內精品久久久久久久| 久久久久久五月天| 91九色TS另类国产人妖| 五月大香蕉| 97人妻精品一区二区三区免| 中文字幕av一区| 色欲成人网| 国产精品V日韩精品V在线观看 | 97亚洲精品| 国产精品久久久999| 毛片网站免费| 东方av在| 狠狠躁日日躁夜夜躁A片小说免费 色综合久久久无码中文字幕999 | 91麻豆福利在线| 日韩免费高清在线视频| 久操综合视频在线| 国产精品毛片A√一区| 国产在线观看欧美| 三级无码AV| 豆花网无码视频观看| 人人干人人操人人爱| 亚洲第一狼人综合网| 很很日| 国产91人| 青草五月天| 豆花网无码视频观看| 亚洲中文字幕在线观看免费| av天天av无码av天天爽| 无码专区av| 西西人体BBBBBB| 国产夫妻自拍av| 91丨熟女丨露脸| 国产黄色Av| 99热精品免费| 学生妹一级片内射视频| 在线观看视频国产| 乌克兰性爱视频| 精品人妻二区三区蜜桃| 囯产精品一区二区三区线一牛影视1 | 探花熟女| 久久久久亚洲AV无码成人片| 九九九网站| 69国产成人综合久久精品欧美| 永久m3u8在线观看| 国产99久久久| 日韩偷拍网| 欧美狠狠撸| 亚洲午夜精品视频| 国产精品色8| 一级特黄大片录像i| 久久久婷婷婷| 九九热九九| 黄色一区二区三区| 精品无码一区二区三区四区久久久软件| 另类老妇性bbwbbwbbw| 欧美视频综合网| www日本黄色| 友田真希一级婬片A片| 人人妻人人躁人人DVD| 久久午夜无码人妻精品蜜桃冫| 影音先锋av在线资源| 成人aV无码精品国产一区二区| 成人无码久久| 丁香五月婷婷六月| 亚洲午夜无码| 中文字幕永久免费| 婷婷伊人綜合中文字幕小说| 人妻少妇偷人精品无码免费| 久久久无码人妻精品无码| 色就色欧美| 精品国内视频| 亚洲欧洲日韩综合| 人人看人人摸人人搞| 亚洲高清无码在线视频| 良妇露脸15P| 亚洲黄色电影网站| 91探花足浴店按摩店| 欧美性爱香蕉视频| 国产欧美精品AAAAAA片| 亚洲欧美日韩中文字幕在线观看| AAA日韩| 亚洲九区| 日韩小视频在线观看| 亚洲无码高清视频在线观看| 欧美黄色一级| 黄色免费在线观看网站| 7777精品伊人久久7777| 欧美少妇做爱| 欧美一级久久| 日韩日屄视频| 国产精品久久久久野外| 国产中文字幕亚洲综合欧美| 91美女在线观看| 午夜久久福利| 亚洲高清超级无码在线视频观看| 激情综合婷婷久久| 91三级视频| 午夜精品秘一区二区三区| 午夜做爱福利视频| 老鸭窝成人| 无码一区二区黑人猛烈视频网站 | 日韩熟妇无码中文字幕| 女人天堂AV| 木下凛凛子AV888AV在线观看| 熟女资源站| 亚洲无码在线观看网站| www.91com| 久久久97| 成人做爰A片一区二区| 女神思瑞精品一区二区三区 | 国产一区二区精品| 日韩三级片av| 超碰8| 日韩专区在线观看| 日韩小黄片| 色婷五月天| 国产精品无毛五区六区| 中文字幕日韩乱伦| 一级a免一级a做片免费| 青春草在线观看国产| 国产精品久久久精品| 美妇肥臀一区二区三区-久久99精品国 | 91久久久久久久| 丁香五月网| 91国产福利| 成人精品一区二区无码| 亚洲一区二区AV| BBW老熟女BBw| 欧美高清在线综合| 日本成人黄色| 欧美日韩精品一区二区三区视频播放| 成人亚洲电影| 日韩精品视频在线| 麻豆18禁| 色小说在线| 中文字幕2018第一页| 自拍偷拍网站| 牛牛精品一区二区AV| 尤物网站在线观看| 波多野结衣av中文字幕| 欧美精品久久久久久| 精品欧美片在线观看步骤| 97播播| 日韩在线视频中文字幕| 最新国产AV| 男人天堂手机视频| 人人舔人人爱| 欧美va在线| 91在线无码精品秘入口| 国产換妻4P视频| 亚洲av黄片| 亚久久| 日韩人妻无码一区二区三区99| 欧美成人看片| 中文字幕av网| 狠狠干中文字幕| 91Av视频| A片久久| 国产男人天堂| 2018最好看的中文字幕高清电影 | 国产超碰在线| 中国免费毛片| 69式荫蒂被添全过程| 性猛交AAAA片免费看蜜桃视频| 亚洲小视频| 黑人精品XXX一区一二区| 婷婷综合亚洲| 暖暖爱视频免费| 伊人蕉| 天干天干天夜夜| 国产在线观看AV| 欧美三级长视频| 96精品| 久久极品| 人人草人人干| 五月丁香激情四射| 日韩成人区| 国产精品h| 国产特级婬片免费看| 神马午夜视频| 91在线小视频| 91av电影网| 亚洲网站免费观看| 岛国av在线播放| 欧美精品一区二区少妇免费A片| 中文字幕无码影院| 亚洲A级片| 中文字幕在线观看完整av| AV片免费看| 欧美a级视频| 人人操人人| 91ncom| 丰满人妻精品一区二区在线 | 91探花秘在线播放偷拍| 91人人| 超碰免费视| 安徽妇搡BBBB搡BBBB袄爱直播| 婷婷射| 无码人妻一区二区三区三| 大香蕉婷婷五月天| 五月天婷婷激情| 日韩无码黄色视频| 97三级| 亚洲AV官方网站| 撸一撸免费视频| 五月天狠狠干| 精品无码久久久久久久久app| 操逼视频网站免费| 久久久国产91桃色一区二区三区 | 亚洲69v久久久无码精品| 国产淫语| 久久黄色A片| 久久狼人| 露脸丨91丨九色露脸| 少妇搡BBBB搡BBB搡造水多,| 国产免费a片| 国产熟妇码AV| 亚洲AV无码成人精品一区| 永久免费视频| 中文亚洲精品字幕电影| 三级片导航| 亚洲婷婷五月| 草逼123| 69国产| 黄色成人视频网站| 西西444WWW无码大胆知乎| 人人插人人| 91久久人澡人妻人人澡人人爽| 婷婷丁香五月综合| 成人在线91| 午夜成人中文字幕| 国产乱子伦真实精品| 国产小视频在线看| 午夜高清无码视频| 亚洲欧洲在线播放| 密臀av在线| 在线观看亚洲| 中文字幕日韩一级| 免费小视频| 黄色草莓视频| 精品国产一区二区三区久久久蜜月| 牛牛精品视频一区二区| 日韩视频中文| 日韩高清无码免费| 黄色免费无码| 欧美激情一区二区三区| 高清无码视频免费版本在线观看| 精品国产一区二区三区久久久蜜月 | 久草一区二区三区| 97天天干| 北条麻妃一区二区三区-免费免费高清观看| 天天天天日天天干| 亚洲AV成人无码| 天天操人人操| 另类罕见稀奇videos| 亚洲美女网站| 欧美性爱视频在线观看| 美女在线扣穴| 99久久婷婷国产精品2020| 六月丁香五月天| 牛牛精品一区| 免费无码视频| 亚洲综合日韩| 国产婷婷| 亚洲一区二区成人| 午夜免费福利| www亚洲视频| 中文字幕在线免费观看视频| 亚洲无码乱码精品| 亚洲AV中文| 你懂的在线免费观看| 亚洲一页| 好好的日视频| 超碰在线人人操| 久久青青草在线视频| 日韩av免费在线观看| 性爱AV网| 欧一美一婬一伦一区二区三区黑人| 蜜臀成人片| 操b视频在线观看| 国产精品欧美性爱| 蜜桃av在线| 久久久久亚洲AV成人片乱码| 99热超碰在线| 黄色网址在线观看视频| 亚洲成人福利| 91AV一区二区三区| 超碰天天干| 免费观看A级毛片| 成人免费无码婬片在线观看免费 | 日韩黄色毛片| 日韩一区二区三区无码| 影音先锋一区二区| 亚洲精品成人一二三区| 狠狠的操| 色婷婷国产精品| 久久久久久无码日韩欧美电影 | 亚洲人成人无码一区二区三区| 色婷婷在线播放| 国产精品国产三级国产专区53| 色欲国产精品欧美在线密| 中文字幕在线电影| 色婷婷激情五月天| 久草热视频| 国产寡妇亲子伦一区二区三区四区| 影音先锋国产精品| 91人人妻人人做人人爽| 波多野结衣亚洲无码| 黄色综合网站| 香蕉成人A片视频| 国产美女一区| 91精品综合久久久久久五月丁香| 超碰97av| 中文字幕码精品视频网站| 做爱视频无码| 久久久久亚洲AV成人片乱码| 亚洲欧美在线播放| 日韩性爱在线视频| 亚洲无码三级| 日B视频在线观看| xxx国产精品| 色先锋av| 九九热日本| 黄网免费在线观看| 欧洲三级网观看| 伊人成人在线视频| 欧洲精品视频在线观看| 国产A级黄色片| 国产九九九九| 国产黄色Av| 国产强伦轩免费视频在线| 99热综合在线| 青娱乐偷窥成| 一区二区三区网| 亚洲色香蕉| 日韩无码中文字幕| 欧一美一婬一伦一区二区三区黑人-亚 | 国产操骚逼| 99久久免费网| 日本高清无码视频| 国产a片视频| 91拍真实国产伦偷精品| 日本在线无码| 日本视频网| 亚洲欧洲成人在线| 亚洲日韩在线视频观看| 一级a片免费看| 人人干天天干| 黄色成人视频网站| 三级片无码在线播放| 日本国产欧美| 东方美美高清无码一区| 国产色综合视频| 欧美一区二区精品| 成人自拍偷拍视频| 亚洲一区二区AV| 老司机午夜电影| 超碰91在线观看| 欧美亚洲日韩在线观看| 日韩大黄| 日韩中文字幕不卡| 国产熟睡乱子伦午夜视频_第1集| 91外围女视频| 青青草在线播放| 无码欧精品亚洲日韩一区| 欧美福利导航| 熟女综合| 探花在线| 大香蕉精品在线| 一级黄色毛片视频| 亚洲高清无码一区二区| 精品人妻少妇| 久久色资源| 日韩AV资源网| 免费看a| 亚洲视频高清无码| 国产91嫩草乱婬A片2蜜臀| 99久久综合| 91丨牛牛丨国产| 日韩一级无码视频| 国产精品免费一区二区三区四区视频| 五月天激情婷婷| 日韩AV成人电影| 高清无码中文字| 午夜福利久久| 久久精品一区| 麻豆三级片在线观看| 樱桃Av| 一级AA片| 欧美性猛交XXXX乱大交| 亲孑伦XXXⅹ熟女| 亚洲无码在线播放| 人人妻人人妻| 黄色亚洲网站| 污导航在线| 在线观看日本vs欧洲vs美洲| 国产精品一区二区三区在线| 亚洲中文免费| 97超碰碰| 日韩精品久久久久久久酒店| 日本成人一区二区三区| 欧美日韩视频一区二区三区| 日韩成人网址| 永久久久久久久| 久久A√一区二区| 国产精品天天干| 一区二区三区免费在线观看| 日韩中文无码电影| 最近中文字幕高清2019中文字幕| 国产精品视频久久久| 精品成人影视| 日日Av| 青青国产视频| 麻豆视频一区| 亚洲日韩国产成人精品久久| 久久久久久无码视频| 久草这里只有精品| 麻豆射区| 伊人影院在线看| 四虎国产精品成人久久| 中文字幕av无码| www.97超碰| 影音先锋男人天堂| 国产精品久久AV电影| 无码高清一区| 免费无码在线播放| 亚洲精品福利视频导航| 国产在线不卡年轻点的| 中文字幕一区二区三区四虎在线| 中文字幕在线不卡视频| 日韩在线观看免| 亚洲精品乱码久久久久久按摩观| 一级A黄色片| 国产亚洲中文| 三级无码高清| 日韩精品一区二区三| 毛片网站在线| 国产色呦呦| 麻豆一区在线| 中文亚洲精品字幕电影| 91在线亚洲| 无码毛片一区二区三区人口| 日本一本草久p| 久久中文无码| 大屌探花| 欧美日韩黄| AV中文字幕在线播放| 青青草逼视频| AAA亚洲| 亚洲福利女神成人福利| 九色精品| 亚洲精品久久久蜜桃| 影音先锋色AV| 在线观看成人三级片| 亚洲综合激情五月久久| 欧美强开小嫩苞| 9999国产精品| 久操超碰| 在线观看中文字幕亚洲| 欧美洲成人网站| 91中文字幕在线| 91好爽| anwuye官方网站| 国产av日韩av| 午夜偷拍网站| 娇小,学生,高潮,videos| 91夫妻视频| 亚洲视频一区二区三区四区娇小视频在线观看视频 | 波多野结衣av在线观看窜天猴| 水果派AV解说| 欧美午夜视频| 精东AV| 嫩BBB槡BBBB槡BBBB百度| 国产一级A片在线观看| 久久午夜无码鲁丝片午夜精品偷窥 | 亚州在线视频| 天天艹夜夜| 一级特黄毛片| 日韩最新无码发布| 偷拍视频网站北条麻妃| 丝袜无码| 人人人人操| 国产日韩在线观看视频| 操逼操逼逼| 日韩欧美在线一区| 精品女同一区二区三区四区外站在线| 中文视频免费播放| 蜜臀久久99精品久久久老牛影视 | 欧美中文字幕| 亚洲激情网| 天天人人精品| 东北女人操逼视频| 三级片男人的天堂| 亚洲国产成人久久| 操逼操逼操| 亚洲国产一区二区三区四区| 日本Sm/调教/捆绑/紧缚| 青草精品视频| 国产成人无码区亚洲A片356p| 中日韩特黄A片免费视频| 日韩一级性爱视频| 在线看的av| 精品视频久| 激情麻豆论坛| 丁香激情五月| 青青草大香蕉| 天天天天天天操| www.99av| 草久免费视频| 色猫咪av| 九九九九九九精品视频| 国产精品扒开腿| 抠骚逼| 美女黄网站| 国产伦子伦一级A片免费看小说| 青青草超碰在线| 亚洲午夜精品视频| 国产丝袜在线| 久艹大香蕉| 欧美一级黃色A片免费看蜜桃熟了| 福利视频导航自拍| 亚洲国产视频在线观看| 色色色色色色色色欧美| 天堂资源| 国产黄色在线视频| 中文字幕国产视频| 最新AV在线| 欧美又大又粗| 欧美色图综合| 人人看人人摸人人草| 99久热在线精品| 午夜福利老司机| 久久精品无码一区二区无码性色 | 国产乱码一区二区三区的解决方法 | 天天影视综合网免费观看电视剧国产| 黄色在线免费看| 国产精品久久久久毛片SUV| 国产XXXXX| 亚洲视频中文字幕在线观看| 日韩性做爰免费A片AA片| 国产老女人操逼| 乱伦视频91| 学生妹内射| 一级二级三级毛片| 高清无码小视频| 噜噜噜AV| 精品人人人人| 北条麻妃无码av| 偷窥丶亚洲丶熟女| 伊人综合电影| 欧美级毛片高潮| 91探花足浴店按摩店| 一区二区三区无码视频| 波多野结衣成人视频| 大香蕉伊人在线观看| 九九偷拍| 日韩av免费在线观看| 中文在线永久免费观看| 亚洲福利网站| 99精品视频免费看| 日韩成人一区二区| 亚洲人妻系列| 国产夫妻自拍AV| 无码AV免费观看| 97国产精品人人爽人人做| 成人性爱在线视频| 国产亲子乱XXXXimim/| 一本色道久久无码人妻精品69| 啊啊啊啊啊靠逼| 99免费小视频| 骚逼久久| 亚洲欧美另类色图| 激情丁香五月婷婷| 精品久久大香蕉| 99久久国产精| 免费在线观看无码| 这里只有精品视频在线| 亚洲成人无码视频在线观看| 亚洲欧洲天堂| 成人一区在线观看| 丁香花激情网| 777三级| 日韩精品一区在线| AV黄色在线| 久久婷婷五月综合伊人| 国产美女AV| 丰满人妻一区二区三区视频54 | 三级片网站国产| 午夜精品成人| 婚闹不堪入目A片| 国产欧美日韩综合精品| 男女啪网站| 日韩AV在线天堂| 高清在线无码视频| 国产无码做爱视频| 日韩欧美大片在线观看| 国产1级片| 国产成人自拍偷拍视频| 欧美日韩一区二区三区四区| 99日韩精品| 环亚无码| av天堂无码| 亚洲黄色视频免费看| 欧美日韩视频在线播放| 91成人电影在线| 日本免费高清视频| 成人免费网站| 亚洲欧美动漫| 日韩精品第一页| 熟女探花| 男女嫩草视频| 99性视频| 国产青娱乐在线视频| 精品视频中文字幕| 蜜臀久久99精品久久久久久宅男| 成人在线18| 操老女人逼视频| 国产做爰XXXⅩ久久久骚妇| 伊香蕉大综综综合| 国产一级a毛一级a毛视频在线网站) | 欧美激情久久久| 日韩一本道在线| 人人操超碰在线观看| 国产黄色小视频在线观看| 超碰在线精品| www.婷婷六月天| av无码中文| 国产黄A片免费网站免费| 色五月婷婷中文字幕| 国产午夜福利视频| 99热在线播放| 婷婷激情丁香五月天| 黄色电影一级| 久久久伊人网| 大肉大捧视频免费观看| 一本色道久久无码人妻精品69| 尹人在线视频| 大茄子熟女AV导航| 成人无码三级| 精精品人妻一区二区三区| 性v天堂| 天天干天天摸| 久久久www| 欧美性爱免费在线视频| 日韩黄色电影网| 四季AV之日韩人妻无码| 久久久高清无码| 亚洲日韩中文在线| 日韩无码二区| 日韩一区二区三区在线| 青娱乐亚洲| 日本一级片在线播放| 亚洲伦理一区二区| 欧美老妇另类BBwBBw| 日韩欧美一区在线| 大奶AV| 丁香五月天AV| 正在播放国产精品| caobi视频| 操逼91小视频| 久久日韩无码| 日本中文字幕视频| 自拍视频国产| 91久久爱| 日韩精品视频在线免费观看 | 可以免费观看的AV| 91伊人久热精品| 黄色成人在线观看视频| 婷婷国产精品| 五月婷久久| 日日碰狠狠添| 三级免费无限AV| 中文字幕在线播放AV| 一本色道久久综合亚洲怎么玩| 黄色一级视频在线观看| 在线观看av网站| 美女自慰网站在线观看| 久久这里只有| 最近中文字幕2022在线观看A| 手机在线看片av| 黄色大片在线播放| 中文字幕精品在线视频| 日本不卡在线视频| 久久凹凸视频| 免费视频一区| 91麻豆天美传媒在线| 四虎成人精品永久免费AV九九| 摸BBB搡BBB搡BBBB| 麻豆亚洲AV成人无码久久精品 | 黄色激情视频网站| 午夜成人福利电影| 中国乱伦视频| 天堂中文资源在线观看| 韩国三级HD久久精品| 综合色婷婷一区二区亚洲欧美国产 | 搡BBB搡BBBB搡BBBB'| 亚洲综合日韩| 无码一卡| 91牛| 亚洲操逼无码| 黄片观看| 牛牛精品一区| 国产福利视频导航| 在线不卡视频| 天天噜天天操| 久久久久亚洲AV无码专区| 午夜AV在线免费观看| 欧美亚洲日本| 中文字幕成人在线| 亚洲无人禁区| 操老女人逼视频| 中文字幕15页| 亚洲性爱中文字幕| 国产福利视频| 91人人妻人人做人人爽| 草逼视频网站| 奇米狠狠操| 日韩人妻无码专区| 精品看片| 日本一区二区在线视频| 中文字幕高清无码在线观看| 足浴店少妇69XXX| 日皮视频在线观看| 欧美一级成人片| 色天堂污| 琪琪色在线观看| 91视频精品| 夜夜夜久久久| 日韩久久精品视频| 91视频专区| 手机av在线| 欧美东京热视频| 久久九九电影| 天天视频黄色| 成人网站在线免费| 青娱乐国产AV| a片免费观看视频| 69AV在线播放| 日本黄色A片| 黄色片视频日本| 日韩一区二区三区精品| 91禁樱桃在线| 日韩精品在线免费观看| 伊人影院在线免费观看| aaaaaa在线观看免费高清| 欧美熟妇精品黑人巨大一二三区 | 国产成人一区| 五月天黄色电影网站| 亚洲视频91| 少妇嫩搡BBBB搡BBBB| 成人性生活A级毛片网站| 操女人的网站| 伦理被部长侵犯HD中字| 亚洲精品一区二三区不卡| 日本视频网| P站免费版-永久免费的福利视频平台 | 国产特级毛片| 精品国产免费观看久久久_久久天天 | 日韩三级AV| 日韩三级在线| 国产91综合一区在线观看| 国产九九九视频| 日本欧美在线观看| 激情婷婷 | 特级西西444www精品视频| 黄色无码网站| 黑人AV在线播放| 国产乱伦毛片| 在线中文av| 色丁香视频在线观看的| 北条麻妃99精品青青久久| 婷婷五月AV| 国产麻豆视频| 操逼视频下载| 国产欧美日韩一区二区三区| 日韩激情网| 9l视频自拍蝌蚪9l视频成人| 2014av天堂网| 青青草综合网| 黄色大片中国一级片-免费看特一级片-亚洲黄色AV| 日韩美女久久| 欧美日韩操逼视频| 中文字幕系列| 91丨国产丨白浆| 中文字幕免费在线视频| av玖玖| 69成人在线| 天堂国产| 爆操太妹| 精品一区二区三区四区五区| 99免费在线观看视频| 欧美一级A片高清免费播放| 日韩精品一二| 婷婷三级片| 激情无码视频| 国产欧美日韩一区| 91麻豆精品国产91久久久吃药| 91白浆| 日本中文字幕在线免费观看| 欧美插逼视频| 五月天网址| 地表最强网红八月未央道具大秀| AV东方在线| 骚白虎一区| 老司机午夜视频| 国产艹逼视频| 亚洲欧美日韩性爱| 91AV一区二区| 狠狠撸狠狠干| 人妻懂色av粉嫩av浪潮av| 亚洲黄色视频网站在线观看| 日韩黄色电影在线观看| 爆操无码| 97黄片| 欧美成人18| 男女拍拍拍拍| 亚洲国产精品久久人人爱| 欧美性爱一级视频| 无码水蜜桃一区二区| 操逼视频在线免费观看| 国产aaaaaaaaaaaaa | 人人草在线观看| 无码中文字幕在线观看| 色哟哟网站| 爆草美女| 久久视频一二| 9久9久9久9久女女女女| 双飞少妇| 亚洲操逼AV| 亚洲国产精品成人久久蜜臀| 一区二区三区精品婷婷| 欧美四虎| 玉米地一级婬片A片|