Showing posts with label Intel. Show all posts
Showing posts with label Intel. Show all posts

Sunday, 2 January 2022

My first PC from Watford Electronics (1994)

The year was 1994, I had just learned to program in Pascal, I was doing quite well in my A-Level computing course and my parents bought my brother and I a PC... With "Support".

Yes, they forked out quite a whack of cash just months before the Pentium processor came out to buy us a machine powered by an Intel 80486SX2, which ran at 50 megahertz.  It had 4 megabytes of RAM and a 200 megabyte hard drive, as well as a HDD floppy drive!  I was in love with this thing, and I'm a little bit sad when I think about it's fate later on.

We bought this beast from Watford Electronics, it included at home support for a flat fee, I'm pretty sure Watford Electronics never expected this to be an issue, but it was.

We came to use this machine, daily, without really knowing much about it at the time, but a 50Mhz machine was blisteringly fast to us, it had an S3 Trio VGA graphics card in it too and came with WE's own ISA expansion card to add a custom CD-ROM drive, which they touted as being "Dual Speed"... aka slow or very slow.

This was all fine until 1995... Yes a whole year passed.

The few friends with PC's at home had Escom Pentium based machines, having waited to ask their most affluent parents for them that Christmas gone by, and so it was my brother and I played catch up.

Sure, I had all the beans in the bag with Turbo Pascal 7.0 for DOS and my learning more and more about computing, but games were where it was at.

The first title to show some issues was CivII, which I got for my birthday from a couple of friends.  I loaded it up and it stuttered terribly on this machine; I know now that the bespoke card to link to the bus was the blame, it had no buffering and relied on the drive's throughput and this was too slow for the game.  So despite our machine appearing on paper to be more than enough to play, it struggled terribly.

So much so that my mother decided to pack the whole thing up, including my game, and send it to Watford Electronics... I'm not sure what they did with the machine, but it arrived back behaving exactly the same way as it had before, it was sub par by design, they couldn't admit that, but by damn it they had described this machine as being Dual speed and fast enough, so it was by damn it going to be.

And it was such that on a festering hot day in 1995 an engineer arrived, a suited, briefcase carrying engineer... from Watford Electronics... Under the auspices of their repair warranty service arrived to see... What?

Well he saw two kids playing games.  I think he expected an office or a school.

But no two kids and their sweaty sickly close bedroom, and he set about looking at the issues, and sure enough he agreed with us, grudgingly, but he agreed.  And set about trying to sort things out.

He reinstalled the machine, no dice, it was just as slow doing the same tasks with the software reinstalled.

He fettled about with the settings; which I had already done; resulting in things getting even slower.

And in desperation of the perspiration he reached into his bag and pulled out a selection of options, the first was a sparkling Intel Pentium Overdrive chip, which would have overlain the socket 7 and boosted us immensely.  I knew this was pretty damn expensive.  But alas his hand waved over this and selected a 486 DX2-66Mhz, he set up the motherboard and rebooted.

Telling me something I'd not understood until this point... "The SX Chip you have doesn't do floating point maths, it's all integer based".  A slight exaggeration, but about right, the SX was a DX which had failed certain tests, Intel had cut certain traces and so they sold the lower spec chip rather than writing off the failed DX in their ledger.

The DX2 however, only really made a difference in Doom... Which we played already, and it didn't make that much of a difference with the 66mhz to 50mhz jump being so small.

And so it was he reached once more to a different flap in his bag and he pulled out a tray - yes a whole tray - of 486DX4-100 chips... 100Mhz!...

Things ran like a dream then, even with his busting of my mobo jumper settings.

I pushed that chip to 114mhz on very rudimentary air cooling, and it worked well into the 2000's.  I loved that chip, and we got it by bemoaning the system.

The system itself, with the proprietary Watford stuff in it eventually broke down, I had gotten into tower cases too, so the large desktop case of mostly air was left, the hard drive failed, and the machine was itself lost in body but never in spirit.

That 486DX4-100 chip stayed with me a long while, I had it until at least 2003, and in use.

Wednesday, 10 February 2021

My Desktop PC History

My PC history and I literally mean PC's, so we're talking after my Atari ST, this is a list of the machines I've owned and used in order and a little bit about what I did with them.

486-SX-25 (1994)

The first PC I used was built by a company based in Baseford in Nottingham, it was at college and was equipped with an Intel 80486SX, it ran at 25Mhz, ran DOS 6.2 and a netware network layer.  It had 4MB of ram and basically was very much locked down, that was until we figured out how to quit out of the netware login screen (repeatedly CTRL+C whilst hitting enter fast).  The college had loads of these machines of this specification, the three main IT labs of course but then there were two more directly outside one of the lab doors, another in the head of Chemistry's office and a bunch in the library.

I primarily programmed in Turbo Pascal on these machines, I remember playing about with writing my first games on this in EGA graphics mode.

486-SX2-50 (1994)

My first home PC, it was from Watford Electronics and had their own ISA riser connecting to a dual speed CD-ROM, I remember Encarta amazed me, as well as working out how to just play CD's whilst programming.  I of course did my college work on the machine, and I remember my brother did his too.

The machine came with 4MB of RAM and a 200MB hard drive... MEGABYTE... I remember windows 3.1 ate into the disk significantly.

But DOOM came into view, now at the time I had no idea really what SX meant, but it had effects on DOOM's speed.  One of them was the maths.

I actually programmed around the limitations of t he SX chip without realising it and this came back to save me (or curse me) later.

Later we got Dark Forces and another 4MB of RAM, giving us a total of 8MB in this machine as I went to Uni.

But basically the SX had no floating point unit, it had only integer mathematics as well as a bunch of other operations being missing.  It was basically a DX chip which had failed QA and had come part of it disabled, but this was a "2" which meant it ran twice as fast as the machines at college.  And that speed difference was reflected in my little home brew games suddenly running twice as fast.

This remained my main and only PC going to Uni, but in my second year of Uni, sharing this machine with my A-Level studying brother I needed my own and these "Pentium" machines had been released.

Pentium-100 (1996)

The power of the penium, with the EDO ram SIMM's was so massive compared to the 486, and this was the first machine I started to program in C on.  Indeed, it was also the first machine I wrote Java on and even played with Linux.  But I never loved this machine.

Running at 100Mhz, it was blisteringly fast to me, but I was still using DOS 6.22 and Windows 3.1 for the most part.

I should have, it was the first machine I bought with my own hard earned money, I did keep it until my final year at uni, but by then I had started to build my own machines.... But I'd also been to work in IT.

HP Pentium-166 (1998)

This was a machine at work, it was mainly a windows 95 platform for me to work with, I soon had Windows 95 at home too, so things balanced up.  All I used this for was some very basic database work, which the prior incumbent in my job had left (and which was awful).

Compaq Pentium-II 233 (1998)

Another work machine and at 200Mhz, it seemed like the things of legend, but this was a compaq deskpro to which all the analysts and myself upgraded, with  massive 17" CRT monitors, they were really nice machines.

I did a bunch of Pascal programming on it, a bunch of Cobol and some database work (I think it was in FoxPro).

Pentium-III 300 (1999)

Returning to Uni for my final year I built this machine myself, I remember this was a slot-1 processor, and I put a whopping 32MB of RAM into it.  I wrote my dissertation on it and networked it to my older Pentium 100.

Voodoo3-2000 AGP.... Which I only sold in 2013 on ebay, at a profit.

Cyrix-150 (1999)

This was actually my pentium 100, but I found the Cyrix chip for sale for only £10 at maplins so bought it and stuck it in the old PC, to find it was a massive performance improvement when compiling and running both C and Java.

Celeron-III 450 (1999)

This was a machine I actually built for a customer, I spent a bit of time making PC's and making money doing so in the late 90's.  And this was one which stuck out to me because it was such a nice performing machine, it included a graphics card (I think it was a Voodoo3-3000).

The build was with a gigabyte motherboard using slot-1, but the processor was socket 370, buying it and using a daughter board was cheaper than buying a socket 370 motherboard, and performed no differently.  It actually made adding the cooler so much easier.

Pentium III 500 (2000)

I bought this after uni, just a new chip, with 128MB of RAM as I set off away from uni.  I just played a lot of games on this machine, dabbled with Java, but I didn't have the compiler suite we used at work to my programming was mostly all in the office.

Pentium III 500 (2001)

This was the office machine I had at the time, I'd had one before, but don't recall it, this one however was by the local computer firm in Redditch and I remember it was a 500mhz Pentium III.

GeForce... At some point at home in 2001/2 I got the first GeForce card at home and started to babble with OpenGL on Linux.

Pentium III 1ghz (2003)

Another office machine, this was a bod standard HP I think, the job here was C++ programming, but coming from a pure Borland using history (all the way from college to now) I was suddenly not in a Borland using shop and... well... I didn't stay at this job very long.

Pentium IV - 1.5ghz (2004)

A prescott Pentium 4... at the high speed of 1.5ghz, this was my first hyper threaded machine, it was built from the ground up for gaming... so it had 1.5GB of RAM (the most I could afford)... the dual thread pentium 4, overclocked to 2ghz on air.

A pair of GeForce 8800GTX in SLi.

I bought it to run Battlefield 1942 really well, and was really very good.  I also played national league Day of Defeat and started my dual obsessions with World of Warcraft and Eve-Online on this machine.

Core 2 Duo 3ghz - Wolfdale - 2.3ghz

I built this machine for my father, he didn't appreciate it at the time.

Core 2 Quad Q6600 - 3ghz (2007)

This was my main driver for years, and the machine I first put into the Cosmos 1000 case.  It had various RAM, disk, graphics configurations until the last iteration being a GeForce 260 GTX (squared) so this was two GeForce 260's on the same card in SLi together.... It was really good.

I spent time coding for Lordz Game Studio on this machine, as well as playing lots and lots of games.

Core i7-920 (2012)

Yeah, we're at Core i7.... the best I could accord for the i7 release set and it went into the same case as the Q6600 was in.  This machine was a main-stay until I actually swapped out the Core I7 (4 cores 8 threads) for a Xeon which was 6 cores and 12 threads... I did that in like 2016... so I've had 12 threads at home for a long old time.

Ryzen 5 3600X (2018) -> Ryzen 9 3900X

Team Red.... Aside from the cyrix I've always, always been Intel... Ryzen turned my head, and the 6c12t 2600 was the first I could get my hands on.  But the motherboard was purchased with upgrades in mind and the same machine now has a Ryzen 9 3900X 12c24t.

It was a mchine built around the 64GB of RAM, dual m2 NVMe and a stack of 4TB disks, all in a corsair obsidian case.

Thursday, 28 November 2019

From intel to AMD...

Well, that just happened... I bought a Ryzen CPU...

That may not seem a huge revelation, but let me be clear in my PC's I have always (well nearly always) had Intel CPU's.  But the current 3rd generation of Ryzen has Intel on the ropes and I have to get moving with my new PC build.

And I've gone in what may seem a strange direction.

Initially I thought about third gen Threadripper, but I really can not justify the expense, most of my work is done on servers and though I could bring it all onto my workstation for compiles (like LLVM) but really its a convenience and not worthhy of nearly £2500 (after a processor and motherboard).

So what did you do Xel?... WHAT DID YOU DO?

Well, I've gone with an AM4 socket motherboard, a very good AM4 socket motherboard, and I've gone with a 3rd Gen Ryzen Zen 2 architecture processor, but perhaps not the one you'd expect.

You may expect me to have gone with the Ryzen 9 3950X, and you'd be right sometime next year, when they're properly out and in stock and prices have homogenised some.  But today, pre-Christmas, they're like rocking horse shite and costly.

The processor I've gone with then is the Ryzen 5 3600X...

Yes, it's Zen 2, yes it's AM4... Yes it's only 6 cores and 12 threads like my current workstation machine.  But it was only £200.  It comes with the stock cooler, so I cam practice with that before delving into fitting the AIO.

I've gone with an Asus ROG top tier motherboard for this class of processor, and I plan to let it go up to the 3950X with it's 16 cores and 32 threads sometime next year.

Memory, I've gone with two sets of 2 x 16GB Corsair Dominator RGB.  For a total of 64GB of RAM, which is a massive upgrade and maxes out the motherboard.

For that's the big thing I'm giving up, if I had gone with the threadripper3, then I'd have automatically had access to double the RAM slots (8 to be precise) and 128GB of RAM is common as a maximum on the X399... But here on the X370's it's usually 64GB (though some are 128GB).

The motherboard, RAM and processor all come from Amazon, for (to me) the princely sum of £700.  So the whole new machine, with the PSU, AIO, Case and storage I already have has topped me out at £1,100.

Expect build videos and tech tinkering footage soon.

Tuesday, 12 June 2018

CPU Speed : That Time I got Conned

As a technologist I've always been interested in the newest kit coming out, and many moons ago this exact demand for kit made me very mad.

For you see, the previous year I'd built my first 2 ghz machine, and it was very costly.  Hyper threading was new to the market, at least in the Pentium 4 range.  And as usual I had need for more power from my machines.

So I hit the interwebs and found a machine (on ebay I think) which was 2ghz... A nice CPU was mentioned in the specification... But the memory and graphics capability were lacking...

I could make the difference up from my spares bin, so I took the dive ordering this machine as a base on which to work.

It duely arrived, I plugged it in, and was dismayed to find it clocking only around 1.1 ghz.  Baffled, I check the advert, "Dual core 2 ghz chip" was definiately there, with the sub-note "exact type may vary, select Intel or AMD preference".

Back to the machine it is dual core, but it is not 2 ghz, no where near.  So I call them up...  Not even have I explained and the phone was put down on me.

Maybe, just maybe it was a mistake, I call again... Phone rings unanswered.

Paypal dispute time as I pack this machine back up into it's box.

Except, the seller won't refund nor accept a return.  They have meticulos pictures of the machine and documents stating that it's correct and I'm trying to con them...!

The ebay resolution center rule in their favour, I'm obliged to accept the item.  I forget the details exactly, but it was a very protracted affair.  All whilst the machine say unused and I started to build an actual second 2ghz machine for myself.

After about four weeks though, I get the resolution center ruling, and accepting the fact I have this potato (it was still a good price for the potato, just not the fabulous deal I thought I had gotten)...

But one of the documents catches my eye, it said:

"2ghz speed is from our including two processors of at least 1ghz speed"

and in pencil of this digitized photo of the page they've put the processor spec and the maths... 2 x 1.1ghz = 2.2 ghz faster than they had paid for.

You know and I know that's not how processor speeds work, but ebay had accepted it, the conners at the other end of this sham had me very very annoyed by this....

However, whenever I seek people bemoaning the 5ghz tests being carried out by Intel, with external hidden sub-ambient coolers helping, I can't ever stop the phrase... "that's 2.5ghz x 2 easy"... Or thinking my current machine at home is a 48ghz speed (12 x 4ghz).

Thursday, 1 February 2018

Intel Home Server CPU

You're all aware (I hope) of my stack of servers under the desk, however, the main server I use is actually a re-purposed desktop - it's the G33 chipset Socket 775 to Socket 771 running a Xeon E5420...

And I have my plan forming to re-case my main workstation, however, I wondered... As I'm currently very exposed with data not replicated across drives on my little server and the machine being quite high power, whether I might not do better in the short term of recasing both... AND changing the server to an always on box.

This way, I could build a machine around a dedicated new board and chip... I started out with the AMD APU's the 2580 and some others, up to a quad core, and as fabulous as they look on cost they didn't float my boat.

I don't need a lot of number crunching power on the server, so what was my concern?  Well, I'm an Intel guy... Always have been, and think I always will be.  Obviously I started with MOS processors, then moved into the world of Motorolla, but since 1994 I've steadfastly bought and used Intel.

Why? Well, I remember the original AMD offerings, they were copies, and hard to find in the UK market without knocking the quality of other items in your build, so I stuck with off the shelf Intels.

I then build my own Pentium II and III computers, I also found use for Celerons - I've never had anything against them - I had a Pentium IV Prescott when they were literally brand new, then I've had the Core i7 950, plus all the Xeon servers and modding fun.

At work I've always been supplied Intel too...

What options does the market offer in the Intel world?.... Well I spotted the dual core, dual thread Celeron G9300.... Which looks just the ticket for me, it's pretty low power (53W compared to the Xeon E5420 at 80W), it can address more RAM, so giving me expansion options and it had decent reviews.  The trick is to not expect a lot from it, and to actually put it to a good use.  If that use is as an SSH point into my network, a git server, NFS host and squid box, then that might work quite well.

I've therefore drafted a build, you can see it here.... 

If nothing else that case, might be a perfect buy, to get the ball rolling, and guess what!... Tomorrow is pay day.

Thursday, 19 October 2017

Gaming, AMD & HP

Over the next few weeks I'm going to be musing about the connections between the humble concept of the PC, where it started for myself, which processors and upgrade options I've taken, which dead-ends I've been down and where that took my gaming experience.

And where I hope to take my gaming experience in the future.

Today of course I'm running a quite nice Intel i7 processor and an EVGA GeForce 1080 GTX graphics card, however, that rig is nearing end of life for me, only the graphics card is a recent edition, and so as a high-performance low budget kind of chap I will be looking at my options, including the latest offerings from both Intel and AMD and the modern differences in nVidia versus AMD graphics offerings.

The secondary thread from this will be a little retro-grade gaming, this is not going to be full on retro - though I am in the mood for some Carrier Command on my Atari ST - we're going to be looking at retro post 2000 stuff.... Watch this space.

So why does this post have "HP" in its title, well... the community out reach team over at HP have sent me a missive, and though they have a zero budget want to share my posts with you guys in the world.

If you came here from a HP/AMD re-tweet, post in the comments below!

Thursday, 1 June 2017

You know...

You know that moment, when it's been over a week since you blogged, and yet you feel like it's been five minutes as you're so busy... Yeah, I've got that feeling right now...

So I thought I'd take a moment to list a few planned projects I have for these pages, if I ever get time for them....

The first is to look at the Intel TBB library, this is intended to assist in taking full advantage of the multicore capabilities of Intel chips, not something that has ever fully come into my sphere of interested (beyond running threaded code with posix threads or boost::thread or std::thread of course).

The second is some more Javascript, Python and MySQL interconnection code, in order to write a ticket/development control system, this is because I need a new one, I'm a little tired of the ones I use professionally, and the good ones out there on the interwebs are generally paid for, or limited for free, services.  So I want something super simple to handle my tickets... "Super Simple Tickets"... SST... That has a ring to it.

The third is to finally, go through some of my old Atari hardware, I plan to go through a video series just building from all the spares I have an Atari STE and I'm going to sadly sell it, as I have a LOT of junk left around the place.

A fourth might be to put together some AM1 powered AMD based machine, in order to see if the Intel TBB leverages itself smoothly onto that platform, and it appears to be pretty cheap to get entry there.

A fifth is to start recording some more game-play on my brand new EVGA nVidia 1080 GTX SC, which is an awesome piece of kit and has opened up the scope of my game play from my retired EVGA nVidia 700 GTX SC... Yes, Superclocked to Superclocked I have moved, and it was a tear because the 770 still stood up and produced such good results on the games I play, however, Unreal Engine 4 based games coming out over the last year have started to test it, and I never could get good performance in early versions of Ark (before they optimised it) and not at all in the currently unoptimized Player Unknowns Battlegrounds... So an upgrade I had, and nearly £600 later I'm a very happy puppy.  Though the delivery was rather shoddy.

And the final sixth is related to the fifth, to record more about the Medieval Minecraft Fortress and underground themed base I've been building from the excellent book I reviewed previously.

Anyway, that's what I'm planning to be up to... 

What are you guys doing?

Monday, 28 November 2016

The Xeon Hack is Dead, Long Live the Xeon Hack!

Whilst investigating a problem with the Socket 775 to 771 Xeon hack machine I found it would no longer boot, it then would no longer post, and finally would no longer even accept power (indicated on the 3v rail LED)... This was a disaster, I've been sorting out the network at home for the last few weekends, and yesterday morning was meant to be a delve in & fix session (at 830am on a Sunday, this is a feat).

Unfortunately it immediately escalated, the motherboard showed distinct signs of corrosion, which is really strange as it's been in a dry airy room, there looked like (and tasted) like salt condensed on the board... I do wonder if this board had had a life near the coast in former days (it was second hand), and the salt just slowly precipitated out of the fibre glass?

Whatever the reason, there was salt all over the board, I cleaned it all with isopropyl alcohol to no avail, it would not post.

So I stripped it out and went to my junk pile, two other motherboards were already dead, the third... Well I know it works, after a fashion, it's an EVGA nForce 680i SLI board, my previous main workstation board actually... But I retired it for my Core i7, and it had been off with a friend of mine, it has at least one faulty RAM slot too...

Inserting my test Celeron D it came on, and I could run a memory test until it overheated and thermal shutdown occurred... So, I pulled out the Xeon from the hack board and got it into the nForce... Nothing... Dead... But, a BIOS patch later (with a floppy disk!) and everything was working...

So the Xeon went into the EVGA nForce 680i no problem!  4GB of RAM installed in the two working slots, and with new thermal paste I left it soak testing... Everything seems fine...

And this is equivalent (if not better) than the previous board, because I know its history, it's got six SATA headers dual gigabyte LAN... It's actually the perfect little server board, except for the lack of the working memory slots.

A new one of these boards is still like £50, so that was out of the question, I did order a new one from ebay a Gigabyte branded on, which can take up to 16Gb of RAM but only has a single LAN connection, it will have to do.

Until then though, the server is getting re-installed on the EVGA nForce 680i, and I'm going to keep my eyes on ebay for another of these boards to replace the already dead set from my junk pile.

On the topic of drives, I wanted to set up a series of physical mirrors with ZFS, however, I don't have matching drives, so I'm wondering what's the best order to set up the disks...

I feel a little confused as to the best way...


Friday, 23 September 2016

Reading my Reddit Comments (4001 CPU)

I've recently noticed spells when these pages come up with lots of hits from other sources, by far the most common is google, however, just now and then reddit becomes a source of my views, so I decided to take a look... I was happy, surprise and interested to see the threads... Lets take a look.


By far the most common of my posts to appear in reddit threads are tutorials, an interesting one, at least to me, is my 4001 CPU post.  Of course it is a miss-noma for me to call it the 4001 a CPU... The intel 4001 was a ROM chip, the 4004 was the CPU in that series; strangely no-one spotted that intentional change, and I had thought they would.


Click here for the original post on this blog.

The post is about re-creating an integer CPU in code, it was a forerunner to a series for instructing a class, the next posts, which were planned were to include floating point mathematics, however, the whole series was put on hiatus, and I never returned to the topic.

ninereeds314 on reddit calls me out on this, about my commenting that about 486SX code, where I said: 

"I know this because I once got told off for designing code with my 486SX2 processor - which could only add and subtract in hardware"

He says:

"No - even 8086 had integer multiply and divide instructions. They were slow enough that it was often worth avoiding them and using shift instructions and similar tricks if you could, and they could only work with the AX and DX registers (e.g. for multiply, AX x Source -> DX:AX) but they were there.
The 80386 32-bit versions of DIV, IDIV, MUL and IMUL were very similar, but working with EAX and EDX rather than just AX and DX where appropriate.
It was mostly the 8-bit chips that didn't have integer multiply and divide instructions. IIRC the Motorola 6809 was one of few 8-bit chips to actually have them, but came too late for the peak of 8-bit home computers - I think the best known machine it was used in was the Dragon 32.
Other than that, probably early RISC chips didn't have built-in multiply and divide instructions. One of the principles for RISC (at least years ago) was that every instruction should complete in one cycle, but multiply and divide needed a lot of transistors to do that - in practice they used microcoded algorithms (which was why they were slow)."
He is perfectly correct, my passing comment is slightly out of context, the 486SX could do integer multiplication and division as he says, it could not do floating point however, as it had a defective FPU which they disabled in the factory.  This was what the SX was, a crippled DX, which Intel remarketed as a cheaper chip, rather than throw away.
My article however is about 8-bit code, and I wasn't clear, the 4004 could NOT do direct multiplication of integers, it performed the multiplication by looping, as I had done in my code for the 486SX.  My solution for my code was quicker on the 486SX, which could do the integer add very quickly, but the multiplications were somewhat slower, over 100,000's of calls this did add up, so I avoided it; and in the article I'm only talking about an 8bit integer CPU.  I wasn't clear enough.

However, choralone, comments directly after and spots what I meant, so I know I'm not completely lost.

This discussion continues between ninereeds, choralone and nerd4code, as they discuss more deeply what I'm describing, and indeed I see ninereeds explain that the x87 co-processors, were slower; here he's wrong, once the data was delivered across the FSB to the co-processor they were extremely fast, unfortunately the gated way in which data was shuffled to the cache on the co-processors meant that they were slower, they also only generally ran at 12Mhz, so processing on them compared to a 286 itself was fast, shuffling data to and from them, was quite slow.  As it held the whole bus, with interrupts disabled.

The 387 co-processor was quicker, but could not use a 32bit bus, hence the 486 was designed to have the co-processor (redubbed an FPU) built in, but Intel had fabrication issues, and the photo-lithography techniques of the day left a lot of chips with perfectly functional integer cores, whilst the FPU's were defective... The answer, they severed the link to the FPU, relabelled it the SX and you had an emulating software library call, which vastly slowed the 486SX series down.

About this thread of discussion, I only wished they'd have had it on my actual blog... We like-minded people could have made firm friends!

On the same thread, we spin forward and the user "immibis" picks out my comment about where historically CPU's pick up their first instruction upon power on... he says he finds it hard to believe that they would pick a location in memory.

Well, they did, if a CPU picked 0x00 as it's start point, often it was not clear whether the CPU was reset, just powered, whether all the chips were ready, or the sync signal or whatever technology they had was ready, so it was common practice to have a all lines held low, and then raise on high along with the clock to indicate the start point of the CPU when it was literally first powered on, this high-line in early implementations (and indeed solid state machines before their being silicon) meant they didn't address zero, they in fact addresses a higher part of memory.... 0x800 was a common location for some machines I programmes for early on in my career.

Sometimes, as "jslepicka" points out, it was because the start of the address space was ROM, so the first instruction for execution was in ROM at memory address 2048, the preceding 2047 bytes had library calls, system calls and interrupt handling code in them.  And they were (sometimes) in physically different ROM chips, which could and would be swapped on development machines or embedded devices, so you could upgrade the system calls, patches to calls in these early 2047 bytes often turned into JUMP instructions out to new patches in higher areas of memory beyond the start, and then a series of NO-OP instructions to stop them being used.

However, some early machines had all the RAM at the start, and the ROM on a different address space, so you had to pull a line high to get to ROM over RAM (or vice versa), so you had two different memory spaces to address.  In those systems, you often had the problem that they were dodgy, memory was pretty daggy stuff, and chip failure rate high.

So, common practice, was to skip the first memory RAM chip at boot up, and use the second or third chips, according to the physical wiring diagram.  So the first chip, which would for a matter of pico seconds (or nano seconds, or however long the electricity took to start to flow) have an "over current" or jolt, was NOT being used.  As they genuinely tended to go bad more often, so much so it became routine for vendors, like Digital, to provide a book on how to actually make (with a soldering iron and logic chips!) your own replacement, or expansion memory!



There is also direct evidence of this in the books, of the skipping RAM and ROM, concepts... where you can still see references to the PWRUP functions, which established the power state (or power failure state) of AST (Async-System Trap) entry point addresses.  These AST entry point addresses were never ever 0x00, because... well that's just all the lines pulled low, i.e. no-power, and not indicative of the power being on, or off or in any state really.

Of course, I reference things from way before the PC era, when computers still came with manuals on the actual logic gates within...


Thanks to AlexeyBrin for posting my blog to Reddit, and thanks to all those whom commented, I had fun reading this one.

Tuesday, 21 June 2016

Project - Socket 775 to Socket 771 Xeon - Update

As an update to my original post, I got another socket 775 motherboard and took a video of how to cut the tabs off the socket, making it able to accept a socket 771 Xeon, but doing so with the original chip in place, to protect the socket pins.

Check it out here:



Thursday, 2 June 2016

Software Engineering : My History of Odd vs Even

I've been a avid fan of Intel's processors since my very first PC, powered by an Intel 80486 SX-25 it taught me so much, it also got me into a lot of trouble once, being an SX it was essentially a DX unit with a failed floating point unit at fabrication.  But Intel being the trixsy tech wizards they are, they didn't throw all those chips away, they simply disabled the broken portions, kept the working addition and subtraction sides and sold them under the SX label.

This of course led to some interesting differences between the SX & DX chips, the most obvious being the multiplication behaviour, on a DX to multiply to numbers you simply loaded each into a register and executed the one step multiply.  However, on an SX you loaded the start value, and the denominator into two registers and then looped through for a number of times adding them.  So the pseudo assembly code for it might look like this:

      LDA 3
      LDB 10
MUL:  ADD LDA,LDA
      DEC LDB
      JNZ LDB,MUL
      SAV LDA,RESULT

Where we find us loading up the two registers, then performing an add in a loop until we've added enough times.  This is of course a lot slower than:

      LDA 3
      LDB 10
      MLT LDA,LDB

And, the more you multiply the slower the SX could behave.  It wasn't as simple as this, however, for demonstration purposes we'll assume it was, there's no need to comment telling me I'm a moron (again) I know I am, but this is only a demo.
      
But this little SX machine was the only machine I had, and I was moving my programming skills from the playground of the Atari ST to the PC proper, and so I chose to try and get a lot of juice out of the machine.  On trick I learned was to page through screen memory scanning for shapes, but of course I quickly needed a bunch of math functions.  Using the CMath library was quite slow on the SX, so I started to find quicker home-brew alternatives.

Initially I had no idea I was working around my own CPU's hindrances (I only found this out later, when I realised on a DX2-66 chip I was getting magnitudes better performance).

One hunderance, of function, I worked around was odd & even... To calculate this, you would usually use a remainder, by division, in C this might look like this:

int remainder = 34 % 2;

Remainder would have a zero value for even values

const bool OddEven (const int& p_Value)
{
    return ( ( p_Value % 2 ) == 0 );
}

I was doing this in Pascal at the time, the syntax of which I have forgotten.  But you can see, it is a fairly simple function call, quite non-descript.  My problem on the SX was it ran so slowly.  A lot faster was to convert the value into a string, and inspect the last character!

bool l_IsEven = true;
int l_Number = 42;
char* l_str = new byte[16];
memset ( l_str, 0, 16 );
sprintf( l_str, "%i", l_Number );
int l_lastCharacter = strlen(l_str);
switch ( l_str[l_lastCharacter-1] )
{
     case 1:
     case 3:
     case 5:
     case 7:
     case 9:   l_IsEven = false;
                   break;
}

So, we get a value in l_IsEven more quickly, and it was indeed quicker for me to do this...

However, when I first looked at this problem, I had no itoa, nor sprintf, all I had was integer control.  Indeed, in the programming language suite I started with the only way to get text easily from a value reference to a string of characters was to write them to the screen with "write" and then to move back to the start of the line with a return carriage, and then to "read" the line again.

This was very very very slow, much slower than even the switch statement bastardization above.

So, I set about it the most logical way my 14 year old mind could think of...

It took the number, and did this:

bool l_IsEven = false;
int l_Number = 12354;
while ( l_Number > 10000 )
{
     l_Number = l_Number - 10000;
}
while ( l_Number > 1000 )
{
    l_Number = l_Number - 1000;
}
while ( l_Number > 100 )
{
    l_Number = l_Number - 100;
}
while ( l_Number > 10 )
{
    l_Number = l_Number - 10;
}
switch ( l_Number )
{
    case 0:
    case 2:
    case 4:
    case 6:
    case 8:   l_IsEven = true;
                 break;
}

This of course was totally horrible, and I quickly stopped using it in favour of the string method, and later in favour of the remainder function.

However, this horrible history of code remained in one of my header libraries, at the time they were Turbo Pascal Unit files (TPU), but when I went to University at 18, some four years after writing this original code I had tried to convert some of my Pascal support libraries to C and then C++.

One of the legacy calls I converted, without even looking, with an automatic tool was this very stupid function above... And yes, it ended up in at least one degree level project (oh what a fool I looked).



P.S. I'm sorry to report, I've never owned an AMD processor... However, I did have a Cytrix x86 to upgrade this very Intel Chip!

Thursday, 14 April 2016

Project - Socket 771 to Socket 775 - Xeon Conversion

I've been conducting an experimental project, one I've seen all over the net by others, but which had lots of different information... This is the conversion of a socket 775 motherboard to a socket 771.

First of all, why?... Why would we do this?... Well, the socket 775 is a commercial socket, supposedly sold to us mere mortal customers who buy one machine and one CPU at a time, and the motherboards and processors in the class were/are quite expensive.

We're talking about the Core 2 era, Celeron D, Core 2 Duo, Core 2 Quad.  I remember the Core 2 Quad machine I put together was really rather expensive at the time.  So, between six and eight years on, we're retiring those machines; yet they cost us a lot of money, and despite depreciation rates we users can still make use of these machines.  They can be useful as render farm nodes for 3D or movie work, they can be used as servers, to host basic information, or upload/download points, even as firewalls.  All roles they can fall into easily.

I personally am going to be using the machine I've got as a quiet webserver, retiring a venerably serving Pentium 4 Prescott for this old Dell machine.

So, what is the base machine?

Well, it's a franenstein, the in-laws have had me build them a new machine, so they had an Intel D31PR motherboard holding a Celeron D 450, and one gigabyte of RAM, a totally unhelpfully slow machine.  Even they noticed it was extremely slow.

From my spares they had enough parts to basically rebuild their machine, which I did, and it left me with their old motherboard.  I wanted to upgrade the processor, expand the RAM and add a RAID array controller card, but my budget is extremely low, we're talking £20.

Well on Amazon, I can get a RAID controller card for £13.. This left me £7... Hmm.. Luckily, the IT Department at work were able to donate to me some old DDR2 RAM, so I had the maximum 4GB the board can handle.

£7... Upgrade the processor?.... A challenge... Ebay... Core 2 Duo's and Quads, going for over £25 a pop, most of the Quads were going for £30+.  Way out of the budget.

But there were dual core Xeons for around £4... And I saw this hack out there on the wires, so I set about working.

The first step is to strip everything down, clean it perfectly, and get a scalpel.  The first part of the modification is to remove the tabs from the processor, these tell the user which way to orientate the CPU for insertion, they do nothing else... A consumer CPU is orientated horizontally, so there are tabs top and bottom to stop you inserting the wrong CPU.

And the Xeon has gaps left and right, meaning it'll bounce off these tabs on the socket 775.


Taking the scalpel, I started to cut the tabs, now I DID THIS WRONG!  A much better approach is to leave the current CPU in there, with the tabs engaged into the socket 775 CPU, and then cut between the CPU and the edge of the socket.  So the CPU acts as a guide and the delicate socket pins are protected out of sight below the CPU.



And clean the cuts you make up.



Remove any debris...



Then you need to go back to ebay, and buy a Xeon Socket Modification sticker, this is a little sticker, which will cover two rows of connections on the bottom of the CPU, it will allow most of them to pass through the plastic, but two pins are headed with a little connector, and behind the sticker these connectors actually swap the two pins over.

So, two pins, and the orientation, that's all that's different about a Socket 771 and a Socket 775 CPU.


The stickers are bar shaped, so they indicate which pin to swap, but lay the CPU down with the notches to the top, and from the bottom count 10 connectors from the bottom right, moving left... Voila, stick it down carefully.

Insert into the Motherboard socket now, so the notches are to the "top" of the socket, add the heat-sink assembly, and build it back up on your work bench.


Now, some videos and advice says you need to go to sites, and download patches for your motherboard.  During my project here I've found most Intel brand motherboards do not need any patching, only third party boards.  It seems Intel include all the microcode for all their processors (this is only a guess, I have no proof other than using five different intel boards, and two none-intel boards and always having to patch the non-intel branded ones, whilst the intel ones just work).

Then powering on...


It worked, I've gone from a Celeron D 430 to a Xeon 5130.  They're very similar processors, but the Xeon has dual cores and a much faster FSB.



My YouTube play list, for my crappy videos covering this project can be found here:

Monday, 4 April 2016

Junk PC - Celeron to Core 2 Quad

You may guess I've taken what was basically a junk PC from the in-laws and turned it into a fairly decent machine, what could it do?... Well it was reported to be showing "video like an old slide-show", "internet pages took so long to load we could boil the kettle" and a myriad other little things.

To hear those kind of reports from regular users of 70+ years of age, rang alarm bells, something needed to be fixed.

The machine was:

Intel Celeron 450 @ 2.2ghz
1GB DDR2 400Mhz RAM
Intel HD 3000 Graphics (on board)
320GB western digital carvier blue HDD

I've raided ebay, Amazon and my own spares, and the machine is now, re-cased, with new air-flow/cooling, and it's significantly improved:

Intel Core 2 Quad Q6600 @ 2.4ghz
4GB DDR2 800Mhz RAM
Asus GeForce 610 GT (1GB DDR3)
120GB Scandisk Performance SSD

With a nice new box, the thermal paste, a cleaning air-can and all the bits I needed the upgrade cost just shy of £60.

And the new incarnation of the machine runs:

World of Warships - High Settings - 50FPS
World of Tanks - High Settings - 50-60FPS
Minecraft - Fullscreen - 100+FPS
Arma 3 - Medium Settings - 25FPS
Arma 2 - High Settings - 60FPS
H1Z1 - Medium Settings - 50FPS

This is impressive performance from a bog standard Intel G33 Motherboard and a bunch of spare parts.

Certainly £60 was a very fair price for all this kit, and I can't help but thank the moron on ebay who sent me a mail abusing me for listing "such old shit at a high price"... because through whatever machinations I kept the kit, and here we are just a month on with is back in use and blowing through performance like no-ones business.


Friday, 30 May 2014

Virtual CPU - Signed Addition Clean Up & ROM Discussed

In today's CPU post I want to just clean up the signed addition example, we've covered the electronics but I've had a couple of messages asking how I might integrate switching into the CPU.

Well, simply for our Virtual CPU I'm going to include the signed addition based on the signed mode flag... We already had this signed mode flag in the CPU, and we default the flag to false or "off".

So that is a simple "if" statement within the "Add" function.

To integrate the switching we invent two new OP Codes, one to switch into Signed processing and one to switch to Unsigned processing.


I'll leave you guys to think about how the programmer has to remember which mode they were in, and hence what the bit patterns they have represent.

I'm also going to leave multiplication whilst in Signed Mode as an exercise for you to address yourselves, if you want to mail me your solutions, I'll happily take a look (if I find a minute).

So our op codes now run from zero to twenty-seven.  So with 28 operations what could a machine do?

You might think not very much, but the real 4004 (though not yet the same instruction codes as our virtual code) operated with just 46 instructions total, more than our code at present, but still not a lot.  Intel have kindly published scanned copies of their original datasheets and so we can peek into the depths of their instruction set here:


Numerically we can see almost immediately their instructions 2 and 3, are about Fetching... Fetching Immediate and Fetching Indirect (from ROM)... What is Fetching?  Well, in other machines, many assemblers and in our Virtual CPU the concept of Fetching is called "Loading" and we Load0 and Load1.  Both those instructions load from memory into the CPU, this is "Immediate" it immediately moves a value from volatile storage into the processor.

Indirect for our CPU would actually be the main program loading a program from a file, the file is our ROM or non-volatile storage and we load it into the RAM to use it.  However, we don't fetch from ROM.

I had been asked to add a ROM to the Virtual CPU, however, all a ROM is is addressable memory which can't be changed, so if you wanted to create a ROM yourself you can, create a byte array in your program, load from a disk file, or just insert data into the array upon construction.

And then add two new Op Codes you want to fetch from the ROM.  You can then add the ROM to your CPU as a reference...

I hope this gives you some ideas and you go a head and try to write a small ROM.

Next on our agenda will be "Interupts"... Stay Tuned.