В данный исторический период существовали программисты, рассматривавшие средства автоматизации своего труда как инструмент для ленивых, портящий качество продукции — то есть прикладной программы. Нужно сказать, что в то время эти утверждения действительно подтверждались практикой, которая, как известно, является критерием истины. Так же, как аналоговые машины по многим показателям превосходили цифровые, так и программы, написанные непосредственно в машинных кодах, оказывались короче, чем результат трансляции программ, подготовленных с использованием алгоритмических языков. Таким образом, правильный путь в те годы определяла не практическая сметка, а способность предугадать прогресс в смежных областях. В духе времени можно было бы даже поставить марксистскую концепцию о роли практики в иронические кавычки, если бы и в Евангелии не было прямого указания на то, что пророков истинных надо отличать от пророков ложных по их делам, то есть по практике. Поэтому не будем иронизировать по поводу ошибочных научных идей пятидесятых годов. Именно в эти годы был предложен алгоритмический язык FORTRAN, получивший впоследствии ироническое название «бессмертный». Уже начинает создаваться программное обеспечение в виде достаточно внушительных библиотек стандартных подпрограмм.
Много воды утекло с тех пор, и сейчас можно по-разному рассуждать о технологических направлениях полувековой давности и имели ли они тот или иной успех. Однако очевидно одно: за эти пятьдесят с лишним лет компьютерная индустрия, а вместе с ней и рассматриваемые в данной работе компьютерные системы (КС) претерпели множество количественных и качественных изменений. Мы же, собственно, попытаемся в некоторой степени проследить путь эволюции и выявить наиболее важные закономерности в развитии этих систем, опираясь как можно больше на нынешнее положение дел в данной отрасли.
Целостность КС, как и любых технических систем, обусловлена зависимостью протекающих в них вещественных, энергетических и информационных процессов преобразования (обработки), хранения, обмена (передачи) и управления. В реальных технических системах процессы преобразования, хранения и обмена вещества, энергии и информации взаимосвязаны. Управление этими процессами осуществляется информационными потоками, материализуемыми вещественными и энергетическими носителями.
Данная закономерность удачно иллюстрируется, в частности, единством и взаимосвязью энергетических и информационных процессов в элементах вакуумно-ламповой, полупроводниковой и интегральной технологий, осуществляющих обработку информации в аналоговой или цифровой форме. При выдаче информации и генерации управляющих воздействий формируются соответствующие информационные последовательности с целью дальнейшего преобразования в энергетические и вещественные воздействия на объект управления с отображением информации о ходе процесса (преобразование формы представления информации).
В процессе обработки информации при энергетическом воздействии осуществляется переключение логических запоминающих элементов процессора и памяти. Если, в свою очередь, рассматривать внутреннюю структуру логических и запоминающих элементов, то нетрудно заметить, что различным информационным изменениям элементов соответствуют определенные изменения в структуре вещества, из которого сделаны эти элементы. В полупроводниковых элементах, например, осуществляется изменение проводимости p-n-перехода, неплохими примерами могут также послужить разнообразные носители информации: в магнитных наличию двоичного нуля/единицы соответствует определенное состояние некоторой области магнитного вещества, в оптических при записи данных происходит изменение оптических свойств поверхности диска. То же можно сказать и о передаче информации – в применяемых интерфейсах она осуществляется посредством распространения электромагнитных колебаний, то есть энергии.
Эта закономерность выражается в функциональной и структурной интеграции отдельных подсистем и сокращении числа промежуточных уровней и видов преобразования вещества, энергии и информации в процессе функционирования КС.
Функциональная целостность рассматривается в ее отношении к внешнему окружению (среде) и обусловливается единством и взаимосвязью функций системы и ее подсистем, а структурная целостность системы рассматривается в отношении ее состава, фиксированной совокупности элементов и связей между ними. В процессе эволюции КС повышение ее целостности может выражаться в том, что сама система получает возможность перейти в подсистему более сложной системы. Прекрасной иллюстрацией этого положения служит микропроцессор, повторивший структуру машин предшествующих поколений и рассматриваемый в 70-х гг. на уровне системы, в дальнейшем превратившийся в элемент мощных суперкомпьютеров.
Из более близких нам примеров можно отметить, скажем, дисковые контроллеры и периферийные контроллеры ввода-вывода, которые долгое время были отдельными устройствами, а теперь встраиваются прямо в чипсет, то есть являются частью системной платы. Вспомним также процессорный L2 кэш – сейчас он составляет с ядром CPU единое целое, хотя недавно выполнялся отдельным блоком, а несколько лет назад вообще устанавливался в специальный слот.
В процессе развития систем определенного класса сохраняется совокупность их основных (базовых) функций. Применительно к компьютерным системам можно утверждать: каждое новое компьютерное поколение сохраняет (воспроизводит) совокупность основных функций, реализуемых компьютерами предшествующего поколения. Какие это функции? PMTC – Processing (обработка), Memory (хранение), Transfer (передача), Control (управление). Все это сохраняется на протяжении всех поколений компьютерных систем. Наиболее интенсивным изменениям подвергаются сервисные функции. Эти изменения направлены на увеличение производительности и совершенствование интерфейса пользователя с системой.
Действительно, ни один из существующих типов КС не выполняет каких-либо функций, кроме вышеуказанных. Единственные изменения, которые происходят с появлением новой КС – это все лучшее выполнение этих функций: новый РС все быстрее производит обработку данных, полученных с устройств ввода, новый сервер имеет все более емкую дисковую систему, больший объем памяти и производительный CPU, новый коммуникационный стандарт обеспечивает большую пропускную способность и надежность.
Эффективными и жизнеспособными являются системы, структура которых максимально соответствует реальным функциям. Два параллельно идущих эволюционных процесса – эволюция функций и эволюция технологий – стимулируют направленное совершенствование функционально-структурной организации КС. Известно следующее утверждение: «В идеальном случае каждому реализуемому алгоритму соответствует определенная структура системы (устройства)». Например, архитектура игрового компьютера должна отличаться от архитектуры сервера: если в первом случае берется не слишком дорогой, но оптимизированный под определенный набор вычислений процессор, оптимальным образом синхронизированные с ним память, графический контроллер и устройства ввода, причем все это, скорее всего, связывается одной-единственной общей шиной, то во втором, очевидно, потребуется многопроцессорная параллельная обработка, ориентированная на многозадачность, более широкий набор шин передачи данных. Однако очевидно, что бесконечное множество алгоритмов практически не может быть отображено на соответствующее множество реальных структур.
Но одни и те же функции могут быть воспроизведены универсальными и специализированными средствами. Таким образом, при формировании структуры КС определенного функционального назначения необходимо разрешать противоречия между «универсальностью» и «специализацией» на всех уровнях организации системы. Применение универсальных элементов позволяет создавать КС с минимальной структурой (то есть с минимальным числом элементов), реализующих заданную совокупность функций (продолжая сравнение, на сервере тоже, в принципе, при желании можно поиграть в Unreal, но вряд ли это будет целесообразно, так как тех же целей можно будет добиться гораздо более простыми средствами).
Основные показатели качества КС – характеристики производительности, энергетические характеристики, характеристики надежности и эффективности систем, экономические показатели – взаимосвязаны и взаимозависимы. Улучшение одной группы показателей качества, например увеличение производительности, ведет к ухудшению других – усложнению структуры, увеличению стоимости, снижению надежности и т. д.