- •Э. Таненбаум
- •Глава 2. Организация компьютерных систем 56
- •Глава 3. Цифровой логический уровень 139
- •Глава 4. Микроархитектурный уровень 230
- •Глава 5. Уровень архитектуры команд 334
- •Глава 6. Уровень операционной системы 437
- •Глава 7. Уровень языка ассемблера 517
- •Глава 8. Архитектуры компьютеров параллельного
- •Глава 9. Библиография 647
- •Глава 8 (архитектура компьютеров параллельного действия) полностью изменена. В ней подробно описываются мультипроцессоры (uma, numa и сома) и мультикомпьютеры (мрр и cow).
- •Глава 1
- •Глава 2 знакомит читателей с основными компонентами компьютера: процессорами, памятью, устройствами ввода-вывода. В ней дается краткое описание системной архитектуры и введение к следующим главам.
- •Глава 2
- •Центральный процессор Центральный процессор
- •12 Битов б
- •24 Входные линии
- •50 Входных линий
- •Глава 4
- •Старший бит
- •Блок выборки команд
- •Сигналы управления
- •Глава 5
- •Intel ia-64
- •Глава 6
- •Глава 7
- •3. Сведения о том, можно ли получить доступ к символу извне процедуры.
- •Глава 8
- •64 Элемента на каждый регистр
- •Intel/Sandia Option Red
- •00 Процессор 2
- •Глава 9
- •4. Mazidi and Mazidi, The 80x86ibm pc and Compatible Computers, 2nd ed.
- •5. McKee et al., Smarter Memory: ImprovingBandwidthforStreamed References.
- •4. McKusick et al., Design and Implementation ofthe 4.4bsd Operating System.
- •3. Hill, Multiprocessors Should Support Simple Memory-Consistency Models.
- •Ieee Scalable Coherent Interface Working Group, ieee, 1989.
- •Ieee Micro Magazine, vol. 18, p. 60-75, July/Aug. 1998b.
- •3Rd ed., Reading, ma: Addison-Wesley, 1998.
- •1988 Int'l. Conf. On Parallel Proc. (Vol. 11), ieee, p. 94-101, 1988.
- •Implementation of the 4.4 bsd Operating System», Reading, ma: Addison-Wesley, 1996.
- •In Shared Memory Multiprocessing», ieee Computer Magazine, vol. 30, p. 4450, Dec. 1997.
- •78Jan.-March 1999.
- •0 123456789Abcdef
- •I и Ijmii him
- •Э. Таненбаум
In Shared Memory Multiprocessing», ieee Computer Magazine, vol. 30, p. 4450, Dec. 1997.
141. Stets,K,Dwarkadas,S.,HardaveUas,N,Hunt,G,Kontothanassis,L,Parthasarathy,S,
and Scott, M. «CASHMERE-2L: Software Coherent Shared Memory on Clustered Remote-Write Networks», Proc. 16th Symp. on Operating Systems Principles, ACM, p. 170-183, 1997.
142. Sunderram, V. B. «PVM: A Framework for Parallel Distributed Computing»,
Concurrency: Practice and Experience, vol. 2, p. 315-339, Dec. 1990.
143. Swan, R.J., Fuller, S. H, andSiewiorek, D. P. «Cm* —A Modular Multiprocessors
Proc. NCC, p. 645-655,1977.
Tan, W. M. Developing USB PC Peripherals, San Diego, CA: Annabooks, 1997.
Tanenbaum, A. S. implications of Structured Programming for Machine Architectures Commun. ofthe ACM, vol. 21, p. 237-246, Mar. 1978.
Tanenbaum, A. S., and Woodhull, A. W. Operating Systems: Design and Implementation, 2nd ed. Upper Saddle River, NJ: Prentice Hall, 1997.
Thompson,K. «UNIXImplementations Bell Syst. Tech. J., vol. 57, p. 1931-1946, July-Aug. 1978.
Treleaven, P. «Control-Driven, Data-Driven, and Demand-Driven Computer Architecture», Parallel Computing, vol. 2, 1985.
Tremblay, M. and О connorj. M. «UltraSPARC I: A Four-Issue Processor Supporting Multimedia», IEEE Micro Magazine, vol. 16, p. 42-50, April 1996.
Triebel, W. A. The 80386, 80486, and Pentium Processor, Upper Saddle River, NJ: Prentice Hall, 1998.
linger, S. H. «A Computer Oriented Toward Spatial Problems», Proc. IRE, vol. 46, p. 1744-1750,1958.
Vahalia, U. UNIX Internals, Upper Saddle River, NJ: Prentice Hall, 1996.
Van DerPoel, W. L. «The Software Crisis, Some Thoughts and Outlooks», Proc. IFIP Congr. 68, p. 334-339, 1968.
154. Van Steen, M, Homburg, P. C, and Tanenbaum, A. S. «The Architectural Design of Globe: A Wide-Area Distributed System», IEEE Concurrency, vol. 7, p. 70-
78Jan.-March 1999.
Verstoep, K., Langedoen, K., andBal, H. E. «Efficient Reliable Mulicast on Myri-net», Proc. 1996 Int'l. Conf. on Parallel Processing, IEEE, p. 156-165,1996.
Weaver, D. L., and Germond, T. The SPARC Architecture Manual, Version 9,
Englewood Cliffs, NJ: Prentice Hall, 1994.
mikes, M. V «Computers Then and Now», J. ACM, vol. 15, p. 1-7, Jan. 1968.
Wilkes, M. V. «The Best Way to Design an Automatic Calculating Machine», Proc. Manchester Univ. Computer Inaugural Conf., 1951.
Wilkinson, B. Computer Architectural Design and Performance, 2nd ed., Engle-
wood Cliffs, NJ: Prentice Hall, 1994. Wilinson, 1994.
160. Wilkinson, B. and Allen, M'. Parallel Programming: Techniques and Applications
Using Networked Workstations and Parallel Computers, Upper Saddle River, NJ: Prentice Hall, 1999.
Wilson, J. «Challenges and Trends in Processor Design», IEEE Computer Magazine, vol. 31, p. 39-48, Jan. 1998.
Wilson, P. «Floating-Point Survival Kit», Byte, vol. 13, p. 217-226, March 1988.
Yeh, T.-Y, and Pott, Y. -N. «Two-Level Adaptive Training Branch Predictions Proc. 24th Int'l. Symp. on Microarchitectwe, ACM/IEEE, p. 51-61,1991.
Приложение А
Двоичныечисла
Арифметика, применяемая в компьютерах, сильно отличается от арифметики, которая используется людьми. Во-первых, компьютеры выполняют операции над числами, точность которых конечна и фиксирована. Во-вторых, в большинстве компьютеров используется не десятичная, а двоичная система счисления. Этим двум проблемам и посвящено приложение.
Числа конечной точности
Когда люди выполняют какие-либо арифметические действия, их не волнует вопрос, сколько десятичных разрядов занимает то или иное число. Физики, к примеру, могут вычислить, что во Вселенной присутствует 1078 электронов, и их не волнует тот факт, что полная запись этого числа потребует 79 десятичных разрядов. Никогда не возникает проблемы нехватки бумаги для записи числа.
С компьютерами дело обстоит иначе. В большинстве компьютеров количество доступной памяти для хранения чисел фиксировано и зависит от того, когда был разработан этот компьютер. Если приложить усилия, программист сможет представлять числа в два, три и более раз большие, чем позволяет размер памяти, но это не меняет природы данной проблемы. Память компьютера ограничена, поэтому мы можем иметь дело только с такими числами, которые можно представить в фиксированном количестве разрядов. Такие числа называются числами конеч-нойточности.
Рассмотрим ряд положительных целых чисел, которые можно записать тремя десятичными разрядами без десятичной запятой и без знака. В этот ряд входит ровно 1000 чисел: 000, 001, 002, 003,..., 999. При таком ограничении невозможно выразить определенные типы чисел. Сюда входят:
Числа больше 999.
Отрицательные числа.
Дроби.
Иррациональные числа.
5. Комплексные числа.
Одно из свойств набора всех целых чисел — замкнутость по отношению к операциям сложения, вычитания и умножения. Другими словами, для каждой пары целых чисел i nj числа i+j, i-j и ixj — тоже целые числа. Ряд целых чисел не замкнут относительно деления, поскольку существуют такие значения г nj, для которых i/j не выражается в виде целого числа (например, 7/2 или 1/0).
Числа конечной точности не замкнуты относительно всех четырех операций. Ниже приведены примеры операций над трехразрядными десятичными числами:
600+600=1200 (слишком большое число); 003-005=-2 (отрицательное число);
050x050=2500 (слишком большое число);
007/002=3,5 (не целое число).
Отклонения можно разделить на два класса: операции, результат которых превышает самое большое число ряда (ошибка переполнения) или меньше, чем самое маленькое число ряда (ошибка из-за потери значимости), и операции, результат которых не является слишком маленьким или слишком большим, а просто не является членом ряда. Из четырех примеров, приведенных выше, первые три относятся к первому классу, а четвертый — ко второму классу.
Поскольку размер памяти компьютера ограничен и он должен выполнять арифметические действия над числами конечной точности, результаты определенных
вычислений будут неправильными с точки зрения классической математики. Вычислительное устройство, которое выдает неправильный ответ, может показаться странным на первый взгляд, но ошибка в данном случае — это только следствие его конечной природы. Некоторые компьютеры содержат специальное аппаратное обеспечение, которое обнаруживает ошибки переполнения. Алгебра чисел конечной точности отличается от обычной алгебры. В качестве
примера рассмотрим ассоциативный закон a+(b-c)=(a+b)-c.
Вычислим обе части выражения для а=700, 6=400 и с=300. В левой части сначала вычислим значение (b-с). Оно равно 100. Затем прибавим это число КЙ И получим 800. Чтобы вычислить правую часть, сначала вычислим (а+Ь).
Для трехразрядных целых чисел получится переполнение. Результат будет зависеть от компьютера, но он не будет равен 1100. Вычитание 300 из какого-то числа, отличного от 1100, не даст результата 800. Ассоциативный закон не имеет силы. Порядок операций важен.
Другой пример — дистрибутивный закон:
ах (b-c)=axb-axc.
Сосчитаем обе части выражения для а=5,6=210 и с= 195. В левой части 5х 15=75. В правой части 75 не получается, поскольку axb выходит за пределы ряда.
Исходя из этих примеров, кто-то может сделать вывод, что компьютеры совершенно непригодны для выполнения арифметических действий. Вывод, естественно, неверен, но эти примеры наглядно иллюстрируют важность понимания, как работает компьютер и какие ограничения он имеет.
Позиционные системы счисления
Обычное десятичное число состоит из цепочки десятичных разрядов и иногда десятичной запятой. Общая форма записи показана на рис. А. 1. Десятка выбрана в качестве основы возведения в степень (это называется основанием системы счисления), поскольку мы используем 10 цифр. В компьютерах удобнее иметь дело с другими основаниями системы счисления. Самые важные из них — 2, 8 и 16. Соответствующие системы счисления называются двоичной, восьмеричной и шест-надцатеричной соответственно.
Сотни Десятки Единицы Десятые Сотые Тысячные
dn ... 62 d-| d0 • d_i d-2 d-3 ... d.|<
n
Число =Ed|x10' l=-k
Рис. А. 1. Общая форма десятичного числа
&-ичная система требует к различных символов для записи разрядов с 0 по к— 1. Десятичные числа строятся из 10 десятичных цифр
0123456789
Двоичные числа, напротив, строятся только из двух двоичных цифр
01
Восьмеричные числа состоят из восьми цифр 01234567
Для шестнадцатеричных чисел требуется 16 цифр. Это значит, что нам нужно 6 новых символов. Для обозначения цифр, следующих за 9, принято использовать прописные латинские буквы от А до F. Таким образом, шестнадцатеричные числа строятся из следующих цифр.