7 zip 64 bit arm64 что это
Несколько запоздалый перевод заинтересовавшего меня блогпоста о том, что в действительности дает 64-битность процессора в iPhone без маркетинговой шелухи. Если текст покажется вам слишком очевидным, пропустите часть «Базовые преимущества и недостатки».
Как только был анонсирован iPhone 5S, технические медия были переполнены недостоверными статьями. К сожалению, написание хороших статей занимает время, а мир технической журналистики больше ценит скорость, чем достоверность. Сегодня, по просьбе нескольких своих читателей, я кратко изложу, что дает 64-bit ARM в iPhone 5S в плане производительности, возможностей и разработки.
Давайте для начала рассмотрим что, собственно, 64-битность означает. С этим термином связанно много путаницы, в основном из-за того, что нет единого устоявшегося определения. Однако, существует общее понимание этого термина. «Битность» обычно означает либо размер числового регистра, или размер указателя. К счастью, для большинства современных процессоров, их размер совпадает. Таким образом, 64-битность означает что процессор обладает 64-битными числовыми регистрами и 64-битными указателями.
- Размер адресуемой памяти. Количество бит, реально задействованных в указателе не связано с битностью процессора. Процессоры ARM использует от 26 до 40 бит, и это число может изменяться в отрыве от битности процессора.
- Ширину шины данных. Объем данных, запрашиваемых из RAM или кэша также не связано с битностью. Отдельные процессорные инструкции могут запрашивать произвольные объемы данных, но объем реально единовременно запрашиваемых данных может отличаться, либо разбивая запросы на части, или запрашивая больше чем необходимо. Уже в iPhone 5 размер запрашиваемого блока данных составляет 64 бита, а у PC доходит до 192 бит.
- Все что связано с вычислениями с плавающей запятой. Регистры FPU не связаны с архитектурой и процессоры ARM использовали 64-битные регистры задолго до ARM64.
Если вы будете сравнивать идентичные процессоры 32 и 64 битные CPU, вы не найдете больших различий, так что значительность перехода Apple на 64-битные ARM несколько преувеличена. Это важный шаг, но важный, в основном, из-за особенностей ARM и особенностью использования процессора компанией Apple. Тем не менее, некоторые различия имеются. Самым очевидным является 64-битные числовые регистры более эффективно работают с 64-битными числами. Вы можете работать с 64-битными числами и на 32-битном процессоре, но это обычно приводит к работе с двумя 32-битными частями, что работает ощутимо медленнее. 64-битные процессоры, обычно, выполняют операции над 64-битными числами также быстро как и над 32-битными, так что код активно использующий вычисления с 64-битными числами будет работать значительно быстрее.
Не смотря на то, что 64-битность не связана напрямую с объемом адресуемой памяти, она значительно облегчает использование большого объема RAM в рамках одной программы. Программа, запущенная на 32-битном процессоре может адресовать не больше 4GB адресного пространства. Часть памяти выделена под операционную систему и стандартные библиотеки, что оставляет 1-3GB на саму программу. Если у 32-битной системы больше 4GB RAM, то использование всего этого адресного пространства для программы значительно усложняется. Вам придется заняться махинациями вроде последовательного отображение разных частей RAM на часть виртуального адресного пространства или разбивание одной программы на несколько процессов.
Подобные трюки крайне трудозатраны и могут сильно замедлить систему, так что мало кто из программистов реально их использует. На практике, на 32-битных процессорах каждая программа используют до 1-3GB RAM, а вся ценность в обладании большего объема физической оперативной памяти заключается в возможности больше запускать программ одновременно и возможность кеширования больше данных с диска.
Увеличение объема адресного пространства полезно и для систем с небольшим объемом оперативной памяти — memory-mapped файлы, размеры которых могут быть и больше доступной оперативной памяти, т.к. операционная система реально загружает только те части файла, к которым производились обращения и, кроме того, умеет «вытеснять» загруженные данные обратно в файл, освобождая оперативную память. На 32-битных системах нельзя отобразить файлы размером больше 1-3GB. На 64-битных системах, адресное пространство значительно больше, так что такой проблемы нет.
Увеличение размера указателя может быть и ощутимым минусом: таже программа будет использовать больше памяти (возможно, сильно больше) будучи запущенной на 64 битном процессоре. Увеличение используемой памяти также «забивает» кэш, что снижает производительность.
В двух словах: 64-битность может увеличить производительность некоторых частей кода и упрощает некоторые техники, вроде memory-mapped файлов. Однако, производительность может и пострадать из-за увеличения используемой памяти.
64-битный процессор в iPhone 5S не просто ARM с увеличенным размером регистров, есть и существенные изменения.
Во-первых, отмечу название: официального название от ARM — «AArch64», однако это — глупое название, печатать которое меня раздражает. Apple называет архитектуру ARM64 и я буду называть также.
ARM64 увеличил вдвое число целочисленных регистров. 32-битный ARM предоставляет 16 целочисленных регистров, из которых один — счетчик команд (program counter), еще два используются для указателя на стэк и регистра связи (link register) и 13 регистров общего назначения. В ARM64 32 целочисленных регистра, с выделенным нулевым регистром, регистром связи и регистром указателя кадра (frame pointer register). Еще один регистр зарезервирован платформой, что оставляет 28 регистров общего назначения.
ARM64 также привнес существенные изменения помимо увеличения числа регистров.
Большинство 32-битных инструкций ARM могут выполняться/не выполняться в зависимости от состояние регистра-условия. Это позволяет транслировать условные выражения (if-statements) без использования ветвления. Предполагалось, что это увеличит производительность, однако, судя по тому, что в ARM64 от этой возможности отказались, она порождала больше проблем, чем давала пользы.
В ARM64 набор SIMD (одна-инструкция-много-данных) NEON полностью поддерживает стандарт IEEE754 для чисел с плавающей запятой с двойной точностью, в то время как 32-битная версия NEON поддерживала только одинарную точность и не в точности следовала стандарту для некоторых битов.
В ARM64 добавили специализированные инструкции для AES шифрования и SHA-1 & SHA-256 хешей. Не слишком полезное в общем, однако существенный бонус если вы занимаетесь именно этими вопросами.
В целом, самым важным отличаем является увеличение числа регистров общего назначения и полная поддержка IEEE754-совметимой арифметики на числах с двойной точностью в NEON. Это может дать ощутимый прирост в производительности в большом числе мест.
Важно отметить, что A7 включает в себя 32-битный режим совместимости, который позволяет запускать 32-битные приложения без каких либо изменений. Это означает, что iPhone 5S может исполнять любые старые приложения без какого-то влияния на производительность.
Apple использует преимущества новой архитектуры в своих библиотеках. Так как им нет надобности беспокоиться о бинарной обратной совместимости при таких изменениях, это отличное время чтобы внести изменения которые в противном случае «поломали» уже существующие приложения.
В Max OS X 10.7 Apple ввела меченные указатели (tagged pointers). Меченные указатели позволяют хранить некоторые классы с небольшим количеством данных в экземпляре напрямую в указателе. Это позволяет избежать выделений памяти в некоторых случаях, например NSNumber и может дать существенный прирост производительности. Меченные указатели поддерживаются только на 64-битной платформе, частично из-за вопроса производительности, а частично из-за того что в 32-битном указателе не так много остается места под «метки». Видимо по-этому, у iOS не было поддержки меченных указателей. Таким образом, в ARM64 в рантайме Objective-C включена поддержка меченных указателей, что дает те же преимущества, что в Mac.
Не смотря на то, что размер указателя составляет 64 бита, не все эти биты на самом деле используются. В Mac OS X на x86-64 используется только 47 битов. В iOS на ARM64 используется еще меньше — только 33 бита. Если маскировать эти биты каждый раз перед использованием то можно использовать остальные биты чтобы хранить дополнительные данные. Это позволило внести одно из самых значительных изменений в рантайм Objective-C за всю его историю.
Большая часть информации в этой секции почерпана из статьи Грега Паркера. Во первых, для освежения памяти: объекты в Objective-C представляют выделенные блоки памяти. Первый часть, размером с указатель, это isa. Обычно, isa это указатель на класс объекта. Чтобы узнать больше о том, как объекты хранятся в памяти, читайте мою другую статью.
Использовать весь размер указателя на указатель isa несколько расточительно, особенно на 64-битной платформе, которая не использует все 64-бита. ARM64 на iOS реально использует 33 бита, оставляя 31 бит для других вещей. Классы в памяти выровнены по границе 8 байт, так что последние 3 бита можно отбросить, что дает 34 бита из isa доступные для хранения дополнительной информации. И Apple-овский рантайм в ARM64 использует это для повышения производительности.
Наверно, самой важной оптимизацией стало встраивание (inline) счетчика ссылок. Практически все объекты в Objective-C обладают счетчиком ссылок (за исключение неизменяемых объектов, таких как литералы NSString) и операции retain/release, которые меняют этот счетчик случаются очень часто. Это особенно критично для ARC, который вставляет вызовы retain/release чаще, чем бы это делал программист. Таким образом, высокая производительность retain/release методов крайне важна.
- Получить глобальную хеш-таблицу счетчиков указателей
- Заблокировать хеш-таблицу, чтобы операция была потокобезопасной
- Найти в хеш-таблице счетчик для заданного объекта
- Увеличить счетчик на один и сохранить его обратно в таблицу
- Отпустить блокировку хеш-таблицы
- Произвести атомарное увеличение части isa-поля
- Последний бит в isa говорит, используются ли дополнительные биты в isa для хранения счетчика ссылок. Если нет, используется старый алгоритм с хеш-таблицами.
- Если объект уже удаляется, ничего не выполняется
- Если счетчик переполняется (что случается редко, но вполне возможно при 19 битах), используется старый алгоритм с хеш-таблицей
- Произвести атомарное изменение isa на новое значение
- Если у объекта не было ассоциированных объектов, установленных используя objc_setAssociatedObject, их не надо удалять.
- Если объект не обладает C++-деструктором (который вызывается при dealloc), его тоже не нужно вызывать.
- Если на объект ни разу не ссылались слабым (__weak) указателем, то эти указатели не надо обнулять.
Суммарно, это существенный выигрыш. Мои бенчмарки показали, что создание и удаление простого объекта занимает 380нс на 5S в 32-битном режиме, в то время как в 64-битном только 200нс. Если хоть один экземпляр когда-либо имел слабую ссылку на себя, то в 32-битном режим время удаления для всех увеличивалось до 480нс, в то время как в 64-битном режиме время осталось в районе 200нс для всех экземпляров, на которых слабых ссылок не было.
Короче говоря, улучшения в рантайме таковы, что в 64-битном режиме время аллокации занимают 40-50% от времени аллокации в 32-битном режиме. Если ваше приложение создает и удаляет много объектов, это может оказаться существенным.
64-битность A7 не просто маркетинговая уловка, но это и не поражающий воображение прорыв который позволит создавать новый класс приложений. Истина, как всегда, лежит посередине.
Один только факт перехода на 64 бита дает немного. Это в некоторых случая ускоряет приложения, несколько увеличивает объем используемой памяти большинство программ. В общем, большой разницы нет.
Архитектура ARM изменилась не только в 64-битности. Увеличенное число регистров и пересмотренный, модернизированный набор инструкций дает неплохой прирост производительности по сравнению с 32-битным ARM.
Apple использовала переход на новую архитектуру для улучшения в рантайме. Основное изменение — встраиваемый (inlined) счетчик ссылок, который позволяет избежать дорогого поиска по хеш-таблице. Так операции retain/release очень часты в Objective-C, это существенный выигрыш. Удаление ресурсов в зависимости от флагов делает удаление объектов почти вдвое быстрее. Меченные (tagged) указатели также добавляют производительность и уменьшают потребление памяти.
ARM64 — приятное добавление от Apple. Мы все знали, что это рано или поздно случится, но мало кто ожидал что так скоро. Но оно есть, и это отлично.
7-Zip is a file archiver with a high compression ratio.
Download 7-Zip 21.07 (2021-12-26) for Windows :
Link | Type | Windows | Size |
---|---|---|---|
Download | .exe | 64-bit x64 | 1.5 MB |
Download | .exe | 32-bit x86 | 1.2 MB |
Download | .exe | 64-bit ARM64 | 1.5 MB |
License
7-Zip is free software with open source . The most of the code is under the GNU LGPL license. Some parts of the code are under the BSD 3-clause License. Also there is unRAR license restriction for some parts of the code. Read 7-Zip License information.
You can use 7-Zip on any computer, including a computer in a commercial organization. You don't need to register or pay for 7-Zip.
The main features of 7-Zip
- High compression ratio in 7z format with LZMA and LZMA2 compression
- Supported formats:
- Packing / unpacking: 7z, XZ, BZIP2, GZIP, TAR, ZIP and WIM
- Unpacking only: AR, ARJ, CAB, CHM, CPIO, CramFS, DMG, EXT, FAT, GPT, HFS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR, RPM, SquashFS, UDF, UEFI, VDI, VHD, VHDX, VMDK, WIM, XAR and Z.
7-Zip works in Windows 10 / 8 / 7 / Vista / XP / 2019 / 2016 / 2012 / 2008 / 2003 / 2000.
p7zip - the port of the command line version of 7-Zip to Linux/Posix.
On 7-Zip's SourceForge Page you can find a forum, bug reports, and feature request systems.
Compression ratio
We compared 7-Zip with WinRAR 5.20.
FILE SETS: Mozilla Firefox 34.0.5 for Windows and Google Earth 6.2.2.6613 for Windows.
Archiver Mozilla Firefox Google Earth 65 files
85 280 391 bytes483 files
110 700 519 bytesCompressed size Ratio Compressed size Ratio 7-Zip 9.35
-mx39 357 375 100% 15 964 369 100% WinRAR 5.20
-m5 -s -ma5 -md128m41 789 543 106% 17 035 432 107% Compression ratio results are very dependent upon the data used for the tests. Usually, 7-Zip compresses to 7z format 30-70% better than to zip format. And 7-Zip compresses to zip format 2-10% better than most of other zip compatible programs.
7-Zip 21.07 2021-12-26 7-Zip 21.07
7-Zip 21.06 2021-11-24 7-Zip 21.06
7-Zip 19.00 2019-02-21 7-Zip 19.00
7-Zip ChangeLog History of 7-zip changes Copyright (C) 2022 Igor Pavlov. The site is hosted at Digital Ocean and HETZNER
7z Format
7z is the new archive format, providing high compression ratio.
The main features of 7z format:
- Open architecture
- High compression ratio
- Strong AES-256 encryption
- Ability of using any compression, conversion or encryption method
- Supporting files with sizes up to 16000000000 GB
- Unicode file names
- Solid compressing
- Archive headers compressing
7z has open architecture, so it can support any new compression methods. Now the following methods are integrated to 7z :
Method Description LZMA Improved and optimized version of LZ77 algorithm LZMA2 Improved version of LZMA PPMD Dmitry Shkarin's PPMdH with small changes BCJ Converter for 32-bit x86 executables BCJ2 Converter for 32-bit x86 executables BZip2 Standard BWT algorithm Deflate Standard LZ77-based algorithm LZMA is default and general compression method of 7z format. The main features of LZMA method:
- High compression ratio
- Variable dictionary size (up to 4 GB)
- Compressing speed: about 1 MB/s on 2 GHz CPU
- Decompressing speed: about 10-20 MB/s on 2 GHz CPU
- Small memory requirements for decompressing (depend from dictionary size)
- Small code size for decompressing: about 5 KB
- Supporting multi-threading and P4's hyper-threading
LZMA compression algorithm is very suitable for embedded applications. LZMA is released under the terms of the GNU LGPL. LZMA is also available under a proprietary license for those who can not use the GNU LGPL in their code. If you want to use LZMA code, you can ask consultations, custom code programming and required developer licenses from page for support: Send message to LZMA developer. Check also information about LZMA SDK.
7-Zip also supports encryption with AES-256 algorithm. This algorithm uses cipher key with length of 256 bits. To create that key 7-Zip uses derivation function based on SHA-256 hash algorithm. A key derivation function produces a derived key from text password defined by user. For increasing the cost of exhaustive search for passwords 7-Zip uses big number of iterations to produce cipher key from text password.
7z is a part of 7-Zip program distributed under the GNU LGPL. You can download 7-Zip sources and binaries from Download Page.
Applications that support 7z archives: WinRAR, PowerArchiver, TUGZip, IZArc.
Copyright (C) 2022 Igor Pavlov. The site is hosted at Digital Ocean and HETZNER
Важная информация
Последние версии архиватора 7-Zip подвержены уязвимости, которая пока не исправлена. Успешная эксплуатация этой уязвимости приводит к повышению привилегий и выполнению произвольных команд. Провести атаку можно только при локальном доступе к уязвимой системе
О программе
7-Zip - бесплатный файловый архиватор с открытым исходным кодом, который отличается высоким уровнем сжатия, возможностью проверки целостности архивов и защитой архивов паролем с использованием методов шифрования AES-256 или ZipCrypto
Что нового
Новое в версии 21.07 (26.12.2021):
- 7-Zip теперь может извлекать образы дисков VHDX (формат Microsoft Hyper-V Virtual Hard Disk v2).
- Новые параметры командной строки: -spm и -im! для исключения каталогов из обработки для указанных путей, которые не содержат символа разделителя пути в конце пути.
- В окне Добавить в архив теперь можно использовать префикс -m для поля Параметры как в командной строке: -mparam .
- Порядок сортировки файлов в архивах стал более согласованным для случаев, когда имя каталога совпадает с префиксной частью имени другого каталога или файла.
- Архивы TAR, созданные 7-Zip, теперь более согласованы с архивами, созданными программой GNU TAR.
Все изменения (официальный сайт, английский)
Системные требования
Операционные системы:
- Windows 11 / 10 / 8.1 / 8 / 7 / Vista / XP / 2000
- Windows Server 2019 / 2016 / 2012 / 2008 / 2003
- Linux (консольная версия)
Полезные ссылки
Подробное описание
7-Zip - бесплатный, простой и удобный архиватор, позволяющий быстро создавать архивы с высокой степенью сжатия.
Степень сжатия в новом формате 7z на 30-50% лучше, чем в формате ZIP. Версия 7-Zip с командной строкой может быть использован в Linux с помощью Wine.
7-Zip - открытое программное обеспечение, большинство кода которого выпускается под лицензией GNU LGPL, код компонента unRAR идет с ограничениями лицензии unRAR.
Файловый архиватор 7-Zip можно использовать на любом компьютере, включая компьютеры в коммерческих организациях. Не нужно регистрироваться и платить за использование 7-Zip.
Основные возможности 7-Zip
• Высокий уровень сжатия в формате 7z с компрессией LZMA и LZMA2
• Для форматов ZIP и GZIP formats, 7-Zip обеспечивает уровень сжатия на 2-10 % лучше, чем могут файловые архиваторы PKZip и WinZip
• Мощное шифрование AES-256 в форматах 7z и ZIP
• Поддержка самораспаковки для формата 7z
• Интеграция в проводник Windows
• Файловый менеджер File Manager
• Мощная версия с командной строкой
• Плагин для FAR Manager
• Локализация на 79 языковПоддерживаемые форматы:
Архивирование / распаковка: 7z, XZ, BZIP2, GZIP, TAR, ZIP и WIM
Только распаковка: ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, RAR, RPM, SquashFS, UDF, VHD, WIM, XAR и Z.Архиватор 7-Zip отлично справляется со своей задачей — эффективно сжимать данные. Его можно назвать «швейцарским ножом» в мире архиваторов. Он поддерживает разные алгоритмы сжатия и большое количество форматов данных, таких как ZIP, gzip, tar и RAR. Отдельный плюс — в том, что архиватор свободный.
Первая версия 7-Zip увидела свет 18 июля 1999 года, за относительно короткое время архиватор смог стать очень популярным. Относительный недостаток 7-Zip — наличие лишь версии для Windows (официальный клиент). Но сейчас, спустя всего 22 года, появился и вариант для Linux, официальный билд от разработчиков.
Выпущен релиз под Linux на этой неделе. Версия 21.01 доступна как для Linux, так и для Windows. На сайте разработчика есть варианты для разных систем, включая 32-bit, 64-bit, x86 и ARM.Linux-версия получила не меньше функций и возможностей, чем Windows-релиз. Единственное: пока — с 7-Zip можно работать лишь в командной строке, графического интерфейса нет. Возможно, его выпустят еще через пару десятков лет, кто знает.
Конечно, кроме официальной версии, есть и неофициальные билды под Linux. Наиболее известен p7zip, он в ходу уже несколько лет. Разработчик архиватора знает о нем, и в релизе говорится, что «официальный билд похож на p7zip, но не идентичен ему». Кстати, Игорь Павлов выпустил официальную консольную версию 7-zip для Linux вместе с выпуском версии 21.01 для Windows в связи с тем, что проект p7zip не получал обновлений уже пять лет. Возможно, если бы не этот факт, официального билда архиватора не было бы до сих пор.
Что касается новой версии 7-zip для Windows, то, как всегда, разработчик добавил ряд улучшений и исправлений. Поправлены баги, улучшена поддержка ARM64.
Читайте также:
- В сони вегас вместо музыки писк
- Nintendo switch сброс до заводских настроек
- Новинки проката которые уже можно посмотреть по компьютеру
- Msxml4 dll что это
- Преобразование объекта в другую форму или объект с использованием компьютерной анимации