My dream CPU |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Тестове за производителностЦелта на тестовете е да се установи ефективността на различните системи за оптимизация и ползата от кеш паметите. А именно предсказването на преход при инструкции с преход, компресираните инструкции. Да се установи влиянието на производителността от отношението между честотата на процесора и честотата на паметта. Влиянието на кеш паметта за инструкции и кеш паметта за данни. Ще направя тестове с програмата за сортиране по метода на мехурчето и другата група тестове ще са с програмата която създава двоично дърво, обхожда дървото и поставя данните обратно в масива сортирани. 1. СортиранеЕксперимент 1Експериментът ще се извърши върху масив от 1000 цели числа генерирани с програма използваща генератор на случайни числа. Самата програма е същата като разгледаната в „V. Тестови програми“, като е леко модифицирана. Някои от инструкциите са подменени с инструкции регистър - регистър, които се изпълняват по-бързо. Листинг 1 показва програмата с нормални инструкции. Листинг 2 е същата програма, но с компресирани инструкции. Листинг 1. Сортираща програмата
Листинг 2. Сортираща програма с компресирани инструкции
Това е таблицата с резултатите от тестовете. Таблица 1 N – номер на ред Buss – Buss/CPU clok ratio – отношение между честотата на процесора и паметта. 1:1 равни честоти. 1:8 – шината е 8 пъти по-бавна Instr Cache – размер на кеша. В редове памет. Int Cache – размер на кеша за цели числа в редове памет(адреси). Резултатите са в брой тактови импулси необходими за изпълнението на програмата – Clocks В 4 колони: 1. Нормални инструкции без включен механизъм за предсказване на преход 2. Нормални инструкции с включен механизъм за предсказване на преход 3. Компресирани инструкции без включен механизъм за предсказване на преход 4. Компресирани инструкции с включен механизъм за предсказване на преход Ето и графичното представяне на данните от теста. Анализ на експеримента и изводи.Влиянието на отношението между честотите на процесора и шината, размера на кеша на инструкциите върху производителността.С увеличаване на отношението между честотата на процесора и паметта производителността силно намалява. Причината е в многото тактови цикли необходими за достъп до паметта. При отношение 1:1 са необходими 11.5М (милиона) такта за изпълнение на програмата, в таблицата е ред N1, колона 1. Branch N. Същата колона ред N 3, за изпълнението на програмата с 8 пъти по-бавна памет са необходими 64М такта. Шината е 8 пъти по-бавна, производителността пада около 6 пъти. При включване на 16 реда памет резултата се подобрява с около 3%. При включени 32 реда памет резултата се подобрява с около 90%. Това е така защото програмата е малка и е цялата в кеша и производителността се доближава до тази при отношение 1:1 памет/цпу. При памет 256 адресируеми клетки производителността е същата както с 32. Това е така защото останалите клетки не се използват, програмата се събира в 32 адреса. Влияние на кешът за данни за цели числа Int Cache
Стойностите за Int Cache са в 4-та колона те са 8 реда (адреса) памет в горната половина на таблицата и 256 в долната половина на таблицата.
Влияние на компресираните инструкции върху производителността на CPUПри отношение на честотите процесор/памет влиянието е съвсем малко около .5 %. Вижте ред N1, 1-ва и 3-та колона от резултатите. При памет/cpu 1:8 подобрението е с около 16%. Вижте N3, 1-ва и 3-та колона от резултатите. Тези резултати са без кеш памет за инструкции. Когато се добави кеш памет за инструкции и цялата програма е в кеша, подобрението е съвсем малко. Разликата е приблизително толкова тактови импулси колкото да влезе програмата в кеша. Вижте ред N9 1-ва и 3-та колона с резултати. Разликата е само 56 тактови импулса. Да всеки съвременен процесор има кеш за инструкции, но ще има полза и от компресираните инструкции. Компресираните инструкции скъсяват програмата теоретично с 25%, на практика с около 20%. Кешът има малки размери и късите програми са за предпочитане, по-вероятно е да се поберат в него. В реална обстановка (големи програми, многозадачност) ще се налага многократно програма от кеша да се изхвърля и зарежда наново. Малката дължина е предимство. Влияние на предсказването на прехода върху производителността.Тук определено имаше изненада. Без кеш за инструкции при отношение на честотите процесор/памет 1:1 има подобрение с по-малко от 0.5%, N1, колона за данни 1 и 2.. При отношение 1:4 има влошаване, съвсем малко с 20 тактови импулса, но влошаване – N2, колона за данни 2. Това е така защото когато 2-ра степен на конвейера има инструкция с преход, започва четене на инструкция от вероятният адрес за преход, защото се предполага, че през това време инструкцията която следва е прочетена. Но тази инструкция не е прочетена, защото отношението на честотите процесор/памет 1:4. Трябват 8 тактови импулса за да се прочете инструкцията и операнда. А инструкцията във втора степен е изпълнена за по-малко от 8 тактови импулса. При тази ситуация нито следващата инструкция е прочетена, нито инструкцията за вероятният преход. При отношение на честотите процесор/памет 1:8 ред N3 резултатите с или без включен механизъм за предсказване на преход резултата е същият, но поне няма забавяне. При включване на кеша за инструкции производителността се подобрява. Това е така защото, някоя от нужните инструкции се оказва в кеша. Има подобрение и при увеличаване на кеша за данни. Това е така, защото се избягват конфликти за достъп до шината. Трите степени на конвейера за инструкции се съревновават за шината с паметта. Експеримент 2При този експеримент ще сортираме сортиран масив от 1000 елемента. Първо ще го сортираме в посоката в която е сортиран, тоест няма да има нито една размяна на елементи и нито едно записване в паметта. Това е най леката ситуация. После ще обърнем посоката на сортиране, чрез обръщане на знака в Sort инструкцията. Тук ще имаме размяна при всяко сравнение. Това е най тежката ситуация. Ето данните от теста:Таблица 2 N - ред в таблицата Buss – отношението между честотите на шината и cpu Instr Cache – кеш за инструкциите Int Cache – кеш за данни. Целочислен кеш Резултати от теста в Cloks – брой импулси на тактовия генератор: 1. asc – Нормални инструкции. Сортиране на сортиран масив по посока на сортирането му. 2. desc - Нормални инструкции. Сортиране на сортиран масив по посока обратна на сортирането му. 3. asc - Компресирани инструкции. Сортиране на сортиран масив по посока на сортирането му. 4. desc - Компресирани инструкции. Сортиране на сортиран масив по посока обратна на сортирането му. Анализ на експеримента и изводи.Влиянието на отношението между честотите на процесора и шината, размера на кеша на инструкциите върху производителността.С увеличаване на отношението между честотата на процесора и паметта производителността силно намалява. Особено силно намалява производителността при сортиране на масива в обратна посока. Причината е конфликт с 3-та степен на конвейера за инструкции, която иска да запише разменените стойности на rA и rB обратно в паметта. С увеличаване размера на кеша за инструкции производителността се подобрява и става приблизително равна на производителността при отношение 1:1 памет/cpu, когато цялата програма е в кеша. Влияние на кешът за данни за цели числа Int CacheС увеличаването на кеша за данни, производителността се увеличава, но съвсем малко. Така е и при двете посоки на сортиране. Влияние на компресираните инструкции върху производителността на CPUБез кеш за инструкции при шина/cpu 1:1 подобрението при сортиране по посока на сортирането е незначителна 0.02%, в обратна посока е 3.7%. При отношение 1:4, 1:8 подобрението и в двете посоки на сортиране е малко над 15%. При отношение 1:1 и кеш за инструкции 16, няма подобрение при сортиране по посоката на сортиране. При сортиране в обратна посока подобрението е 7.4%, ред 4. Това е така защото при 16 адреса памет вътрешният цикъл е в кеша и се избягват конфликти с 3-та степен на конвейера, която записва обратно в паметта. При кеш за инструкции 16 и отношения 1:4, 1: 8 при сортиране в същата посока подобрението е съответно 24.9% и 41.9 % . В обратна посока е 33.3 %. Много добро подобрение. При кеш за инструкции 32, няма подобрение. В тази ситуация цялата програма е в кешът за инструкции и инструкциите се зареждат в 1-ва степен на конвейера за 2 тактови импулса. Таблицата по-долу е продължение на горната. Колонка 5 е = 100* (1.asc – 3.asc)/1.asc Колонка 5 е = 100* (2.desc – 4.desc)/2.desc Таблица 3 Ето данните и в графичен вид: 5. Данните за сортиране по посока на сортираният масив. 6. Сортиране в обратна посока. Изводи:1. При едни и същи стойности за отношение между честотите на шината и cpu, кеш за инструкции и кеш за данни, стойностите от предишният експеримент са винаги между стойностите за сортиране по посока на сортираният масив и стойността за сортиране на масива в обратна посока. Това е логично, следователно експериментът е проведен правилно. Когато сортираме масивът в посоката в която той е сортиран, нямаме нито една размяна на rA и rB, но имаме преход за прескачане на следващите 2 инструкции за запис обратно в паметта. Това е долната граница, под този брой тактови импулси за изпълнението на програмата не може да се слезе. И другата ситуация когато сортираме масивът в обратна посока на която той е сортиран. Тук нямаме преход от инструкцията sort, но винаги имаме запис обратно в паметта. Това е най-тежката ситуация. Това е възможно най-бавното изпълнение. 2. Компресираните инструкции подобряват производителността, особено при малък кеш за инструкции. |