Thông báo

Collapse
No announcement yet.

Có nên mở Tutorial không?

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Có nên mở Tutorial không?

    Hi các bác,

    Mình nhận thấy ASIC design ở VN xem ra vẫn primitive quá. Nhiều người tham gia forum có kiến thức căn bản không vững chắc. Nếu như vậy, dù có đưa thông tin, kinh nghiệm lên thì nhiều người vẫn không đủ khả năng nắm bắt. Mình đề nghị các bác có nhiều kinh nghiệm và kiến thức trong lĩnh vực này mở một số tutorial cho mọi người. Với các bác là sinh viên, biết đâu học thêm về ASIC có thể ra nước ngoài làm việc, mỗi năm kiếm vài chục hoặc cả trăm nghìn USD.

    Theo mình nghĩ Tutorial sẽ hướng dẫn các kiến thức basic trước, rồi tuần tự từ thấp đến cao. Như vậy người học có thể nắm bắt, và sau khi học xong có nên tảng tốt, không bị rỗng kiến thức. Như vậy tutorial có thể bám theo các sách, hoặc các bản giảng ở nước ngoài. Điểm khác biệt là chúng ta sẽ tạo ra một sự trao đổi 2 chiều giữa người học và người dạy. Thay vì đọc sách, hoặc các bài giảng trên mạng, người học có thể trao đổi với người dạy một cách trực tiếp.

    Ở đây mình liệt kê một vài topic. Các bác nào có yêu cầu, hay có khả năng làm thread về một số topic khác xin hay post lên.

    -EDA tools: Hướng dẫn cài đặt, sử dụng các tools từ mức layout đến RTL level...

    -VHDL, Verilog, SystemVerilog, SystemC...

    - Digital design: VLSI, Degital design, Computer architecture...

    -Analog design: Basic analog IC design, Op-amp, Band-gap, ADC, DAC, switch capacitor, PLL, DLL, DCC, High speed IO, SERDES, RF IC...

    Mong các bác cho ý kiến, yêu cầu cũng như khả năng của mọi người.

    Cheers.

  • #2
    Chào bác lntran,

    Em rất ủng hộ ý kiến này của bác, về các chủ đề bác đưa lên em cũng không có bổ xung gì thêm, em sẽ cố gắng đóng góp trong lĩnh vực mà em đã làm qua. Những đóng góp của những người như bác; bác tonyvandinh hay như các bạn có kinh nghiệm hiện đang làm về lĩnh vực này là thực sự cần thiết. Mong những bài viết tiếp theo của bác.

    Thân mến.

    Comment


    • #3
      em rất ủng hộ !

      Comment


      • #4
        Hi các bác,

        Nếu các bác ủng hộ, mình xin được mở một Tutorial thread về Digital design. Mình dự định sẽ hướng dẫn mọi người theo hướng như sau:

        Mình sẽ giới thiệu trước về thiết kế mạch số. Mảng này ngày xưa ở VN mình cũng có được học một chút nên chắc mọi người bây giờ cũng đã biết ít nhiều. Nhưng mấy kiến thức ngày xưa mình được học cũng chỉ vớ vẩn, không hệ thống, không có nền tảng vững chắc. Khi giới thiệu lại thiết kế mạch số, những phần đơn giản mình sẽ nói nhanh.

        Sau đó mình sẽ giới thiệu đến thiết kế VLSI. VLSI là việc làm cụ thể của thiết kế mạch số. Học qua về VLSI, mọi người sẽ hiểu công việc thiết kế mạch số được thực hiện như thế nào.

        Sau cùng mình sẽ giới thiệu về kiến trúc máy tính. Trong phần thiết kế mạch số mình cũng sẽ nói sơ qua về thiết kế vi xử lý nhưng không sâu bằng phần này. Phần này kiến thức khá trìu tượng, mặc dù gọi là basic, nhưng cũng cần có kiến thức nền rất mạnh.

        Nếu sau này các bác có yêu cầu đặc biết về một số advance topic nào đó như VLSI for DSP, Network on Chip, Multi-core processor, mình cũng sẽ nghiên cứu cùng với mọi người.

        Trước hết về Basic digital design: Mình sẽ sử dụng quyển "Digital design and computer architecture" của David Money Harris và Sarah L. Harris. Các bác có thể Download được quyển này ở đây:
        http://rapidshare.com/files/10016184...vid_Harris.rar
        Mình có xem qua quyển này, và thấy đây là một quyển có thể nói là comprehensive, basic, and easy to understand. Quyển này giới thiệu từ các cổng logic đơn giản đến thiết kế hoàn chỉnh một processor.

        Phần tiếp theo mình sẽ đưa lên sẽ là Basic VLSI design: Mình sẽ dùng quyển "CMOS VLSI Design: A Circuits and Systems Perspective" của David Harris. Bây giờ quyển này đã có bản 4th nhưng chưa thấy đưa trên mạng. Mình ở bên này có thể kiếm được hardcopy dễ dàng nhưng có lẽ nên chờ có softcopy để mọi người cùng dùng.

        Về computer architecture mình sẽ dùng quyển "Computer Architecture a Quantitative Approach" và "Computer Organization and Design Hardware/Software Interface" của David A. Patterson, John L. Hennessy.

        Nếu mọi người có ý kiến gì xin hãy post lên.

        Cheers.

        Comment


        • #5
          anh có thể upload các tài liệu lên một host khác được không? Em không có tài khoản Rapidshare mà dùng free thì toàn bị nó kêu đang download dù mình chẳng làm gì cả.

          Em ủng hộ hết mình, cần giúp đỡ gì thì anh cứ gọi. Cá nhân em nhận thấy khi đi làm, em cần phải nhớ nhiều hơn là nghĩ; đọc sách nhiều lúc không giống hẳn với cái mình đang làm. Em thấy là trước khi bắt đầu bài trong sách; nên đọc qua bài wiki khái quát và hiệu quả hơn nhiều; tạo cảm giác cập nhật với công nghệ và có tầm hiểu rộng hơn là chỉ đi vào lý thuyết. Nếu có một topic tổng hợp một cách hệ thống như giáo trình nhưng chỉ khái quát về định nghĩa như wiki thôi thì cũng tốt lắm rồi.

          Comment


          • #6
            Hi các bác,

            Bác Tarzanaly không download được chắc tại bác share IP address với mọi người. Bác thử lại ở một số host khác như sau:

            http://www.ebookee.com/Digital-Desig...re_161471.html
            http://forum.esoft.in/e-books-tutori...hitecture.html

            Bác tarzanaly nói sách không giống với thực tế thì mình không đồng ý với bác lắm. Có lẽ bác đọc một số sách không phù hợp với công việc của bác, hoặc quyển sách đó không được viết tốt. Mình biết rất nhiều người làm trong ngành công nghiệp cũng viết sách. Mình ngày xưa ở Qimonda là về thiết kế DRAM có đọc quyển "DRAM circuit design" mà tác giả là người làm việc cho Micron. Quyển này thật sự viết giống thực tế một cách đáng kinh ngạc, chỉ thiếu mỗi việc đưa nguyên thiết kế ra mà thôi. Hơn thế nữa, những người làm việc trong ngành công nghiệp như mình cũng hay chôm chỉa các ý tưởng thiết kế trong paper, và sách. Vậy nên mình tin chắc những điều viết trong sách và thực tế rất correlated.

            Mấy quyển sách mình đưa ra làm tutorial cũng chỉ là mấy quyển cơ bản. Mấy kiến thức này cũng giống như toán đạo hàm tích phân, người viết làm sao có thể sai được. Ngoài ra mấy quyển này cũng nổi tiếng, và mình cũng đã đọc qua thấy rất tốt.

            Đương nhiên trình bày tutorial không có nghĩa là mình dịch nguyên quyển sách ra. Mình sẽ viết lại những điểm mấu chốt để người học dễ nắm bắt. Mình thấy ngay cả những người có nhiều kinh nghiệm, đọc các kiến thức mới khó nắm bắt vì không biết điểm quan trọng nằm đâu. Việc chỉ viết các điểm quan trọng có lẽ sẽ giúp người học dễ nắm bắt. Nếu các bác muốn chứng minh hay giải thích có thể tham khảo sách.

            Bên cạnh các kiến thức trong sách, mình có thể sẽ đưa thêm các ví dụ cụ thể hay kinh nghiệm thực tế của bản thân. Hi vọng mọi người không cảm thấy mấy thứ này quá chán.

            Cheers.

            Comment


            • #7
              ý em không phải sách không giống thực tế, không update mà là với kinh nghiệm của người mới vào em thấy sách chưa thực sự giúp mình nhiều và mình cũng không học được nhiều từ sách vì thiếu cái nhìn tổng quát để dễ dàng nhìn ra cốt lõi vì sách viết khá dài và chi tiết (mệt lắm).

              Cái không hay của em mà em nghĩ cũng của nhiều người là vài chương đầu mô tả scope của sách thì lại rất ngắn, đọc qua và ít biết rằng cái đấy rất quan trọng, có khi quan trọng nhất cuốn sách và rồi đi theo lối mòn đọc theo trình tự, sách viết gì thì học nấy mà quên mất tại sao.

              Cá nhân em thấy đọc wiki rất là tốt, trình bày ngắn gọn, rõ ràng và bao quát. Như kiểu mình có một tree, em thì thấy là nên đi theo Breadth First Search thì tốt hơn là DFS . Em chỉ nghĩ là cần vài bài giới thiệu tổng thể thôi, để mọi người ngấm rồi đi tiếp.

              dài dòng quá, em không phản đối hay góp ý để anh thay đổi cái gì, chỉ là muốn chia sẻ chút kinh nghiệm thôi; em rất đồng ý với anh về việc giúp người đọc nắm bắt khái niệm nhanh và các điểm quan trọng là đằng khác. Mong là có nhiều người nữa ủng hộ project này của anh sau này nó sẽ là kim chỉ nam cho đàn em ấy chứ.

              Comment


              • #8
                Mình ủng hộ ý kiến của lntran, cũng xin góp những hiểu biết có hạn từ công việc thực tế của mình về vấn đề ASIC cũng như FPGA nhằm mục đích build up kiến thưc cùng nhau.

                Biết đâu sau này Việt Nam không chỉ làm Vẻification/Backend chủ yếu như tình hình hiện nay mà có nhiều cơ hội R&D hơn cho anh em.

                Mình suggest thêm một cuốn sách hay, hễ hiểu cho mọi người:

                Analog Integrated Circuit Design
                By David Johns, Ken Martin
                Publisher: Wiley ( 1996-11-15 ) | 720 pages | ISBN : 0471144487 | PDF | 12 MB
                Thân
                Last edited by blackbox123; 05-08-2010, 15:59.

                Comment


                • #9
                  Em nhiệt liệt ủng hộ ý tưởng của bác Intran .

                  Về cuốn CMOS VLSI Design: A Circuits and Systems Perspective. Em vừa down về tại:
                  http://ifile.it/imyqbj9/0321269772.rar
                  RARed DJVU
                  19.527 MB
                  password: gigle.ws
                  (one page per sheet/ 600 dpi/ OCRed/ bookmarked/ colored)


                  Các tài liệu bổ sung của cuốn sách như slices, tool . . . down tại:

                  http://www3.hmc.edu/~harris/cmosvlsi/4e/index.html

                  Comment


                  • #10
                    Hi các bác,

                    Analog IC design mình cũng biết một chút nhưng không giám múa rìu qua mắt thợ. Một phần nữa là mình muốn tập trung cho thread digital design tutorial. Không biết bác Blackbox123 có thể mở một thread làm tutorial về quyển sách bác giới thiệu được không.

                    Cheers.

                    Comment


                    • #11
                      Hi các bác,

                      Hôm nay mình không viết sâu về kiến trúc máy tính nữa mà sẽ giới thiệu để các bác biết làm thế nào để thiết kế các kiến trúc máy tính. Những điều mình viết ra trong phần này hầu hết là từ kinh nghiệm và suy nghĩ của bản thân. Các bác nào làm về kiến trúc máy tính xin hay đóng góp ý kiến và chia sẻ với mọi người.

                      Thông thường mọi người thường nói về kiến trúc máy tính (computer architecture) nhưng thực ra nó gồm 2 phần computer architecture và computer organization. Computer architecture là toàn bộ kiến trúc dưới cách nhìn từ mức rất cao bao gồm cả ứng dụng, lập trình, phần cứng. Trong khi đó computer organization là cách thiết kế một phần cứng cụ thể như một vi xử lý gồm cache, ALU, register file, IFU, IO controller... Một loại computer architecture có thể có nhiều loại computer organization khác nhau ví dụ như Pentium 3, và Pentium 4, là 2 vi xử lý có cùng một architecture nhưng khác organization. Khi nhìn 2 loại vi xử lý này ở mức cao, nó đều có chung kết nối IO (front side bus), chung một tập lệnh, và sử dụng chung mục đích, vậy nên nó có chung architecture. Nhưng trong thiết kế cụ thể của Pentium 4, người thiết kế sử dụng deeper pipeline, nên về mặt organization 2 loại này hoàn toàn khác nhau. Hay lấy một ví dụ đơn giản hơn, để thực hiện lệnh nhân chia, người ta có thể sử dụng những mạch nhân chia riêng hoặc có thể sử dụng mạch cộng trừ và shifter. Về mức architecture 2 loại này là 1, nhưng về mức organization 2 loại này khác hẳn nhau. Theo như mình thấy, architecture và organization có cùng chung một nguyên tắc thiết kế nên nhiều người mọi người hay gộp chung 2 loại này để nói. Nhưng nếu tách riêng cũng dễ phân biệt và tiện cho việc thiết kế hơn.

                      Như mình đã từng nói, thiết kế kiến trúc máy tính khó hơn và trìu tượng hơn thiết kế mạch số hay mạch tương tự. Một trong những nguyên nhân quan trọng đó là rất khó có thể chạy mô phỏng toàn bộ hoạt động của một kiến trúc máy tính. Điều này mình đã nói với các bác rồi nên không nói lại nữa. Một điều quan trọng thứ hai cần phải nói đến là việc trade-off. Với các bác là kỹ sư thì không lạ gì việc trade-off nhưng mình cũng muốn nhắc lại một chút nhất là với các bác là sinh viên. Người làm thiết kế bao giờ cũng phải cân đối giữa các chỉ tiêu kĩ thuật. Để tăng một chỉ tiêu kỹ thuật này lên thường làm giảm chỉ tiêu kỹ thuật khác. vì vậy cân đối giữa tất cả các mặt là điều bặt buộc. Tuy nhiên trade-off trong kiến trúc máy tính khác xa so với trade-off trong thiết kế mạch. Trong thiết kế mạch, khi trade-off có thể làm thay đổi một số chỉ tiêu của mạch nhưng hiếm khi làm thay đổi hoạt động của toàn bộ hệ thống. Vì vậy trade-off trong circuit design có độ tự do rất lớn. Sau đây mình lấy 2 vi dụ đơn giản cho mạch số và tương tự.

                      Với mạch số khi các bác muốn mạch chạy nhanh hơn, các bác có thể tăng điện áp nguồn. Điều này chỉ làm công suất mạch điện tăng cao nhưng chức năng mạch điện không đổi. Hay đối với mạch tương tự, ta có thể tăng bias current để giảm nhiễu (noise figure, phase noise) trong các mạch LNA hay PLL. Mình không có nhiều kiến thức về mạch analog những cũng xin phép bác Hithere123, và các bác làm về analog giới thiệu một chút về điều này để các bác rõ hơn. Nếu có gì không chính xác xin các bác chỉnh lại. Bias current là một trong những chỉ tiêu quan trong khi thiết kế mạch tương tự. Bias current càng lớn thì hệ số khuyếch đại càng cao, nhiễu càng nhỏ... nhưng mạch lại tiêu thụ công suất nhiều. Vì vậy người thiết kế thường sử dụng register file để thay đổi bias current của những mạch có các chỉ tiêu quan trọng, và khó có thể mô phỏng chính xác như LNA, PLL. Sau khi sản xuất ra, tùy theo hoạt động thực tế của mạch người ta sẽ quyết định bias current sao cho vừa đảm bảo chỉ tiêu kỹ thuật, vừa tiết kiệm công suất.

                      Trade-off trong computer architecture không phải chỉ đơn giản là tăng giảm một vài chỉ tiêu mà điều này quyết định đến toàn bộ hoạt động của cả hệ thống. Để các bác dễ hiểu, mình dùng một ví dụ mà các kỹ sư Intel từng mắc sai lầm. Chip Pentium 4 khi mới ra đời sử dụng bộ nhớ RAM bus hay còn gọi là RD RAM. Ram bus có tốc độ xung đồng hồ rất cao, nếu mình nhớ không nhầm lúc mới ra tốc độ của ram bus đã lên đến 800 MHz. Nguyên tắc hoạt động của ram bus là chuyển dữ liệu từ song song sang nối tiếp để có thể truyền với tốc độ cao trên PCB. Điều này thật ra cũng chẳng có gì là và chắc các bác cũng đã thấy rất nhiều ví dụ như sử dụng PCI express thay thế PCI, USB thay thế LPT, SATA, thay thế PATA. Nhờ có xung đồng hồ cao, băng thông của RAM bus cao hơn những loại khác nhiều. Tuy nhiên việc chuyển đổi dữ liệu từ song song sang nối tiếp, rồi trở lại song song làm tăng latency của mạch lên khá nhiều. Như vậy ở đây các kỹ sư Intel đã hi sinh latency để tăng bandwidth của vi xử lý. Thực tế cho thấy, kiến trúc này chẳng hề hiệu quả hơn so với kiến trúc của AMD sử dụng DDR RAM 266. Thêm vào đó RAM bus rất đắt đỏ, và tiêu thụ công suất lớn. Cuối cùng kiến trúc sử dụng RAM bus của Intel đã bị loại bỏ. Như vậy ta có thể thấy trade-off trong kiến trúc máy tính không đơn thuần chỉ là tăng chỉ tiêu kĩ thuật ở một mặt, và giảm ở mặt khác. Một trong những điều quan trong bậc nhất khi làm về kiến trúc là phải có cái nhìn toàn diện trên tất cả các mặt, và đánh giá tất cả các mặt.

                      Thật ra Intel cũng không hoàn toàn từ bỏ kiến trúc truyền dữ liệu nối tiếp đến bộ nhớ này. Máy chủ của Intel sau này sử dụng kiến trúc Full buffer Dimm cũng truyền dữ liệu theo kiểu nối tiếp. Fully buffer dimm cũng có tốc độ truyền dữ liệu cao nên băng thông rất cao. Thêm vào đó kiểu truyền nối tiếp cho phép tín hiệu có high signal integrity. Nhờ vậy người ta có thể cắm một lúc 16 dimm trên một board bộ nhớ , mỗi board bộ nhớ này lại cắm vào mother board nối đến một memory channel. Một chip set (North bridge) có thể điều khiến tới 4 (8 mình không chắc lắm) channel. Vậy các bác có thể ước lượng được máy chủ của Intel có thể có bao nhiêu bộ nhớ. Mình đưa ra ví dụ này để các bác thấy ý kiến cho rằng dung lượng bộ nhớ bị hạn chế là không chính xác. Ý kiến này chẳng qua chỉ dựa trên mấy cái máy tính cá nhân ở VN, và người đưa ý kiến này không có kinh nghiệm về làm việc với máy chủ. Thực tế việc tăng dung lượng bộ nhớ là việc làm dễ nhất (dễ hơn nhiều so với việc tăng xung đồng hồ), tuy nhiên mọi việc đều là trade-off. Fully buffer dimm cũng tương tự như ram bus rất đắt đỏ, tiêu thụ nhiều công suất và có latency cao. Bản thân mình không thích cách thiết kế fully buffer dimm mà thích kiểu sử dụng Register dimm của AMD hơn, trong đó AMD tăng bộ nhớ thông qua kiến trúc SMP (Symmetric Multprocessor).

                      Như các bác đã thấy thiết kế kiến trúc máy tính khó như vậy nên thông thường người làm thiết kế thích sử dụng các thiết kế đã có từ trước. Điều này không những làm giảm sai sót trong thiết kế, nó còn cho phép đánh giá hoạt động của kiến trúc dựa trên các số liệu thực tế có sẵn. Khi cần làm những thiết kế không có sẵn, người thiết kế cũng cố gắng sử dụng các thiết kế gần giống và thay đổi lại. Ví dụ như vi xử cell của IBM là chip đầu tiên sử dụng mạng token ring cho network on chip. Các kỹ sư của IBM đã sử dụng lại mạng token ring thông thường để làm nên mạng này. Nhiều thiết kế, và đánh giá có thể sử dụng lại nhưng cũng có một số phải làm mới. Bởi vậy lời khuyên đầu tiên của mình dành cho các bác sinh viên hay những người quan tâm là đọc thật nhiều những kiến trúc thực tế và những đánh giá về chúng. Sau đó chúng ta vận dụng tối đa những thiết kế này. Trong ngành này sáng tạo quá mạo hiểm nên hãy tránh những sáng tạo không cần thiết như tạo lại cái bánh xe. Để làm việc trong ngành này các bác không thể chỉ học một chút lý thuyết là đủ.

                      Lời khuyên thứ hai của mình là phải trade-off tốt. Như các bác thấy, ngay cả những kiến trúc sư Intel vẫn đưa ra các đánh giá sai làm do trade-off không tốt, và thực tế làm được điều này rất khó. Các bác phải nhìn nhận đánh giá toàn bộ hệ thống trên nhiều mặt, nhiều chỉ tiêu kỹ thuật, nhiều khía cạnh.

                      Ngày xưa ở VN mình cũng được học một chút về kiến trúc máy tính. Mình được dạy một chút về vi xử lý 286, một chút về Memory, DMA, UART... Những thứ này dạy cho sinh viết biết sơ về hoạt động của một số phần trong máy tính cũng tốt nhưng có lẽ vẫn chưa đủ để đào tạo người làm về kiến trúc máy tính. Rất nhiều những kiến trúc căn bản không được dạy như superscalar, cũng như việc nghiên cứu, đánh giá hoạt động của cả hệ thống với các chỉ tiêu khác nhau đã bị bỏ qua. Không biết hiện nay ở VN giảng dạy về kiến trúc máy tính như thế nào. Nếu có thể mong các bác sinh viên chia sẻ ý kiến của bản thân.

                      Cheers.

                      Comment


                      • #12
                        Hi các bác,

                        Xin lỗi các bác. Bài viết trước mình post nhầm thread.

                        Cheers.

                        Comment


                        • #13
                          Mình comment với bạn lntran trong cả thread này lần thread về Innovative microprocessor architecture là bạn đang bị tẩu hỏa nhập mà khi cứ dùng lẫn lộn cái bus-based interconnect configuration (trong pattern) của bạn với Network-on-Chip or NoC (IP-based interconnect configuration).

                          Cụ thể trong thread này, Cell architecture dùng Element Interconnect Bus (EIB) theo dạng ring. Nó không phải là Network on Chip như bạn hiểu. Tham chiếu vào mô hình OSI 7 lớp thì bus-based (cụ thể là kết nối Ring cho Cell architecture) mới nằm ở lớp 2, Data link layer), trong khi đó NoC (IP-based) thuộc lớp 3 Network chính vì vậy mới gọi là Network on Chip.

                          Ở VN computer architecture không được dạy đúng như bản chất của nó, đa số là dạy theo kiểu computer introduction (giới thiệu uP, RAM, ROM, IO) hoặc mix thêm phần computer arithmetic. Nói chung mỗi phần một ít nhưng đều không chuẩn.

                          Comment

                          Về tác giả

                          Collapse

                          lntran Tìm hiểu thêm về lntran

                          Bài viết mới nhất

                          Collapse

                          Đang tải...
                          X