element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
FPGA
  • Technologies
  • More
FPGA
Forum Markup languages coprocesing unit
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join FPGA to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 2 replies
  • Subscribers 557 subscribers
  • Views 344 views
  • Users 0 members are here
Related

Markup languages coprocesing unit

rslaqui@gmail.com
rslaqui@gmail.com over 8 years ago

Hi I have  high level idea for a markup language processing unit that can save lots of cycles when processing things like HTML. I used to know verilog and electronic systems. During my master's degree I worked on this idea so I'm 100% sure it works but I'm too rusty to do it my self. I'm looking for volunteers to generate it on open hardware.

  • Sign in to reply
  • Cancel

Top Replies

  • johnbeetem
    johnbeetem over 8 years ago +2
    In general, I find that an FPGA or other custom hardware implementation is only justified if there is a strict real-time constraint that can't be met by a general-purpose computer, or there is a need for…
  • rslaqui@gmail.com
    rslaqui@gmail.com over 8 years ago in reply to johnbeetem +1
    Hi John Thanks for your observations and interest. The purpose of the FPGA is just having a working prototype. If successful the project may be eventually embedded as parts of CPUs. The focus is very low…
Parents
  • johnbeetem
    johnbeetem over 8 years ago

    In general, I find that an FPGA or other custom hardware implementation is only justified if there is a strict real-time constraint that can't be met by a general-purpose computer, or there is a need for much higher performance than CPUs can provide and there is enough parallelism in the application to take advantage of a hardware implementation.

     

    It seems to be that parsing a linear language like HTML does not have enough parallelism, and later parallelizable stages like rendering high-quality text and graphics can be done quite nicely by a GPU.  Also, a language like HTML has a lot of complexity that is expensive to implement in hardware but cheap to implement in software.

     

    I'd be interested in your comments about my impressions and what I may have missed.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
  • rslaqui@gmail.com
    rslaqui@gmail.com over 8 years ago in reply to johnbeetem

    Hi John

     

    Thanks for your observations and interest.

     

    The purpose of the FPGA is just having a working prototype. If successful the project may be eventually embedded as parts of CPUs.

    The focus is very low level and aims to reduce some cycles when analyzing serialized data that may be HTML but can also be just end of string tokens on network communications, praising a script language (or any text file), regular expressions or similar stuff.

    The idea is to design/build a comparison and pattern searching unit with multiple simplified ALUs capable of just few kinds of comparisons instead of using the CPU’s ALU to compare and do pattern searching. This unit may be very purpose specific but given the high rate of networking and the extensive use of scripting languages it may be worth it.

     

    Taking the HTML case, and SUPER oversimplifying, to analyze a HTML string a program must look for the tags. This is done looking for a < and then the following characters that must match certain rules and then fin the > and then the correspondent closing tag or /> for single tags. I know this is done at a very high level but at the end the CPU has to push tons of characters into the ALU to compare one by one. Parallelism in separate treads is hard to apply because what you are looking for depends on what you have fond before. I don’t know if there are algorithms to analyze this kind of languages in multiple cores but even if they are so is kind of overkill.

     

    The comparison unit I’m thinking of will allow to see more than one character on the string at a time and there for reduce the times you have to back and forward throw it looking for specific things.

     

    In the HTML to look for tags you can look for < followed only by characters.

    A very high level diagram is like follows:

     

    image

     

    Data will pased from registry 1 to 2 from 2 to 3 and so on on each clock cicle.

    Comparators 2 to N-1 can be configured to search anything between a-z or A-Z,
    comparator 1 to search for either “  ” or >
    and comparator N configured to look only for <

    The metacomparator to accept either  all to 1
    or all but the first
    or all but the last

    So in the string depending on N and the data we will have 1 on the “I found what you are looking for interruption” on strings like “<tag ”, <tag> or “ tag>”

     

     

    image

     

    The comparators will have some registers to set some comparison values and a command registry to tell for example use comparison values 1 and 2  as well as comparison values 3 and 4 as lookup ranges, or find any of the masks(value) on the comparison value registers.

     

     

    Hope this clarifies my intentions and calls your attention.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • rslaqui@gmail.com
    rslaqui@gmail.com over 8 years ago in reply to johnbeetem

    Hi John

     

    Thanks for your observations and interest.

     

    The purpose of the FPGA is just having a working prototype. If successful the project may be eventually embedded as parts of CPUs.

    The focus is very low level and aims to reduce some cycles when analyzing serialized data that may be HTML but can also be just end of string tokens on network communications, praising a script language (or any text file), regular expressions or similar stuff.

    The idea is to design/build a comparison and pattern searching unit with multiple simplified ALUs capable of just few kinds of comparisons instead of using the CPU’s ALU to compare and do pattern searching. This unit may be very purpose specific but given the high rate of networking and the extensive use of scripting languages it may be worth it.

     

    Taking the HTML case, and SUPER oversimplifying, to analyze a HTML string a program must look for the tags. This is done looking for a < and then the following characters that must match certain rules and then fin the > and then the correspondent closing tag or /> for single tags. I know this is done at a very high level but at the end the CPU has to push tons of characters into the ALU to compare one by one. Parallelism in separate treads is hard to apply because what you are looking for depends on what you have fond before. I don’t know if there are algorithms to analyze this kind of languages in multiple cores but even if they are so is kind of overkill.

     

    The comparison unit I’m thinking of will allow to see more than one character on the string at a time and there for reduce the times you have to back and forward throw it looking for specific things.

     

    In the HTML to look for tags you can look for < followed only by characters.

    A very high level diagram is like follows:

     

    image

     

    Data will pased from registry 1 to 2 from 2 to 3 and so on on each clock cicle.

    Comparators 2 to N-1 can be configured to search anything between a-z or A-Z,
    comparator 1 to search for either “  ” or >
    and comparator N configured to look only for <

    The metacomparator to accept either  all to 1
    or all but the first
    or all but the last

    So in the string depending on N and the data we will have 1 on the “I found what you are looking for interruption” on strings like “<tag ”, <tag> or “ tag>”

     

     

    image

     

    The comparators will have some registers to set some comparison values and a command registry to tell for example use comparison values 1 and 2  as well as comparison values 3 and 4 as lookup ranges, or find any of the masks(value) on the comparison value registers.

     

     

    Hope this clarifies my intentions and calls your attention.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube