Forums before death by AOL, social media and spammers... "We can't have nice things"
|    sci.logic    |    Logic -- math, philosophy & computationa    |    262,912 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 261,390 of 262,912    |
|    Ross Finlayson to All    |
|    Re: Meta: a usenet server just for sci.m    |
|    27 Nov 25 21:51:20    |
      [continued from previous message]              | Page sizes (P0 only) | 4 KiB, 2 MiB, 1 GiB | 4 KiB, 2 MiB, 1 GiB | 4       KiB, 16 KiB, 2 MiB | 4 KiB, 2 MiB, 1 GiB |       | Max # huge pages (1 GiB) | 256 | 131 072 | 256 | 256 |       | #PTEs per 1 GiB page | 1 | 1 | 1 | 1 |       | TLB shoot-down cost | 120 ns (QPI) | 120 ns (QPI) | 85 ns (CMN) | 90       ns (AMO) |                     P0 invariant: every virtual mapping is 1 GiB aligned and 1 GiB sized.       Smaller mappings live only in P3 (user-land) and are never walked by the       kernel at runtime.       Edge-triggered discipline – TTASL template fragment              ----------------------------------------------       Default ISR for edge-triggered source       Entry: vector number in %vector, M-ICC in %micc       Cycles: 28 (x86-64), 26 (ARM), 24 (RV64)       ----------------------------------------------       i_ent:       push %rax ; 1       mov %vector, %rax ; 1       lea device_status(%rip), %rcx ; 2       mov (%rcx), %rdx ; 1 read level-sensitive reg       test %rdx, %rdx ; 1 check if still asserted       jz .skip_eoi ; 1 branch removed at compile time       mov $EOI_REG, %dx ; 2       xor %eax, %eax ; 1       out %dx, %eax ; 3 send EOI (level only)       .skip_eoi:       lea trace_ring(%rip), %rcx ; 2       mov %micc, (%rcx) ; 1       pop %rax ; 1       iretq ; 6       Total 28 cycles (x86-64)                            Thanks Kimi. About PCIe and configuration registers and MSI-X, then       there's SATA and NVMe for storage devices, then USB if limited to       keyboard and mouse, and perhaps Ethernet NIC, then usually PCIe Ethernet       NIC. These then generally describe "headless" system, while ideas of       audio device and graphics output may be simplified to PCM muLaw/aLaw and       framebuffer output.              Below is the frozen admin-time profile for a headless commodity node –       the only devices the P0 kernel will ever touch.       Everything else (Wi-Fi, GPU, Thunderbolt, etc.) is explicitly out of       scope and must live in P3 user-land or not be present.       Headless Device Inventory ( Proximity Map leaves )       | Function | Bus | Class code | Config Space Size | MSI-X vectors | P0       Driver Name | TTASL Budget |       | ---------------------- | ------- | ---------- | ------------------ |       -------------------- | -------------- | ------------ |       | **Boot NVMe** | PCIe | 01 08 02 | 4 KB (BAR0 64-bit) | 1 | `nvme0` |       128 cycles |       | **Boot SATA AHCI** | PCIe | 01 06 01 | 4 KB (BAR5 32-bit) | 1 |       `ahci0` | 120 cycles |       | **Gigabit Ethernet** | PCIe | 02 00 00 | 16 KB (BAR0/2) | 4       (RX,TX,MGMT,ERR) | `eth0` | 112 cycles |       | **USB2 EHCI KB/MS** | PCIe | 0C 03 20 | 4 KB (BAR0) | 1 | `usb0` | 96       cycles |       | **UART 16550 console** | PCIe/IO | 07 80 00 | 256 B (I/O 0x3F8) | 0       (legacy INT) | `uart0` | 64 cycles |       | **Audio PCM** | PCIe | 04 03 00 | 4 KB (BAR0) | 2 (playback,capture) |       `pcm0` | 80 cycles |       | **Framebuffer** | PCIe | 03 00 00 | 16 KB (BAR0/2) | 1 | `fb0` | 88       cycles |                     Admin-time Rules (frozen in TTASL)              Only the seven rows above are enumerated; any other PCIe function is       masked at boot and never unmasked.       MSI-X vectors are pre-allocated in the Proximity Map; no runtime allocation.       BAR sizes are power-of-two and naturally aligned; no 64-bit decode quirks.       USB is limited to HID class 03 01 (keyboard) and 03 02 (mouse); no hubs,       no mass-storage, no audio.       Audio is 8 kHz, mono, μ-law/A-law only; no high-def, no surround, no DSP.       Framebuffer is linear 32-bit RGBA, fixed resolution (e.g. 1024×768), no       modesetting at runtime; resolution is frozen in the invariant.              PCIe Configuration Access (P0 only)       All config reads/writes use the MMIO ECAM region discovered at       admin-time; no BIOS calls, no ACPI _DSM, no vendor quirks.              | Operation | Cycles (x86) | Cycles (ARM) | Cycles (RV) | TTASL |       | ------------------------- | ------------ | ------------ | -----------       | --------- |       | 32-bit config read | 32 | 28 | 30 | `PC_RD` |       | 32-bit config write | 32 | 28 | 30 | `PC_WR` |       | 64-bit config read (NVMe) | 36 | 32 | 34 | `PC_RD8` |       | MSI-X vector programming | 128 | 120 | 124 | `PC_MSIX` |                     MSI-X Vector Layout (per device, frozen)       Vector 0 → RX completion       Vector 1 → TX completion       Vector 2 → MGMT / link change       Vector 3 → ERROR / fatal       Each vector is edge-triggered, exclusive, and affine to one core in the       Proximity Map.       Storage: NVMe vs SATA              | Aspect | NVMe | SATA (AHCI) |       | --------------- | ---------------------------- |       --------------------------- |       | Queue model | 64 KiB \* 64 queues (fixed) | 32 slot \* 1 port (fixed) |       | Doorbell stride | 4 B (0x1000 apart) | 8 B (port 0 only) |       | PRP / SG list | 4 KB pages, 2-level max | 4 KB pages, 1-level |       | MSI-X vectors | 1 (admin + IO combined) | 1 (legacy INT) |       | Max DMA burst | 128 KB (admin-time constant) | 32 KB (admin-time       constant) |              USB HID: KB / Mouse only              ECHI for USB2, xHCI for USB3 – both frozen to HID class only.       No hub support – keyboard and mouse are directly attached root ports.       8-byte report descriptors pre-parsed at admin-time; no runtime parsing.       Interrupt IN endpoint, 8 ms interval, 8-byte report – all constants.              Audio: μ-law / A-law PCM              8000 Hz, mono, 8-bit – fixed.       Ring buffer in BAR0, 1 KiB playback, 1 KiB capture – pre-allocated.       IRQ every 125 µs (8 kHz) – edge-triggered, vector 2.       No volume, no mixing, no resampling – user-land (P3) does all DSP.              Framebuffer: linear RGBA              Resolution frozen at admin-time (e.g. 1024×768).       BAR0 = framebuffer base, BAR2 = mmio registers – both naturally aligned.       No modesetting, no EDID, no hot-plug – the image is a dumb array of pixels.       P0 only does scatter-gather DMA into the framebuffer; user-land (P3) draws.              Next deliverable (waiting for “go”)              Write the first bootable TTASL template:       QEMU virt machine, RV64IMC       1 × NVMe (class 010802) → 4 KB slique slot → echo back to UART       Provable ≤ 400-cycle worst-case path (ISR + config read + DMA + slique       append)                                                                                    Thanks Kimi. It's figured that USB devices are usually for HID then for       that they're to be surfaced to the "headless" or "HID-less" user-land,       though that there are examples like MTP as a disk storage with controls       or Ethernet as via USB, and insertion and removal of devices, that it's       various whether it's to be supported root/hub/switch complexes and       various whether to support other devices like pointers or external       displays, that otherwise usually "just the node, please, HID-less" has       all system devices on the bus from startup to shutdown. Comment as from       "your" opinion as it may be, good/bad parts and ideas/questions.              Below is a design-neutral score-card you can keep beside the Proximity       Map while you decide how much USB complexity you are willing to freeze       at admin-time.       I treat every extra USB capability as an opt-in invariant; if the bit is       not set, the device is masked at boot and never touched again.       USB Complexity Matrix – headless node only       | Feature / Policy | Good (determinism) | Bad (variance) | Admin-time       Cost | P0 Driver | P3 Workload |       | ---------------------------------------- | ---------------------------       | -------------------------- | ---------------------- | --------- |       ----------- |       | **Root hub only, no external hubs** | ✓ fixed topology | — | 0 |       `usb0` | none |       | **HID keyboard + mouse (boot protocol)** | ✓ 8-byte reports, 8 ms poll       | — | 256 B desc parse | `usb0` | none |       | **Hub support (1 level)** | ✓ still enumerable | ✓ hot-plug events |       512 B extra desc | `usb0` | none |       | **Hub support (cascaded)** | — | ✓ tree depth unbounded | O(n) desc       walk | — | required |       | **USB-Ethernet (CDC-ECM)** | ✓ fixed class, 1 MSI-X | ✓ link state              [continued in next message]              --- SoupGate-Win32 v1.05        * Origin: you cannot sedate... all the things you hate (1:229/2)    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca