118

Визначення найменування і тактової частоти процесора

Лабораторная работа

Информатика, кибернетика и программирование

Дана лабораторна робота написана на мові Delphi 7 на тему Визначення найменування і тактової частоти процесора. Зміст роботи: Постановка задачі. Теоретичні відомості. Опис алгоритму. Керівництво програмісту. Керівництво користувачеві. Приклад роботи програми. Програмний код програми. Висновок про виконану роботу. Використана література, або інші джерела.

Украинкский

2012-11-14

632 KB

15 чел.

Зміст

  1.  Постановка задачі.
  2.  Теоретичні відомості.
  3.  Опис алгоритму.
  4.  Керівництво програмісту.
  5.  Керівництво користувачеві.
  6.  Приклад роботи програми.
  7.  Програмний код програми.
  8.  Висновок про виконану роботу.
  9.  Використана література, або інші джерела.

  1.  Постановка задачі:

11 питання зі списка лабораторних робіт по МЗКІТ -

« Визначення найменування і тактової частоти процесора ».

  1.  Теоретичні відомості.

Центральний процесор (Central processing unit) — функціональна частина ЕОМ, що призначена для інтерпретації команд.

 Функції:

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

Архітектура процесора

Термін "архітектура процесора" в даний час не має однозначного тлумачення. З погляду програмістів, під архітектурою процесора мається на увазі його здатність виконувати певний набір машинних кодів. Більшість сучасних десктопних процесорів відносяться до сімейства x86, або Intel-сумісних процесорів архітектури IA32 (архітектура 32-бітових процесорів Intel). Її основа була закладена компанією Intel в процесорі i80386, проте в подальших поколіннях процесорів вона була доповнена і розширена як самою Intel (введені нові набори команд MMX, SSE, SSE2 і SSE3), так і сторонніми виробниками (набори команд EMMX, 3DNow! і Extended 3DNow!, розроблені компанією AMD).

Проте розробники комп'ютерного устаткування вкладають в поняття "Архітектура процесора" (іноді, щоб остаточно не заплутатися, використовується термін "мікроархітектура") дещо інший зміст. З їхнього погляду, архітектура процесора відображає основні принципи внутрішньої організації конкретних сімейств процесорів. Наприклад, архітектура процесорів Intel Pentium позначалася як Р5, процесорів Pentium II і Pentium III - Р6, а популярні в недавньому минулому Pentium 4 відносилися до архітектури NetBurst. Після того, як компанія Intel закрила архітектуру Р5 для сторонніх виробників, її основний конкурент - компанія AMD була вимушена розробити власну архітектуру - К7 для процесорів Athlon і Athlon XP, і К8 для Athlon 64.

Ядро:

В рамках однієї і тієї ж архітектури різні процесори можуть досить сильно відрізнятися один від одного. І відмінності ці утілюються в різноманітних процесорних ядрах, що володіють певним набором строго обумовлених характеристик. Найчастіше ці відмінності втілюються в різних частотах системної шини (FSB), розмірах кеша другого рівня, підтримці тих або інших нових систем команд або технологічних процесах, за якими виготовляються процесори. Нерідко зміна ядра в одному і тому ж сімействі процесорів спричиняє за собою заміну процесорного розніму (сокет, англ. socket), з чого витікають питання подальшої сумісності материнських плат. Проте в процесі вдосконалення ядра, виробникам доводиться вносити до нього незначні зміни, які не можуть претендувати на "ім'я власне". Такі зміни називаються ревізіями (англ. stepping) ядра і, найчастіше, позначаються цифробуквеннимі комбінаціями. Проте в нових ревізіях одного і того ж ядра можуть зустрічатися досить помітні нововведення. Так, компанія Intel ввела підтримку 64-бітової архітектури EM64T в окремі процесори сімейства Pentium 4 саме в процесі зміни ревізії.

32-бітові та 64-бітові процесори

Найуспішнішими і найпоширенішими донедавна були процесори з архітектурою IA32, яка була введена з появою покоління процесорів i80386 на заміну 16-бітним 8086, 80186, 80286.

Досить вдале 64-бітове розширення класичної 32-бітової архітектури IA32 було запропоноване в 2002 році компанією AMD (спочатку називалося x86-64, зараз - AMD64) в процесорах сімейства К8. Через деякий час компанією Intel було запропоновано власне позначення - EM64T (англ. Extended Memory 64-bit Technology). Але, незалежно від назви, суть нової архітектури одна і та ж: розрядність основних внутрішніх регістрів 64-бітових процесорів подвоїлася (з 32 до 64 біт), а 32-бітові команди x86-кода отримали 64-бітові аналоги. Крім того, за рахунок розширення розрядності шини адрес об'єм пам'яті, що адресується процесором, істотно збільшився.

Але ті, хто чекає від 64-бітових процесорів скільки-небудь істотного приросту швидкодії, будуть розчаровані — їхня продуктивність в переважній більшості сучасних застосунків (які в масі своєю заточені під IA32) практично та ж, що і у старих добрих 32-бітових процесорів. Для пересічного користувача потенціал 64-бітової архітектури може розкритися, коли в масово з'являться застосунки, оптимізовані під нову архітектуру. Найефективніший перехід на 64-бітові процесори буде для програм, що активно працюють з великими об'ємами пам'яті, понад 4 ГБ: продуктивними серверами, базами даних, програм класу CAD/CAE, а також програм для роботи з цифровим контентом.

Багатоядерні процесори

Найзначнішою подією 2005 року стала поява дво'ядерних процесорів. До того часу класичні одноядерні CPU певною мірою вичерпали резерви зростання продуктивності за рахунок підвищення робочої частоти. Каменем спотикання стало не тільки дуже високе тепловиділення процесорів, що працюють на високих частотах, але і проблеми з їхньою стабільністю. Отже екстенсивний шлях розвитку процесорів вичерпався, і виробникам довелося освоювати новий, інтенсивний шлях підвищення продуктивності продукції. Піонером на ринку десктопних CPU, як зазвичай, стала компанія Intel, що першою анонсувала дво'ядерні процесори Intel Pentium D і Intel Extreme Edition. Втім, AMD з Athlon64 X2 відстала від конкурента буквально на лічені дні. Безперечним добутком цих дво'ядерників першого покоління є їхня повна сумісність з існуючими системними платами. Друге покоління двоядерних процесорів, зокрема, Intel Core 2 Duo, вимагає спеціально розроблених для них чіпсетів і зі старими материнськими платами не працює.

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

Будова

Внутрішні спільно працюючі пристрої

Моделі процесорів включають наступні спільно працюючі пристрої:

  •  Пристрій керування (ПК). Здійснює координацію роботи всіх інших пристроїв, виконує функції керування пристроями, керує обчисленнями в комп'ютері.
  •  Арифметико-логічний пристрій (АЛП). Так називається пристрій для цілочислових операцій. Арифметичні операції, такі як додавання, множення і ділення, а також логічні операції (OR, AND, ASL, ROL і ін.) обробляються за допомогою АЛП. Ці операції складають переважну більшість програмних кодів у більшості програм. Всі операції в АЛП виробляються в регістрах — спеціально відведених комірках АЛП. У процесорі може бути декілька АЛП. Кожен здатний виконувати арифметичні або логічні операції незалежно від інших, що дозволяє виконувати кілька операцій одночасно. Арифметико-логічний пристрій виконує арифметичні і логічні дії. Логічні операції поділяються на дві прості операції: «Так» і «Ні» («1» і «0»). Звичайно ці два пристрої виділяються чисто умовно, конструктивно вони не розділені.
  •  AGU (Address Generation Unit) — пристрій генерації адрес. Це пристрій не менш важливий, ніж АЛП, тому що він відповідає за коректну адресацію при завантаженні або збереженні даних.
  •  Математичний співпроцесор (FPU). Процесор може містити кілька математичних співпроцесорів. Кожний з них здатний виконувати, щонайменше, одну операцію з плаваючою крапкою, незалежно від того, що роблять інші АЛП. Метод конвеєрної обробки даних дозволяє одному математичному співпроцесорові виконувати кілька операцій одночасно. Співпроцесор підтримує високоточні обчислення як цілочисельні, так і з плаваючою крапкою, і, крім того, містить набір корисних констант, що прискорюють обчислення. Співпроцесор працює паралельно з центральним процесором, забезпечуючи, таким чином, високу продуктивність.
  •  Дешифратор інструкцій (команд). Аналізує інструкції з метою виділення операндів і адрес, по яких розміщаються результати. Потім випливає повідомлення іншому незалежному пристроєві про те, що необхідно зробити для виконання інструкції. Дешифратор допускає виконання декількох інструкцій одночасно для завантаження усіх виконуючих пристроїв.

Пам'ять

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

Кеш першого рівня (L1 cache). Кеш-пам'ять, що знаходиться усередині процесора. Вона швидше всіх інших типів пам'яті, але менше за обсягом. Зберігає зовсім недавно використану інформацію, що може бути використана при виконанні коротких програмних циклів.

Кеш другого рівня (L2 cache). Також знаходиться усередині процесора. Інформація, що зберігається в ній, використовується рідше, ніж інформація, що зберігається в кеш-пам'яті першого рівня, проте за обсягом пам'яті він більший. Також у даний час у процесорах використовується кеш третього рівня.

  •  Основна пам'ять. Набагато більша за обсягом, чим кеш-пам'ять, і значно менш швидкодіюча.
  •  Регістри — це внутрішня пам'ять процесора. Являють собою ряд спеціалізованих додаткових комірок пам'яті, а також внутрішні носії інформації мікропроцесора. Регістр є пристроєм тимчасового збереження даних, числа або команди і використовується з метою полегшення арифметичних, логічних і пересильних операцій. Основним елементом регістра є електронна схема, називана тригером, що здатна зберігати одну двійкову цифру (розряд).

Деякі важливі регістри мають свої назви, наприклад: суматор — регістр АЛП, що бере участь у виконанні кожної операції. лічильник команд — регістр УП, зміст якого відповідає адресі чергової виконуваної команди; служить для автоматичної вибірки програми з послідовних комірок пам'яті. регістр команд — регістр УП для збереження коду команди на період часу, необхідний для її виконання. Частина його розрядів використовується для збереження коду операції, інші — для збереження кодів адрес операндів.

Шини

Шина — це канал пересилання даних, який використовується спільно різними блоками системи. Шина може являти собою набір провідних ліній у друкованій платі, проводу, припаяні до виводів роз'ємів, у які вставляються друковані плати, або плоский кабель. Інформація передається по шині у виді груп бітів. До складу шини для кожного біта слова може бути передбачена окрема лінія (паралельна шина), або всі біти слова можуть послідовно в часі використовувати одну лінію (послідовна шина).

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

Буфер цілей розгалуження

BTB(Branch Target Buffer). Це таблиця в якій знаходяться всі адреси, куди буде або може бути зроблений перехід.

3. Опис алгоритму.

Алгоритм function GetCPUCount

Алгоритм function GetCPUVendor

Алгоритм function GetCPUSpeed

procedure TForm1.FormActivate

procedure TForm1.Button1Click

procedure TForm1.Button2Click

procedure TForm1.Button3Click

4. Керівництво програмісту.

Програма складається с таких компонентів:

   TForm1 = class(TForm)             -  головна форма, де розташовані компоненти.

   Button1: TButton;                     - кнопка отримання інформації про ЦПУ.

   Button2: TButton;                      - кнопка очищення компонентів Label1-Label10.

   Button3: TButton;                      - кнопка виходу з програми.

   Label1: TLabel;                          - мітка для виводу виробника ЦПУ.

   Label2: TLabel;                          - мітка для виводу кількості ЦПУ.

   Label3: TLabel;                          - мітка для виводу назви ЦПУ.

   Label4: TLabel;                          - мітка для виводу швидкості ЦПУ.

   Label5: TLabel;                          - додаткова мітка, для того, якщо в системі більше 1 ЦПУ

   Label6: TLabel;                          - додаткова мітка, для того, якщо в системі більше 1 ЦПУ

   Label7: TLabel;                          - додаткова мітка, для того, якщо в системі більше 1 ЦПУ

   Label8: TLabel;                          - додаткова мітка, для того, якщо в системі більше 1 ЦПУ

   Label9: TLabel;                          - додаткова мітка, для того, якщо в системі більше 1 ЦПУ

   Label10: TLabel;                        - додаткова мітка, для того, якщо в системі більше 1 ЦПУ

   Image1:TImage;                         - контейнер для малюнка, на який його можна розмістити

   StaticText1:TStaticText;       - мітка для виводу заголовка програми (розташована зверху)

   StaticText2: TStaticText;      - мітка для виводу автора програми (розташована внизу).

Модулі які використовуються в програмі:

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, Registry, jpeg, ExtCtrls;    

Основні типи, які використовуються в програмі:

type

 TCPUID = array[1..4] of Longint;

 TVendor = array [0..11] of char;

 TForm1 = class(TForm)

   Button1: TButton;

   Button2: TButton;

   Button3: TButton;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   Label5: TLabel;

   Label6: TLabel;

   Label7: TLabel;

   Label8: TLabel;

   Label9: TLabel;

   Label10: TLabel;

   Image1: TImage;

   StaticText1: TStaticText;

   StaticText2: TStaticText;

   procedure FormActivate(Sender: TObject);

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

Функція для визначення кількості ядер в ЦПУ:

function GetCPUCount: byte; // Функція повертає числове значення кількості ядер

var

 si: TSystemInfo;  // Об’явлення змінної si типу TSystemInfo

begin                       // Початок функції

 GetSystemInfo(si); // Системна функція, яка передає в змінну si значення про систему

 Result := si.dwNumberOfProcessors; // функція повертає значення кількості ядер.

end;

Функція яка визначає виробника ЦПУ, використовується код Ассемблера.

function GetCPUVendor : TVendor; assembler; register;

asm

 PUSH    EBX     // Зберігається запис регістра

 PUSH    EDI

 MOV     EDI,EAX   // Повертає значення типу TVendor

 MOV     EAX,0

 DW      $A20F    // CPUID команда

 MOV     EAX,EBX

 XCHG  EBX,ECX     // збереження результату ECX

 MOV   ECX,4

@1:

 STOSB

 SHR     EAX,8

 LOOP    @1

 MOV     EAX,EDX

 MOV   ECX,4

@2:

 STOSB

 SHR     EAX,8

 LOOP    @2

 MOV     EAX,EBX

 MOV   ECX,4

@3:

 STOSB

 SHR     EAX,8

 LOOP    @3

 POP     EDI     // відновлюємо регістри

 POP     EBX

end;

function GetCPUSpeed: double; // Функція повертає значення в числовому значенні

const                                           // Робимо об’явлення констант

 DelayTime = 500;                     // час вимірюється в мілісекундах

Var                                              // Обявлення змінних

 TimerHi, TimerLo: DWORD;

 PriorityClass, Priority: integer;

begin

 PriorityClass := GetPriorityClass(GetCurrentProcess);

 Priority := GetThreadPriority(GetCurrentThread);

 SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);

 SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

 Sleep(10);  // Робимо затримку програми на 10 мілісекунд

 Asm           // Вставка Асемблеровського коду

   dw 310Fh // rdtsc

   mov TimerLo, eax

   mov TimerHi, edx

 end;

 Sleep(DelayTime);

 Asm           // Вставка Асемблеровського коду

   dw 310Fh // rdtsc

   sub eax, TimerLo

   sbb edx, TimerHi

   mov TimerLo, eax

   mov TimerHi, edx

 end;

 SetThreadPriority(GetCurrentThread, Priority);

 SetPriorityClass(GetCurrentProcess, PriorityClass);

 Result := TimerLo / (1000.0 * DelayTime);

end;

Тіло програми:

Процедура при активації (запуску) программи:

procedure TForm1.FormActivate(Sender: TObject);

var                // Об’явлення змінних

 i: integer;   //  Об’явлення змінної і числового типу

begin

 for i := 1 to 10 do  // Через цикл очищаемо мітки

   TLabel(FindComponent('Label'+IntToStr(i))).Caption := '';

end;

Процедура обробки натиску на кнопку (Button1) :

procedure TForm1.Button1Click(Sender: TObject);

var                              // Об’явлення змінних

 CPUname: string;  

 Reg: TRegistry;

 i, a: integer;

begin

 Label1.Caption := 'Производитель: ' + GetCPUVendor;  // Заносимо в мітку1

                                                                      // інформацію про виробника використовуючи  

     // функцію GetCPUVendor, яку ми описали в

     // глобальному розділі

 Label2.Caption := 'Колличество CPU: ' + IntToStr(GetCPUCount); // Заносимо в мітку2

                                                                      // інформацію про кількості

     // ЦПУ використовуючи  

     // функцію GetCPUCount, яку ми описали в

     // глобальному розділі

 a := 3;      // призначаємо змінній а числове значення «3»

 CPUname := '';    // Очищаємо змінну CPUname

 

 if (GetCPUCount) > 1 then  // Початок умови якщо ядер в ЦПУ більше ніж 1

   begin

     for i := 1 to GetCPUCount do

       begin

         Reg := TRegistry.Create;

         try

           Reg.RootKey := HKEY_LOCAL_MACHINE; // занесення інформацію про реєстр

           if Reg.OpenKey('HARDWARE\DESCRIPTION\System\CentralProcessor\'+

  IntToStr(i), False)

 // читаємо назву ЦПУ

 then  CPUname := Reg.ReadString('ProcessorNameString');

        finally

           Reg.Free;

         end;

// Виводимо інформацію про ЦПУ

         TLabel(FindComponent('Label'+IntToStr(a))).Caption :=

                         'Наименование ядра ' + IntToStr(i) + ' CPU: ' + CPUname;

         inc(a);

// Виводимо інформацію про швидкість ЦПУ.

TLabel(FindComponent('Label'+IntToStr(a))).Caption := 'CPU speed' + IntToStr(i) + Format(': %f MHz', [GetCPUSpeed]);

         inc(a);

       end;

   end

 else // якщо наша умова (більше 1 ядра) не виконалась, тоді ЦПУ має 1 ядро і

// записуємо інформацію тільки як одноядрового ЦПУ.

   begin

     Reg := TRegistry.Create;

       try

         Reg.RootKey := HKEY_LOCAL_MACHINE;

         if Reg.OpenKey('HARDWARE\DESCRIPTION\System\CentralProcessor\0', False)                                                                               then

           CPUname := Reg.ReadString('ProcessorNameString');

       finally

         Reg.Free;

       end;

       Label3.Caption := 'Наименование CPU: ' + CPUname;

       Label4.Caption := Format('CPU speed: %f MHz', [GetCPUSpeed]);

   end;

end;

Процедура очищення міток, дія аналогічна, як процедури при запуску програми

procedure TForm1.Button2Click(Sender: TObject);

var

 i: integer;

begin

 for i := 1 to 10 do

   TLabel(FindComponent('Label'+IntToStr(i))).Caption := '';

end;

Процедура завершення програми:

procedure TForm1.Button3Click(Sender: TObject);

begin

 Close;  // Функція для закриття програми.

end;

5. Керівництво користувачеві.

Дана програма видає інформацію про ЦПУ, який встановлений в комп’ютер:

Кнопка «Получить информацию» запускає програму, яка видасть інформацію про ЦПУ вашого комп’ютера. На мал. обведена червоною лінією

Кнопка «Очистить окно» очищає дане вікно для повторного запуску кнопки «Получить информацию». На мал. обведена червоною лінією

Кнопка «Завершить програму » - закриває вікно програми, тип самим звільняючи область пам’яті, яку вона займала. На мал. обведена червоною лінією

6. Приклад роботи програми.

Запуск програми під різними комп’ютерами, з різними ЦПУ.

1-ядровий ЦПУ

2-ядровий ЦПУ

4-ядровий ЦПУ

7. Програмний код програми.

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, Registry, jpeg, ExtCtrls;

type

 TCPUID = array[1..4] of Longint;

 TVendor = array [0..11] of char;

 TForm1 = class(TForm)

   Button1: TButton;

   Button2: TButton;

   Button3: TButton;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   Label5: TLabel;

   Label6: TLabel;

   Label7: TLabel;

   Label8: TLabel;

   Label9: TLabel;

   Label10: TLabel;

   Image1: TImage;

   StaticText1: TStaticText;

   StaticText2: TStaticText;

   procedure FormActivate(Sender: TObject);

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

function GetCPUCount: byte;

var

 si: TSystemInfo;

begin

 GetSystemInfo(si);

 Result := si.dwNumberOfProcessors;

end;

function GetCPUVendor : TVendor; assembler; register;

asm

 PUSH    EBX     {Save affected register}

 PUSH    EDI

 MOV     EDI,EAX   {@Result (TVendor)}

 MOV     EAX,0

 DW      $A20F    {CPUID Command}

 MOV     EAX,EBX

 XCHG  EBX,ECX     {save ECX result}

 MOV   ECX,4

@1:

 STOSB

 SHR     EAX,8

 LOOP    @1

 MOV     EAX,EDX

 MOV   ECX,4

@2:

 STOSB

 SHR     EAX,8

 LOOP    @2

 MOV     EAX,EBX

 MOV   ECX,4

@3:

 STOSB

 SHR     EAX,8

 LOOP    @3

 POP     EDI     {восстанавливаем регистры}

 POP     EBX

end;

function GetCPUSpeed: double;

const

 DelayTime = 500; // время измерения в миллисекундах

var

 TimerHi, TimerLo: DWORD;

 PriorityClass, Priority: integer;

begin

 PriorityClass := GetPriorityClass(GetCurrentProcess);

 Priority := GetThreadPriority(GetCurrentThread);

 SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);

 SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

 Sleep(10);

 asm

   dw 310Fh // rdtsc

   mov TimerLo, eax

   mov TimerHi, edx

 end;

 Sleep(DelayTime);

 asm

   dw 310Fh // rdtsc

   sub eax, TimerLo

   sbb edx, TimerHi

   mov TimerLo, eax

   mov TimerHi, edx

 end;

 SetThreadPriority(GetCurrentThread, Priority);

 SetPriorityClass(GetCurrentProcess, PriorityClass);

 Result := TimerLo / (1000.0 * DelayTime);

end;

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);

var

 i: integer;

begin

 for i := 1 to 10 do

   TLabel(FindComponent('Label'+IntToStr(i))).Caption := '';

end;

procedure TForm1.Button1Click(Sender: TObject);

var

 CPUname: string;

 Reg: TRegistry;

 i, a: integer;

begin

 Label1.Caption := 'Производитель: ' + GetCPUVendor;

 Label2.Caption := 'Колличество CPU: ' + IntToStr(GetCPUCount);

 a := 3;

 CPUname := '';

 

 if (GetCPUCount) > 1 then

   begin

     for i := 1 to GetCPUCount do

       begin

         Reg := TRegistry.Create;

         try

           Reg.RootKey := HKEY_LOCAL_MACHINE;

           if Reg.OpenKey('HARDWARE\DESCRIPTION\System\CentralProcessor\'+IntToStr(i), False) then

             CPUname := Reg.ReadString('ProcessorNameString');

         finally

           Reg.Free;

         end;

         TLabel(FindComponent('Label'+IntToStr(a))).Caption :=

                         'Наименование ядра ' + IntToStr(i) + ' CPU: ' + CPUname;

         inc(a);

         TLabel(FindComponent('Label'+IntToStr(a))).Caption := 'CPU speed' + IntToStr(i) +

                         Format(': %f MHz', [GetCPUSpeed]);

         inc(a);

       end;

   end

 else

   begin

     Reg := TRegistry.Create;

       try

         Reg.RootKey := HKEY_LOCAL_MACHINE;

         if Reg.OpenKey('HARDWARE\DESCRIPTION\System\CentralProcessor\0', False) then

           CPUname := Reg.ReadString('ProcessorNameString');

       finally

         Reg.Free;

       end;

       Label3.Caption := 'Наименование CPU: ' + CPUname;

       Label4.Caption := Format('CPU speed: %f MHz', [GetCPUSpeed]);

   end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

 i: integer;

begin

 for i := 1 to 10 do

   TLabel(FindComponent('Label'+IntToStr(i))).Caption := '';

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

 Close;

end;

end.

8. Висновок про виконану роботу.

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

9.Використана література, або інші джерела.

  1.  Фаронов В.В. Delphi. Программирование на языке высокого уровня: Учебник для вузов – СПб.: Питер, 2005. – 640 с.: ил.
  2.  Фленов М. Е. Библия программиста Delphi (электронный вариант).
  3.  Автор Гуйдо Гайбелса. Перевод Анатолия Подгорецкого. Использование ассемблера в Delphi (электронный вариант)
  4.  http://ru.wikipedia.org/wiki/Процессор
  5.  http://www.kansoftware.ru/?did=163

PAGE  22


 

А также другие работы, которые могут Вас заинтересовать

27414. Формирование культуры труда у младших школьников на уроках технологии 29 KB
  КУЛЬТУРА ТРУДА комплексная качественная характеристика состояния труда. Включает рациональную организацию труда благоприятные условия труда использование передовых технологий высокий профессионализм работника партнерские отношения между участниками совместного труда. способствует: сохранению здоровья работника; развитию чувства удовлетворенности трудом хорошего настроения интереса и активности при выполнении работы; росту профессиональной квалификации; профессиональной и личной самореализации; освоению рациональных приемов труда новой...
27415. Конструирование и его организация на уроках технологии в начальных классах 33 KB
  Модель и моделирование техническое моделирование и конструирование на уроках технологии получают первоначальные сведения о моделях машинах знакомятся с технической терминологией производством рабочими профессиями. Конструирование по образцу предлагают образцы построек = обеспечивается прямая передача детям готовых знаний способов действий основанная на подражании. Конструирование по условиям определяют условия которым постройка должна соответствовать. начинать моделирование и конструирование следует с простейших изделий...
27416. Проектирование/моделирование, организация и методика проведения интегрированных уроков в процессе обучения искусству 36 KB
  Уроки художественноэстетического цикла должны создавать условия для формирования и развития художественной культуры обучающихся. На протяжении работы в школе в качестве учителя изобразительного искусства хотелось сделать уроки искусства более эмоциональными запоминающимися и плодотворными а главное заинтересовать обучающихся вызвать желание творить. Проникновение современных технологий в образовательную практику в том числе и в уроки искусства открывает новые возможности и перспективы. Интегрированные уроки изобразительного искусства и...
27417. Понятие открытого образовательного пространства как пространства субъектного действия. Модульная система оргформ порождения и становления образовательного пространства в области художественного образования 48.5 KB
  Когда мы говорим о пространстве образования то имеем в виду пространство где формируется образ человека его внутренняя форма. Фомина рассматривает образовательное пространство района как систему управления развитием личности. Автор отмечает что образовательное пространство формируется с помощью целого комплекса направлений деятельности. Под образовательным пространством мы понимаем пространственновременное поле функционирования и развития системы образования как открытой и активной социальной сферы в которой действует своя идеология...
27418. Методика обучения основам синтетических видов искусства (9ый класс). Синтетические искусства и изображение (театр, кино, видео, компьютерные экранные технологии, анимация) 60 KB
  Методика обучения основам синтетических видов искусства 9ый класс. Синтетические искусства и изображение театр кино видео компьютерные экранные технологии анимация. Общая характеристика учебного предмета9 клаcc Этот тематический блок представляет собой расширение курса визуальнопластических искусств и осознание их прочной связи с синтетическими искусствами кино телевидение и др. Именно синтетические искусства непосредственно происходящие от изобразительных являются сегодня господствующими во всей системе видеокультуры.
27419. Народная художественная культура национальные, этнические формы искусства. Методы и формы приобщения учащихся к многообразию культурного наследия, к региональным (местным) национальным культурам и искусству на уроках ИЗО и во внеклассной работе 46.5 KB
  Виды и формы ДПИ. Методика обучения основам ДПИ в школе и формах дополнительного образования. ДПИ невозможно без художественного творчества так же как невозможно и без ремесленных основ владения технологией обработки тех или иных материалов. Методика преподавания ДПИ основанного на традиционной народной культуре сравнительно молодой раздел методики преподавания образовательной области Технология .
27420. Особенности методики преподавания искусства в детских художественных школах и школах искусств. Технологии преподавания рисунка, живописи, композиции, скульптуры, ДПИ, истории искусств 89 KB
  первый этап обучения в общеобразовательной школе должен через искусство заложить основы художественного эстетического восприятия явлений окружающей действительности. За четыре года начального обучения необходимо в сознании и эмоциональном развитии ребенка создать фундамент художественных представлений на которые он сможет опираться во всем дальнейшем обучении. Педагог должен с самого начала обучения создавать вокруг темы урока ситуацию уподобления т. ЦЕЛИ:Единство воспитания и образования обучения и творческой деятельности учащихся...
27421. Проектирование, моделирование, исследование и творчество – ведущие способы эффективной деятельности учителя и учащихся 45.5 KB
  Проектирование моделирование исследование и творчество ведущие способы эффективной деятельности учителя и учащихся. Он формирует опыт деятельности поэтому незаменим. Философия цели и деятельности.Обратите внимание предполагает ли решение проблемы различные виды деятельности изготовление предметов рисунки аппликации записи на плёнку интервью короткую пьесу и.
27422. Методика организации и проведения педагогического эксперимента в области художественного образования/эстетического воспитания и обучения искусству 81.5 KB
  Так имеются методы дидактического воспитательного частнометодического управленческого лабораторного и естественного ограниченного и массового качественного и количественного экспериментов и т. К методам педагогического эксперимента примыкают и взаимопроникают методы психологического физиологического медицинского социологического экономического и других исследований.Внутри эксперимента понимаемого как комплексный метод исследования используются теоретические методы: анализ и синтез индукция и дедукция сравнение аналогия...