Утилита предназначена для мгновенной визуализации битовой структуры адреса.
Основной акцент сделан на выравнивание по кеш-линии (64 бита). Программа позволяет визуально определить, попадает ли адрес в начало в ("Голову") кеш-линии, что является критически важным для производительности.
Показать, что низкоуровневая оптимизация - это искусство контроля памяти. Проект создан в рамках глубокого изучения архитектуры ЭВМ и логики битовых операций.
Проект не имеет внешних зависимостей и собирается на любой POSIX-системе.
1. Подготовка:
- Linux:
sudo apt update && sudo apt install build-essential git - Termux:
pkg update && pkg install clang make git
2. Сборка и запуск:
# 1. Клонируем и заходим в папку
git clone https://github.com
cd PROJECT_NAME
# 2. Компилируем и даем права (критично для Termux)
clang main.c -o my_utility || gcc main.c -o my_utility
chmod +x my_utility
# 3. Запускаем
./my_utility
Либо через Makefile:
Если вы используете make, просто введите:
make
Для справки: Содержимое файла Makefile
Если ты хочешь, чтобы команда make работала, создай рядом с main.c файл с именем Makefile и таким текстом:
all:
clang main.c -o my_utility || gcc main.c -o my_utility
chmod +x my_utilityПри вводе 0х40 (64 dec) единица загорается в колонке , соответствующей 7-му биту (если считать от 0 6-му). Это визуальное подтверждение начало новой 64-байтной линии.
Напишем две простые программы. В каждой масив на 16 интов, один массв выровненый по кэш- линии второй случайный. Выведем адреса нулевых элементов.
Программа состоит из 3 информационных слоёв плюс слой двоичное представление адреса. Веса разрядов (dec): Зелёная линия вес (DEC) можно определить смещение внутри страницы жёлтый адрес до головы страницы 128 байт. Красный адрес до головы 1916 байт (средина страницы). Розовая линия номер набора с 6 по 11 разряд (номер набора 2 \ 29). Синяя линия номер разряда. 4 линия 5 и так далее это двоичное представление адреса памяти. Сколько адресов введём столько и будет линий. Выровненый массив на 16 интов адрес жёлтого цвета мы видим выровнен по кэш-линии СКОРОСТЬ Случайный массив на 16 интов адрес красного цвета этот массив лежит в хвосте кэш-линии Падение производительности Массив рвётся на две части одна часть в первой линии другая часть массива ложится во вторую кеш-линию. Поход в память за второй линией процессор ждёт заряд разряд конденсаторов, доп разряд акб критично для мобильных устройств и т.д.
Ввод поддерживает десятичные числа и шестнадцатиричный формат. 12 разрядов визуализирует младшие разряды адреса. Маркер "Головы" если смещение (offset) равно 0, программа фиксирует идеальное выравнивание. Цветной вывод. Можно вводить много адресов. Выход из программы, любой символ. Я применяю стандврт (" q "). Есть возможность добавить множество сообщений, моё мнение они мешают.
Код написан на чистом си и не имеет зависимостей. Среды: Полная поддержка Linux Termux. Архитектура: х86_64, arm. Удобство: Можно писать и использовать утилиту даже лёжа на диване ( используя Termux на планшете ).