[HN Gopher] Reverse-engineering Ethernet backoff on the Intel 82... ___________________________________________________________________ Reverse-engineering Ethernet backoff on the Intel 82586 network chip's die Author : zdw Score : 134 points Date : 2023-10-31 15:59 UTC (7 hours ago) (HTM) web link (www.righto.com) (TXT) w3m dump (www.righto.com) | kens wrote: | Author here. This chip is pretty obscure, but I was looking at it | for another project and figured I might as well write it up. Any | questions? | PaulHoule wrote: | That's nice simple logic that is laid out in a way that makes | your reverse engineering straightforward. I really appreciate | these articles because sometimes I build discrete logic | circuits for fun so I see a lot of beauty in these things. | dekhn wrote: | Minor detail whilst I read through this (I'm on a quest to | understand my childhood Apple IIe, and at just the level to | start understanding ripple counters): I think it's 10Mbit or | 10Mb/sec ethernet, not 10MB/sec. | kens wrote: | Thanks, I've fixed that. | aftbit wrote: | I just wanted to say thank you for all of these write-ups, and | for the restoration and reverse engineering work that you do | for the retrocomputing community. | | Here's a question: how has this implementation changed in | modern nano-scale ethernet implementations? Modern ethernet | cards are asked to do much more offloading and processing, | potentially including application protocols like TLS and DMA | not just from memory but directly from NVMe devices as well. | Given that we can now spam out transistors by the billions, are | things like 10-bit counters still implemented via clever | dynamic logic in hardware, or is there a more brute-force | approach in use today? | kens wrote: | I looked at the datasheet of a random modern Ethernet chip | (ENC28J60) and it's simpler than I expected, doing much less | than the old Intel chip, although it includes the low level | "PHY" circuitry, which was a separate Intel chip in the olden | days. I expect that the newer chip has things like 10-bit | counters, but they would be implemented with standard cell | logic (i.e. computer-generated layout of gates) rather than | the hand-optimized circuitry of the Intel chip. | | On the other hand, you can get a chip like the W5300 which | includes the whole TCP/IP stack along with ARP and ICMP, | presumably running on an internal microcontroller. | | https://ww1.microchip.com/downloads/aemDocuments/documents/O. | .. | | https://www.wiznet.io/wp- | content/uploads/wiznethome/Chip/W53... | FastFT wrote: | High end NICs like Mellanox ConnectX are probably more | similar to the 82586 in terms of breadth of functionality. | They have (R)DMA, hardware timestamping, encryption, etc. | Although, I wouldn't expect to see much hand crafted logic | design outside of the very high speed signal paths like in | the serdes. | accrual wrote: | Hi Ken, thanks for another excellent article! I just wanted to | add that I recently bought an Intel EtherExpress 8/16 for my | 486 PC and it uses this chip. So although the chip may be | obscure, it still finds its way into the hands of new users | even today. :) | | The fact that I just got this card and had to search around the | net for drivers and documentation, and now your die photos are | available - I'm just amazed. What a cool chip and card. | tails4e wrote: | One part I didn't follow 2qs where then pseudorandom element is | introduced. This seems like it can implement variable delays in | powers of 2 based on the mask. | asylteltine wrote: | I can't fathom how there are humans who can understand this | stuff. I "just" do software and microcontrollers | PaulHoule wrote: | Chips at that level are often pretty simple. For fun I | something build out circuits with 74xx or 54xx that are about | this complex on a breadboard and drive them with an Arduino. | wmf wrote: | To give some perspective, a chip like this from 1982 would have | been designed by a very small team; maybe just 2-3 people and | they were using primitive 1970s technology with no Internet | access. Today you could learn how to design a chip like this in | a few years, maybe faster if you just stick to logic design. | tails4e wrote: | I work in ASIC design, and while it seems like gobbledygook, | it's not too hard to grok with some experience. Ken's blogs | help a lot in that regard. For context, compared to modern | chips these are extremely simple, bit at the time the tools for | chip design were limited so it was a bit of art and science in | one. Now there is a lot of automation to help 'draw' the layout | using standard cells for digital, but analog design is still an | art (and incredibly complex one). So at least for digital weve | first order abstracted designers from the individual gates and | wires, and design is more akin to programming, though in | languages designed for hardware. I feel fortunate enough to | have seen both sides, so have done both the full custom design | as well as the highly EDA driven design. | dboreham wrote: | Ken, not mentioned in the article but I wondered about the | history of this design. Some distant memory that it may have been | a dec design or dec-involved? Obviously there were TTL-based | Ethernet implementations in the 70s (Metcalf famous self-wire- | wrapped prototype[1] being the first). Perhaps this chip was a | VLSI re-do of one of those designs? | | [1] | https://americanhistory.si.edu/collections/search/object/nma... | kens wrote: | Robert Garner is writing a book on the history of Ethernet; I'm | leaving those historical details to him :-) | kloch wrote: | I love Ken's blog posts and this one is right up my alley. | | > introduced in 1973, Ethernet is the predominant way of wiring | computers together. | | That sentence does not really convey how hard it was for Ethernet | to win the network L1/L2 protocol wars. It _was_ fairly popular | right from the start because it worked well enough (better than | it should) and was very simple to understand, configure, and | operate. It also kept evolving with new media. | | But there were other systems it had to compete with, in some use | cases (ISP's) well into the late 1990's/early 2000's. | | Engineering workstations (Sun/SGI/IBM/HP) were early adopters but | often had to integrate with mainframe/minicomputers running | things like: - Token Ring: IBM was the 800lb | gorilla at the time - FDDI: supported 100mbps over MMF! | - DEC LAT | | In the PC sector - Novell/IPX: was very popular | in the 80's and persisted well into the 1990's. Most DOS games | like Doom *only* supported Novell/IPX - Macintosh: | AppleTalk - There were many other proprietary PC/DOS | protocols but they were not memorable | | In the ISP sector - Ethernet was very popular but | consistently lagged in supporting the fastest link speeds that | ISP's needed. The industry rapidly shifted to 1G (1999) and 10G | (2003) Ethernet once they became widely available. - FDDI: | 100mbps over MMF. The MAE-EAST peering exchange in the mid 1990's | used DEC Gigaswitches with unique switched FDDI 100mbps Full- | Duplex mode where each port was it's own separate FDDI domain. | - ATM: Telco types last gasp at optimizing for circuit switched | networks (phone calls) at the expense of packet switched networks | like TCP/IP. ATM over Sonet/SDH however supported much faster | link speeds initially. - Packet over Sonet/SDH: Allows the | use full-size TCP/IP packets over high speed fiber (Sonet/SDH) | links without ATM segmentation. This is what many OC3-OC48 ISP | circuits were running before 1GE/10GE took over. | | There were probably many dozens of other competitors that even | I'm too young to remember. Some of these were later modified to | run over Ethernet as you can see here: | | https://en.wikipedia.org/wiki/Ethertype | pdw wrote: | Didn't IPX always run on top of Ethernet? I thought it was | pretty much a direct derivative of Xerox PARC's research | network protocol. | wmf wrote: | Did IPX run on ARCnet? I remember ARCnet being popular in the | DOS world. | peteri wrote: | It ran on top of several things. I remember the company I | worked for (Alfa Systems) uploading IPX drivers to Novell for | testing over a modem using IPX as a protocol. | | Alfa designed Sage Mainlan originally a z8530 + RS485(?) PC | card followed by a 10Mbps Ethernet with our own chip design | (Enzo) fabbed as an ASIC by Toshiba. We wrote IPX drivers for | both versions. | | Interestingly we could hang systems with the 3COM cards in | our test systems if we ran at full speed and at somepoint we | had the full 500 metres of thick ethernet in the office. | | The IPX version that came with Netware 3 was rather nice, I | seem to recall it had a buffer of segments and these got | filled by the different layers of the network stack as needed | along with some fancy protocol filtering so your code only | saw just the data packets it was interested in. | wrs wrote: | There is still a Linux driver for the 825xx chips, if you want to | see how the software side works. | | https://github.com/torvalds/linux/blob/master/drivers/net/et... | userbinator wrote: | As far as I know, all of Intel's Ethernet controllers with the | exception of the most recent ones like the horribly-named i2xx | (is that a lowercase i, uppercase I, or lowercase L? Even Intel | seems to be confused about that on its site) have a 825xx part | number. The 82574 is commonly emulated for VMs. | noNothing wrote: | Brings back memories. I worked at DEC when Ethernet first came | out and I remember a few ocmpanies producing great benchmarks by | not backing off. | formerly_proven wrote: | There is a second generation of this chip, the 82596SX/DX. Much | faster 32-bit bus, still 10 MBit/s on the Ethernet side of | things. "Software compatible". Way bigger buffers. | | http://bitsavers.informatik.uni-stuttgart.de/components/inte... ___________________________________________________________________ (page generated 2023-10-31 23:00 UTC)