lecture5 log osnovi bool algebra
Post on 03-Oct-2014
135 Views
Preview:
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