lecture5 log osnovi bool algebra

Post on 03-Oct-2014

132 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Логически основи. Булева алгебра. Производителност на компютърни системи

Тема 5

Въведение в булевата алгебра

• Създадена и развита през 1854 от Джордж Бул в книгата си “Изследване на законите на мисленето”. Представлява вариант на елементарна алгебра с разлика в своите стойности, операции и закони. При нея има стойности 0 и 1 или подмножество на дадено множество. Операциите са конюнкция ^, дизюнкция vи отрицание с константи 0 и 1. Законите се дефинират с уравнения за всички стойности за променливите – напр. x∨(y∧x) = x.

• Булевата алгебра се прилага в математическата логика, цифровата логика, компютърното програмиране, теорията на множествата и статистиката.

Въведение в булевата алгебра

• Докато елементарната (познатата от средното образование) алгебра борави с реални числа, булевата алгебра работи със стойностите 0 и 1. Те могат да се считат както за 2 цели числа, така и за истинни стойности наричани “истина” и “неистина”

• Както и да се наричат, те представляват двоични числа и се наричат битове, за разлика от десетичните числа от 0 до 9

• Булевата алгебра работи и с други стойности, за които булевите операции може да се дефинират – например множества или низове/поредици от битове.

Въведение в булевата алгебра

• За разлика от други алгебрични системи, булевата алгебра се подчинява на едни и същи закони (свойства на равенства), нито повече, нито по-малко – възможно е да се разглежда булевата алгебра и без отнасяне към други стойности освен 0 и 1.

• През 30-те години на 20 век, докато е изучавал превключващи вериги, Клод Шанон (лабораториите Бел) е наблюдавал, че може да приложи правилата на булевата алгебра за тези вериги и е въвел “превключваща алгебра” (switching algebra) като начин за анализ и проектиране на вериги с алгебрични средства от гледна точка на логически елементи (logic gates).

Въведение в булевата алгебра

• Шанон използва абстрактен математически апарат и представя своята превключваща алгебра като булева алгебра с 2 елемента. Днес двете понятия (превключваща и булева) са взаимнозаменяеми.

• Ефективното прилагане на булевите функции е фундаментален проблем в проектирането на комбинаторни вериги. Модерните средства за автоматично проектиране на големи вериги (VLSI circuits) се опира на ефективното представяне на булевите функции (диаграми с двоични решения) за синтез на логически схеми и формална верификация

Таблица на истинност• 1854 – Дж Бул.• Двоичните функции се задават с таблица на истинност сочеща

какви стойности има функцията за всички възможни комбинации на променливите и

• Изходите се изчисляват за всички възможни комбинации на входовете (колко комбинации има)

• Стая с 2 ключа за лампата. Как работи?

Ключ A Ключ B

GND

“Hot”Лампа Z

A B Z

0 00 11 01 1

0110

Съждения

• Някои действия от традиционната алгебра като умножение (ХУ), събиране (Х+У) и отрицание (-Х) имат съответствията си в булевата алгебра –операциите конюнкция, дизюнкция и инверсия (или допълнение)

• И (наричана още конюнкция) - x∧y, • ИЛИ (дизюнкция) - x∨y• НЕ - x, понякога с !x

Булеви изрази

• Принципът на дуалността:

• – дуалността за една булева функция се постига при замяна на И с ИЛИ и на ИЛИ с И, 1-ци с 0-ли и 0-ли с 1-ци

• Позитивна логика И• Негативна логика ИЛИ

0

0

0

1

0

1

0

1

0

0

1

1

FBA

1

1

1

0

1

0

1

0

1

1

0

0

FBA

Представяне на позитивна/негативна логика

• Положителна логика: логически 1 се представя с високо напрежение, логическа 0 – с ниско

• Отрицателна логика: логическа 0 се представя с високо напрежение, логическа 1 – с ниско

• Нормалното представяне е: положителна логика – активно високо напрежение

• Ниско напрежение = 0; Високо напрежение = 1

• Алтернативното представяне е: негативна/отрицателна логика – активно ниско напрежение

• Ниско напрежение = 1; Високо напрежение = 0

Представяне на позитивна/негативна логика

F

Поведение от гл т на електрически нива

две алтернативни представяния

Позитивна логика И

Негативна логика ИЛИ

low

low

low

high

low

high

low

high

low

low

high

high

FBA

0

0

0

1

0

1

0

1

0

0

1

1

FBA

1

1

1

0

1

0

1

0

1

1

0

0

FBA

Таблица за истинност на напрежението

Позитивна логика Негативна логика

Допълващи се

операции

Представяне на позитивна/негативна логика

111

001

010

000

FBA

000

110

101

111

FBA

highhighhigh

lowlowhigh

lowhighlow

lowlowlow

FBA

Нива напрежение Отрицателни лог ниваПоложителни лог нива

елемент

И

A

BF

AB

F = A B F = A + BAB

011

101

110

100

FBA

100

010

001

011

FBA

lowhighhigh

highlowhigh

highhighlow

highlowlow

FBA

Нива напрежение Отрицателни лог нива

елемент

НЕ-И

A

BF

AB

F = A B F = A + BAB

Положителни лог нива

Представяне на И/ИЛИ елементи чрез други

F = A + BAB

A

B

A + B

F = ABAB

A

BAB

Булеви изрази

0 и 1 теореми

идемпотентност

асоциативност

инволюция

Теорема на де Морган

Консенсус теорема

Теорема за абсорбцията

1 + A = 1

A + A = A

A + (B + C) = (A + B) + C

A + B = A B

(A + B)(A + C)(B + C) = (A + B)(A + C)

A + A B = A

0 A = 0

A A = A

A (B C) = (A B) C

A = A

A B = A + B

AB + AC + BC = AB + AC

A (A + B) = A

теореми

комутативност

дистрибутивност

идентичност

допълнение

A + B = B + A

A + B C = (A + B) (A + C)

0 + A = A

A + A = 1

A B = B А

A (B + C) = A B + A C

1 A = A

A A = 0

постулати

свойстваДвойственост/заменяемостОтношение

Сума на продукти: функция на мнозинството

• Сумата на продукти за функция на мнозинството (дали има повече 1-ци от нули) с 3 входа е:

• M = ABC + ABC + ABC + ABC = m3 + m5 + m6 + m7 = Σ (3, 5, 6, 7).

• всеки от 2n израза се нарича минтерм и е в диапазона от 0 до 2n – 1.

• Има връзка между номера на минтерма и булевата стойност.

0

0

0

1

0

1

1

1

0

1

0

1

0

1

0

1

0

0

1

1

0

0

1

1

0

0

0

0

1

1

1

1

0

1

2

3

4

5

6

7

FCBAминтерм

индекс

Представяне на мнозинство И-ИЛИ

A B C

A B C

A B C

A B C

F

CBA

Брой

елементи - 8, брой входове -19.

Представяне на мнозинство ИЛИ-И

A + B + C

A + B + C

A + B + C

A + B + C

F

CBA

Комбинативна логика• Прехвърля множество входове в множество изходи съгласно една или повече съответстващи функции

• Входовете и изходите на блок комбинативна логика имат 2 стойности – 0 и 1 (5 волта и 0 волта)

• Изходите на комбинативната логика стриктно следват функции на входовете, като тяхната стойност (на изх) се сменя веднага при смяна на стойностите на входовете – множество входове i0,i1,…ik се подава на КЛ, която дава стойности на изходите в съответствие с функциите f0, … fm

Комбинативна логика

ИзходиВходове

f0 (i0, i1)

fm(i1, iк)

i0

ik

… …i1

Mашина с краен брой състояния (FST)

• Комбинативните логически вериги нямат памет. Изходите им винаги следват функция, зададена на входа в съответното време

• Има нужда от вериги/логика с памет, която се държи по различен начин в зависимост от предишното състояние

• Като пример за това е машина за напитки/закуски, която трябва да помни колко и какви монети са пуснати в нея. Тя трябва да разпознава и запомни не само монетата, която се пуска в момента, но и трябва да помни какво е било пускано до сега

• Този вид машина се нарича “машина с краен брой състояния” (finite state machines), защото състоянията, в които могат да изпаднат са краен брой.

Последователна логика

• Последователна логика: верига, където състоянието се определя на базата на състоянието на входовете на веригата, както и на предишното състояние (историята) на входовете – т.е. на паметта

• Машина с краен брой състояния (Finite state machine): верига с вътрешно състояние, чиито изходи са функция както на състоянието на входните линии, така и на предишното/настоящето вътрешно състояние на самата машина.

Класически модел на машина с краен брой състояния

Една машина

FSM е съставена от комбинативна логика и елементи памет, които пазят информацията за състоянията.

Комбинативна логика

Q0 D0

s0

Qn Dn

sn

Елементи памет

Синхронизиращ сигнал

Битове на състоянието

ИзходиВходове

f0

fm

i0

ik

……

……

Префикси/съкращения

• За памет, 1K = 210 = 1024; 1М = 220 = 1 048 576; 1G = 230 = 1 073 741 824. За всичко друго, като например скорост на часовника/тактовата честота, 1K = 1000, и подобно 1M, 1G, т.н.

10-18aато

10-15fфемто

10-12pпико

10-9nнано

10-6µмикро

10-3mмили

мяркасъкращ.Префикс

1018Eекза

1015Pпета

1012Tтера

109Gгига

106Mмега

103Kкило

мяркасъкращ.Префикс

Производителност

• Време за реакция/време за изпълнение на задача/програма

• Измерва се в сек, мили сек, микро сек, нано сек, т.н.

• Основните единици при оценка на производителността са пропускна способност (throughput), честотна лента (bandwidth) и закъснение (latency)

• Пропускна способност или честотна лента?• Пропускна способност (throughput) – общото количество работа, свършено за определено време (единица време)

• Честотна лента (bandwidth) – количеството информация, което минава през мрежата/шината за определен период от време – скоростта на предаване на информация; максималнотоколичество информация (битове/сек), което може да се предаде по един канал

• Измерва се в MIPS (millions of instructions per second)за процесорите, в Mbit/sec за памети (RAM, твърди дискове) и за локални мрежи

• Както пропускната способност, така и честотната лента отразяват работата (или количеството байтове) свършена (или преминали) за единица време – в областта на компютърните архитектури двете понятия имат едно и също значение

• При комуникациите обаче, честотната лента е максималната скорост на предаване на данни, която може да се достигне, докато пропускната способност е това, което се получава в действителност

• Закъснение (време за реакция) latency (response time) се измерва в наносекунди за процесори и RAMпамети, микросекунди за ЛМ и милисекунди за достъп при твърд диск

• Капацитет е като цяло по-важна характеристика за памет и дискове. Там има най-голямо увеличение. За тези устройства увеличението на честотната лента е 120-140 пъти, закъснението се е подобрило 4-8 пъти

Пример за измерване на време

• При измерване на производителността, трябва да се взима предвид работата на системата

• Командата на UNIX time за дадена програма би дала:

• 90.7u 12.9s 2:39 65%• Времето на потребителя, през което използва ЦП е 90.7 сек, системното време на ЦП е 12.9 сек, цялото изтекло време е 2 мин и 39 сек – повече от 1/3 от времето на потребителя е за В/И или за други програми или за двете!

Защо измерваме производителността?

• За реални системи:• В рамките на пазара или при избор на система да изберем кое да купим

• За поддръжка на система или планиране – да предвидим и планираме кога ще е необходима подмяна/осъвременяване било то на част от системата или на цялата система

• За приложения – да може да открием критичното място/горещите точки на приложението и евентуално да вземем мерки за подобрение

Как се измерва производителност

• За работещи системи:• - време според часовник, време за реакция или

изтекло време• - функции на таймера на операционната система• - с помощта на вмъкнати броячи в компилатора

или в софтуера

• - външен хардуер (логически анализатори)• - интегриран хардуер за производителност

(брояч на събития)• - специализирани тестови програми (benchmarks)

Как се измерва производителност

• Теоретично (на хартия):• - с аналитични методи (теория на опашките, модели за производителност)

• - симулация на ръка (с молив и хартия)• - програмна симулация (прави се програма, която симулира работата на машината)

• - апаратна емулация (програма на FPGAимитира/симулира машината)

Развитие на мерките за производителност

• ЦП стават по-сложни – те вече разчитат на конвеирна обработка и йерархия на паметта

• Докато една машина с комплексен набор инструкции (CISC) изисква по-малко инструкции – т.е. имаща нисък рейтинг на MIPS (милион инструкции за сек), то е възможно тя да бъде равностойна на машина с редуциран набор инструкции (RISC), която има по-висок рейтинг

• Вече е трудно и неправилно да се разглежда време за изпълнение за инструкция, тъй като броят инструкции за секунда не може да се изчисли от множество инструкции (instruction mix)

• По този начин възникват програмите за производителност (benchmarking) – ползват се ядра на програми и специално създадени програми

• През 1976 се предлага програмата Whetstone –измерва научни програми написани на Алгол 60 и по-късно прехвърлени на Фортран

• По подобен начин е и програмата Livermore –от ядра на програми за Фортран – избрана е да мери производителността на суперкомпютри –ядрата се състоят от цикли от истински програми

• MIPS за машината M се дефинира на базата на друга референтна машина (с пр 1 MIPS) :

referencereference

MM MIPS

ePerformanc

ePerformancMIPS ∗=

• Развитието на суперкомпютърната индустрия през 70-те и 80 доведоха до по-широко използване на програми с плаваща запетая, което доведе до въвеждането на MFLOPS (millions of floating-point operations per second), с което започна употребата на този термин (особено за върхови стойности на MFLOPS)

• В края на 80-те се създава SPEC (Standard Performance Evaluation Corporation) – фирма с идеална цел (без печалба) за подобряване мерните единици при компютрите, за да има по-добра база за сравнение

• В началото се обръща внимание на работни станции и сървъри, базирани на UNIX

• Първите спецификации на SPEC мерките (benchmarks - SPEC89) – са значително подобрение в използването на реалистични мерки. За съвременните процесори, памет и компилатори и в момента доминиращи са SPEC2006

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

• Освен споменатите мерки MIPS и MFLOPS се използват още:

• Брой транзакции за секунда - TPS (transactions per second) –мерки (TPS also means Transaction Processing System)

• Съществуват и други мерки (всичките са 1/време):• - за графика – милиони триъгълници за секунда• - невронни мрежи – милион връзки за секунда• Времето за изпълнение е основната мярка за производителност

• Съществуат и други – достъпност, капацитет на канала, разширяемост, производителност на ват (напоследък стойността на захранване става съизмерима, даже повече от тази на компютъра), степен на компресия!!!

Тестови програми/мерки• Най-добрият начин за измерване на производителност е с реални приложения (напр. компилатор)

• Ползване на програми, които са по-прости от реални приложения:

• ядра (kernels) – малки парчета от реални приложения – циклите на Livermore и Linpack(софтуерна библиотека за линейна алгебра – на Фортран), като последната ползва BLAS (Basic Linear Algebra Subprograms) библиотеките за векторни и матрични операции и изразява действия с плаваща запетая (MFLOPS).

• Българския суперкомпютър Blue Gene е с макс производителност по LINPACK - Rmax= 23.42 Tflops и теоретична върхова производителност - Rpeak= 27.85 Tflops

• Условия при които трябва да се изпълняват тестовите програми :– Да ползват един и същ компилатор с едни и същи флагове, като всички програми са написани на един и същ език

– Трябва да нямат модификация на кода• Множество оценъчни програми (benchmark

suites) – множество от приложения, с които се измерва производителността на процесорите

• Целта на оценъчните програми е да характеризират относителната производителност на два компютъра

• Тестови програми за настолни компютри – 2основни класа– За работа на процесора (processor-intensive benchmarks)– За графиката (graphics-intensive benchmarks)

• SPEC програмите – реални програми, модифициране за лесен пренос на различни компютри и минимизиране на ефекта на В/И върху производителността. Програмите с цели числа (12такива програми за SPEC2006) включват част от компилатор на С, програма за шах, симулация на квантов компютър, компресия на видео, търсене на геномна поредица и др.

• Тестовите програми за плаваща запетая (17 програми за SPEC2006) моделиране на крайни елементи, рамка за решаване на диференциални уравнения, разширяема молекулярна динамика (~NAMD),проследяване на лъч изписващ изображение, разпознаване на говор, изследване и прогнозиране на времето и др.

• Множеството SPEC CPU е полезно и се ползва не само за настолни компютри, но и за сървери с един процесор

• Тестови програми за сървери (Server Benchmarks)

• Ориентирани към пропускната им способност – производителността на мултипроцесор може да се измерва чрез работа на няколко копия = броя процесори за всяка тестова програма

• Повечето приложения на сървери имат значим В/И

• Съществуват тестови програми за файлови сървери (SPECSFS), бази данни, системи с транзакции, уеб сървери (SPECWeb)

Законът на Амдал

• Дава подобрението на производителността, което може да се получи при подобряване на част от компютъра – дефинира подобреното бързодействие

• Основния постулат в з-на на Амдал е, че подобрението на производителността при използване на по-бърз режим на изпълнение е ограничено от частта от времето, през което ще се използва по-бързия режим

tenhancemenguwithouttaskentireforePerformanc

possiblewhentenhancemengutaskentireforePerformancSpeedup

sin

sin=

( )

( )enhanced

enhancedenhanced

new

oldoverall

enhanced

enhancedenhancedoldnew

Speedup

FractionFractiontimeExecution

timeExecutionSpeedup

Speedup

FractionFractiontimeExecutiontimeExecution

+−==

+−∗=

1

1

1

• Въвеждаме 10 пъти по-бърз процесор за уеб операции

• Процесорът работи през 40% от времето и чака за В/И 60% от времето

• Колко е общото ускорение?

• Fractionenhanced = 0.4; Speedupenahnced = 10• Speedupoverall =1 / (0.6 + (0.4/10)) = 1/0.64

= 1.56

top related