My_Graduate (664911), страница 3
Текст из файла (страница 3)
function GetDisplayDevice: string;
данная функция определяет основные параметры видеокарты, такие как размер памяти и строку данных производителя.
function LocalIP : string;
данная функция возвращает IP адрес текущего компьютера.
Function GetCPUSpeed: Double;
Выясняем тактовую частоту процессора.
function CheckDriveType(ch:char): String;
возвращает тип диска (сменный, жесткий)
procedure TDiadnostic.FormCreate(Sender: TObject);
создает главное окно программы
function getprintername:string;
Возвращает имя принтера, сетевого или локального.
procedure TDiadnostic.Button4Click(Sender: TObject);
выполняет обновление информации о состоянии памяти
procedure TDiadnostic.disknameChange(Sender: TObject);
выполняет смену имени диска
procedure TDiadnostic.FormClose(Sender: TObject; var Action: TCloseAction);
Процедура выполняет функцию выхода из программы. Мгновенный выход из программы.
Выход из программы можно организовать несколькими способами, такими как:
-
Application.Terminate;
-
Form1.Hide;
-
Form1.Visible:=False;
-
Form1.Close;
Эти команды практически не отличаются друг от друга. Единственным различием может быть то, что первый выход работает гораздо быстрее, т.е. приложение закрывается мгновенно.
function OpenCD(Drive : Char) : Boolean;
выполняет функцию открытия сд-рома
function CloseCD(Drive : Char) : Boolean;
выполняет функцию закрытия сд-рома.
procedure TDiadnostic.SpeedButton1Click(Sender: TObject);
Процедура выполняет функцию открытия окна или формы. В данном случае открывается окно тестирования процессора.
Процедуры модуля Example:
procedure TForm1.Button1Click(Sender: TObject);
выполняет измерение тактовой частоты процессора.
Следует подробнее рассказать об идентификации процессора. Как известно, в процессорах пятого поколения, а также в некоторых четвёртого поколения, появилась команда CPUID. Эта команда позволяет больше узнать об установленном в системе процессоре. Обмен информацией происходит через основные регистры (EAX, EBX, ECX, EDX). Параметры задаются через регистр EAX. Таким образом, чтобы узнать информацию о версии процессора, я записал в EAX 1 и вызвал CPUID, после чего в EAX хранился результат. Для того, чтобы узнать производителя процессора, я записал в EAX 0 и вызвал CPUID, после чего в основных регистрах находится, уникальная для каждого производителя, строка. Для AMD это "AuthenticAMD", для Intel - "GenuineIntel", для Cyrix - "CyrixInstead". Теперь расскажу об идентификации процессоров, не имеющих инструкции CPUID. Понятно, что столь подробную информацию, в этом случае получить невозможно. Т.к. программа требует процессор не ниже третьего поколения, я начал проверку именно с этого поколения. Наличие 386-го процессора определяется недоступностью для записи 18-го бита регистра флагов, если бит доступен для записи, то я проверяю наличие поддержки команды CPUID, если она не поддерживается, то процессор 486-ой. Если же CPUID поддерживается, то дальше всё определение ложится именно на эту команду.
Наличие поддержки команды CPUID определяется доступностью для записи 21-го бита регистра флагов.
procedure TForm1.pcc2PrecizeProc(Sender: TObject);
используется для тестирования скорости выполнения арифметических операций, а именно для вычисления времени сложения 100 целых чисел.
procedure TForm1.pcc3PrecizeProc(Sender: TObject);
используется для вычисления времени сложения 100 целых 64-битных чисел.
procedure TForm1.pcc4PrecizeProc(Sender: TObject);
используется для сложения 100 вещественных чисел
procedure TForm1.Button2Click(Sender: TObject);
собственно выполняет 3 вышеперечисленных процедуры
procedure TForm1.pcc5PrecizeProc(Sender: TObject);
используется для тестирования скорости системной шины
procedure TForm1.Button3Click(Sender: TObject);
при нажатии данной кнопки процессор последовательно производит вычисления над 64-мя операциями NOP, расположенными в первом случае в памчти, во втором- в кэше, и потом вычисляет задержку на передачу команд из памяти.
procedure TForm1.Button4Click(Sender: TObject);
используется для тестирования скорости вызова приложения в оперативную память (вызывается блокнот).
procedure TForm1.pcc7PrecizeProc(Sender: TObject);
здесь тестируется скорость заполнения кэша
procedure TForm1.pcc8PrecizeProc(Sender: TObject);
выясняем количество тактов, необходимых для выполнения одной операции NOP
NOP - Пустая операция.
---------------------------------------------------------
O D I T S Z A P C
----------------------------------------------------------------¬
¦Код Инструкция Такты Описание ¦
¦операции ¦
+--------T---------T-----T-----T-----T------T-------------------+
¦ ¦ ¦486 ¦386 ¦286 ¦86 ¦ ¦
+--------+---------+-----+-----+-----+------+-------------------+
¦90 ¦NOP ¦1 ¦3 ¦3 ¦3 ¦Нет операции. ¦
L--------+---------+-----+-----+-----+------+--------------------
Операция NOP не выполняет никакой операции. NOP - это одно-
байтовая инструкция, которая занимает место, но но не влияет на
содержимое машины (кроме (E)IP).
NOP - это псевдоним инструкции XCHG (E)AX, (E)AX.
procedure TProcessorClockCounter.TestPrecizeProc;
данная процедура помещает небольшой код в кэш память
procedure TProcessorClockCounter.TestPrecizeProcInCache;
данная процедура тестирует кусок кода, уже находящийся в кэш-памяти
procedure TDiadnostic.SpeedButton2Click(Sender: TObject);
данная процедура высвечивает сообщение о том, что программа тестирования памяти загружена в оперативную память.
Тестированию подвергается память, расположенная выше первого мегабайта, во избежание проблем. Программа использует три разновидности тестирования: Бегущая Единица, Бегущий Ноль, Шахматная доска. Перед тем как начать тестирование, программа определяет объём памяти, установленной в системе. Для этого в последние четыре байта, каждого мегабайта, записывается число, затем оно читается и сравнивается. Если оно не совпадает с записанным, значит этого и последующих мегабайт памяти не существует.
Особенности применяемых тестов следующие. Тест "Бегущая Единица" или "Бегущий Ноль" состоит в том, что в каждый байт памяти записывается значение 0FFh или 0 соответственно, затем это значение сравнивается. Несовпадение говорит об ошибке. В тесте "Шахматная доска" в память записываются значения вида 10101010b, затем они сдвигаются и сравниваются. Несовпадение - ошибка.
3.2. Руководство пользователю
П рограмма функционирует по следующему принципу:
П
ри первом запуске программы появляется окно с предложением подождать, пока программа соберет информацию о системе.
после этого появляется главное окно программы
в нем содержатся следующие закладки:
-
О
бщие – общая информация, т.е. тип процессора, операционная система, версия ОС, имя пользователя, организация.
-
Диски – информация о всех дисках, установленных в системе, таких как жесткие диски, СД-РОМ, флоппи-диски, а также информация об их емкости, метке
тома, и файловой системе.
-
п
амять – информация о системной памяти, о ее количестве, информация о файле подкачки.
-
К
лавиатура и мышь – информация о установленных в системе клавиатуре и мыши.
-
В
идео- информация о видеокарте, разрешении монитора, поставщике драйвера и т.д.
-
Д
иагностика – здесь собраны такие свойства, как тестирование процессора, памяти и проверка лотка СД-рома, а также информация об авторе этой маленькой программы
-
п
ри нажатии на кнопку тестирования процессора выпадает нижеуказанное окно, где производится тестирование процессора.
здесь, можно потестировать очень много параметров. Перечислим наиболее главные из них:
-тактовая частота – здесь применяется встроенный в микропроцессор счетчик тактов, с которого мы получаем текущую тактовую частоту
-скорость выполнения арифмеических операций – здесь мы тестируем, насколько быстро процессор выполняет основные арифметические операции с различными типами данных
-скорость системной шины – здесь мы проверяем скорость шины между процессором и памятью, т.е. за сколько тактов передается информация между ними. Используется инструкции НОП, расположенные в первом случае в оперативной памяти, а во вотром случае – в кэш-памяти.
В конце программа вычисляет задержку памяти, т.е. сколько тактов требуется именно на передачу данных из / в память .
-скорость вызова приложений – здесь тестируем, за сколько тактов вызывается в оперативнюу память стандартная программа Блокнот
-скорость заполнения кэша – тама мы заполняем все 256 или 512 килобайтов кэша инструкциями, и смотрим, за сколько тактов он заполнится.
Заключение
Известно, что выпускная работа завершает подготовку бакалавра и показывает готовность выпускника решать теоретические и практические задачи в условиях реальной трудовой деятельности.
Цель выпускной работы – систематизация и углубление теоретических и практических знаний студента по специальности и возможности их применения в конкретных условиях практической деятельности. Поэтому то, как студент выполнил выпускную работу, показывает, как он подготовлен.
В данной выпускной работе мною рассмотрена программа диагностики и тестирования компьютера, и в процессе ее написания я более хорошо понял назначение и принцип работы основных устройств персонального компьютера. Вышеозначенные знания, несомненно, пригодятся мне в дальнейшей моей трудовой деятельности. Я очень благодарен преподавательскому составу нашей кафедры за привитую мне способность учиться, невзирая на лень и другие обстоятельства.
Что касается социальной(общественной ценности) данной работы, то я уверен, что для меня она очень значима, так как в процессе разработки я научился терпимости по отношению к программам и вообще у меня получилась очень хорошая утилитка.
Список используемой литературы
-
С. Бобровский “DELPHI 5” Учебный курс Москва 2000г.
-
Справочник функций WinAPI.
Приложение 1 Листинг программы
// главный модуль
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type