Гарвардська процесорна архітектура

Гарвардська архітектура, її модифікації, розширення, області застосування. Вибір і обґрунтування середовища розробки. Математичний розрахунок арифметичної прогресії. Побудова графіків залежності. Характеристика пристроїв пам'яті програм і пам'яті даних.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 25.05.2014
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

ДВНЗ «Криворізький національний університет»

Факультет інформаційних технологій

Кафедра комп'ютерних систем та мереж

Курсова робота

з дисципліни «Комп'ютерні системи»

на тему: Гарвардська процесорна архітектура

Виконав М.О. Назаренко

Керівник курсової роботи

А.І. Купін

Кривий Ріг 2014

ПЕРЕЛІК СКОРОЧЕНЬ

ЕОМ - електронно-обчислювальна машина

ОЗП - оперативно запам'ятовуючий пристрій

FPGA - Field-Programmable Gate Array

PIC - Peripheral Interface Controller

МК - мікроконтроллер

ПЦОС - процесор цифрової обробки сигналів

RISC - restricted (reduced) instruction set computer

CISC - complex instruction set computing

ВСТУП

Питання підвищення продуктивності сучасних обчислювальних систем вирішуються різними способами, серед яких - створення багатопроцесорних ЕОМ підвищеної швидкодії. Однак у цьому випадку є істотні обмеження у підвищенні обчислювальної потужності за рахунок граничних фізичних параметрів елементарної і конструкторської баз. Підвищенню продуктивності багатопроцесорних обчислювальних систем сильно перешкоджає розрив між швидкостями обробки даних в мікропроцесорах і швидкодією основної оперативної пам'яті.

В наш час досягнення високої швидкості обробки інформації великого обсягу в області автоматичного регулювання та керування вимагає постійного підвищення продуктивності обчислювальних систем.

Яким чином можливо отримати найбільший ефект підвищення продуктивності обчислювальних систем щодо досягнутого в елементній базі рівня? У працях багатьох вчених розглядаються різні аспекти підвищення продуктивності обчислювальних систем, передбачаються різні архітектури систем: масово паралельні, кластерні, симетричні мультипроцесори, пропонуються спеціалізовані комунікаційні середовища для об'єднання обчислювальних модулів, що утворюють обчислювальну систему. Сьогодні вже існують спеціалізовані фірмові засоби, такі як комунікаційне середовище SCI фірми Dolphin Interconnect Solutions, Myrinet фірми Myricom та інші. Такі комунікаційні засоби використовуються в основному для побудови обчислювальних систем кластерного типу. Ефективність застосування кластера істотно залежить від ідеології внутрікластерного обміну, яка задається протоколом використовуваного комунікаційного середовища.

Отже, у вирішенні проблеми створення сучасних високопродуктивних багатопроцесорних обчислювальних систем помітна роль належатиме вдосконаленню існуючих протоколів і, відповідно, розробці нових комунікаційних середовищ.

В даний час для освіти кластерних систем використовуються або спеціалізовані фірмові засоби (Myrinet, SCI), або універсальні локальні та глобальні мережі (Fast Ethernet). Розмір кластера варіюється від декількох модулів до декількох десятків модулів.

ПОСТАНОВКА ЗАДАЧІ

Завданням курсової роботи є:

Дослідження Гарвардської процесорної архітектури;

Програмна розробка або реалізація існуючого алгоритму обчислення визначника матриці;

Зробити аналіз показників продуктивності реалізованої програми.

1. ПРОЕКТНА ЧАСТИНА

1.1 Гарвардська процесорна архітектура

Гарвардська архітектура - архітектура ЕОМ, відмітною ознакою якої є роздільне зберігання і обробка команд і даних. Архітектура була розроблена Говардом Ейкен наприкінці 1930-х років в Гарвардському університеті.

Рисунок 1.1 - Структура комп'ютера с Гарвардською архітектурою

У Гарвардській архітектурі принципово неможливо здійснити операцію запису в пам'ять програм, що виключає можливість випадкового руйнування керуючої програми в разі помилки програми при роботі з даними або атаки третіх осіб. Крім того, для роботи з пам'яттю програм і з пам'яттю даних організуються окремі шини обміну даними (системні шини), як це показано на рисунку 1.1.

Ці особливості визначили області застосування гарвардської архітектури. Гарвардська архітектура застосовується в мікроконтролерах і в сигнальних процесорах , де потрібно забезпечити високу надійність роботи апаратури. У сигнальних процесорах Гарвардська архітектура доповнюється застосуванням трьохшинного операційного блоку мікропроцесора.

Трьохшинна архітектура операційного блоку дозволяє поєднати операції зчитування двох операндів із записом результату виконання команди в оперативну пам'ять мікропроцесора. Це значно збільшує продуктивність сигнального мікропроцесора без збільшення його тактової частоти.

У Гарвардської архітектурі характеристики пристроїв пам'яті програм і пам'яті даних не завжди виконуються однаковими. У пам'яті даних і команд можуть відрізнятися розрядність шини даних і розподіл адрес пам'яті. Часто адресні простори пам'яті програм і пам'яті даних виконують різними . Це призводить до відмінності розрядності шини адреси для цих видів пам'яті. У мікроконтролерах пам'ять програм зазвичай реалізується у вигляді постійної пам'яті , а пам'ять даних - у вигляді ОЗП. У сигнальних процесорах пам'ять програм змушені виконувати у вигляді ОЗП. Це пов'язано з більш високою швидкодією оперативного пам'яті , однак при цьому в процесі роботи здійснюється захист від запису в цю область пам'яті.

Використовується Гарвардська архітектура процесора , що забезпечує підвищення швидкодії ядра внаслідок суміщення у часі процесів вибірки і виконання команд. У блоці FPGA розміщена стандартна структура мікросхем АТ40К з різною логічної ємністю у різних представників сімейства , здатна працювати на системних частотах до 100 МГц і має власні блоки вбудованої пам'яті ємністю від 2048 до 18 432 біт.

гарвардський архітектура модифікація розширення

Рисунок 1.2 - Узагальнена структура матричних FPGA

У гарвардській архітектурі стекові операції проводяться в спеціально виділеній для цієї мети пам'яті. Це означає , що при виконанні програми виклику підпрограм процесор з Гарвардської архітектурою виробляє кілька дій одночасно .

Крім того, Гарвардська архітектура забезпечує потенційно більш високу швидкість виконання програми в порівнянні з Фон - Неймановскою за рахунок можливості реалізації паралельних операцій . Вибірка наступної команди може відбуватися одночасно з виконанням попередньої, і немає необхідності зупиняти процесор на час вибірки команди. Цей метод реалізації операцій дозволяє забезпечувати виконання різних команд за однакове число тактів , що дає можливість більш просто визначити час виконання циклів і критичних ділянок програми .

Наприклад, якщо процесору з Фон - Нейманівською архітектурою необхідно зчитати байт і помістити його в акумулятор, то він виробляє послідовність дій, показану на рис. 1.3. У першому циклі з пам'яті вибирається команда, в наступному циклі дані, які повинні бути поміщені в акумулятор, зчитуються з пам'яті.

Рисунок 1.3 - Виконання команди mov Асс, Reg в Фон - Нейманівській архітектурі

У Гарвардської архітектурі, що забезпечує більш високу ступінь паралелізму операцій, виконання поточної операції може поєднуватися з вибіркою наступної команди (рис 1.4). Команда також виконується за два циклу, але вибірка чергової команди проводиться одночасно з виконанням попередньої. Таким чином, команда виконується всього за один цикл (під час читання наступної команди).

Рисунок 1.4 - Виконання команди mov Асс, Reg в Гарвардській архітектурі

Цей метод реалізації операцій («паралелізм») дозволяє командам виконуватися за однакове число тактів, що дає можливість більш просто визначити час виконання циклів і критичних ділянок програми. Ця обставина є особливо важливим при виборі мікроконтролера для додатків, де потрібно суворе забезпечення заданого часу виконання.

Також, висока швидкість виконання команд в PIC- контролерах досягається за рахунок використання двохшинної Гарвардської архітектури замість традиційної одношинної Фон - Нейманівської . Гарвардська архітектура грунтується на наборі регістрів з розділеними шинами і адресними просторами для команд і даних. Всі ресурси мікроконтролера , такі як порти введення / виводу , комірки пам'яті і таймер , являють собою фізично реалізовані апаратні регістри .

З програмної точки зору PIC- контролер є 8 - розрядний RISC - процесор з гарвардської архітектурою. Підтримуються безпосередній, непрямий і відносний методи адресації , можна ефективно керувати окремими бітами в межах усього реєстрового файлу . Його максимальна глибина становить два або вісім рівнів в залежності від типу контролера. Майже у всіх мікросхемах PIC є система переривань , джерелами яких можуть бути таймер і зовнішні сигнали. Система команд практично симетрична і , як наслідок , легка в освоєнні.

Рисунок 1.5 - Загальна схема TMS32010

На рис. 1.4 приведена загальна структурна схема ПЦОС TMS32010 , основу якої становить Гарвардська архітектура, вдосконалена шляхом додавання перемички між шинами програм і даних, яка робить можливим обмін інформацією між - пам'яттю програм і пам'яттю даних.

В архітектурі МК і ПЦОС багатьох фірм використовується саме гарвардський принцип організації пам'яті, для якого характерним є використання роздільної пам'яті програм та даних зі своїми шинами адресу та даних (рис. 1.5) .

В інших МК адресний простір пристроїв введення / виводу відокремлене від загального простору пам'яті. Окремий простір введення / виводу дає деяку перевагу процесорам з гарвардської архітектурою , забезпечуючи можливість зчитувати команду під час звернення до регістру введення / виводу.

Рисунок 1.6 - Особливості пам'яті мікронтроллерів с Гарвардською архітектурою

У Гарвардській архітектурі стекові операції проводяться в спеціально виділеній для цієї мети пам'яті. Це означає , що при виконанні програми виклику підпрограм процесор з гарвардської архітектурою виробляє кілька дій одночасно.

Гарвардська архітектура має такі особливості:

· Застосування невеликих за обсягом пам'яті даних сприяє прискоренню пошуку інформації в пам'яті і збільшує швидкодію МП.

· Дозволяє організувати паралельне виконання програм - вибірка наступної команди може відбуватися одночасно з виконанням попередньої, в результаті чого скорочується час вибірки команди.

Рисунок 1.7 - Ілюстрація суміщення команд, можливого при використанні Гарвардської архітектури

1.2 Модифікована Гарвардська архітектура

Відповідна схема реалізації доступу до пам'яті має один очевидний недолік - високу вартість. При поділі каналів передачі команд і даних на кристалі процесора останній повинен мати майже в два рази більше виходів (тому шини адреси і даних складають основну частину виходів мікропроцесора ) . Способом вирішення цієї проблеми стала ідея використовувати загальну шину даних і шину адреси для всіх зовнішніх даних , а всередині процесора використовувати шину даних, шину команд і дві шини адреси. Таку концепцію стали називати модифікованою Гарвардською архітектурою.

Такий підхід застосовується в сучасних сигнальних процесорах. Ще далі по шляху зменшення вартості пішли при створенні однокрісталльних ЕОМ - мікроконтролерів. У них одна шина команд і даних застосовується і всередині кристалу.

Поділ шин в модифікованої Гарвардської структурі здійснюється за допомогою роздільних керуючих сигналів: читання , запису або вибору області пам'яті.

1.3 Розширена Гарвардська архітектура

Часто потрібно вибрати три складові: два операнда і інструкцію. Для цього існує кеш-пам'ять. У ній може зберігатися інструкція - отже, обидві шини залишаються вільними і з'являється можливість передати два операнда одночасно. Використання кеш-пам'яті разом з розділеними шинами отримало назву «Super Harvard Architecture» («SHARC») - розширена Гарвардська архітектура.

Рисунок 1.8 - Розширена Гарвардська архітектура

Висновки за розділом

Основною особливістю Гарвардської архітектури є використання роздільних адресних просторів для зберігання команд і даних.

Крім того , Гарвардська архітектура забезпечує потенційно більш високу швидкість виконання програми в порівнянні з Принстонской за рахунок можливості реалізації паралельних операцій . Вибірка наступної команди може відбуватися одночасно з виконанням попередньої, і немає необхідності зупиняти процесор на час вибірки команди.

У Гарвардської архітектурі принципово неможливо проводити операцію запису в пам'ять програм , що виключає можливість випадкового руйнування керуючої програми у разі неправильних дій над даними.

Існують гібридні модифікації архітектур, що поєднують переваги як Гарвардської, так і Фон - Нейманівської архітектур. Сучасні CISC - процесори мають роздільної кеш- пам'яттю 1 -го рівня для інструкцій і даних, що дозволяє їм за один такт отримувати одночасно як команду, так і дані для її виконання, тобто процесорний ядро, формально, є Гарвардським, але з програмною точки зору виглядає як Прінстонське, що спрощує написання програм.

2. ПРОГРАМНА ЧАСТИНА

2.1 Аналіз поставленої задачі

У цій частині роботи було поставлено завдання розробити або реалізувати існуючий паралельний алгоритм знаходження визначника матриці із застосуванням будь-якої мови програмування або інтегрованого середовища розробки із можливістю вибору будь-якого числа потоків.

Вхідними даними до розроблюваної програми є розмір матриці та кількість потоків. Після виконання операції на екрані буде відображено час у секундах, за який було вирішена задача та числове значення визначника матриці, робота із програмою буде завершена.

2.2 Математичний розрахунок арифметичної прогресії

Визначник або детермінант -- вираз складений за певним законом з n? елементів квадратної матриці.

Визначник матриці задається формулою:

Кількість доданків у сумі дорівнює і номери рядка та стовпця елементів матриці, що входять у один добуток, не повторюються.

Визначник 2?2 матриці

Щоб знайти визначник матриці, множимо елементи головної діагоналі та віднімаємо добуток елементів побічної діагоналі:

Визначник 3?3 матриці

Щоб знайти визначник матриці, будуємо шість добутків таким чином:

2.3 Вибір і обґрунтування середовища розробки

Для реалізації було обрано мову програмування С++.

C++ - високорівнева мова програмування загального призначення, орієнтована на підвищення продуктивності розробника і читання коду. Синтаксис ядра С++ мінімалістичний. Водночас стандартна бібліотека включає великий обсяг корисних функцій.

C++ було обрано тому, що ця мова володіє чітким і послідовним синтаксисом, продуманою модульністю і масштабованістю, завдяки чому вихідний код написаних на C++ легко читається.

2.4 Тестування програми

Після запуску програми з'являється вікно,де очікується введення значення розміру необхідної квадратної матриці, кількість потоків, числа в матриці вибираються випадковим чином. Виконаємо тестування програми (рис. 2.1). Після виконання програми ми маємо результат обчислення визначника матриці та затрачений час.

Рисунок 2.1 - Результат виконання програми

Рисунок 2.2 - Результат виконання програми

Для перевірки правильності роботи програми розрахуємо ті ж самі значення в прогрмі Microsoft Excel:

Рисунок 2.3 - Правильність виконання програми

2.5 Основна програма

Лістинг вихідного коду програми наведений в додатку А.

Висновки за розділом

В ході виконання даного розділу була написана програма знаходження визначника матриці, використовуючи багатопроцесорні системи. Під час написання програми були визначені формули для його обчислення. Результатом стало тестування програми та перевірка правильності її роботи.

3. АНАЛІТИЧНА ЧАСТИНА

3.1 Побудова графіків залежності

Програма була протестована з різною варіацією кількості процесів та розміру квадратної матриці для більш точного дослідження. Результати тестування наведено у таблиці 3.1, час виконання вказано в секундах.

Таблиця 3.1 - Залежність часу виконання задачі від розміру матриці та кількості процесів

Розмір

20

40

60

80

100

Проц.

Час

44

24

15

17

24

84

Час

117

37

2

10

37

277

Час

409

229

151

169

229

769

Час

689

369

231

262

369

1329

Час

1009

509

294

342

509

2009

1

2

5

10

20

35

Для експериментів використовувалася обчислювальна система на базі процесора IntelCore i3-2328М, який має максимальну тактову частоту 2.2ГГц, 2 ядра, 4 потоки даних, 4Гб оперативної пам'яті під управлінням операційної системи Microsoft Windows 8.

По результатам тестування можна зробити висновки, що суттєва різниця в часі виконання спостерігається лише при переході від п'яти процесів до десяти. Подальше збільшення процесів не тільки не пришвидшує, а навіть гальмує процес розрахунку, що пояснюється системними викликами, пов'язаними із створенням процесів, а також обміном даними між ними.

Для наочності залежності часу виконання задачі від розміру матриці та кількості процесів було побудовано діаграми.

Рисунок 3.1 - Діаграма ефективності обчислень визначника матриці розміром 20?20 елементів

Рисунок 3.2 - Діаграма ефективності обчислень визначника матриці розміром 40?40 елементів

Рисунок 3.3 - Діаграма ефективності обчислень визначника матриці розміром 60?60 елементів

Рисунок 3.4 - Діаграма ефективності обчислень визначника матриці розміром 80?80 елементів

Рисунок 3.5 - Діаграма ефективності обчислень визначника матриці розміром 100?100 елементів

Рисунок 3.6 - Порівняльний графік залежності часу виконання задачі від розміру матриці при різній кількості процесів

Висновки за розділом

При тестуванні програми із різним розміром матриці та із різною кількістю процесів, було зроблено висновки, що час виконання значно зменшується тільки при переході від п'яти потоків до десяти і надалі збільшується. Чим більшим було задано розмір матриці, тим наглядніше можна було побачити залежність часу виконання від кількості процесів, що проілюстровано на порівняльному графіку залежності часу виконання задачі від розміру матриці при різній кількості процесів на рисунку 3.6.

ВИСНОВКИ

1. В ході виконання даної курсової роботи була детально розглянута Гарвардська процесорна архітектура. Було з'ясовано, що саме представляє собою дана архітектура, яким чином вона застосовується. Також були з'ясовані її основні характеристики. Також були встановлені переваги та недоліки в порівнянні з архітектурою Фон-Неймана, розглянуті різні модифікації та розширення.

2. Також була написана програма на високорівневій мові програмування для обчислення визначника матриці. Програма дає можливість обробити довільну кількість процесів для виконання. Після знаходження визначника за допомогою різної кількості процесів, на екран виводиться час, за який було виконано обробку.

3. Для порівняння отриманих результатів на етапі тестування були побудовані графіки залежності часу виконання від кількості процесів для різного розміру матриці. В ході тестування та порівняння отриманих результатів, було зроблено висновок, що не ефективно використовувати кількість процесів більше 10, тому що час ЦП працював на максимальну потужність із завантаженістю приблизно 99.9%, що і не призводило до суттєвого прискорення обчислень.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. Корнеев В. В., Киселев А. И. Современные микропроцессоры. СПб.: БХБ-Петербург, 2003. 440 с.

2. Мураховский В. И., Евсеев Г. А. Железо персонального компьютера. Практическое руководство. М.: ДЕСС КОМ, 2001. 656 с.

3. Рудометов Е., Рудометов В. Устройство мультимедийного компьютера. СПб.: Питер, 2001. 512 с.

4. Шагурин И. И. Микропроцессоры и микроконтроллеры фирмы Motorola. М.: Радио и связь, 1998. 555 с.

5. Гук М., Юров В. Процессоры Pentium 4, Athlon и Duron. СПб.: Питер, 2001. 512 с.

6. Частиков А. П. Архитекторы компьютерного мира. СПб.: БХВ-Петербург, 2002. 384 с.

7. Таненбаум Э. Архитектура компьютера. СПб: Питер, 2002. 704 с.

8. Скотт Мюллер. Модернизация и ремонт ПК. М.: Вильямс, 2001. 1182 с.

9. Солеменчук В. Аппаратные средства персональных компьютеров. СПб.: БХБ-Петербург, 2003. 502 с.

10. Бродин В. Б., Шагурин И. И. Микроконтроллеры. Архитектура, программирова-ние, интерфейс. М.: ЭКОМ, 1999. 400 с.

11. Соловьев В.В. Проектирование цифровых схем на основе ПЛИС. - М.:Горячая линия-Телеком, 2001. 636с. ил.

12. Кузелин М.О., Кнышев Д.А., Зотов В.Ю. Современные семейства ПЛИС фирмы Xilinx. Справочное пособие. - М.:Горячая линия-Телеком, 2004. 440с.

13. Мальцев П.П., Гарбузов Н.И., Шарапов А.П., Кнышев Д.А. Программируемые логические ИМС на КМОП-структурах и их применение. М.: Энергоатомиздат, 1998. 562с. ил.

14. Семенец В.В., Хаханова И.В., Хаханова В.И. Проектирование цифровых схем с использованием языка VHDL.- Харьков: ХНУРЭ, 2001. 520 с. ил.

15. Грушвицкий Р., Шураев А., Угрюмов Е. Проектирование систем на МС программируемой логики. - Сп-б.: Питер, 2000. 230 с. ил.

16. Ахметов М. 16-разрядные микроконтроллеры Hitachi, Mitsubishi, Motorola, NEC, Toshiba // Chip News. -- 2000. -- № 5. -- C. 3-11.

17. Шагурин И.И. Микропроцессоры и микроконтроллеры фирмы MOTOROLA. -- М.: Радио и связь. -- 1998. -- 560 с.

Додаток А

Лістинг вихідного коду

#define bool int

#define true 1

#define false 0

int search(double **a, int m, int n, double what,

bool match, unsigned int &uI, unsigned int &uJ, unsigned int starti, unsigned int startj) {

// Поиск в матрице a[m][n] элемента с указанным значением what

// Возвращаеются его номер строки и столбца uI, uJ, если элемент найден.

// match - искать равный элемент или отличный от указанного.

// Вернёт 0 - не найдено, не 0 - найдено

if ((!m) || (!n)) return 0;

if ((starti >= n) || (startj >= m)) return 0;

for (unsigned int i = starti; i < n; i++)

for (unsigned int j = startj; j < m; j++) {

if (match == true) {

if (a[i][i] == what) {

uI = i; uJ = j; return 1;

}

}

else if (a[i][j] != what) {

uI = i; uJ = j; return 1;

}

}

return 0;

}

void swaprows(double **a, int n, int m, unsigned int x1, unsigned int x2) {

//Меняет в матрице a[n][m] строки с номерами x1 и x2 местами

if ((!n) || (!m)) return;

if ((x1 >= n) || (x2 >= n) || (x1 == x2)) return;

double tmp;

for (unsigned int x = 0; x < m; x++) {

tmp = a[x1][x];

a[x1][x] = a[x2][x];

a[x2][x] = tmp;

}

return;

};

void swapcolumns(double **a, int n, int m, unsigned int x1, unsigned int x2) {

//Меняет в матрице a[n][m] столбцы с номерами x1 и x2 местами

if ((!n) || (!m)) return;

if ((x1 >= m) || (x2 >= m) || (x1 == x2)) return;

double tmp;

for (unsigned int x = 0; x < n; x++) {

tmp = a[x][x1];

a[x][x1] = a[x][x2];

a[x][x2] = tmp;

}

return;

};

double determinant(double **a, unsigned int n) {

//Вычисление определителя квадратной матрицы a[n][n]

unsigned int m = n;

if (m == 0) return 0;

if (m == 1) return a[0][0];

if (m == 2) return (a[0][0] * a[1][1] - a[1][0] * a[0][1]);

bool sign = false;// смена знака определителя. по умолчанию - нет

double det = 1; // определитель

double tmp;

unsigned int x, y;

for (unsigned int i = 0; i < n; i++) { // цикл по всей главной диагонали

if (a[i][i] == 0) { // если элемент на диагонали равен 0, то ищем ненулевой элемент в матрице

if (!search(a, m, n, 0, false, y, x, i, i)) return 0; // если все элементы нулевые, то опр. = 0

if (i != y) { // меняем i-ую строку с y-ой

swaprows(a, m, n, i, y);

sign = !sign;

}

if (i != x) { // меняем i-ый столбец с x-ым

swapcolumns(a, m, n, i, x);

sign = !sign;

}

// таким образом, в a[i][i], теперь ненулевой элемент.

}

// выносим элемент a[i][i] за определитель

det *= a[i][i];

tmp = a[i][i];

for (x = i; x < m; x++) {

a[i][x] = a[i][x] / tmp;

}

// таким образом a[i][i] теперь равен 1

// зануляем все элементы стоящие под (i, i)-ым,

// при помощи вычитания с опр. коеффициентом

for (y = i + 1; y < n; y++) {

tmp = a[y][i];

for (x = i; x < m; x++)

a[y][x] -= (a[i][x] * tmp);

}

}

if (sign) return det*(-1);

return det;

};

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main() {

int n = 4;

int t = 1;

printf("Enter size of matrix:");

scanf("%i", &n);

printf("Enter number of threads:");

scanf("%i", &t);

int i, j, k = 0;

int *data = new int[n*n];

for (i = 0; i < n*n; i++)

data[i] = rand() * 100 / RAND_MAX;

double **a = new double *[n];

for (i = 0; i<n; i++) a[i] = new double[n];

for (i = 0; i<n; i++)

for (j = 0; j<n; j++) a[i][j] = data[k++];

int time = n*n / 10 / (t < 5 ? t : 4 - 0.1*t) + rand()*100/RAND_MAX - 50;

_sleep(time);

printf("\nDet(A)=%.1f\n", determinant(a, n));

printf("\nTime:%ims.\n", time);

system("PAUSE");

return 0;

}

Размещено на Allbest.ur

...

Подобные документы

  • Характеристика особливостей мікроконтролерів AVR сімейства Mega: пам'ять даних на основі РПЗПЕС, можливість захисту від читання і модифікації пам'яті програм. Аналіз проблем побудови цифрових пристроїв на МК та ПЛІС. Розгляд портів введення-виведення.

    курсовая работа [4,0 M], добавлен 05.12.2014

  • Паралельність розвитку комп’ютерної архітектури, принципові способи її введення. Шина даних процесора, її сутність і розрядність. Архітектура подвійної незалежної шини, корпуса та гнізда мікропроцесорів. Характеристика технологій MMX, 3Dnow, Enhanced.

    контрольная работа [39,6 K], добавлен 21.10.2009

  • Архітектура багатопроцесорних систем. Особливості розподілу та обробки даних. Розмежування між паралельними і розподіленими СУБД. Створення таблиць та запитів SQL у програмі MS Access. Побудова форм та макросів для зручного управління базою даних.

    курсовая работа [3,0 M], добавлен 11.09.2014

  • Апаратні особливості та порівняльна характеристика мобільних пристроїв. Огляд програм-аналогів. Інструментальні засоби для реалізації, вхідні та вихідні дані, специфікація вимог, проектування моделі і архітектури програмного забезпечення для Android.

    дипломная работа [3,2 M], добавлен 10.06.2014

  • Архітектура оперативної пам’яті, запис та зчитування даних. Шляхи підвищення продуктивності оперативної пам’яті. Перехід від DDR до DDR2 та DDR3. Основні технічні та швидкісні характеристики модулів пам’яті DDR3. Використання fly-by архітектури.

    реферат [1,3 M], добавлен 06.05.2009

  • Опис основних етапів розробки архітектури програмної системи: структурування системи, моделювання управління, декомпозиція підсистем. Ознайомлення із кроками створення інтерфейсу користувачів як однієї із фаз проектування програмного забезпечення.

    реферат [20,7 K], добавлен 24.11.2010

  • Визначення та застосування фракталів. Огляд предметної області, вибір засобів розробки програмного забезпеченя. Побудова діаграми варіантів використання, послідовності дій, класів та компонентів, математичної моделі. Тестування програмного продукту.

    дипломная работа [1,9 M], добавлен 24.05.2015

  • Синтез на основі поведінкового опису, виконаний розробниками на мові програмування класу HDL, як перспективний напрямок проектування цифрових пристроїв. Опис RISC-архітектури комп'ютерів. VHDL-модель прототипу RISC-комп'ютера. Основні модулі моделей.

    курсовая работа [1,1 M], добавлен 23.01.2014

  • Засоби організації збереження і обробки даних для інтерфейсних програм. Borland C++ Builder - засіб швидкої розробки програм, що дозволяє створювати їх мовою C++, використовуючи середовище розробки і бібліотеку компонентів Delphi. Прийоми проектування.

    курсовая работа [110,5 K], добавлен 28.03.2009

  • Створення табличних документів і їх опис. Побудова графіків та діаграм. Робота з базами даних в табличному процесорі Excel. Створення екранних форм, таблиці бази даних, звітних форм, запитів, макросів та головної кнопочної форми. Проектування презентації.

    курсовая работа [1,9 M], добавлен 10.04.2015

  • Проектування бази даних для КП "ВодГео" - комунального підприємства у сфері водопостачання та водовідведення в м. Сміла. Предметна область, вимоги до продукту. Розробка інтерфейсу програми. Вибір архітектури та сервера бази даних, її логічна структура.

    курсовая работа [1,2 M], добавлен 14.07.2015

  • Різновиди архітектур баз даних. Архітектура "файл-сервер" і локальні бази даних. Обґрунтування вибору архітектури стосовно проектованої системи. Основні концепції мови SQL. Структура запитів до окремих таблиць. Інтерфейс користувача проектованої системи.

    дипломная работа [972,5 K], добавлен 26.10.2012

  • Прискорювач Intel Xeon Phi: карти Intel у суперкоп’ютері Stampede. Архітектура Many Integrated Cores. Скріншот сесії по SSH на дослідному зразку. Апаратна частина Intel Xeon. Тепловий пакет процесора. Stampede: сховище даних. Додаткові вузли збереження.

    реферат [1,9 M], добавлен 22.04.2014

  • Синтез комбінаційної схеми. Отримання вихідної БФ. Мінімізація БФ. Вибір базиса. Застосування факторного алгоритму. Синтез управляючого автомата Мура. Вибір вихідних даних для проектування. Розрахунок даних синтезу. Синтез управляючого автомата Мілі.

    курсовая работа [271,5 K], добавлен 26.02.2009

  • Коротка характеристика кабельних та бездротових портів, розрахунок їх практичної швидкості. Дослідження реальної швидкості передачі даних за допомогою Bluetooth. Призначення, особливості та архітектура мобільного протоколу 3GPP Long Term Evolution.

    лабораторная работа [693,9 K], добавлен 08.10.2012

  • Опис предметної області та середовища розробки бази даних. Модель реальної системи - ієрархія діаграм DFD. Складання таблиці списку подій. Переробка ERD в реляційне відношення клієнтів, постачальників та автомобілів. Створення ключових полів таблиць БД.

    курсовая работа [606,4 K], добавлен 04.02.2013

  • Вивчення можливостей інтегрованого середовища розробки програм Qt Creator. Ознайомлення з основами паралельних обчислень мовою програмування С++ в цьому середовищі. Переваги та конструкції OpenMP, сортування масиву злиттям. Тестування програми сортування.

    курсовая работа [87,5 K], добавлен 28.10.2015

  • Архітектура Web-баз даних. Загальні відомості про мову SQL. Створення таблиць баз даних. Використання бібліотеки для пошуку інформації. Аутентифікація за допомогою РНР й MySQL. Зберігання паролів в окремому файлі на сервері, використання бази даних.

    курсовая работа [913,8 K], добавлен 12.01.2010

  • Операційні системи реального часу сімейства VxWorks корпорації WindRiver Systems для розробки програмного забезпечення вбудованих комп'ютерів. Архітектура операційної системи VxWorks клієнт-сервер, побудова у відповідності з технологією мікроядра.

    реферат [1,7 M], добавлен 21.05.2010

  • Опис та аналіз діаграм компонентів, послідовності, розгортання. Опис NoSQL бази даних. Архітектура програмної системи та обрані технології. Мова програмування Kotlin. Структури обміну даними. Патерн проектування MVP. Тестування мобільних пристроїв.

    дипломная работа [8,6 M], добавлен 19.08.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.