Към съдържанието

Упражнение 1 — Производителност на компютъра

Производителността на компютъра е централно понятие в компютърната архитектура. Тя е тясно свързана с архитектурните решения и нейното определяне и сравнение между различни системи представлява сам по себе си сложен, нерешен напълно проблем. Съгласно закона на Мур производителността на обикновените компютри се удвоява приблизително на всеки 18 месеца — тенденция, потвърдена от практиката, без строго математическо доказателство.

1. Определяне на понятието производителност

В най-общия случай производителността се разбира като количеството извършена работа за единица време. За компютъра „работа” означава изпълнение на дадена програма, а тя зависи от множество параметри:

  • времето за изпълнение на отделните команди (тактова честота и брой тактове за команда);
  • логическите възможности на системата команди;
  • структурата на процесора (брой регистри, формат на данните);
  • паметта — структура (кеш, RAM, вторична памет), обем и времена за достъп;
  • пропускателната способност на каналите за вход/изход;
  • характеристиките на операционната система;
  • типа задачи и стила на програмиране.

Производителността е сложна нелинейна функция от всички тези фактори. Отделните параметри се наричат индекси на производителността — количествени (скорост на операциите, обем памет) или качествени (структурност на програмата, качество на компилатора). По-нататък се разглеждат само количествено измеримите индекси.

Индексите биват първични и вторични в зависимост от приоритета при дадена система. Например „скорост на изпълнение на операциите” е първичен за суперкомпютрите и вторичен за преносимите компютри.

Разграничаване се клиентска (потребителска) производителност — постигната за отделна задача с приоритетен достъп до ресурсите, и системна производителност — при едновременно решаване на множество задачи.

Най-честата мярка за производителност е MFLOPS (Million Floating point Operations Per Second). При съвременните системи са в употреба GFLOPS (10⁹) и TFLOPS (10¹²). Алтернативни метрики са пропускателна способност (задания за единица време) и ширина на лентата (bandwidth) — бита или байта за секунда (Mb/s или MB/s).

2. Методи за оценка на производителността

Методите за оценка на производителността се разделят на две групи: методи на измерването и методи на моделирането. Общ проблем и за двете е описанието на работното натоварване — множеството от входни сигнали, генерирано от потребителя.

Методите на измерването се прилагат когато компютърът е произведен и достъпен. Методите на моделирането — когато компютърът е в процес на проектиране или не е достъпен за измервания. В реалния свят двата подхода се допълват взаимно.

2.1. Методи на измерването

Елементарни времена

Исторически първи метод — появил се в началото на 50-те години. Изразява производителността в MIPS (Million Instructions Per Second) въз основа на времето за изпълнение на основни операции (например целочислено събиране). Изисква само знание за броя тактове на команда и тактовата честота. Предимство: простота. Недостатъци: не отчита програмното осигуряване, влиянието на конвейера и формата на данните. Измерва единствено пиковата (теоретична) производителност, непостижима на практика.

Пример: При тактова честота 1 GHz и команда, заемаща 2 такта, производителността е 500 MIPS. При P паралелни функционални устройства с производителности P₁, P₂, …, Pₙ, общата пикова производителност е Pp = Σ Pᵢ.

Командни смеси

Определя средното време за изпълнение на разнообразни команди чрез тегловни коефициенти kᵢ, формирани от анализ на честотите на изпълнение при решаване на широк клас задачи. Производителността се изчислява по формулата:

P = 1 / Σ(kᵢ · tᵢ)

Командната смес на Гибсън е стандарт за научно-технически задачи (например k = 0,33 за сумиране с фиксирана запетая, k = 0,175 за условни преходи). Методът отчита в неявен вид програмното осигуряване, но определянето на тегловните коефициенти е субективно.

Образцови програми

Типична програма, изпълнявана „на хартия” — времето за изпълнение се определя на база оценки от производителя:

P = (брой команди в програмата) / (изчислено време за изпълнение)

При разклонени или циклични програми графът на програмата трябва да се линеаризира. Методът отчита и апаратните средства, и стила на програмиране — отстранява недостатъците на предходните два.

Измервателни програми

Реална програма, изпълнявана на изследвания компютър с директно измерване на времето чрез системния таймер:

time1 = timer_now();
/* измервателна програма */
time2 = timer_now();
printf("Execution time is %f sec\n", (time2 - time1) * 64e-6);

Грешката при използване на системния таймер е неизбежна, тъй като таймерът се актуализира на фиксирани интервали. Тя се намалява по два начина: (а) тестовата програма обработва големи масиви от данни; (б) изчисленията се повтарят многократно в цикъл. Предимства: отчита апаратно и програмно осигуряване; ниска вероятност за човешки грешки. Недостатък: не позволява предсказване на ефекта от предполагаеми изменения.

Синтетични програми (benchmarks)

Съвместяват черти на образцовите и измервателните програми — специално съставени програми за изпитване на конкретни способности. Използват системния таймер; грешката е от същия характер. Примери: Whetstone и Dhrystone (класически); LINPACK (решаване на линейни системи с плътна матрица — основа на Top500 класацията); Livermore Fortran Kernels (LFK) — 24 ядра на научни приложения; NAS Parallel Benchmarks (NPB), SPEC, SandraSoft.

Измервателните и синтетичните програми заедно са известни с обобщаващото наименование benchmark програми.

2.2. Метод на моделирането

Чрез моделирането се получава оценка от модел, описващ компютъра с определена степен на правдоподобие. Прилага се при: проектиране (предварителна оценка) или при липса на достъп до реалната система.

2.2.1. Аналитично моделиране

Аналитичният модел е с математическо представяне на системата. Бивает:

Детерминирани модели — полезни за извеждане на формули от първо приближение. Примери: машини на Тюринг, мрежи на Петри, графични модели на програмите. Недостатък: трудно отразяват промените в работното натоварване.

Вероятностни модели — по-естествено отразяват аспектите на изменчивото натоварване. Базират се на: (а) теорията на масовото обслужване (теория на опашките) и (б) марковски или полумарковски процеси. Не могат лесно да представят реда на появяване на задачите.

Главно предимство на аналитичните модели е бързата оценка. Дават ясен отговор на въпроса: кой компонент с колко влияе върху производителността.

Пример — Модел на Марини:

P = 1 / (0.7·t_add + 0.3·t_mult + km·tm)

където t_add е времето за събиране (κС команда), t_mult — времето за умножение (дълга команда), km — степен на прозрачност на паметта (km = 0 при напълно прозрачна памет), tm — цикъл на паметта. Резултатът е в MIPS.

2.2.2. Имитационно моделиране

Имитационният модел е програма, описваща системата на алгоритмичен език. Процесът включва три етапа:

  1. Концептуален модел — абстрактен модел на причинно-следствените връзки; определя идеята, методиката и програмните средства.
  2. Разработка на имитационен модел — алгоритмично описание с точно дефинирани параметри и критерии за ефективност; завършва с контролни изпитания.
  3. Моделиране с компютър — събиране на статистически данни; планиране на симулационните експерименти; за достоверни резултати при сложни задачи нерядко е необходим суперкомпютър.

Системното (моделното) времe е дискретно — изменя се само при настъпване на определени събития. Инструменти: универсални езици (C, C++, FORTRAN) с трудно програмиране поради паралелността на алгоритмите, или специализирани симулационни езици (GPSS, SIMSCRIPT) с вградени средства за статистика.

2.3. Апробация на модела

Основният въпрос при моделирането е доколко добре моделът представя реалната система. Моделът е достатъчно точен, ако стойностите на неговите индекси се отличават от тези на реалната система с величина, по-малка от максималната допустима грешка.

При съществуваща система проверката е сравнително проста. При несъществуваща — моделируемата система всъщност е концептуалният модел, а проверката на коректността е аналогична на верификацията на програма. Процедурата по повтаряне на проверка и корекция до достигане на необходимата точност се нарича калибровка.

Грешките при моделирането биват: грешки от формулировка на модела, грешки от решението и грешки от задаването на параметрите.

3. Сравнение между методите

МетодГрешкаИзискванияГъвкавост
Измервателни програми1–2%Реална системаНиска
Имитационно моделиране2–3%Мощен компютърВисока
Аналитично моделиране~10%Калкулатор/компютърВисока

Методите на измерването са неприложими в процес на проектиране. Аналитичните модели дават бърза оценка, но с по-висока грешка. Имитационните модели са по-точни, но изискват по-дълго разработване и сложна верификация.

4. Ефективност

Пикова производителност — получена чрез елементарните времена (в MIPS); никога не се достига на практика.

Реална производителност — получена чрез измервателни програми; отчита реалните условия на изпълнение на конкретни задачи.

Ефективност E = реална производителност / пикова производителност

При решаване на големи задачи E > 0,5 се счита за добра ситуация. Ниска ефективност налага изследване на: аритметично-логическото устройство, памет, комуникационна среда, компилатор и операционна система.

При паралелни компютри E варира в по-широки граници — пряко зависи от конкретната задача и алгоритъм. Колкото по-продължително реалната програма използва независимите устройства паралелно (конвейери, функционални устройства, процесори), толкова E е по-близко до 1.

Съществува и експлоатационна ефективност: E = P / (С_ком + С_екс), или опростено E ≈ P / С_ком — себестойността на единица MFLOPS. Наградата Gordon Bell Prize отличава компютъра с най-добро отношение цена/производителност. По закона на Грош: С_ком = f(P)² — квадратично отношение, валидно вътре в отделните класове компютри.

Задачи

Упражнението включва следните моделни изследвания:

  1. Разучаване на различни benchmark програми за определяне на производителността на компютри (предоставени от ръководителя).
  2. Оценка на производителността с помощта на benchmark програмите.
  3. Анализ на факторите, влияещи върху грешката за всеки конкретен тест, и начини за нейното намаляване.
  4. Практическо определяне на ефективността на компютъра чрез сравнение на пикова и реална производителност.