SlideShare a Scribd company logo
1 of 3
Download to read offline
Введение в 64 бита для начинающих,
или где же 64-битный мир?
Автор: Евгений Рыжков

Дата: 15.01.2009


Аннотация
Довольно давно появились 64-битные процессоры, операционные системы, отдельные
программы. Однако полностью на 64 бита перешли еще далеко не все пользователи. В статье
рассматриваются причины этого.


История 64-битного мира
В 2003-2004 годах в мире персональных компьютеров началась очередная революция. Она
захватила все без исключения компьютеры, операционные системы, прикладные программы.
Стремительно начавшись, она должна была поднять вычислительную технику на очередной
уровень уже к 2005-2006 годам. Однако на момент написания этих строк (заканчивается 2008 год)
революция так и не достигла своего пика. Речь идет о переходе на 64-битные технологии. Давайте
посмотрим, с чего начался этот переход, как продолжался и каково состояние дел сейчас.

Вообще 64-битные технологии в мире не являлись новинкой даже в 2003 году. На платформах
альтернативных современным персональным компьютерам 64-битные решения существуют
достаточно давно. Однако только в 2003 появились первые 64-битные процессоры для
персональных компьютеров. Эти процессоры представляли собой реализацию технологий AMD64
компании AMD и EM64T компании Intel. Причина появления новых 64-битных процессоров
банальна. У старых 32-битных процессоров существует принципиальное ограничение - они могут
работать только с четырьмя гигабайтами оперативной памяти, при этом каждому отдельному
пользовательскому приложению доступно не более двух гигабайт. Пока подобные ограничения
мешали лишь в профессиональной среде (дизайнерам, инженерам и т.п.), то вопрос решался
просто. Специалисты обычно использовали нестандартную вычислительную технику, и это
снимало проблемы. Однако когда обыкновенные игры для персональных компьютеров
подобрались к пределу в два гигабайта оперативной памяти уже и "домашним" пользователям
понадобились новые процессоры.

Естественно рынок прекрасно подготовился к новым потребностям пользователей. В 2003 году
только появились первые образцы 64-битных процессоров, а в 2005 году уже нельзя было купить
в магазине не 64-битный процессор. Казалось бы, проблема решена? К сожалению, для того
чтобы преимущества 64-битных систем стали доступны пользователям, надо иметь в компьютере
четыре гигабайта оперативной памяти (или более). А на 2005 год наиболее распространенной
конфигурацией были машины с одним, максимум двумя гигабайтами.

К концу 2006 года оперативная память в обыкновенных персональных компьютерах уже стала
приближаться к трем-четырем гигабайтам. Казалось бы, уж теперь самое время оценить
преимущества 64-битных компьютеров. Но для того, чтобы это сделать, нужно иметь еще и 64-
битную операционную систему. К счастью, Microsoft выпустила 64-битные версии Windows XP и
Windows Server 2003 задолго до этого. Но на компьютерах пользователей эти операционные
системы не спешили появляться. И эта ситуация сохраняется в настоящем времени. Практически
на всех пользовательских компьютерах установлены 32-битные операционные системы семейства
Windows XP и Windows Vista. Это объясняется отсутствием (как тогда, так и сейчас) 64-битных
драйверов и что более важно недостаточным количеством 64-битных программ. Ведь хотя 32-
битные программы и работают на 64-битных операционных системах почти без проблем, но
больший объем оперативной памяти могут использовать только 64-битные программы.

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

Для того чтобы выпустить 64-битную версию программы ее нужно перекомпилировать
специальным компилятором, который сгенерирует 64-битный код. Какие-то компании (как
например Microsoft, Intel) выпустили 64-битные компиляторы довольно оперативно. Это значит,
что уже в 2005 году эти компиляторы были доступны разработчикам. Другие же (как например
Borland) до сих пор не выпустили 64-битных версий своих средств разработки. Это приводит к
тому, что программы, разработанные в среде Borland C++, никак не могут быть скомпилированы
для работы в 64-битном окружении.

Но поскольку многие программы разрабатываются с использованием средств от Microsoft и Intel,
то, казалось бы, 64-битных программ должно быть все-таки довольно много? Увы, опыт многих
компаний, занимающихся разработкой программного обеспечения, показал, что недостаточно
просто перекомпилировать программу новым 64-битным компилятором.

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

Будучи перекомпилированной под 64 бита обычная пользовательская программа делала вид, что
прекрасно работает. До тех пор, пока пользователь не нажал клавишу F1. Вместо ожидаемого
открытия справочной системы на экране появилось окошко с короткой фразой про
невозможность загрузить справку. Казалось бы, какое отношение имеет справочная система к
разрядности процессора? Но дело оказалось действительно в некорректной работе программы на
новой системе. Поведение функций, отвечающих за справочную систему, изменилось и справка
просто "сломалась".

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

Незнакомый с индустрией разработки программных систем человек может задаться вопросом:
"Почему подобные ошибки в программах не выявляются на этапе тестирования?" Ответ на этот
вопрос не совсем очевиден. Дело в том, что существующие системы внутренних и внешних тестов
программного обеспечения не позволяют выявить ошибки, характерные именно для 64-битных
систем. Ведь по своей сути часто тесты должны выполняться очень быстро, поэтому, скажем,
тестировать обработку нескольких гигабайт данных в таких тестах не будут. Инструменты для
разработчиков долгое время также оставались в стороне от проблемы 64-битного программного
обеспечения. Специализированные инструменты начали появляться относительно недавно, в
2007 году. В разработке одного из таких инструментов и принимает участие автор данной статьи.

О каких инструментах идет речь? Есть специальный класс программ, называемый статические
анализаторы кода. Этот анализатор кода "разбирает" исходный код программы и выдает
программисту список потенциальных проблем в коде. После чего программист их исправляет, и
программа уже получается готовой к выходу в 64-битный мир.


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


Об авторе
Евгений Рыжков работает в компании ООО "СиПроВер" (www.viva64.com), где занимается
разработкой программных продуктов Viva64 и VivaMP. Это инструменты для программистов,
предназначенные для тестирования 64-битных и параллельных программ, путем анализа их
исходного кода. Является автором публикаций по проблеме тестирования и создания сложных
программных комплексов.

More Related Content

More from Tatyanazaxarova

Урок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программУрок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программTatyanazaxarova
 
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибокУрок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибокTatyanazaxarova
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиTatyanazaxarova
 
Урок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурУрок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурTatyanazaxarova
 
Урок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхУрок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхTatyanazaxarova
 
Урок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияУрок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияTatyanazaxarova
 
Урок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиУрок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиTatyanazaxarova
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаTatyanazaxarova
 
Урок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхУрок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхTatyanazaxarova
 
Урок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейУрок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейTatyanazaxarova
 
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаTatyanazaxarova
 
Урок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаУрок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаTatyanazaxarova
 
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовУрок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовTatyanazaxarova
 
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаTatyanazaxarova
 
Урок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеУрок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеTatyanazaxarova
 
Урок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияУрок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияTatyanazaxarova
 
Урок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииУрок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииTatyanazaxarova
 
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийTatyanazaxarova
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кодаTatyanazaxarova
 

More from Tatyanazaxarova (20)

Урок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программУрок 26. Оптимизация 64-битных программ
Урок 26. Оптимизация 64-битных программ
 
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибокУрок 25. Практическое знакомство с паттернами 64-битных ошибок
Урок 25. Практическое знакомство с паттернами 64-битных ошибок
 
Урок 24. Фантомные ошибки
Урок 24. Фантомные ошибкиУрок 24. Фантомные ошибки
Урок 24. Фантомные ошибки
 
Урок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структурУрок 23. Паттерн 15. Рост размеров структур
Урок 23. Паттерн 15. Рост размеров структур
 
Урок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данныхУрок 21. Паттерн 13. Выравнивание данных
Урок 21. Паттерн 13. Выравнивание данных
 
Урок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. ИсключенияУрок 20. Паттерн 12. Исключения
Урок 20. Паттерн 12. Исключения
 
Урок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен даннымиУрок 19. Паттерн 11. Сериализация и обмен данными
Урок 19. Паттерн 11. Сериализация и обмен данными
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
 
Урок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединенияхУрок 16. Паттерн 8. Memsize-типы в объединениях
Урок 16. Паттерн 8. Memsize-типы в объединениях
 
Урок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателейУрок 15. Паттерн 7. Упаковка указателей
Урок 15. Паттерн 7. Упаковка указателей
 
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметика
 
Урок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвигаУрок 11. Паттерн 3. Операции сдвига
Урок 11. Паттерн 3. Операции сдвига
 
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументовУрок 10. Паттерн 2. Функции с переменным количеством аргументов
Урок 10. Паттерн 2. Функции с переменным количеством аргументов
 
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числа
 
Урок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном кодеУрок 6. Ошибки в 64-битном коде
Урок 6. Ошибки в 64-битном коде
 
Урок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложенияУрок 5. Сборка 64-битного приложения
Урок 5. Сборка 64-битного приложения
 
Урок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурацииУрок 4. Создание 64-битной конфигурации
Урок 4. Создание 64-битной конфигурации
 
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложений
 
Статический анализ Си++ кода
Статический анализ Си++ кодаСтатический анализ Си++ кода
Статический анализ Си++ кода
 
PVS-Studio
PVS-Studio PVS-Studio
PVS-Studio
 

Введение в 64 бита для начинающих, или где же 64-битный мир?

  • 1. Введение в 64 бита для начинающих, или где же 64-битный мир? Автор: Евгений Рыжков Дата: 15.01.2009 Аннотация Довольно давно появились 64-битные процессоры, операционные системы, отдельные программы. Однако полностью на 64 бита перешли еще далеко не все пользователи. В статье рассматриваются причины этого. История 64-битного мира В 2003-2004 годах в мире персональных компьютеров началась очередная революция. Она захватила все без исключения компьютеры, операционные системы, прикладные программы. Стремительно начавшись, она должна была поднять вычислительную технику на очередной уровень уже к 2005-2006 годам. Однако на момент написания этих строк (заканчивается 2008 год) революция так и не достигла своего пика. Речь идет о переходе на 64-битные технологии. Давайте посмотрим, с чего начался этот переход, как продолжался и каково состояние дел сейчас. Вообще 64-битные технологии в мире не являлись новинкой даже в 2003 году. На платформах альтернативных современным персональным компьютерам 64-битные решения существуют достаточно давно. Однако только в 2003 появились первые 64-битные процессоры для персональных компьютеров. Эти процессоры представляли собой реализацию технологий AMD64 компании AMD и EM64T компании Intel. Причина появления новых 64-битных процессоров банальна. У старых 32-битных процессоров существует принципиальное ограничение - они могут работать только с четырьмя гигабайтами оперативной памяти, при этом каждому отдельному пользовательскому приложению доступно не более двух гигабайт. Пока подобные ограничения мешали лишь в профессиональной среде (дизайнерам, инженерам и т.п.), то вопрос решался просто. Специалисты обычно использовали нестандартную вычислительную технику, и это снимало проблемы. Однако когда обыкновенные игры для персональных компьютеров подобрались к пределу в два гигабайта оперативной памяти уже и "домашним" пользователям понадобились новые процессоры. Естественно рынок прекрасно подготовился к новым потребностям пользователей. В 2003 году только появились первые образцы 64-битных процессоров, а в 2005 году уже нельзя было купить в магазине не 64-битный процессор. Казалось бы, проблема решена? К сожалению, для того чтобы преимущества 64-битных систем стали доступны пользователям, надо иметь в компьютере четыре гигабайта оперативной памяти (или более). А на 2005 год наиболее распространенной конфигурацией были машины с одним, максимум двумя гигабайтами. К концу 2006 года оперативная память в обыкновенных персональных компьютерах уже стала приближаться к трем-четырем гигабайтам. Казалось бы, уж теперь самое время оценить преимущества 64-битных компьютеров. Но для того, чтобы это сделать, нужно иметь еще и 64-
  • 2. битную операционную систему. К счастью, Microsoft выпустила 64-битные версии Windows XP и Windows Server 2003 задолго до этого. Но на компьютерах пользователей эти операционные системы не спешили появляться. И эта ситуация сохраняется в настоящем времени. Практически на всех пользовательских компьютерах установлены 32-битные операционные системы семейства Windows XP и Windows Vista. Это объясняется отсутствием (как тогда, так и сейчас) 64-битных драйверов и что более важно недостаточным количеством 64-битных программ. Ведь хотя 32- битные программы и работают на 64-битных операционных системах почти без проблем, но больший объем оперативной памяти могут использовать только 64-битные программы. Именно в 64-битных программах и кроется объяснение того факта, что до сих пор большинство пользователей не могут сказать, что используют 64-битную инфраструктуру при работе на компьютере, несмотря на все ее преимущества. Как оказалось, процесс переноса программ с 32- битных систем на 64-битные на практике не так уж и прост. И именно разработчики программ оказались "виноваты" в отсутствии 64-битных программ. Разберемся, в чем же дело. Для того чтобы выпустить 64-битную версию программы ее нужно перекомпилировать специальным компилятором, который сгенерирует 64-битный код. Какие-то компании (как например Microsoft, Intel) выпустили 64-битные компиляторы довольно оперативно. Это значит, что уже в 2005 году эти компиляторы были доступны разработчикам. Другие же (как например Borland) до сих пор не выпустили 64-битных версий своих средств разработки. Это приводит к тому, что программы, разработанные в среде Borland C++, никак не могут быть скомпилированы для работы в 64-битном окружении. Но поскольку многие программы разрабатываются с использованием средств от Microsoft и Intel, то, казалось бы, 64-битных программ должно быть все-таки довольно много? Увы, опыт многих компаний, занимающихся разработкой программного обеспечения, показал, что недостаточно просто перекомпилировать программу новым 64-битным компилятором. Дело в том, что в программах, скомпилированных для 64-битных платформ, могут проявляться неожиданные (даже для разработчиков программ) ошибки. Приведем несколько примеров. Будучи перекомпилированной под 64 бита обычная пользовательская программа делала вид, что прекрасно работает. До тех пор, пока пользователь не нажал клавишу F1. Вместо ожидаемого открытия справочной системы на экране появилось окошко с короткой фразой про невозможность загрузить справку. Казалось бы, какое отношение имеет справочная система к разрядности процессора? Но дело оказалось действительно в некорректной работе программы на новой системе. Поведение функций, отвечающих за справочную систему, изменилось и справка просто "сломалась". Другой пример. Приложение для визуализации данных, в котором используемый объем оперативной памяти приближался к двум гигабайтам, было естественным кандидатом на 64- битную версию. Новая 64-битная версия работала прекрасно, пользователи не видели никаких проблем. До тех пор, пока кто-то не захотел построить изображение по данным, превышающим несколько гигабайт. Картинка была построена, но на экране показалось... только половина изображения. Почему? Некорректная работа в программе с большими объемами данных. Незнакомый с индустрией разработки программных систем человек может задаться вопросом: "Почему подобные ошибки в программах не выявляются на этапе тестирования?" Ответ на этот вопрос не совсем очевиден. Дело в том, что существующие системы внутренних и внешних тестов
  • 3. программного обеспечения не позволяют выявить ошибки, характерные именно для 64-битных систем. Ведь по своей сути часто тесты должны выполняться очень быстро, поэтому, скажем, тестировать обработку нескольких гигабайт данных в таких тестах не будут. Инструменты для разработчиков долгое время также оставались в стороне от проблемы 64-битного программного обеспечения. Специализированные инструменты начали появляться относительно недавно, в 2007 году. В разработке одного из таких инструментов и принимает участие автор данной статьи. О каких инструментах идет речь? Есть специальный класс программ, называемый статические анализаторы кода. Этот анализатор кода "разбирает" исходный код программы и выдает программисту список потенциальных проблем в коде. После чего программист их исправляет, и программа уже получается готовой к выходу в 64-битный мир. Выводы Теперь, когда разработчикам программ стали доступные самые новые инструменты в области создания 64-битных программ, можно уже наконец-то ожидать массового перехода на 64-битные системы. В ближайшее время должны появиться 64-битные версий практически всех наиболее часто используемых программ. И уж тогда-то пользователи смогут, наконец, полностью получить все преимущества 64-битного мира. Об авторе Евгений Рыжков работает в компании ООО "СиПроВер" (www.viva64.com), где занимается разработкой программных продуктов Viva64 и VivaMP. Это инструменты для программистов, предназначенные для тестирования 64-битных и параллельных программ, путем анализа их исходного кода. Является автором публикаций по проблеме тестирования и создания сложных программных комплексов.