Liu’s Reviews: AIM Clients (Miranda)

Posted on December 31st, 2005 by Chris.
Categories: Chris, Liu's Reviews.

Today on Liu’s Reviews we’ll be looking at instant messenger programs. While it used to be that your best choice was probably AIM with an add-on program, there are a lot of alternatives nowadays, and we’ll be looking at the major clients for Windows.

(more…)

3 comments.

Why does 64-bit matter anyway?

Posted on December 25th, 2005 by Tim.
Categories: Programming, Tim.

A lot of confusion has surrounded the launch of the new AMD and Intel 64-bit desktop CPUs. For one thing, very few people actually understand what 64-bit really is. Ask three fairly technical people what it means to have a 64-bit processor, and you will likely get three different answers. Some technical people will even look at benchmarks and say “Look, 64-bit programs run slower! 64-bit cpus must be bad!”

First off, what does it mean to have an n-bit cpu? What is the difference between an 8-bit cpu and a 16-bit cpu? Most people will tell you that this is the measure of the basic unit of processing used within the CPU. In other words, they are saying that the size of the inputs to the ALU (Arithmetic Logic Unit) define the “bitness” of the CPU. For the most part, this is a fairly accurate assesment, and usually true. However, this is not what defines the “bitness” of a CPU. Take, for instance, the 8087 coprocessor. This processor has 8 registers, each 80-bits wide, and was released in 1980. By this definition, it would seem that in 1980 there existed an 80-bit processor!

So what really makes a 16-bit processor 16-bit? The actual answer is a bit more complex. The term ‘16-bit’ refers to the word size of the architecture. In general, this usually refers to the size of the registers, ALU, and memory addresses in the architecture (Note that in Windows programming, word means “16-bit integer”, which was the result of backwards compatibility of terminology from Win 3.1 to Win32). The registers, ALU, and memory addresses are not always the same size, however. One notable exception is the MMX capable CPUs, which had 8 64-bit ‘vector’ integer registers in a 32-bit machine. Also, many 8-bit (and 16-bit) machines, which had various forms of “extended addressing” to exceed the 256 unit (or 65536 for 16-bit) in effect having addresses larger than the word size of the architecture. What’s really important however, is that on modern architectures, 32-bit means that memory addresses are 32-bit, while 64-bit means that memory addresses are 64-bit.

Returning to my original point: What does all this mean for me and you? Why does 64-bit matter? Well for one thing, the native word on a 64-bit processor really is 64-bits. Without an understanding of computer architecture, one might think that this allows 64-bit processors to process twice the amount of data in the same amount of time. Naively, this is true, but ignores some important facts. First of all: Most data in the average computer does not need 64 bits. A naive translation of a 32-bit program would make every occurence of a 32-bit “int” into a 64-bit “int”, since in C++, the “int” datatype is generally the same as the word size of the target machine. Consider what happens now in the 64-bit version of the program: Every “int”, which was perfectly acceptable as a 32-bit number, is now stored as a 64-bit number. Essentially, 32-bits are being wasted. However, while the 64-bit architecture can process 64-bit numbers as fast (hopefully) as the older architecture processed 32-bit numbers, the 64-bits are not “free”. The problem comes from memory access. Every memory access of a 64-bit integer now requires twice as much data to be read from memory. Ideally, if the memory bus is now 64-bits, this should be just as fast as accessing 32-bits on the old machine. However, in terms of throughput, it’s not completely “free”. A bigger penalty, however, is in cache usage. Larger amounts of cache are one of the biggest boosts to performance on modern systems. However, when you are now using 64-bit ints, you effectively halve the amount of cache you have available.

So I’ve taken a few paragraphs explaining why 64-bit processors are not necessarily faster than than their 32-bit counterparts, but I still haven’t answered the question that started the discussion: Why does 64-bit matter? Despite the lengthy explanation, the answer is actually quite simple: Memory capacity. On a 32-bit machine, we know that we have 32-bit addresses. On a byte-addressable machine (In other words, every desktop PC), 32-bit addresses give a range of 4 gigabytes of virtual address space. In theory, this places a limit of 4 gigabytes of memory to be accessable by a desktop PC. In practice, the limit is 2 gigabytes on most Windows PCs, with a practical maximum of 3 gigabytes (through the /3GB kernel option). With todays high-end machines typically containing 1 gigabyte, with 2 gigabytes becoming more common in the next year, it should be obvious why the future of 64-bit computing is so important.

So what does this mean to you right now? Very little. A CPU purchased now will likely be out of date by the time 4 gigabytes of memory becomes commonplace in desktop PCs. However, the best CPUs on the market right now (IMHO) is the AMD64, even when running completely in 32-bit mode. So it turns out, the debate really isn’t that important after all. And all that explanation for nothing.

~Tim

4 comments.

What I’m reading 2 and other stuff

Posted on December 24th, 2005 by Chris.
Categories: Chris, General/Misc., Politics.

Merry Christmas Eve!
http://www.forbes.com/home/feeds/ap/2005/12/24/ap2413667.html


http://news.ft.com/cms/s/f3fe9c4a-4bd1-11da-997b-0000779e2340.html

By now, most people have heard about the debate over eroding privacy rights. The implication is that the government will be able to monitor and keep track of people, leading to a surveillance state where the feds can keep track of what we do and monitor all our actions. What gets lost in discussions about this idea is the question of what exactly it is that we need to protect.

Do we have the right to anonymity?

Anonymity is a different idea from privacy, even though it gets lumped into the same category. For example, if I’m a politician, do I have the right to hide my personal life from the media? If I’m an anarchist, do I have the right to post provocative anti-government messages in newsgroups?


I don’t think most of you readers are CS majors, but if any of you are students in university taking CS classes, this should warn you: don’t cheat on programming assignments.

http://www.cs.berkeley.edu/~aiken/moss.html


This guy is saying exactly what I think every day.

http://www.catb.org/~esr/writings/cups-horror.html


http://creativebits.org/angry_and_nice

1 comment.