Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АНГЛИЙСКИЙ__МОЙ - копия.doc
Скачиваний:
28
Добавлен:
13.08.2019
Размер:
1.83 Mб
Скачать

A. Comprehension

1. Answer these questions:

  1. Which types of computers are mere in terms of the classifica- tion based on operational principle? Characterize each one.

  2. How can computers be classified according to the principle of physical structures and the purpose of their use? Speak on the diree types.

2. Summarize the text using the words from Vocabulary Exercises.

B. Vocabulary

3. Give English-Russian equivalents of the following words and ex- pressions:

tower; suggest; точный, определенный; robotics; наблюдение, обозрение, обзор; frequently; настольный компьютер; tablet; основная масса, большая часть чего-л.; reliability; основной,

39

базовый; incapable; немыслимый; come across; simultaneously; исходя из, на основе; in respect that; устаревший, вышедший из употребления; Personal Digital Assistant; зачастую, часто; laptop; precise; наводить на мысль, говорить о, означать; variable; крупный масштаб; extinct; (случайно) встретиться с кем-л., натолкнуться на что-л.; core; desktop; надёжность; large scale; одновременно, совместно; неспособный к чему-л., на что-л.; bulk; fast расе; карманный компьютер; in terms of; smooth; учитывая, принимая во внимание; survey; переменная (величина); inconceivable; робототехника; palmtop; персональный цифровой секретарь; handheld PC.

4. Choose the most suitable words from those given in brackets without consulting the text. Translate the sentences into Russian.

  1. The analog computer is almost (a precise, an extinct) type of computer these days.

  2. The digital computers are too slow and (inconceivable, inca- pable) of large scale mathematical operation.

  3. Based on speed and (capacity, large scale, reliability) they can be divided into three categories of computers.

  4. Mainframe computers are (core, bulk) computers which are used for desktop functions of over one hundred people (simul- taneously, frequently).

  5. Mini computers can support the (simultaneous, smooth) work- ing of up to 100 users.

  6. The Super Computer is somewhat similar to mainframe com- puters and is used in economic (forecasts, surveys).

  7. Usage of different types of computers has made life both smooth and (inconceivable, fast paced).

5. Find the word not belonging to the given synonymic group. Explain your choice.

  1. survey, review, investigation, analysis, solution, consideration, evaluation;

  2. suggest, imply, indicate, hint, bring to mind, predate, evoke;

t

V- -3.~ bulk, majority, greater part, almost all, lion's share, substance, v merger, - ' -:--'-'--

> 4. extinct, obsolete, entire; out of date, dead, vanished; '■' *" 5. come across, fait upon,- encounter, happen upon, eliminate; •Л v6. in' respect that, taking into account/consideration, in view of,

in lieu of, with regard to; '" "1. simultaneously, explicitly, all together, at the same time, at once;

  1. smooth, effortless, easy, calm, quiet, tranquil, tremendous, placid;

  2. precise, exact, accurate, entire, particular, clear-cut, fixed;

  1. reliability, durability, improvement, strength, reliableness;

  2. fast paced, rapid, quick, prompt, swift, affordable;

  3. frequently, often, regularly, normally, habitually, condition- ally, repeatedly.

С Reading and Discussion

£ Head the text. White reading insert the missing name of a computer type. Ask your group-mates some Questions to cover the basic char- acteristics of each computer type given in the text. Note the points of difference between the two English texts.

handle

hefty drive stylus wearable

There is a computer for every use under heaven, or so it seems. Let's look at the kind* of «огпрюеигййа mere are, based on general performance levels.

... computers for personal use come in all shapes and sizes, from tiny PDAs (personal digital assistant) to hefty PC (personal computer) towers. More specialized models are announced each week — trip planners, expense account pads, language translators. , When talking about PC computers, most people probably mink of the ... type, which are designed to sit on your desk. (Bet you figured that one out!) The tower and the smaller mini-tower style cases have become popular as people started needing more room for extra drives ipide. Repairmen certainly appreciate the roominess inside for all the cables and circuit boards and their knuckles.

40

A workstation is part of a computer network and generally would be expected to have more than a regular desktop PC of most every- thing, like memory, storage space, and speed.

The market for the smallest PCs is expanding rapidly. Software is becoming available for the small types of PC like the ... (PPC) and ... (HPC). This new software is based on new operating systems like Windows CE (for Consumer Electronics). You may find simplified versions of the major applications you use. One big advantage for the newer programs is the ability to link the small computers to your home or work computer and coordinate the data. So you can carry a tiny computer like a PalmPilot around to enter new phone numbers and appointments and those great ideas you just had. Then later you can move this information to your main computer.

With a Tablet PC you use an electronic stylus to write on the screen, just like with a pen and paper, only your words are in digital ink. The Tablet PC saves your work just like your wrote it (as a pic- ture), or you can let the Hand Recognition (HR) software turn your chicken-scratches into regular text.

... is the workhorse of the business world and is the heart of a network of computers or terminals which allows hundreds of people to work at the same time on the same data. It requires a special envi- ronment — cold and dry.

The ... is the top of the heap in power and expense. These are used for jobs that take massive amounts of calculating, like weather forecasting, engineering design and testing, serious decryption, eco- nomic forecasting, etc.

The latest trend in computing is wearable computers. Essentially, common computer applications (e-mail, database, multimedia, cal- endar/scheduler) are integrated into watches, cell phones, visors and even clothing!

•, - Server ..■ ^ . .

The term server actually refers to a computer's function rather man to a specific kind of computer. A server runs a network of computers. It handles the sharing of equipment like printers and the communication between computers on the network. For such tasks a computer would need to be somewhat more capable than a desktop computer. It would need:

taf0er memory

larger storage capacity

high speed communications


more power

The... has become less important since the PC has gotten so pow- erful on its own. In fact, the ordinary new PC is much more powerful than minicomputers used to be. Originally this size was developed to handle specific tasks, like engineering and CAD calculations, that tended to tie up the main frame.

7. Translate the text without a dictionary. Use the words given at Hie bottom.

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

Основными признаками миникомпьютеров (или персо- нальных компьютеров) и микрокомпьютеров являются шинная организация системы, высокая стандартизация аппаратных и программных средств, ориентация на широкий круг потреби- телей. Персональные компьютеры могут быть настольными и портативными.

-—42 —

43-^-

Миникомпьютеры занимают промежуточное положение между большими вычислительными машинами и микроком- пьютерами, и они играют роль серверов, к которым подклю- чаются десятки и сотни терминалов или микрокомпьютеров. Миникомпьютеры используются в крупных фирмах, госу- дарственных и научных учреждениях, учебных заведениях, компьютерных центрах для решения задач, с которыми не способны справиться микрокомпьютеры, и для централизован- ного хранения и переработки больших объемов информации. Основными производителями миникомпьютеров являются фирмы Ай-Ти-энд-Ти (AT&T), Интел (Intel), Хьюлетт-Паккард (Hewlett-Packard), Digital Equipment.

Мейнфреймы — это универсальные, большие компьютеры общего назначения. Изначально мейнфреймы были предназна- чены для обработки огромных объемов информации. Наиболее крупный производитель мейнфреймов — фирма Ай-Би-Эм (IBM). Мейнфреймы отличаются исключительной надежнос- тью, высоким быстродействием, очень большой пропускной способностью устройств ввода и вывода информации. К ним могут подсоединяться тысячи терминалов или микрокомпьюте- ров пользователей. Мейнфреймы используются крупнейшими корпорациями, правительственными учреждениями, банками. С расцветом микрокомпьютеров и миникомпьютерных систем значение мейнфреймов сократилось. Стоимость мейнфреймов относительно высока: один компьютер с пакетом прикладных программ оценивается минимум в миллион долларов. Не- смотря на это, они активно используются в финансовой сфере и оборонном комплексе, где занимают от 20 до 30 процентов компьютерного парка, так как использование мейнфреймов для централизованного хранения и обработки достаточно большого объема информации обходится дешевле, чем обслуживание распределенных систем обработки данных, состоящих из сотен и тысяч персональных компьютеров.

Суперкомпьютеры необходимы для работы с приложени- ями, требующими производительности как минимум в сотни миллиардов операций в секунду. Столь громадные объемы вычислений нужны для решения задач в аэродинамике, метеоро- логии, физике высоких энергий, геофизике. Суперкомпьютеры нашли свое применение и в финансовой сфере при обработке

больших объемов сделок на биржах. Их отличает высокая стоимость — от пятнадцати миллионов долларов, поэтому решение о покупке таких машин нередко принимается на госу- дарственном уровне, развита система торговли подержанными суперкомпьютерами.

шина — wire; пропускная способность — (carrying) capacity; объем информации — information content; приложение — application; сделка — bargain.

8. Summarize all the information concerning the types of computers and make a detailed report on this topic.

44

UNIT 5

Programming Languages

Programming languages provide various ways of specifying pro- grams for computers to run. Unlike natural languages, programming languages are designed to permit no ambiguity and to be concise. They are purely written languages and are often difficult to read aloud. They are generally either translated into machine language by a compiler or an assembler before being run, or translated directly at run time by an interpreter. Sometimes programs are executed by a hybrid method of the two techniques. There are thousands of different programming languages — some intended to be general purpose, others useful only for highly specialized applications.

Programming Languages:

Lists of programming Timeline of programming languages, languages Categorical list of programming lan-

guages, Generational list of program- ming languages, Alphabetical list of programming languages, Non-English- based programming languages

Commonly used As- ARM, MIPS, x86 sembly languages

Commonly used High BASIC, С, С+ +, C#, COBOL, For- level languages tran, Java, Lisp, Pascal

Commonly used Script- Bourne script, JavaScript, Python, ing languages Ruby, PHP, Perl

While it is possible to write computer programs as long lists of numbers (machine language) and this technique was used with many early computers, it is extremely tedious to do so in practice,

especially for complicated programs. Instead, each basic instruction can be given a short name that is indicative of its function and easy to remember — mnemonic such as ADD, SUB, MULT or JUMP. These mnemonics are collectively known as a computer's assembly language. Converting programs written in assembly language into something the computer can actually understand (machine language) is usually done by a computer program called an assembler. Machine languages and the assembly languages that represent them (collec- tively termed low-level programming languages) tend to be unique to a particular type of computer. For instance, an ARM architecture computer (such as may be found in a PDA or a hand-held videogame) cannot understand die machine language of an Intel Pentium or me AMD Athlon 64 computer that might be in a PC.

Though considerably easier than in machine language, writing long programs in assembly language is often difficult and error prone. Therefore, most complicated programs are written in more abstract high-level programming languages that are able to express the needs of the computer programmer more conveniently (and thereby help reduce programmer error). High level languages are usually «compiled» into machine language (or sometimes into assembly language and then into machine language) Using another computer program called a compiler. Since high level languages are more abstract uian assembly language, it is possible to use different compilers to translate the same high level language program into the machine language of many different types of computer. This is part of the means by which software like video games may be made available for different computer architectures such as personal computers and various video game consoles.

Exercises

A. Comprehension

1. Answer these questions:

  1. What is the difference between natural and programming languages?

  2. How can programming languages be translated into machine language?

47

  1. How can machine language be defined?

  2. What does a computer's assembly language correspond to?

  3. Are machine languages and the assembly languages that rep- resent them identical for all types of computers? Why?

  4. How can assembly languages be collectively termed?

  5. What is the name of other types of programming languages? Give three basic characteristics to them.

2. Summarize the text using the words from Vocabulary Exercises.

B. Vocabulary

3. Give English-Russian equivalents of the following words and ex- pressions:

intend; функционировать; timeline; reduce; компилятор, транс- лятор; краткий, сжатый, лаконичный; assembler; console; предназначать, планировать (что-л.); run; ambiguity; подвер- женный (ошибкам); concise; давать возможность, допускать; timeline; указывающий, показывающий; понижать, сокращать; complicated; неопределенность, неясность; compiler; временная последовательность; prone; мнемоника, мнемотехника; permit; пульт (управления); indicative; mnemonic.

4. Choose the most suitable words from those given in brackets with- out consulting the text. Prove your choice. Translate the sentences into Russian.

  1. Programming languages provide various ways of specifying programs for computers to (input, run).

  2. Each basic instruction can be given a short name that is (indica- tive of, similar to) its function and easy to remember — mne- monic such as ADD, SUB, MULT or JUMP.

  3. Some programming languages are (constrained, intended) to be general purpose, others useful only for highly specialized applications.

  4. To write computer programs as long lists of numbers is ex- tremely tedious in practice, especially for (embedded, com- plicated) programs.

  1. Converting programs written in assembly language into some- thing the computer can actually understand is usually done by a computer program called a (compiler, assembler).

  2. Writing long programs in assembly language is often difficult and (benign, error prone).

  3. Usage of different compilers to translate the same high level language program into me machine language of many different types of computer is part of the means by which software like video games may be made available for different computer architectures such as personal computers and various video game (consoles, screens).

C. Reading and Discussion

5. Study the words given at the bottom and explain their meanings. Read the text. Define each kind of high-level languages (advantages, drawbacks, examples). State main ideas in Russian.

Every program ultimately has to be executed as a stream of bytes that are instructions in your computer's machine language. But hu- man beings don't deal with machine language very well; doing so has become a rare, black art even among hackers.

Almost all Unix code except a small amount of direct hardware- inteiface support in the kernel itself is nowadays written in a high-level language^ (The «high-level» in this term is a historical relic meant to distinguish these from «low-level» assembler languages, which are basically thin wrappers around machine code.)

There are several different kinds of high-level languages. In order to talk about these, you'll find it useful to bear in mind that the source code of a program (me human-created, editable version) has to go through some kind of translation into machine code that the machine can actually run.

1. Compiled languages

The most conventional kind of language is a compiled language. Compiled languages get translated into runnable files of binary machine Code by a special program called (logically enough) a compiler. Once the binary has been generated, you can run it directly without look-

48

49 —

ing at the source code again. (Most software is delivered as compiled binaries made from code you don't see.)

Compiled languages tend to give excellent performance and have the most complete access to the OS» but also to be difficult to program in.

C, the language in which Unix itself is written, is by far the most important of mese (with its variant C++). FORTRAN is another compiled language still used among engineers and scientists but years older and much more primitive. In the Unix world no other compiled languages are in mainstream use. Outside it, COBOL is very widely used for financial and business software.

There used to be many other compiler languages, but most of them have either gone extinct or are strictly research tools. If you are a new Unix developer using a compiled language, it is overwhelmingly likely to be С or C+ + .

2. Interpreted languages

An interpreted language depends on an interpreter program that reads the source code and translates it on ию fly into computations and system calls. The source has to be re-interpreted (and the interpreter present) each time the code is executed.

Interpreted languages tend to be slower than compiled languages, and often have limited access to die underlying operating system and hardware. On the other hand, they tend to be easier to program and more forgiving of coding errors than compiled languages.

Many Unix utilities, including the shell and ВС and SED and AWK, are effectively small interpreted languages. BASICs are usually interpreted. So is Tel. Historically, the most important interpretive language has been LISP (a major improvement over most of its suc- cessors). Today, Unix shells and the Lisp that lives inside the Emacs editor are probably the most important pure interpreted languages.

З.Р-code languages

Since 1990 a kind of hybrid language mat uses bom compila- tion and interpretation has become increasingly important. P-code languages are like compiled languages in that the source is translated to a compact binary form which is what you actually execute, but mat form is not machine code. Instead it's pseudocode (or p-code),

i is usually a lot simpler but more powerful than a real machine r language. When you run the program, you interpret the p-code. P-code can ran nearly as fast as a compiled binary (p-code in- terpreters can be made quite simple, small and speedy). But p-code languages can keep the flexibility and power of a good interpreter. '«« Important p-code languages include Python, Perl, and Java.

ultimately; deal with; rare; black art; Unix; kernel; relic; distinguish; compiled language; source code; OS (=operating system); interpreted language; utility; shell; ВС (binary code); SED (smoke-emitting $ode); AWK; BASIC; Tel; LISP; P-code language (pseudocode); fython; Perl

," f q

h-

6. Divide the text into parts and give the title to each of them in

English. Reproduce the text in English emphasizing the new informa-

фп not mentioned in the previous texts and points of difference in

presentation the facts.

Ы

>■ Язык программирования —формальная знаковая система, предназначенная для записи программ. Программа обычно йфедставляет собой некоторый алгоритм в форме, понятной для асполнителя (например, компьютера). Язык программирования Определяет набор лексических, синтаксических и семантичес- itfix правил, используемых при составлении компьютерной 1фограммы. Он позволяет программисту точно определить *©, на какие события будет реагировать компьютер, как будут ;я и передаваться данные, а также какие именно дейс- следует выполнять над этими данными при различных Обстоятельствах. i Со времени создания первых программируемых машин человечество придумало уже более восьми с половиной тысяч «зыков программирования. Каждый год их число пополняется Новыми. Некоторыми языками умеет пользоваться только не- вйвыпое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты Иногда применяют в своей работе более десятка разнообразных программирования. Создатели языков по-разному толкуют понятие «язык *> Цкнраммирования». К наиболее распространенным утвержде-

50-—

51

ниям, признаваемым большинством разработчиков, относятся следующие:

Функция: язык программирования предназначен для на- писания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.

Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека компьютеру, в то время, как естественные языки используются для общения людей между собой. В принципе можно обобщить определение «языки программирования» — это способ передачи команд, приказов, четкого руководства к дейс- твию; тогда как человеческие языки служат также для обмена информацией.

Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

Языки программирования могут быть разделены на компи- лируемые и интерпретируемые.

Программа на компилируемом языке при помощи специаль- ной программы компилятора преобразуется (компилируется) в набор инструкций для данного типа процессора (машинный код) и далее записывается в исполняемый файл, который может быть запущен на выполнение как отдельная программа. Другими словами, компилятор переводит программу с языка высокого уровня на низкоуровневый язык, понятный процессору.

Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) ее текст без предварительного перевода. При этом программа остается на исходном языке и не может быть запущена без ин- терпретатора. Можно сказать, что процессор компьютера — это интерпретатор машинного кода.

Кратко говоря, компилятор переводит программу на ма- шинный язык сразу и целиком, создавая при этом отдельную программу, а интерпретатор переводит на машинный язык прямо во время исполнения программы.

Разделение на компилируемые и интерпретируемые языки является несколько условным. Так, для любого традиционно

Компилируемого языка, как, например, Паскаль, можно напи- сать интерпретатор. Кроме того, большинство современных «чистых» интерпретаторов не исполняют конструкции языка не- посредственно, а компилируют их в некоторое высокоуровневое промежуточное представление (например, с разыменованием переменных и раскрытием макросов).

Для любого интерпретируемого языка можно создать компи- лятор — например, язык Лисп, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений. Создаваемый во время исполнения программы код может так же динамически компилироваться во время исполнения.

Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных про- грамм, так как уже переведены на машинный язык. Вместе с тем при каждом изменении текста программы требуется ее перекомпиляция, что создает трудности при разработке. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же опе- рационной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.

Интерпретируемые языки обладают некоторыми специ- фическими дополнительными возможностями, кроме того, программы на них можно запускать сразу же после изменения, У'П'о облегчает разработку. Программа на интерпретируемом языке может быть зачастую запущена на разных типах машин н операционных систем без дополнительных усилий. Однако герпретируемые программы выполняются заметно медлен- , чем компилируемые, кроме того, они не могут выполняться вз дополнительной программы-интерпретатора.

Некоторые языки, например, Java и С#, находятся между Компилируемыми и интерпретируемыми. А именно, программа |; компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется вир- туальной машиной. Для выполнения байт-кода обычно исполь- зуется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код ^непосредственно во время выполнения программы по техноло- гии компиляции «на лету» (Just-in-time compilation, JIT). Для Java

— 52 •

53

байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для С# — Common Language Runtime.

Подобный подход в некотором смысле позволяет использо- вать плюсы как интерпретаторов, так и компиляторов. Следует упомянуть также оригинальный язык Форт (Forth), который является как бы одновременно интерпретируемым и компи- лируемым.

7. Talking points.

  1. Programming languages: definition, ways of designing, func- tion, classification.

  2. High-level languages.

UNIT 6

Computer Architecture

In computer engineering, computer architecture is the conceptual design and fundamental operational structure of a computer system. It is a blueprint and functional description of requirements (especially speeds and interconnections) and design implementations for the various parts of a computer — focusing largely on the way by which the central processing unit (CPU) performs internally and accesses addresses in memory.

It may also be defined as the science and art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals.

Computer architecture comprises at least three main subcategories: instruction set architecture, microarchitecture and system design.

OS and

applications

A typical vision of a computer architecture as a series of abstraction layers: hardware, firmware, assembler, kernel, operating system and applications.

Instruction set architecture, or ISA, is the abstract image of a computing system that is seen by a machine language (or assembly language) programmer, including the instruction set, memory address ■ modes, processor registers, and address and data formats.

— 55

An instruction set is (a list of) all the instructions, and all their variations, that a processor can execute.

Instructions include:

Arithmetic instructions such as ADD and SUBTRACT

Logic instructions such as AND, OR, and NOT

Data instructions such as MOVE, INPUT, OUTPUT, LOAD, and STORE

Control flow instructions such as GOTO, IF ... GOTO, CALL, and RETURN.

Computers with different microarchitectures can share a common instruction set. For example, the Intel Pentium and me AMD Athlon implement nearly identical versions of die x86 instruction set, but have radically different internal designs.

Microarchitecture, also known as computer organization is a lower level, more concrete and detailed, description of the system that involves how the constituent parts of me system are interconnected and how they interoperate in order to implement the ISA. The size of a computer's cache for instance, is an organizational issue that generally has nothing to do with the ISA.

System design includes all of the other hardware components within a computing system such as:

system interconnects such as computer buses and switches

memory controllers and hierarchies

CPU off-load mechanisms such as direct memory access

issues like multi-processing.

Once both ISA and microarchitecture has been specified, the ac- tual device needs to be designed into hardware. This design process is called implementation. Implementation is usually not considered architectural definition, but rather hardware design engineering.

Implementation can be further broken down into three (not fully distinct) pieces:

Logic Implementation — design of blocks defined in the micro- architecture at (primarily) me register-transfer and gate levels.

Circuit Implementation — transistor-level design of basic ele- ments (gates, multiplexers, latches, etc.) as well as of some larger blocks (ALUs, caches, etc.) that may be implemented at this level, Or even (partly) at the physical level, for performance reasons.

Physical Implementation — physical circuits are drawn out, die different circuit components are placed in a chip floor-plan or on a board and the wires connecting them are routed.

For CPUs, the entire implementation process is often called CPU design.

More specific usages of the term include more general wider-scale hardware architectures, such as cluster computing and Non-Uniform Memory Access (NUMA) architectures.

Some practitioners of computer architecture at companies such as Intel and AMD use more fine distinctions:

Macroarchitecture — architectural layers that are more abstract than microarchitecture, e.g. ISA.

Assembly ISA — a smart assembler may convert an abstract assembly language common to a group of machines into slightly dif- ferent machine language for different implementations

Programmer Visible Macroarchitecture — higher level language tools such as compilers may define a consistent interface or contract to programmers using diem, abstracting differences between under- lying ISA, UISA, and microarchitectures. E.g. the C, C+ + , or Java standards define different Programmer Visible Macroarchitec- ture — although in practice the С microarchitecture for a particular computer includes

MISA (Microcode Instruction Set Architecture) — a family of machines with different hardware level microarchitectures may share a common microcode architecture, and hence a MISA.

Pin Architecture — the set of functions that a microproces- sor is expected to provide, from the point of view of a hardware platform. E.g. the x86 A20M, FERR/IGNNE or FLUSH pins, and the messages that the processor is expected to emit after completing a cache invalidation so that external caches can be invalidated. Pin architecture functions are more flexible than ISA functions — external hardware can adapt to changing encodings, or changing from a pin to a message — but the functions are expected to be provided in successive implementations even if the manner of encoding them changes.

— 56 —

— 57 —

Design Croats

The exact form of a computer system depends on the constraints and goals for which it was optimized. Computer architectures usually trade off standards, cost, memory capacity, latency and throughput. Sometimes other considerations, such as features, size, weight, reliability, expandability and power consumption are factors as well.

The most common scheme carefully chooses the bottleneck that most reduces the computer's speed. Ideally, the cost is al- located proportionally to assure that the data rate is nearly the same for all parts of the computer, with the most costly part being the slowest. This is how skillful commercial integrators optimize personal computers.

Cost

Generally cost is held constant, determined by either system or commercial requirements.

Performance

Computer performance is often described in terms of clock speed (usually in MHz or GHz). This refers to the cycles per second of the main clock of the CPU. However, mis metric is somewhat misleading, as a machine with a higher clock rate may not necessarily have higher performance. As a result manufacturers have moved away from clock speed as a measure of performance. Computer performance can also be measured with the amount of cache a processor has. If the speed, MHz or GHz, were to be a car then the cache is like a traffic light. No matter how fast the car goes, it still will not be stopped by a green traffic light. The higher the speed is, and the greater the cache is, the faster a processor runs.

Modern CPUs can execute multiple instructions per clock cycle, which dramatically speeds up a program. Other factors influence speed, such as the mix of functional units, bus speeds, available memory, and the type and order of instructions in the programs be- ing ran.

There are two main types of speed, latency and throughput. Latency is the time between the start of a process and its comple- tion. Throughput is the amount of work done per unit time. Interrupt

latency is the guaranteed maximum response time of the system to an electronic event (e.g. when the disk drive finishes moving some data). Performance is affected by a very wide range of design choices — for example, pipelining a processor usually makes latency worse (slower) but makes throughput better. Computers that control machinery usually need low interrupt latencies. These computers operate in a real-time environment and fail if an operation is not completed in a specified amount of time. For example, computer-controlled anti-lock brakes must begin braking almost immediately after they have been instructed to brake.

The performance of a computer can be measured using other metrics, depending upon its application domain. A system may be CPU bound (as in numerical calculation), I/O bound (as in a web- serving application) or memory bound (as in video editing). Power consumption has become important in servers and portable devices like laptops.

Benchmarking tries to take all these factors into account by measuring the time a computer takes to run through a series of test programs. Although benchmarking shows strengths, it may not help one to choose a computer. Often the measured machines split on different measures. For example, one system might handle scientific applications quickly, while another might play popular video games more smoothly. Furthermore, designers have been known to add special features to their products, whether in hardware or software, which permit a specific benchmark to execute quickly but which do not offer similar advantages to other, more general tasks.

Power Consumption

Power consumption is another design criterion that factors in the design of modern computers. Power efficiency can often be traded for performance or cost benefits. With the increasing power density of modern circuits as the number of transistors per chip scales (Moore's Law), power efficiency has increased in importance. Recent proces- sor designs such as the Intel Core 2 put more emphasis on increasing power efficiency. Also, in the world of embedded computing, power efficiency has long been and remains the primary design goal next to performance.

59