The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,860 other subscribers

Archive for the ‘ARM’ Category

For my link archive: Counting the leading zeroes and ones in a binary number with C#

Posted by jpluimers on 2025/03/13

From a while back, but still interesting:

  1. [Wayback/Archive] Counting the leading zeroes in a binary number with C#
  2. [Wayback/Archive] c# – Getting the number of leading 1 bits – Stack Overflow (thanks [Wayback/Archive] Barry Kelly and [Wayback/Archive] SoapBox)

Especially the first link explains the algorithm very well and is similar to links referred to from the Stack Overflow question as it is based on counting ones (and leading ones are basically leading zeros but bit-inverted).

It also explains a cool thing for leading zeros: modern CPU have instructions which .NET Core.

Read the rest of this entry »

Posted in .NET, AArch64/arm64, Algorithms, ARM, Assembly Language, C, C#, C++, Delphi, Development, Software Development, x64, x86 | Tagged: , , | Leave a Comment »

Raymond Chen on The AArch64 processor (aka arm64) in many parts

Posted by jpluimers on 2025/01/14

For my link archive: below a series of articles my Raymond Chen on “The AArch64 processor (aka arm64)” in the order of appearance from a few years back and still very relevant today.

It is part of a few more series on processors that (were) supported by Windows. A good reference to find which version supported which processor architecture is the tables in List of Microsoft Windows versions – Wikipedia.

Read the rest of this entry »

Posted in AArch64/arm64, ARM, Assembly Language, Development, History, MIPS R4000, PowerPC, Software Development, The Old New Thing, Windows Development, x64, x86 | Leave a Comment »

Homelab: 2U server, short depth, with front IO, based on Ampere Altra and Asrock Rack ALTRAD8UD-1L2T motherboard

Posted by jpluimers on 2024/06/27

For my link archive: [Wayback/Archive] Homelab: 2U server, short depth, with front IO, based on Ampere Altra and Asrock Rack ALTRAD8UD-1L2T motherboard

Pictures from the above post below the post signature.

Via [Wayback/Archive] Nicolas Massé on X: “I wrote an article on my last build for the Homelab: 2U server, short depth, with front IO, based on @AmpereComputing Altra and @ASROCKRACK ALTRAD8UD-1L2T motherboard. 🥳 ➡️ … /cc @Newegg @JoeSpeeds”.

Motherboard: [Wayback/Archive] Asrock Rack Bundle ALTRAD8UD-1L2T Deep Micro-ATX Server Motherboard Single Socket (LGA 4926) with Ampere Altra M128-26 128 cores & 2U passive cooler, Dual 10G – Integrated by Asrock Rack – Newegg.com

--jeroen

Read the rest of this entry »

Posted in ARM, Assembly Language, Development, Hardware Development, Power User | Leave a Comment »

ASRock Rack ALTRAD8U-1L2T is a mATX Motherboard for up to 128 Cores which supports IPMI!

Posted by jpluimers on 2023/05/28

I would really like to try out a system based on the interesting [Wayback/Archive] ASRock Rack ALTRAD8U-1L2T is a mATX Motherboard for up to 128 Cores specs from the PDF and ServeTheHome images below:

ASRock AMPERE ALTRADBU-1L2T
Product ASRock Rack Ampere Altra Family deep microATX motherboard
Power source Supports ATX PSU or 12V DC-in
Form Factor Deep Micro-ATX (9.6″ x 10.5″)
Processor System CPU
Chipset
1 Socket (LGA-4926) Ampere® Altra®/Altra® Max processor
System on chip
Memory Capacity 8 DDR4 288-pin DIMM Slots (1DPC); Supports:
RDIMM up to 256GB each, max. 3200MHz.
LRDIMM up to 256GB each, max. 3200MHz
Expansion PCIe slots

Others

SLOT7: PCIe4 x16
SLOT6: PCIe4 x16
SLOT5: PCIe4 x16
SLOT4: PCIe4 x16
4 SlimSAS (PCIe4 x8)
2 OCuLink (PCIe4 x4)
Storage M.2
SATA port
2 M.2 M-key (PCIe4 x4), supports 2280 form factor
N/A
Network RJ45 2 RJ45 (10GbE) by Intel® X550
1 RJ45 (1GbE) by Intel® i210
Management BMC
Dedicated IPMI
ASPEED AST2500: IPMI 2.0
1 RJ45 via Realtek RTL8211E
I/O USB
COM port
6 USB3.2 Gen1 ports: 4 rear Type-A, 2 via 19-pin header
1 (9-pin) header
Display Video 1 DB15 (VGA), 1 (15-pin) header
Security TPM Supports 13-pin (SPI) TPM modules

Read the rest of this entry »

Posted in AArch64/arm64, ARM, Assembly Language, Development, Hardware, Power User, Software Development | Leave a Comment »

STM32 Simulator Early Access by Wikwi Makes: sign up through this Google docs form

Posted by jpluimers on 2022/08/18

If you like working with STM32 and want to try out a new simulator for it (by [Wayback/Archive] Wokwi (@WokwiMakes)), then sign up at
[Wayback/Archive] https://docs.google.com/forms/d/e/1FAIpQLSfpuGcUI1YdsX6o5lBhit14GPBEh6L7MVTSSDEk_HJFvBgjUQ/viewform

Via [Wayback/Archive] Wokwi on Twitter: “Want to try out the new STM32 simulator? Sign-up for early access: link.wokwi.com/stm32-simulator 🤓” and [Wayback/Archive] tnt (@tnt).

–jeroen

Read the rest of this entry »

Posted in ARM, ARM Cortex-M, Assembly Language, Development, Go (golang), Hardware Development, Software Development, STM32 | Leave a Comment »

When floating point code suddenly becomes orders magnitudes slower (via C++ – Why does changing 0.1f to 0 slow down performance by 10x? – Stack Overflow)

Posted by jpluimers on 2022/01/26

When working with converging algorithms, sometimes floating code can become very slow. That is: orders of magnitude slower than you would expect.

A very interesting answer to [Wayback] c++ – Why does changing 0.1f to 0 slow down performance by 10x? – Stack Overflow.

I’ve only quoted a few bits, read the full question and answer for more background information.

Welcome to the world of denormalized floating-point! They can wreak havoc on performance!!!

Denormal (or subnormal) numbers are kind of a hack to get some extra values very close to zero out of the floating point representation. Operations on denormalized floating-point can be tens to hundreds of times slower than on normalized floating-point. This is because many processors can’t handle them directly and must trap and resolve them using microcode.

If you print out the numbers after 10,000 iterations, you will see that they have converged to different values depending on whether 0 or 0.1 is used.

Basically, the convergence uses some values closer to zero than a normal floating point representation dan store, so a trick is used called “denormal numbers or denormalized numbers (now often called subnormal numbers)” as described in Denormal number – Wikipedia:

In a normal floating-point value, there are no leading zeros in the significand; rather, leading zeros are removed by adjusting the exponent (for example, the number 0.0123 would be written as 1.23 × 10−2). Denormal numbers are numbers where this representation would result in an exponent that is below the smallest representable exponent (the exponent usually having a limited range). Such numbers are represented using leading zeros in the significand.

Since a denormal number is a boundary case, many processors do not optimise for this.

–jeroen

Posted in .NET, Algorithms, ARM, Assembly Language, C, C#, C++, Delphi, Development, Software Development, x64, x86 | Leave a Comment »

Compiler Explorer – how various C++ compilers translate code into various machine code targets

Posted by jpluimers on 2017/01/03

The first implementation of Compiler Explorer supports many versions of the gcc, clang and icc compilers on ARM, ARM64, AVR and x86 targets.

On the left you type your C++ code, on the right you see the resulting assembler code optionally with byte code and colorised so you can correlate the C++ lines with the assembly.

A great way to start the year: learning new things!

Related:

–jeroen

via:

Some videos:

Read the rest of this entry »

Posted in ARM, Assembly Language, C++, Conference Topics, Conferences, Development, Event, Software Development, x86 | Leave a Comment »

ARM-Based Windows 10 Portable PCs!? Hell Yes! – Thurrott.com

Posted by jpluimers on 2016/12/08

Windows 10 on ARM will supply a long-rumored feature: The ability to run 32-bit Win32/x86 desktop applications—Apple iTunes, Adobe Photoshop, Google Chrome, whatever—directly on the system, unchanged.

Wow, just wow.

[WayBackARM-Based Windows 10 Portable PCs!? Hell Yes! – Thurrott.com

Via:

Posted in ARM, Assembly Language, Development, Power User, Windows, Windows 10 | Leave a Comment »

20 years ago today: Here’s a nickel kid. Go buy yourself a real computer.

Posted by jpluimers on 2015/06/24

An eternal Dilbert strip that is based on the tiny Here’s a nickel kid. Go buy yourself a real computer fragment from single.h:

#if _FP_W_TYPE_SIZE < 32
#error "Here's a nickel kid. Go buy yourself a real computer."
#endif

Read the rest of this entry »

Posted in *nix, ARM, Assembly Language, Delphi, Delphi 1, Development, Fun, Geeky, History, MS-DOS, Power User, Software Development, Windows, Windows 8.1, Windows 95, Windows NT, x86 | 2 Comments »

Understanding ARM Assembly Part 1 – Ntdebugging Blog – Site Home – MSDN Blogs

Posted by jpluimers on 2013/12/23

Another interesting series that just started: Understanding ARM Assembly Part 1 – Ntdebugging Blog – Site Home – MSDN Blogs.

–jeroen

Posted in ARM, Assembly Language, Development, Software Development | Leave a Comment »