Wpis z mikrobloga

Na głównej incident kałowy pod tytułem "nowy Minister Cyfryzacji nie wie ile jest bitów w bajcie". Zostawiając na boku fakt, że jest managerem, a nie pracownikiem technicznym, i wcale nie musi znać się na aspektach technicznych, na tak postawione pytanie nie ma jednej odpowiedzi.

Bajt na to najmniejszy kawałek pamięci, jaki możemy zaadresować. Na x86 (oraz x86_64), ARM i RISC-V to 8 bitów. Ale nie zawsze tak było. Na przykład płacono mi niezłe pieniądze za programowanie systemu, gdzie bajt miał 16 bitów (dodatkowo system korzystał z big endianessa). Historycznie bajt miał różne dziwne długości, na przykład 6 bitów (takie "bajty" nazywano sylabami).

Dodatkowo, istnieje coś takiego jak długość "słowa" procesora - na przykład mamy procesory 8-bitowe, 32-bitowe, 64-bitowe, a nawet 16-bitowe (jedynym znanymi mi takim MCU jest MSP430 od TI)

Inna bajka, że jeśli się nie mylę to niektóre ARMy od STMElectronics miały bit-level addressing. Ale tutaj mogę się mylić.

#programowanie #programista15k #pracait #embedded
  • 9
  • Odpowiedz
Inna bajka, że jeśli się nie mylę to niektóre ARMy od STMElectronics miały bit-level addressing. Ale tutaj mogę się mylić.


@groman43: Cortexy-M (a więc również i STMy) mogą opcjonalnie implementować bit-banding, czyli funkcję, która pozwala na dostęp do rejestrów bit po bicie (odczyt/zapis bajtu w tym obszarze powoduje zapis/odczyt jednego bitu rejestru)

https://developer.arm.com/documentation/dui0552/a/the-cortex-m3-processor/memory-model/optional-bit-banding?lang=en
  • Odpowiedz
@groman43: no i po co wymieniasz tu architektury procesorów. Pytanie było proste - ile bitów ma bajt? Mógł zasadniczo odpowiedzieć, że bajt może mieć różną liczbę bitów aczkolwiek nie da się ukryć, że ostatecznie się zbłaźnił. Na pewno wielu ludzi z branży będzie czuło dyskomfort musząc współpracować z kimś takim.
  • Odpowiedz
@groman43: pozdrawiam jako programista TI C2000. Do dziś Texas produkuje rdzenie DSP C28, w których najmniejszą adresowalną jednostką jest bajt/word 16-bitowy. Char też jest 16-bitowy. Co się człowiek z tym namęczy...
  • Odpowiedz
@groman43: dlatego w różnych dokumentach, np. specyfikacjach protokołów, zamiast bajtu używa się pojęcia oktetu. I nie wiem czemu tak się dziwisz tym 16-bitowym procesorom. Miliony ludzi ich używały, były m.in. w pierwszych pecetach. Intel 8086, 80186 i 80286 były 16-bitowe. Dopiero 386 był 32-bitowy. Procesory 16-bitowe są mało popularne obecnie, bo albo ktoś bierze starego ośmiobitowca (np. oryginalne Arduino) albo coś współczesnego. Co do bitowego adresowania, to jest np. w STM32.
  • Odpowiedz
Bajt jest tam tożsamy z wordem?


@To_ja_moze_pozamiatam: to są różne rzeczy i nie są tożsame. Natomiast może się zdarzyć, że będą to takie same wielkości i tutaj właśnie był podany przykład. Inny powszechnie spotykany przypadek, to chyba niemal wszystkie procesory 8-bitowe, np. AVR w Arduino. Tam słowo i bajt mają po 8 bitów. DSP C28 jest o tyle nietypowe, że procesory 16-bitowe miały jednak zwykle "normalny" 8-bitowy bajt i C28 jest
  • Odpowiedz