Sunday, September 15, 2013

32 или 64: что такое биты и какое нам до них дело?

Что касается процессоров, то количество бит это основа, указывающая на то, какое количество информации в единицу времени может обработать чип [процессор]. Поэтому может показаться, что 64-битная техника в два раза быстрее 32-битной. Но в действительности все несколько сложнее.

Первую аналогию представил Reddit (впоследствии она разошлась через The Next Web). Представьте себе, что процессор это библиотекарь, присматривающий за большой библиотекой, какой является ваш смартфон. У этого библиотекаря есть 32 помощника, приносящих ему книги, но каждый из них за раз может принести только один том.

Но вот приходит посетитель и просит выдать ему 65 книг, скажем, про динозавров. Таким образом, помощникам придется сходить за книгами три раза. За один раз они принесут 32 книги, потом еще 32, и останется еще одна книга, за которой придется идти в третий раз.

Если у библиотекаря 64 помощника, то процесс ускорится на треть, но не в два раза (ходить за книгами придется дважды: в первый заход помощники принесут 64 книги, а во второй одну). Если увеличить масштаб, польза от помощников вырастет: человека, которому нужно 256 книг, 64 помощника обслужат в два раза быстрее, чем 32.
http://cursorinfo.co.il/news/pressa/2013/09/13/The-Independent--iPhone-poluchil-noviy-processor--nu-i-chto-/

Разъяснение: бит хранить либо 0 либо 1. Таким образом, если шина (интерфейс между процессором и памятью) 32 битная, то процессор с 32-битной адресацией памяти может напрямую обращаться 232-1=4 Гб памяти. Процессор с 32 битной архитектурой просто "не видеть" память больше 4 Гб. При 64 битной архитектуре - память можеть быть 264-1=16 ЭБ (экасабайт=260 ~ 1018, гигабайт=230 ~ 109, т.е. 16 гига гигабайт).

Ещё один нюанс. Если изменить архитектуру на 64 битную и не менять при этом программы, то никакого выигрыша не будет вообще. Так как в программе "зашиты" 32 битные адреса, то, при условии, что новый компьютер распознает, что это старая 32-битная программа, то эффективно компьютер будет работать только с 32 битам (будут добавлены 32 нуля впереди адресов). Если же компьютер не распознает, что программа "старая", 32-битная, то она вообще не будет корректно работать (компьютер будет интерпретировать 64 бита как адрес в памяти вместо 32 бита, в итоге он будет обращать "не в тот" адрес).

No comments:

Post a Comment