Плотность кода (машинный код)
Плотность кода (англ. Code density) — показатель, характеризующий, какой объём памяти занимает программный код, выполняющий некую задачу[1]. Не существует способов однозначно измерить величину плотности кода, так как разные задачи могут требовать различных наборов инструкций. Для оценки и сравнения плотности кода используются различные бенчмарки, как правило заключающиеся в компиляции эталонного кода с языка высокого уровня[2].
Значение плотности кода
[править | править код]В ранних компьютерных системах плотность машинного кода имела большое значение по причине ограниченного объёма памяти. Однако по мере развития микроэлектроники и общего удешевления компьютерной памяти, размер, который занимает программа в памяти, стал не настолько важным фактором. Однако более рыхлый код может привести к снижению производительности при недостаточной пропускной способности подсистемы памяти и объёма процессорного кэша[2].
Факторы, влияющие на плотность кода
[править | править код]Плотность кода часто рассматривается как характеристика микроархитектуры процессора, но на неё также оказывает влияние оптимизация при компиляции[2]. Следующие факторы оказывают наибольшее влияние на плотность кода[3]:
- Размер инструкции, а также все факторы, которые на него влияют: разрядность (в случае если разрядность совпадает с размером инструкции), количество регистров общего назначения и т. д. В некоторых процессорах может использоваться переменный размер команд: простые и частоиспользуемые команды меньшей длины, более редкие — большей;
- Схемы адресации;
- Разрядность также влияет на плотность кода сама по себе;
- Наличие микрокода и его сложность;
- Необходимость в выравнивании.
Как правило, код для RISC-процессоров обладает меньшей плотностью, чем CISC. Некоторые RISC-архитектуры, например, ARM включают в себя специальные средства для увеличения плотности кода, такие как режим Thumb в процессорах ARM[4].
Примечания
[править | править код]- ↑ Definition: code density (англ.). ComputerLanguage.com. Дата обращения: 29 августа 2020. Архивировано 26 сентября 2020 года.
- ↑ 1 2 3 Weaver, 2009, p. 459.
- ↑ Weaver, 2009, p. 461.
- ↑ Andrew N. Sloss, Dominic Symes, Chris Wright. ARM System Developer’s Guide: Designing and Optimizing System Software. — Morgan Kaufmann. — P. 15. — ISBN 1-55860-874-5.
Литература
[править | править код]- Vincent M. Weaver, Sally A. McKee. Code Density Concerns for New Architectures // IEEE International Conference on Computer Design. — 2009. — ISBN 978-1-4244-5029-9. — doi:10.1109/ICCD.2009.5413117.