Читать «Архитектура компьютера» онлайн - страница 137
Эндрю Таненбаум
UTF-8
Стандарт Unicode был лучше ASCII, но со временем в нем тоже возникла нехватка кодовых пунктов. Кроме того, он требовал 16 бит для представления «чистого» ASCII-текста, что было расточительно. Для решения этих проблем была разработана новая схема кодирования UTF-8 UCS Transformation Format. Сокращение UCS в названии означает «Universal Character Set» — по сути это Unicode. Коды UTF-8 имеют переменную длину от 1 до 4 байт, и позволяют кодировать до двух миллиардов символов. Этот способ кодировки сейчас доминирует в World Wide Web.
Одно из преимуществ UTF-8 заключается в том, что коды от 0 до 127 используются для представления ASCII-символов. Таким образом, одному символу соответствует один байт (вместо двух байтов в Unicode). Для символов, не входящих в набор ASCII, старший бит первого байта устанавливается в 1; это означает, что за ним следуют один и более дополнительных байтов. Всего используются шесть разных форматов, представленных в табл. 2.5. Биты с пометкой «d» являются битами данных.
Таблица 2.5. Схема кодирования UTF-8 | ||||||
---|---|---|---|---|---|---|
Биты | Байт 1 | Байт 2 | Байт 3 | Байт 4 | Байт 5 | Байт 6 |
7 | 0ddddddd | |||||
11 | 110ddddd | 10dddddd | ||||
16 | 1110dddd | 10dddddd | 10dddddd | |||
21 | 11110ddd | 10dddddd | 10dddddd | 10dddddd | ||
26 | 111110dd | 10dddddd | 10dddddd | 10dddddd | 10dddddd | |
31 | 1111110x | 10dddddd | 10dddddd | 10dddddd | 10dddddd | 10dddddd |
UTF-8 обладает рядом преимуществ перед Unicode и другими схемами. Прежде всего, если в программе или документе используются только символы из набора ASCII, каждый символ может быть представлен 8 битами. Во-вторых, первый байт каждого символа UTF-8 однозначно определяет порядок байтов в символе. В-третьих, дополнительные байты символа UTF-8 всегда начинаются с префикса 10, который никогда не встречается в начальном байте; соответственно код становится самосинхронизирующимся. В частности, при возникновении ошибки передачи данных или памяти всегда возможно перейти к началу следующего (неповрежденного) символа.
Обычно UTF-8 используется для кодирования только 17 плоскостей Unicode, хотя схема позволяет представить много более 1 114 112 кодовых пунктов. Но если антропологи найдут где-нибудь в Новой Гвинее племя с неизвестным языком (или мы вступим в контакт с инопланетными цивилизациями), UTF-8 успешно справится с представлением их алфавитов или идеограмм.
Краткое содержание главы
Компьютерные системы состоят из трех компонентов: процессоров, памяти и устройств ввода-вывода. Назначение процессора заключается в том, чтобы последовательно вызывать команды из памяти, декодировать и выполнять их. Цикл выборка — декодирование — выполнение всегда можно представить в виде алгоритма. Выборка, декодирование и выполнение команд определенной программы иногда выполняется программой-интерпретатором, работающей на более низком уровне. Для повышения быстродействия во многих компьютерах имеется один или несколько конвейеров или поддерживается суперскалярная архитектура с несколькими функциональными блоками, которые действуют параллельно. Конвейер позволяет разбивать команды на отдельные шаги, с одновременным выполнением шагов разных команд.