1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

How to improve NAS200 performance

Discussion in 'Cisco/Linksys Network Storage Devices' started by jackito, May 2, 2009.

  1. jackito

    jackito LI Guru Member

    Hi everybody,

    I´m opening this thread to discuss/focus on how to improve NAS200 performance.
    Maybe by software, maybe by hardware changes.
    I know that there is a lot of people with different knowledge and experience in this forum so maybe after a brainstorm we can come up with good ideas, maybe not but we don´t loose anything by participating and trying right?

    So to start with this "brainstorm" here are my first ideas:

    • Hardware: for what I saw in the CPU specs sheet the clock is set on start by the state of three pins. I think that changing the clock will be something difficult to achieve. What do you think?
    • Software: what about running a new kernel compiled for the RDC CPU instead for i486? AFAIK the CPU is using emulation to execute i386 code and emulation is always not as fast as native execution. Do you agree, disagree? I´m crazy?

    Come on, don´t be shy and share your ideas! :thumbup:
     
  2. jac_goudsmit

    jac_goudsmit Super Moderator Staff Member Member

    Alright, I'll bite :wink:

    I think depending on one's experience with soldering (especially SMD components), it should not be too hard to change the clock from 133MHz (claimed) or 100MHz (suspected) to 150MHz. All we need to do is trace the appropriate pins to other places on the PCB that are easier to access, and apply one or two resistors. If I only had some time, I would have already done it...

    By the way the Bifferboard project also uses an RDC CPU which is running at 150MHz and they are getting even lower Bogmips values, so my conclusions are:
    • Maybe the NAS200 performance isn't so bad after all
    • It is definitely possible to get it to run faster (150MHz). It may be necessary to attach a heat sink to the CPU but that's easy enough to do
    • Given a day or two of time, any amateur electronics engineer can figure out how to do it

    Although RDC claims that this is a RISC processor that emulates the 486 instruction set, there is no documentation on whether it's based on any known RISC architecture (such as ARM or MIPS), let alone on how to switch it to the native mode if that architecture. In other words: the 486 instruction set is the only way to go. The RDC changes to the Linux kernel are related to hardware-specific things such as initialization, networking and GPIO (i.e. LED's and buttons). It's very easy to get another i386-based kernel to run on the NAS200 (see my Gentoo thread in this forum) and after you get a kernel running, the "personality" of the system is mostly a matter of what's in the file system.

    There _is_ plenty of documentation on the chipset that's built in to the RDC and the other hardware in the NAS200. I reckon that, given all the data sheets of the RAM chips, the CPU and other hardware, it may be possible to improve the speed by tweaking the chipset initialization code but probably not by a large margin. Upping the clock divider by attaching some resistors, as mentioned above, will probably yield more of an improvement with less effort.

    Bottom line: You simply have to keep in mind that the hardware that the RDC emulates, was already obsolete 10 years ago (I replaced my 486 at 100MHz in 1997 by a Pentium 150). If you want to make the NAS200 a fast platform that will give you a performance that you can expect from today's hardware, you should give it a brain transplant by taking out the motherboard and putting in another one, e.g. a VIA Pico. There are two problems with this: one, the Pico is relatively thick (it has components on both sides) and two, all the Pico variations that I've seen only have one SATA connector.

    ===Jac
     
  3. mdsilva

    mdsilva Addicted to LI Member

    Hi, I don't know much about this but here goes:

    A RISC cpu emulating the 486 instruction set is good as long as its emulated in hardware and not software. I have written code in MIPS before and the486 instruction set is very different. That said, basic instructions are almost the same and a software emulation would be very basic ( :confused: translation table and a buffer to store memory addresses. From memory, MIPS can't do an operation on two varables at the same time it needs to be on a stack :confused: ). This is all assuming the CPU is like MIPS.

    I think recomiling a kernal to not use the 486 instruction set could infact be a waste of time.

    Would clocking the CPU to 150Mhz make the NAS200 run x1.5 faster? Or is it some sort of diminshing return?
     
  4. jackito

    jackito LI Guru Member

    First, thanks for sharing your knowledge.
    So far it seems that nothing can be done by changing software.
    Let´s concentrate on how to change the clock then.
    From the R8610 datasheet (asumming that is the same for R3210-G AFAIK):

    It seems that to set the clock to 150Mhz we should set one of the pins to a logic level of 1 ONLY during the system reset? I´m right?
     
  5. jac_goudsmit

    jac_goudsmit Super Moderator Staff Member Member

    Not exactly.

    What it says is: during system reset, the three pins 33, 48 and 49 are sampled (the same goes for 34 which is the PCI clock divider). The lines are used as address bus during normal operation, which implies that during reset, the outputs to those lines are turned off (High-Z), otherwise it wouldn't make much sense to sample them because the CPU would read its own outputs. So in order to set the clock frequency, all that a system designer would need to do is attach a couple of pull-down or pull-up resistors to those pins. The resistors need to be of a low enough value to make enough current flow to make the chip sample the correct logical values, and of a high enough value to not interfere with normal operation.

    I finally had time to do a quick check, and I can confirm that both pin 48 and pin 49 are pulled UP, so the NAS200 is NOT underclocked: it's really running at 133MHz. The low Bogomips value (indicating 100Mhz) can be explained by the fact that it's not really a 486 but an emulator.

    This is kinda unfortunate, because now the only way to make the CPU run faster is to switch from 133MHz to 150MHz which involves overriding all three pins 33, 48 and 49: 33 must be pulled high instead of low and pins 48 and 49 must be pulled low instead of high. There is a chance that it's possible to override the existing resistors with smaller values. The existing resistors are 4700 ohms so I would try 3300 or (if they don't work) 2200 ohms. You could try this one resistor at a time: the Bogomips value should change significantly for each pin that you reconfigure.

    It's also possible that adding extra resistors doesn't change the logical level enough (resulting in the same Bogomips measurement) and it may be necessary to remove the existing resistors altogether.

    It's also possible that the system won't run at a higher speed. The PCI bus clock is derived from the SDRAM clock. If you change the CPU clock to 150MHz, the PCI clock may change from 33MHz to 37.5MHz and it's possible that one or more devices on the PCI bus (such as the SATA controller) become unstable at that frequency. I don't have enough information or time to predict what will happen.

    Instead of increasing the CPU clock, you may also want to consider keeping the CPU at the same speed and changing pin 34 only: I didn't measure it but I expect it to be pulled HIGH at this time; if you pull it LOW you will change the PCI clock divider to 1/3 instead of 1/4, so in theory that should overclock the PCI bus from 33MHz to 36MHz.

    Of course, all of the above is at your own risk...

    ===Jac
     
  6. jackito

    jackito LI Guru Member

    As always jac you are the man.
    Amazing electronics lesson.
    Thank god I managed to understand everything (now I know at least one reason why paying attention during my electronics classes back in school was a good choice).
    Based on your post (and agreeing with everything) I think that the NAS200 is as it is. Take it or leave it. Overclocking it to 150Mhz probably will make more harm than performance improvement. The same for overclocking the PCI bus.
    IMHO it´s better to leave it alone from the performance point of view and only concentrate on new add-ons or things like moving to Open-WRT.
    Just my two cents.
     
  7. Pa0l0ne

    Pa0l0ne Addicted to LI Member

    I'm very impressed for the knowledge of jac, but i'm very sad about the things that we can do (or don't..) to speed up the NAS200.

    By the way take a look at this http://www.directron.com/te100mp1u.html
    ...it seems that this Printer Server use the infamous RDC R3210-G setted at 150Mhz (even if is the thrue....and not only the manufacter specification...); so we have a chanche that clocking CPU at 150 Mhz does not much affect the CPU itself (afterall we can applicate an Heatsink on the Crap CPU) but like jac said affect more PCI clock and sequentially SIL Sata Chip, Network Chip and Ram Chip. For my experience in PC overclocking, outspecificating PCI clock much affect IDE and SATA Harddisks Controllers than the rest (Ram and Network controller for our case) and, thrust me, 37,5Mhz rappresent a very high risk expecially for a product that would be affidable (gbs of data stored on him is a valid argument for the search of affidability.......)

    ....so is not possible to play with multipler of the cpu instead of fsb? (This would rappresent the ultimate chance....)
     
  8. dantech

    dantech Network Newbie Member

    Hi,

    I did some investigation and in my humble opinion NAS200 works on 150MHz by default.

    I have found that:
    - pin 33 (hcksl2) comes through pull up resistor R142 4k7 to Vcc
    - pin 34 (hcksl3) comes through pull up resistor R147 4k7 to Vcc
    - pin 48 (hcksl1) comes through pull down resistor R145 4k7 to GND
    - pin 49 (hcksl0) comes through pull down resistor R146 4k7 to GND

    So,

    According to datasheet we have clock settings table = "b100" what gives us 150MHz and ram clock divider is /4
     
  9. adasch

    adasch Addicted to LI Member

    I confirm, my NAS200 (now with 4TB) is configured on 150@37,5 MHz

    but I use him as automatic backup for HP media smart server EX470@AMD Athlon 64 X2 3800+ (8TB)

    p.s.
    I record movies in HD games junior football team where play my son. This souvenirs are for me invaluable.
    For this task NAS200 is very good (unfortunately NAS200 don't support UPS) but EX470 great works with APC UPS
     
  10. Still_Awake

    Still_Awake Networkin' Nut Member

    Not sure if I misunderstand this, has anyone overclocked their NAS200?

    I am surprised how cool the ARM cpu runs, however I am not putting my finger on it during a RAID rebuild. So if you overclock you need to test it 'in anger'. Tip: A heatsink from an old motherboard chipset or video card can be cemented to the top of the cpu very easily. If overclocking, a proper small cpu fan and heatsink might be the smart place to start.
     

Share This Page